Merge branch 'master' into feature-league-tables-bypass-ordering
This commit is contained in:
10
assets/js/Control.Geocoder.min.js
vendored
Normal file
10
assets/js/Control.Geocoder.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
assets/js/Control.Geocoder.min.js.map
Normal file
1
assets/js/Control.Geocoder.min.js.map
Normal file
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@
|
||||
var p = g.split("[");
|
||||
var label = p.shift();
|
||||
var variations = p.shift();
|
||||
var shortcodes = variations.split("|");
|
||||
var shortcodes = typeof variations!== 'undefined' ? variations.split("|") : [];
|
||||
var submenu = new Array();
|
||||
shortcodes.forEach(function(s) {
|
||||
submenu.push({
|
||||
|
||||
@@ -23,14 +23,14 @@ jQuery(document).ready(function($){
|
||||
})
|
||||
.click(function(){
|
||||
$('.iris-picker').hide();
|
||||
$(this).closest('.sp-icon-color-box, td').find('.iris-picker').show();
|
||||
$(this).closest('.sp-color-box-for-icon, td').find('.iris-picker').show();
|
||||
});
|
||||
|
||||
$('body').click(function() {
|
||||
$('.iris-picker').hide();
|
||||
});
|
||||
|
||||
$('.sp-icon-color-box, .colorpick').click(function(event){
|
||||
$('.sp-color-box-for-icon, .colorpick').click(function(event){
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
jQuery(document).ready(function($){
|
||||
$(".sp-location-picker").locationpicker({
|
||||
location: {
|
||||
latitude: Number($(".sp-latitude").val()),
|
||||
longitude: Number($(".sp-longitude").val())
|
||||
},
|
||||
radius: 0,
|
||||
inputBinding: {
|
||||
latitudeInput: $(".sp-latitude"),
|
||||
longitudeInput: $(".sp-longitude"),
|
||||
locationNameInput: $(".sp-address")
|
||||
},
|
||||
addressFormat: null,
|
||||
enableAutocomplete: true
|
||||
});
|
||||
});
|
||||
54
assets/js/admin/sp-geocoder.js
Normal file
54
assets/js/admin/sp-geocoder.js
Normal file
@@ -0,0 +1,54 @@
|
||||
//Get variables form input values
|
||||
latitude = document.getElementById('term_meta[sp_latitude]').value;
|
||||
longitude = document.getElementById('term_meta[sp_longitude]').value;
|
||||
|
||||
//Initialize the map and add the Search control box
|
||||
var map = L.map('sp-location-picker').setView([latitude, longitude], 15),
|
||||
geocoder = L.Control.Geocoder.nominatim(),
|
||||
control = L.Control.geocoder({
|
||||
geocoder: geocoder,
|
||||
collapsed: false,
|
||||
defaultMarkGeocode: false
|
||||
}).addTo(map),
|
||||
//Add a marker to use from the begining
|
||||
marker = L.marker([latitude, longitude],{draggable: true, autoPan: true}).addTo(map);
|
||||
|
||||
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
|
||||
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
|
||||
}).addTo(map);
|
||||
|
||||
//Pass the values to the fields after dragging
|
||||
marker.on('dragend', function (e) {
|
||||
document.getElementById('term_meta[sp_latitude]').value = marker.getLatLng().lat;
|
||||
document.getElementById('term_meta[sp_longitude]').value = marker.getLatLng().lng;
|
||||
geocoder.reverse(marker.getLatLng(), map.options.crs.scale(map.getZoom()), function(results) {
|
||||
var r = results[0];
|
||||
if (r) {
|
||||
document.getElementById('term_meta[sp_address]').value = r.name;
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
//After searching
|
||||
control.on('markgeocode', function(e) {
|
||||
var center = e.geocode.center;
|
||||
var address = e.geocode.name;
|
||||
map.setView([center.lat, center.lng], 15); //Center map to the new place
|
||||
map.removeLayer(marker); //Remove previous marker
|
||||
marker = L.marker([center.lat, center.lng],{draggable: true, autoPan: true}).addTo(map); //Add new marker to use
|
||||
//Pass the values to the fields after searching
|
||||
document.getElementById('term_meta[sp_latitude]').value = center.lat;
|
||||
document.getElementById('term_meta[sp_longitude]').value = center.lng;
|
||||
document.getElementById('term_meta[sp_address]').value = address;
|
||||
//Pass the values to the fields after dragging
|
||||
marker.on('dragend', function (e) {
|
||||
document.getElementById('term_meta[sp_latitude]').value = marker.getLatLng().lat;
|
||||
document.getElementById('term_meta[sp_longitude]').value = marker.getLatLng().lng;
|
||||
geocoder.reverse(marker.getLatLng(), map.options.crs.scale(map.getZoom()), function(results) {
|
||||
var r = results[0];
|
||||
if (r) {
|
||||
document.getElementById('term_meta[sp_address]').value = r.name;
|
||||
}
|
||||
})
|
||||
});
|
||||
}).addTo(map);
|
||||
54
assets/js/admin/sp-setup-geocoder.js
Normal file
54
assets/js/admin/sp-setup-geocoder.js
Normal file
@@ -0,0 +1,54 @@
|
||||
//Get variables form input values
|
||||
latitude = document.getElementById('sp_latitude').value;
|
||||
longitude = document.getElementById('sp_longitude').value;
|
||||
|
||||
//Initialize the map and add the Search control box
|
||||
var map = L.map('sp-location-picker').setView([latitude, longitude], 15),
|
||||
geocoder = L.Control.Geocoder.nominatim(),
|
||||
control = L.Control.geocoder({
|
||||
geocoder: geocoder,
|
||||
collapsed: false,
|
||||
defaultMarkGeocode: false
|
||||
}).addTo(map),
|
||||
//Add a marker to use from the begining
|
||||
marker = L.marker([latitude, longitude],{draggable: true, autoPan: true}).addTo(map);
|
||||
|
||||
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
|
||||
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
|
||||
}).addTo(map);
|
||||
|
||||
//Pass the values to the fields after dragging
|
||||
marker.on('dragend', function (e) {
|
||||
document.getElementById('sp_latitude').value = marker.getLatLng().lat;
|
||||
document.getElementById('sp_longitude').value = marker.getLatLng().lng;
|
||||
geocoder.reverse(marker.getLatLng(), map.options.crs.scale(map.getZoom()), function(results) {
|
||||
var r = results[0];
|
||||
if (r) {
|
||||
document.getElementById('sp_address').value = r.name;
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
//After searching
|
||||
control.on('markgeocode', function(e) {
|
||||
var center = e.geocode.center;
|
||||
var address = e.geocode.name;
|
||||
map.setView([center.lat, center.lng], 15); //Center map to the new place
|
||||
map.removeLayer(marker); //Remove previous marker
|
||||
marker = L.marker([center.lat, center.lng],{draggable: true, autoPan: true}).addTo(map); //Add new marker to use
|
||||
//Pass the values to the fields after searching
|
||||
document.getElementById('sp_latitude').value = center.lat;
|
||||
document.getElementById('sp_longitude').value = center.lng;
|
||||
document.getElementById('sp_address').value = address;
|
||||
//Pass the values to the fields after dragging
|
||||
marker.on('dragend', function (e) {
|
||||
document.getElementById('sp_latitude').value = marker.getLatLng().lat;
|
||||
document.getElementById('sp_longitude').value = marker.getLatLng().lng;
|
||||
geocoder.reverse(marker.getLatLng(), map.options.crs.scale(map.getZoom()), function(results) {
|
||||
var r = results[0];
|
||||
if (r) {
|
||||
document.getElementById('sp_address').value = r.name;
|
||||
}
|
||||
})
|
||||
});
|
||||
}).addTo(map);
|
||||
@@ -14,13 +14,16 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Chosen select
|
||||
$(".chosen-select").chosen({
|
||||
allow_single_deselect: true,
|
||||
search_contains: true,
|
||||
single_backstroke_delete: false,
|
||||
disable_search_threshold: 10,
|
||||
placeholder_text_multiple: localized_strings.none
|
||||
});
|
||||
$(document).on("postbox-toggled", function() {
|
||||
$(".chosen-select").filter(":visible").chosen({
|
||||
allow_single_deselect: true,
|
||||
search_contains: true,
|
||||
single_backstroke_delete: false,
|
||||
disable_search_threshold: 10,
|
||||
placeholder_text_multiple: localized_strings.none
|
||||
});
|
||||
}).trigger("postbox-toggled");
|
||||
|
||||
|
||||
// Auto key placeholder
|
||||
$("#poststuff #title").on("keyup", function() {
|
||||
@@ -37,7 +40,7 @@ jQuery(document).ready(function($){
|
||||
// Radio input toggle
|
||||
$(".sp-radio-toggle").click(function() {
|
||||
if($(this).data("sp-checked")) {
|
||||
$(this).attr("checked", false );
|
||||
$(this).prop("checked", false );
|
||||
$(this).data("sp-checked", false );
|
||||
} else {
|
||||
$(this).data("sp-checked", true );
|
||||
@@ -255,7 +258,7 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Activate total stats calculator
|
||||
if($(".sp-data-table .sp-total").size()) {
|
||||
if($(".sp-data-table .sp-total").length) {
|
||||
$(".sp-data-table .sp-post td input").on("keyup", function() {
|
||||
$(this).closest(".sp-data-table").find(".sp-total td").eq($(this).parent().index()).find("input[data-sp-format=number][data-sp-total-type!=average]").trigger("updateTotal");
|
||||
});
|
||||
@@ -488,11 +491,11 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Event format affects data
|
||||
$(".post-type-sp_event #post-formats-select input.post-format").change(function() {
|
||||
$(".post-type-sp_event #post-formats-select").change(function() {
|
||||
layout = $(".post-type-sp_event #post-formats-select input:checked").val();
|
||||
if ( layout == "friendly" ) {
|
||||
$(".sp_event-sp_league-field").show().find("select").prop("disabled", false);
|
||||
$(".sp_event-sp_season-field").show().find("select").prop("disabled", false);
|
||||
$(".sp_event-sp_league-field").hide().find("select").prop("disabled", true);
|
||||
$(".sp_event-sp_season-field").hide().find("select").prop("disabled", true);
|
||||
} else {
|
||||
$(".sp_event-sp_league-field").show().find("select").prop("disabled", false);
|
||||
$(".sp_event-sp_season-field").show().find("select").prop("disabled", false);
|
||||
@@ -500,10 +503,10 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Trigger event format change
|
||||
$(".post-type-sp_event #post-formats-select input.post-format").trigger("change");
|
||||
$(".post-type-sp_event #post-formats-select").trigger("change");
|
||||
|
||||
// Calendar layout affects data
|
||||
$(".post-type-sp_calendar #post-formats-select input.post-format").change(function() {
|
||||
$(".post-type-sp_calendar #post-formats-select").change(function() {
|
||||
layout = $(".post-type-sp_calendar #post-formats-select input:checked").val();
|
||||
$(".sp-calendar-table tr").each(function() {
|
||||
if ( layout == "list" ) {
|
||||
@@ -517,10 +520,10 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Trigger calendar layout change
|
||||
$(".post-type-sp_calendar #post-formats-select input.post-format").trigger("change");
|
||||
$(".post-type-sp_calendar #post-formats-select").trigger("change");
|
||||
|
||||
// Player list layout affects data
|
||||
$(".post-type-sp_list #post-formats-select input.post-format").change(function() {
|
||||
$(".post-type-sp_list #post-formats-select").change(function() {
|
||||
layout = $(".post-type-sp_list #post-formats-select input:checked").val();
|
||||
$(".sp-player-list-table tr").each(function() {
|
||||
if ( layout == "list" ) {
|
||||
@@ -532,7 +535,7 @@ jQuery(document).ready(function($){
|
||||
});
|
||||
|
||||
// Trigger player list layout change
|
||||
$(".post-type-sp_list #post-formats-select input.post-format").trigger("change");
|
||||
$(".post-type-sp_list #post-formats-select").trigger("change");
|
||||
|
||||
// Configure primary result option (Ajax)
|
||||
$(".sp-admin-config-table").on("click", ".sp-primary-result-option", function() {
|
||||
|
||||
81
assets/js/blocks/event-calendar.js
Normal file
81
assets/js/blocks/event-calendar.js
Normal file
@@ -0,0 +1,81 @@
|
||||
import apiFetch from '@wordpress/api-fetch';
|
||||
console.log(wp.api.collections.Posts());
|
||||
|
||||
wp.blocks.registerBlockType('sportspress/event-calendar', {
|
||||
title: strings.event_calendar,
|
||||
icon: 'calendar',
|
||||
category: 'sportspress',
|
||||
attributes: {
|
||||
title: {
|
||||
type: 'string'
|
||||
},
|
||||
id: {
|
||||
type: 'number'
|
||||
},
|
||||
status: {
|
||||
type: 'string'
|
||||
},
|
||||
date: {
|
||||
type: 'string'
|
||||
},
|
||||
date_from: {
|
||||
type: 'string'
|
||||
},
|
||||
date_to: {
|
||||
type: 'string'
|
||||
},
|
||||
date_past: {
|
||||
type: 'number'
|
||||
},
|
||||
date_future: {
|
||||
type: 'number'
|
||||
},
|
||||
date_relative: {
|
||||
type: 'number'
|
||||
},
|
||||
day: {
|
||||
type: 'string'
|
||||
},
|
||||
show_all_events_link: {
|
||||
type: 'number'
|
||||
},
|
||||
|
||||
content: {type: 'string'},
|
||||
color: {type: 'string'}
|
||||
},
|
||||
|
||||
edit: function(props) {
|
||||
function updateContent(event) {
|
||||
props.setAttributes({content: event.target.value})
|
||||
}
|
||||
function updateColor(value) {
|
||||
props.setAttributes({color: value.hex})
|
||||
}
|
||||
return React.createElement(
|
||||
wp.components.Panel,
|
||||
{header: strings.event_calendar},
|
||||
React.createElement(
|
||||
wp.components.PanelBody,
|
||||
{title: strings.properties},
|
||||
React.createElement(
|
||||
wp.components.TextControl,
|
||||
{label: strings.title, type: "text", value: props.attributes.title}
|
||||
),
|
||||
React.createElement(
|
||||
wp.components.SelectControl,
|
||||
{label: strings.select_calendar, options: [{label: strings.all, value: 0}].concat(posts.events.map(post => {
|
||||
return {label: post.post_title, value: post.ID}
|
||||
}))}
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
|
||||
save: function(props) {
|
||||
return wp.element.createElement(
|
||||
"h3",
|
||||
{ style: { border: "3px solid " + props.attributes.color } },
|
||||
props.attributes.content
|
||||
);
|
||||
}
|
||||
})
|
||||
6
assets/js/leaflet.js
Normal file
6
assets/js/leaflet.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/js/leaflet.js.map
Normal file
1
assets/js/leaflet.js.map
Normal file
File diff suppressed because one or more lines are too long
@@ -1,400 +0,0 @@
|
||||
/*! jquery-locationpicker - v0.1.16 - 2017-10-02 */
|
||||
(function($) {
|
||||
function GMapContext(domElement, options) {
|
||||
var _map = new google.maps.Map(domElement, options);
|
||||
var _marker = new google.maps.Marker({
|
||||
position: new google.maps.LatLng(54.19335, -3.92695),
|
||||
map: _map,
|
||||
title: "Drag Me",
|
||||
visible: options.markerVisible,
|
||||
draggable: options.markerDraggable,
|
||||
icon: options.markerIcon !== undefined ? options.markerIcon : undefined
|
||||
});
|
||||
return {
|
||||
map: _map,
|
||||
marker: _marker,
|
||||
circle: null,
|
||||
location: _marker.position,
|
||||
radius: options.radius,
|
||||
locationName: options.locationName,
|
||||
addressComponents: {
|
||||
formatted_address: null,
|
||||
addressLine1: null,
|
||||
addressLine2: null,
|
||||
streetName: null,
|
||||
streetNumber: null,
|
||||
city: null,
|
||||
district: null,
|
||||
state: null,
|
||||
stateOrProvince: null
|
||||
},
|
||||
settings: options.settings,
|
||||
domContainer: domElement,
|
||||
geodecoder: new google.maps.Geocoder()
|
||||
};
|
||||
}
|
||||
var GmUtility = {
|
||||
drawCircle: function(gmapContext, center, radius, options) {
|
||||
if (gmapContext.circle != null) {
|
||||
gmapContext.circle.setMap(null);
|
||||
}
|
||||
if (radius > 0) {
|
||||
radius *= 1;
|
||||
options = $.extend({
|
||||
strokeColor: "#0000FF",
|
||||
strokeOpacity: .35,
|
||||
strokeWeight: 2,
|
||||
fillColor: "#0000FF",
|
||||
fillOpacity: .2
|
||||
}, options);
|
||||
options.map = gmapContext.map;
|
||||
options.radius = radius;
|
||||
options.center = center;
|
||||
gmapContext.circle = new google.maps.Circle(options);
|
||||
return gmapContext.circle;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
setPosition: function(gMapContext, location, callback) {
|
||||
gMapContext.location = location;
|
||||
gMapContext.marker.setPosition(location);
|
||||
gMapContext.map.panTo(location);
|
||||
this.drawCircle(gMapContext, location, gMapContext.radius, {});
|
||||
if (gMapContext.settings.enableReverseGeocode) {
|
||||
this.updateLocationName(gMapContext, callback);
|
||||
} else {
|
||||
if (callback) {
|
||||
callback.call(this, gMapContext);
|
||||
}
|
||||
}
|
||||
},
|
||||
locationFromLatLng: function(lnlg) {
|
||||
return {
|
||||
latitude: lnlg.lat(),
|
||||
longitude: lnlg.lng()
|
||||
};
|
||||
},
|
||||
addressByFormat: function(addresses, format) {
|
||||
var result = null;
|
||||
for (var i = addresses.length - 1; i >= 0; i--) {
|
||||
if (addresses[i].types.indexOf(format) >= 0) {
|
||||
result = addresses[i];
|
||||
}
|
||||
}
|
||||
return result || addresses[0];
|
||||
},
|
||||
updateLocationName: function(gmapContext, callback) {
|
||||
gmapContext.geodecoder.geocode({
|
||||
latLng: gmapContext.marker.position
|
||||
}, function(results, status) {
|
||||
if (status == google.maps.GeocoderStatus.OK && results.length > 0) {
|
||||
var address = GmUtility.addressByFormat(results, gmapContext.settings.addressFormat);
|
||||
gmapContext.locationName = address.formatted_address;
|
||||
gmapContext.addressComponents = GmUtility.address_component_from_google_geocode(address.address_components);
|
||||
} else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
|
||||
return setTimeout(function() {
|
||||
GmUtility.updateLocationName(gmapContext, callback);
|
||||
}, 1e3);
|
||||
}
|
||||
if (callback) {
|
||||
callback.call(this, gmapContext);
|
||||
}
|
||||
});
|
||||
},
|
||||
address_component_from_google_geocode: function(address_components) {
|
||||
var result = {};
|
||||
for (var i = address_components.length - 1; i >= 0; i--) {
|
||||
var component = address_components[i];
|
||||
if (component.types.indexOf("postal_code") >= 0) {
|
||||
result.postalCode = component.short_name;
|
||||
} else if (component.types.indexOf("street_number") >= 0) {
|
||||
result.streetNumber = component.short_name;
|
||||
} else if (component.types.indexOf("route") >= 0) {
|
||||
result.streetName = component.short_name;
|
||||
} else if (component.types.indexOf("locality") >= 0) {
|
||||
result.city = component.short_name;
|
||||
} else if (component.types.indexOf("sublocality") >= 0) {
|
||||
result.district = component.short_name;
|
||||
} else if (component.types.indexOf("administrative_area_level_1") >= 0) {
|
||||
result.stateOrProvince = component.short_name;
|
||||
} else if (component.types.indexOf("country") >= 0) {
|
||||
result.country = component.short_name;
|
||||
}
|
||||
}
|
||||
result.addressLine1 = [ result.streetNumber, result.streetName ].join(" ").trim();
|
||||
result.addressLine2 = "";
|
||||
return result;
|
||||
}
|
||||
};
|
||||
function isPluginApplied(domObj) {
|
||||
return getContextForElement(domObj) != undefined;
|
||||
}
|
||||
function getContextForElement(domObj) {
|
||||
return $(domObj).data("locationpicker");
|
||||
}
|
||||
function updateInputValues(inputBinding, gmapContext) {
|
||||
if (!inputBinding) return;
|
||||
var currentLocation = GmUtility.locationFromLatLng(gmapContext.marker.position);
|
||||
if (inputBinding.latitudeInput) {
|
||||
inputBinding.latitudeInput.val(currentLocation.latitude).change();
|
||||
}
|
||||
if (inputBinding.longitudeInput) {
|
||||
inputBinding.longitudeInput.val(currentLocation.longitude).change();
|
||||
}
|
||||
if (inputBinding.radiusInput) {
|
||||
inputBinding.radiusInput.val(gmapContext.radius).change();
|
||||
}
|
||||
if (inputBinding.locationNameInput) {
|
||||
inputBinding.locationNameInput.val(gmapContext.locationName).change();
|
||||
}
|
||||
}
|
||||
function setupInputListenersInput(inputBinding, gmapContext) {
|
||||
if (inputBinding) {
|
||||
if (inputBinding.radiusInput) {
|
||||
inputBinding.radiusInput.on("change", function(e) {
|
||||
var radiusInputValue = $(this).val();
|
||||
if (!e.originalEvent || isNaN(radiusInputValue)) {
|
||||
return;
|
||||
}
|
||||
gmapContext.radius = radiusInputValue;
|
||||
GmUtility.setPosition(gmapContext, gmapContext.location, function(context) {
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ GmUtility.locationFromLatLng(context.location), context.radius, false ]);
|
||||
});
|
||||
});
|
||||
}
|
||||
if (inputBinding.locationNameInput && gmapContext.settings.enableAutocomplete) {
|
||||
var blur = false;
|
||||
gmapContext.autocomplete = new google.maps.places.Autocomplete(inputBinding.locationNameInput.get(0), gmapContext.settings.autocompleteOptions);
|
||||
google.maps.event.addListener(gmapContext.autocomplete, "place_changed", function() {
|
||||
blur = false;
|
||||
var place = gmapContext.autocomplete.getPlace();
|
||||
if (!place.geometry) {
|
||||
gmapContext.settings.onlocationnotfound(place.name);
|
||||
return;
|
||||
}
|
||||
GmUtility.setPosition(gmapContext, place.geometry.location, function(context) {
|
||||
updateInputValues(inputBinding, context);
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ GmUtility.locationFromLatLng(context.location), context.radius, false ]);
|
||||
});
|
||||
});
|
||||
if (gmapContext.settings.enableAutocompleteBlur) {
|
||||
inputBinding.locationNameInput.on("change", function(e) {
|
||||
if (!e.originalEvent) {
|
||||
return;
|
||||
}
|
||||
blur = true;
|
||||
});
|
||||
inputBinding.locationNameInput.on("blur", function(e) {
|
||||
if (!e.originalEvent) {
|
||||
return;
|
||||
}
|
||||
setTimeout(function() {
|
||||
var address = $(inputBinding.locationNameInput).val();
|
||||
if (address.length > 5 && blur) {
|
||||
blur = false;
|
||||
gmapContext.geodecoder.geocode({
|
||||
address: address
|
||||
}, function(results, status) {
|
||||
if (status == google.maps.GeocoderStatus.OK && results && results.length) {
|
||||
GmUtility.setPosition(gmapContext, results[0].geometry.location, function(context) {
|
||||
updateInputValues(inputBinding, context);
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ GmUtility.locationFromLatLng(context.location), context.radius, false ]);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}, 1e3);
|
||||
});
|
||||
}
|
||||
}
|
||||
if (inputBinding.latitudeInput) {
|
||||
inputBinding.latitudeInput.on("change", function(e) {
|
||||
var latitudeInputValue = $(this).val();
|
||||
if (!e.originalEvent || isNaN(latitudeInputValue)) {
|
||||
return;
|
||||
}
|
||||
GmUtility.setPosition(gmapContext, new google.maps.LatLng(latitudeInputValue, gmapContext.location.lng()), function(context) {
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ GmUtility.locationFromLatLng(context.location), context.radius, false ]);
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
});
|
||||
});
|
||||
}
|
||||
if (inputBinding.longitudeInput) {
|
||||
inputBinding.longitudeInput.on("change", function(e) {
|
||||
var longitudeInputValue = $(this).val();
|
||||
if (!e.originalEvent || isNaN(longitudeInputValue)) {
|
||||
return;
|
||||
}
|
||||
GmUtility.setPosition(gmapContext, new google.maps.LatLng(gmapContext.location.lat(), longitudeInputValue), function(context) {
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ GmUtility.locationFromLatLng(context.location), context.radius, false ]);
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
function autosize(gmapContext) {
|
||||
google.maps.event.trigger(gmapContext.map, "resize");
|
||||
setTimeout(function() {
|
||||
gmapContext.map.setCenter(gmapContext.marker.position);
|
||||
}, 300);
|
||||
}
|
||||
function updateMap(gmapContext, $target, options) {
|
||||
var settings = $.extend({}, $.fn.locationpicker.defaults, options), latNew = settings.location.latitude, lngNew = settings.location.longitude, radiusNew = settings.radius, latOld = gmapContext.settings.location.latitude, lngOld = gmapContext.settings.location.longitude, radiusOld = gmapContext.settings.radius;
|
||||
if (latNew == latOld && lngNew == lngOld && radiusNew == radiusOld) return;
|
||||
gmapContext.settings.location.latitude = latNew;
|
||||
gmapContext.settings.location.longitude = lngNew;
|
||||
gmapContext.radius = radiusNew;
|
||||
GmUtility.setPosition(gmapContext, new google.maps.LatLng(gmapContext.settings.location.latitude, gmapContext.settings.location.longitude), function(context) {
|
||||
setupInputListenersInput(gmapContext.settings.inputBinding, gmapContext);
|
||||
context.settings.oninitialized($target);
|
||||
});
|
||||
}
|
||||
$.fn.locationpicker = function(options, params) {
|
||||
if (typeof options == "string") {
|
||||
var _targetDomElement = this.get(0);
|
||||
if (!isPluginApplied(_targetDomElement)) return;
|
||||
var gmapContext = getContextForElement(_targetDomElement);
|
||||
switch (options) {
|
||||
case "location":
|
||||
if (params == undefined) {
|
||||
var location = GmUtility.locationFromLatLng(gmapContext.location);
|
||||
location.radius = gmapContext.radius;
|
||||
location.name = gmapContext.locationName;
|
||||
return location;
|
||||
} else {
|
||||
if (params.radius) {
|
||||
gmapContext.radius = params.radius;
|
||||
}
|
||||
GmUtility.setPosition(gmapContext, new google.maps.LatLng(params.latitude, params.longitude), function(gmapContext) {
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
case "subscribe":
|
||||
if (params == undefined) {
|
||||
return null;
|
||||
} else {
|
||||
var event = params.event;
|
||||
var callback = params.callback;
|
||||
if (!event || !callback) {
|
||||
console.error('LocationPicker: Invalid arguments for method "subscribe"');
|
||||
return null;
|
||||
}
|
||||
google.maps.event.addListener(gmapContext.map, event, callback);
|
||||
}
|
||||
break;
|
||||
|
||||
case "map":
|
||||
if (params == undefined) {
|
||||
var locationObj = GmUtility.locationFromLatLng(gmapContext.location);
|
||||
locationObj.formattedAddress = gmapContext.locationName;
|
||||
locationObj.addressComponents = gmapContext.addressComponents;
|
||||
return {
|
||||
map: gmapContext.map,
|
||||
marker: gmapContext.marker,
|
||||
location: locationObj
|
||||
};
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
case "autosize":
|
||||
autosize(gmapContext);
|
||||
return this;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return this.each(function() {
|
||||
var $target = $(this);
|
||||
if (isPluginApplied(this)) {
|
||||
updateMap(getContextForElement(this), $(this), options);
|
||||
return;
|
||||
}
|
||||
var settings = $.extend({}, $.fn.locationpicker.defaults, options);
|
||||
var gmapContext = new GMapContext(this, $.extend({}, {
|
||||
zoom: settings.zoom,
|
||||
center: new google.maps.LatLng(settings.location.latitude, settings.location.longitude),
|
||||
mapTypeId: settings.mapTypeId,
|
||||
mapTypeControl: false,
|
||||
styles: settings.styles,
|
||||
disableDoubleClickZoom: false,
|
||||
scrollwheel: settings.scrollwheel,
|
||||
streetViewControl: false,
|
||||
radius: settings.radius,
|
||||
locationName: settings.locationName,
|
||||
settings: settings,
|
||||
autocompleteOptions: settings.autocompleteOptions,
|
||||
addressFormat: settings.addressFormat,
|
||||
draggable: settings.draggable,
|
||||
markerIcon: settings.markerIcon,
|
||||
markerDraggable: settings.markerDraggable,
|
||||
markerVisible: settings.markerVisible
|
||||
}, settings.mapOptions));
|
||||
$target.data("locationpicker", gmapContext);
|
||||
function displayMarkerWithSelectedArea() {
|
||||
GmUtility.setPosition(gmapContext, gmapContext.marker.position, function(context) {
|
||||
var currentLocation = GmUtility.locationFromLatLng(gmapContext.location);
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
context.settings.onchanged.apply(gmapContext.domContainer, [ currentLocation, context.radius, true ]);
|
||||
});
|
||||
}
|
||||
if (settings.markerInCenter) {
|
||||
gmapContext.map.addListener("bounds_changed", function() {
|
||||
if (!gmapContext.marker.dragging) {
|
||||
gmapContext.marker.setPosition(gmapContext.map.center);
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
}
|
||||
});
|
||||
gmapContext.map.addListener("idle", function() {
|
||||
if (!gmapContext.marker.dragging) {
|
||||
displayMarkerWithSelectedArea();
|
||||
}
|
||||
});
|
||||
}
|
||||
google.maps.event.addListener(gmapContext.marker, "drag", function(event) {
|
||||
updateInputValues(gmapContext.settings.inputBinding, gmapContext);
|
||||
});
|
||||
google.maps.event.addListener(gmapContext.marker, "dragend", function(event) {
|
||||
displayMarkerWithSelectedArea();
|
||||
});
|
||||
GmUtility.setPosition(gmapContext, new google.maps.LatLng(settings.location.latitude, settings.location.longitude), function(context) {
|
||||
updateInputValues(settings.inputBinding, gmapContext);
|
||||
setupInputListenersInput(settings.inputBinding, gmapContext);
|
||||
context.settings.oninitialized($target);
|
||||
});
|
||||
});
|
||||
};
|
||||
$.fn.locationpicker.defaults = {
|
||||
location: {
|
||||
latitude: 40.7324319,
|
||||
longitude: -73.82480777777776
|
||||
},
|
||||
locationName: "",
|
||||
radius: 500,
|
||||
zoom: 15,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
||||
styles: [],
|
||||
mapOptions: {},
|
||||
scrollwheel: true,
|
||||
inputBinding: {
|
||||
latitudeInput: null,
|
||||
longitudeInput: null,
|
||||
radiusInput: null,
|
||||
locationNameInput: null
|
||||
},
|
||||
enableAutocomplete: false,
|
||||
enableAutocompleteBlur: false,
|
||||
autocompleteOptions: null,
|
||||
addressFormat: "postal_code",
|
||||
enableReverseGeocode: true,
|
||||
draggable: true,
|
||||
onchanged: function(currentLocation, radius, isMarkerDropped) {},
|
||||
onlocationnotfound: function(locationName) {},
|
||||
oninitialized: function(component) {},
|
||||
markerIcon: undefined,
|
||||
markerDraggable: true,
|
||||
markerVisible: true
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -10,7 +10,7 @@ function sp_viewport() {
|
||||
(function($) {
|
||||
|
||||
/* Header */
|
||||
if ( ! $('.sp-header').size() ) {
|
||||
if ( ! $('.sp-header').length ) {
|
||||
$('body').prepend( '<div class="sp-header sp-header-loaded"></div>' );
|
||||
}
|
||||
|
||||
@@ -116,4 +116,4 @@ function sp_viewport() {
|
||||
}
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
})(jQuery);
|
||||
|
||||
Reference in New Issue
Block a user