fga-gpp-mds/2017.1-OndeE-UnB

View on GitHub
darcyWeb/app/assets/javascripts/map/share_location.js

Summary

Maintainability
A
1 hr
Test Coverage
map.contextmenu.addItem({
  text: "Compartilhar localização",
  callback: shareLocation
});



var sharedLocation = {
  marker: null,
  title: "sharedLocation",
  icon: "arrow-down-c",
  color: "blue"
};


function copyToClipboard(text) {
  if (window.clipboardData && window.clipboardData.setData) {
    // IE specific code path to prevent textarea being shown while dialog is visible.
    return clipboardData.setData("Text", text);

  } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
    var textarea = document.createElement("textarea");
    textarea.textContent = text;
    textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge.
    document.body.appendChild(textarea);
    textarea.select();
    try {
      return document.execCommand("copy"); // Security exception may be thrown by some browsers.
    } catch (ex) {
      console.warn("Copy to clipboard failed.", ex);
      return false;
    } finally {
      document.body.removeChild(textarea);
    }
  }
}



function setSharedLocation(e, waypoint) {
  var lat = e.latlng.lat;
  var lng = e.latlng.lng;

  if (waypoint.marker == null) {
    createMarker(waypoint, e.latlng);
  } else {
    waypoint.marker.setLatLng(e.latlng);
  }

  var linkUrl = window.location.host;
  linkUrl += "/findme?lat=" + lat + "&lng=" + lng;
  copyToClipboard(linkUrl);

  swal("Link copiado", "Cole onde desejar e envie para seu colega!", "success")
};




function shareLocation(e) {
  setSharedLocation(e, sharedLocation);
}

var sharedLocation = {
  marker: null,
  title: "sharedLocation",
  icon: "arrow-down-c",
  color: "blue"
};

function getUrlVars() {
  var vars = {};
  var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
    function(m, key, value) {
      vars[key] = value;
    });
  return vars;
}

function createMarker(waypoint, latlng) {
  //console.log("Lat and Lng");
  if (!$.isEmptyObject(latlng)) {
    waypoint.marker = L.marker(latlng, {
      icon: L.AwesomeMarkers.icon({
        prefix: "ion",
        icon: waypoint.icon,
        markerColor: waypoint.color
      })
    });
    map.addLayer(waypoint.marker);

    map.setView(latlng, 16, {
      animate: true
    });
    //map.setZoom(200, {animate: true});
  }
}

createMarker(sharedLocation, getUrlVars());