soundmap/js/soundmap.add.js

127 lines
4.5 KiB
JavaScript

(function($){
var soundmap = window.Soundmap || {}
_.extend(soundmap, {
map: undefined,
layers:[],
marker: undefined,
file_frame: wp.media.frames.file_frame = wp.media({
multiple: false,
library: {
type: 'audio'
}
}),
attachTemplate: "<div class='soundmap-attach-item'><div class='att-icon'><img src='<%= icon %>'/></div>" +
"<div class='att-info'><a href='<%= url %>'><strong><%= name %></strong></a><br/>" +
"<span class='att-length'><%= length %></span><br/>" +
"<a href='#' class='delete-att-item'>Borrar</a></div><div class='clear'></div><input type='hidden' name='soundmap-att-ids[]' value='<%= id %>' /></div>",
initMap: function(){
mapboxUrl = 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibHJ1bGxvIiwiYSI6ImNpaDUydjdoNTAwd3BzdGx5bGlhOTh6bXYifQ.tE8QgNbVSgwP8V5LnJWA3w';
var grayscale = L.tileLayer(mapboxUrl, {id: 'mapbox/light-v10'}),
streets = L.tileLayer(mapboxUrl, {id: 'mapbox/streets-v11'}),
osm = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
this.map = L.map('map_canvas',{center: [this.origin.lat, this.origin.lng], zoom: this.origin.zoom, layers: [osm,grayscale,streets]});
this.map.addControl(
new L.Control.Layers(
{
'OSM': osm,
'Grayscale':grayscale,
'Streets': streets
}, {}
)
);
this.map.addEventListener('click', this.mapClick, this);
//this.map.invalidateSize();
if( $('#soundmap-marker-lat').val() ){
var _latlng = [parseFloat($('#soundmap-marker-lat').val()), parseFloat($('#soundmap-marker-lng').val())];
this.marker = L.marker(_latlng,{draggable: true}).addTo(this.map);
this.map.panTo(_latlng);
this.marker.addEventListener('dragend', this.markerDrag, this);
}
//init elements
this.file_frame = wp.media({
multiple: false,
library: {
type: 'audio'
}
});
this.initEvents();
},
initEvents: function(){
$('#add_files').bind('click', this.openMediaManager);
wp.media.frames.file_frame.on('select',this.mediaSelected, this);
$('.att-info').on('click','.delete-att-item', this.removeMedia);
setTimeout(() => { this.map.invalidateSize(); }, 0);
},
removeMedia: function(event){
$(event.currentTarget).parents('.soundmap-attach-item').remove();
},
openMediaManager: function(event){
this.file_frame = wp.media.frames.file_frame
event.preventDefault();
if ( this.file_frame ){
this.file_frame.open();
return;
}
},
mediaSelected: function(event){
this.file_frame = wp.media.frames.file_frame
var attachment = this.file_frame.state().get('selection').first().toJSON();
var _cT = _.template(this.attachTemplate);
var _o = _cT({
icon: attachment.icon,
url: attachment.url,
name: attachment.title,
length: attachment.fileLength,
id: attachment.id
});
$('#soundmap-attachments-list').append(_o);
$('.att-info').on('click','.delete-att-item', this.removeMedia);
},
mapClick: function(event){
var _latlng = event.latlng;
if(_.isUndefined(this.marker)){
this.marker = L.marker(_latlng,{draggable: true}).addTo(this.map);
this.marker.addEventListener('dragend', this.markerDrag, this);
}else{
this.marker.setLatLng(_latlng);
}
$('#soundmap-marker-lat').val(_latlng.lat);
$('#soundmap-marker-lng').val(_latlng.lng);
},
markerDrag: function(event){
var _latlng = this.marker.getLatLng();
$('#soundmap-marker-lat').val(_latlng.lat);
$('#soundmap-marker-lng').val(_latlng.lng);
}
});
$(document).ready(function(){
//console.log($('#map_canvas').width());
// Add Timeout for wait load metabox
setTimeout(function() {
soundmap.initMap();
}, 3000);
});
}(jQuery));