// ==UserScript== // @name WME Place Interface Enhancements // @namespace https://greasyfork.org/users/30701-justins83-waze // @version 1.00.01 // @description Enhancements to various Place interfaces // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://beta.waze.com/* // @exclude https://www.waze.com/user/editor* // @icon data:image/jpeg;base64,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 // @author JustinS83 // @grant none // @require https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js // @license GPLv3 // @downloadURL none // ==/UserScript== var UpdateObject, MultiAction; (function() { 'use strict'; var settings = {}; var placeMenuSelector = "#edit-buttons > div > div.toolbar-button.waze-icon-place.toolbar-submenu.toolbar-group.toolbar-group-venues.ItemInactive > menu"; var pointStyle = { pointRadius: 6, fillOpacity: 0, strokeColor: '#00ece3', strokeWidth: '2', strokeLinecap: 'round' }; var layerName = "WME PIE"; var newPlaceLayer; var placementMode = false; var drawPoly; var resCategory = "RESIDENCE_HOME"; var PIEPlaceNameLayer; function bootstrap(tries) { tries = tries || 1; if (window.W && window.W.map && window.W.model && window.W.loginManager.user && $) { init(); } else if (tries < 1000) { setTimeout(function () {bootstrap(tries++);}, 200); } } bootstrap(); function init(){ loadTranslations(); var $section = $("
", {style:"padding:8px 16px", id:"WMEPIESettings"}); $section.html([ '

' + I18n.t('pie.prefs.title') + '

', '
', '
', '
', '
', '
', '
', '

', '' + I18n.t('pie.prefs.ShowAreaPlaceSize') + '
', '
', '
', '
', '
', '
', '
', '

' + I18n.t('pie.prefs.NewPlaces') + '

', '
', '
', '
', '
', '
', '
' + I18n.t('pie.prefs.LockLevel') + '
', '
', '
', '

' + I18n.t('pie.prefs.MapChanges') + '

', '
', '
', '
', '
', '
', '
', '
', '' + I18n.t('pie.prefs.PlaceMenuCustomization') + '
', buildItemOption(1), buildItemOption(2), buildItemOption(3), buildItemOption(4), buildItemOption(5), buildItemOption(6), buildItemOption(7), buildItemOption(8), buildItemOption(9), buildItemOption(10), buildItemOption(11), '
' ].join(' ')); UpdateObject = require("Waze/Action/UpdateObject"); MultiAction = require("Waze/Action/MultiAction"); newPlaceLayer = new OL.Layer.Vector(layerName,{displayInLayerSwitcher: false}); W.map.addLayer(newPlaceLayer); var style = new OpenLayers.Style({ pointRadius: "${pointRadius}", label : "${labelText}", fontFamily: "Tahoma, Arial, Verdana", labelOutlineColor: '#FFEEEE', labelOutlineWidth: 2, labelAlign: 'cm', fontColor: "#301130", fontOpacity: 1.0, fontSize: "12px", labelYOffset: "${yOffset}", fontStyle: "${style}", pointRadius: 0 }); PIEPlaceNameLayer = new OL.Layer.Vector("PIEPlaceNameLayer",{displayInLayerSwitcher: false, uniqueName: "__PIEPlaceNameLayer", styleMap: new OL.StyleMap(style)}); W.map.addLayer(PIEPlaceNameLayer); PIEPlaceNameLayer.setVisibility(true); injectCss(); new WazeWrap.Interface.Tab('PIE', $section.html(), init2); } function buildNewPlaceList(){ //Clear out the Places menu $(placeMenuSelector).empty(); var cat = ""; var icon = ""; var i; for(i=0;i<11;i++){ icon = ""; cat = $('#pieItem' + (i+1))[0].value; icon = $('#pieItem' + (i+1))[0].options[$('#pieItem' + (i+1))[0].selectedIndex].getAttribute("data-icon"); if(cat !== "PARKING_LOT" && cat !== resCategory) $(placeMenuSelector).append('
' + $('#pieItem' + (i+1))[0].options[$('#pieItem' + (i+1))[0].selectedIndex].innerHTML + '
'); else{ if(cat === resCategory) //force point $(placeMenuSelector).append('
' + $('#pieItem' + (i+1))[0].options[$('#pieItem' + (i+1))[0].selectedIndex].innerHTML + '
'); else //Parking lot - force area $(placeMenuSelector).append('
' + $('#pieItem' + (i+1))[0].options[$('#pieItem' + (i+1))[0].selectedIndex].innerHTML + '
'); } } $('[id^="piePlaceMainItem"]').click(function(e){ startPlacementMode($('#' + this.id).data("category"), true); }); $('[id^="piePlaceAreaItem"]').click(function(e){ e.stopPropagation(); startPlacementMode($('#' + this.id).data("category"), false); }); } function init2(){ //Load settings loadSettings(); //Set up event handlers $('#_cbShowAreaPlaceSize').change(function() { if(this.checked) { attachPlaceSizeHandlers(); updatePlaceSizeDisplay(); $('#_cbShowAreaPlaceSizeImperial')[0].disabled = false; $('#_cbShowAreaPlaceSizeMetric')[0].disabled = false; } else { removePlaceSizeHandlers(); $('#AreaSize').remove(); $('#_cbShowAreaPlaceSizeImperial')[0].disabled = true; $('#_cbShowAreaPlaceSizeMetric')[0].disabled = true; } }); $('#_cbShowPlaceNames').change(function() { PIEPlaceNameLayer.setVisibility(this.checked); if(this.checked) { $('#_cbShowPlaceNamesPoint')[0].disabled = false; $('#_cbShowPlaceNamesArea')[0].disabled = false; $('#_cbShowPlaceNamesPLA')[0].disabled = false; $('#_cbShowPlaceNamesLock')[0].disabled = false; } else { $('#_cbShowPlaceNamesPoint')[0].disabled = true; $('#_cbShowPlaceNamesArea')[0].disabled = true; $('#_cbShowPlaceNamesPLA')[0].disabled = true; $('#_cbShowPlaceNamesLock')[0].disabled = true; } console.log(this.checked); DisplayPlaceNames(); }); $('[id^="_cbShowPlaceNames"]').change(function(){ DisplayPlaceNames(); }); $('#_cbShowExternalProviderTooltip').change(function(){ ToggleExternalProvidersCSS(this.checked); }); $('#_cbShowLockButtonsRPP').change(function() { if(this.checked) attachRPPLockButtonHandlers(); else { $('#pieRPPLockButtonsContainer').remove(); unregisterEvents(addLockButtons); } }); $('#_cbShowPlaceLocatorCrosshair').change(function(){ if(this.checked) registerEvents(ShowPlaceLocatorCrosshair); else unregisterEvents(ShowPlaceLocatorCrosshair); }); $('#_cbShowParkingLotButton').change(function(){ if(this.checked) registerEvents(ShowParkingLotButton); else unregisterEvents(ShowParkingLotButton); }); $('#_cbShowCopyPlaceButton').change(function(){ if(this.checked) registerEvents(ShowCopyPlaceButton); else unregisterEvents(ShowCopyPlaceButton); }); $('#_cbShowSearchButton').change(function(){ if(this.checked) registerEvents(ShowSearchButton); else unregisterEvents(ShowSearchButton); }); $('#_cbAddPlaceCategoriesButtons').change(function(){ if(this.checked) registerEvents(AddPlaceCategoriesButtons); else unregisterEvents(AddPlaceCategoriesButtons); }); //Load settings to interface setChecked('_cbShowAreaPlaceSize', settings.ShowAreaPlaceSize); setChecked('_cbShowAreaPlaceSizeImperial', settings.ShowAreaPlaceSizeImperial); setChecked('_cbShowAreaPlaceSizeMetric', settings.ShowAreaPlaceSizeMetric); setChecked('_cbShowLockButtonsRPP', settings.ShowLockButtonsRPP); setChecked('_cbEditRPPAfterCreated', settings.EditRPPAfterCreated); setChecked('_cbUseStreetFromClosestSeg', settings.UseStreetFromClosestSeg); setChecked('_cbUseCityFromClosestSeg', settings.UseCityFromClosestSeg); setChecked('_cbShowPlaceLocatorCrosshair', settings.ShowPlaceLocatorCrosshair); setChecked('_cbShowParkingLotButton', settings.ShowParkingLotButton); setChecked('_cbShowCopyPlaceButton', settings.ShowCopyPlaceButton); setChecked('_cbShowExternalProviderTooltip', settings.ShowExternalProviderTooltip); setChecked('_cbUseAltCity', settings.UseAltCity); setChecked('_cbShowSearchButton', settings.ShowSearchButton); setChecked('_cbAddPlaceCategoriesButtons', settings.AddPlaceCategoriesButtons); setChecked('_cbSkipPLR', settings.SkipPLR); setChecked('_cbShowPlaceNames', settings.ShowPlaceNames); setChecked('_cbShowPlaceNamesPoint', settings.ShowPlaceNamesPoint); setChecked('_cbShowPlaceNamesArea', settings.ShowPlaceNamesArea); setChecked('_cbShowPlaceNamesPLA', settings.ShowPlaceNamesPLA); setChecked('_cbShowPlaceNamesLock', settings.ShowPlaceNamesLock); if(settings.ShowPlaceNames){ $('#_cbShowPlaceNamesPoint')[0].disabled = false; $('#_cbShowPlaceNamesArea')[0].disabled = false; $('#_cbShowPlaceNamesPLA')[0].disabled = false; $('#_cbShowPlaceNamesLock')[0].disabled = false; } $('#piePlaceZoom')[0].value = settings.PlaceZoom; $('#pieDefaultLockLevel')[0].value = settings.DefaultLockLevel; if(settings.ShowAreaPlaceSize){ $('#_cbShowAreaPlaceSizeImperial')[0].disabled = false; $('#_cbShowAreaPlaceSizeMetric')[0].disabled = false; attachPlaceSizeHandlers(); } if(settings.ShowPlaceLocatorCrosshair){ registerEvents(ShowPlaceLocatorCrosshair); ShowPlaceLocatorCrosshair(); //in case the user opened a PL with a Place selected } if(settings.ShowParkingLotButton){ registerEvents(ShowParkingLotButton); ShowParkingLotButton(); //in case the user opened a PL with a Place selected } if(settings.ShowCopyPlaceButton){ registerEvents(ShowCopyPlaceButton); ShowCopyPlaceButton(); } if(settings.ShowExternalProviderTooltip){ //registerEvents(ShowExternalProviderTooltip); //ShowExternalProviderTooltip(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if ($(mutation.target).hasClass('select2-chosen')) ShowExternalProviderTooltip(); }); }); observer.observe(document.getElementById('edit-panel'), { childList: true, subtree: true }); } if(settings.ShowSearchButton){ registerEvents(ShowSearchButton); ShowSearchButton(); //in case the user opened a PL with a Place selected } if(settings.AddPlaceCategoriesButtons){ registerEvents(AddPlaceCategoriesButtons); AddPlaceCategoriesButtons(); } if(settings.ShowLockButtonsRPP) attachRPPLockButtonHandlers(); if(settings.ShowExternalProviderTooltip) ToggleExternalProvidersCSS(true); $('.pieSettingsCheckbox').change(function() { var settingName = $(this)[0].id.substr(3); settings[settingName] = this.checked; saveSettings(); }); $('#piePlaceZoom').change(function(){ var settingName = $(this)[0].id.substr(3); settings[settingName] = $(this)[0].value; saveSettings(); }); $('#pieDefaultLockLevel').change(function(){ settings[$(this)[0].id.substr(3)] = $(this)[0].value; saveSettings(); }); var i; //Whenever a Place item is changed, read the settings and save to localStorage $('[id^="pieItem"]').change(function(){ for(i=0;i<11;i++){ settings.NewPlacesList[i] = $('#pieItem'+(i+1))[0].value; } saveSettings(); buildNewPlaceList(); }); //Load settings into Place Customization list options for(i=0; i<11;i++) $('#pieItem'+(i+1))[0].value = settings.NewPlacesList[i]; //Build our new menu buildNewPlaceList(); new WazeWrap.Interface.Shortcut('CreateResidentialPlaceShortcut', 'Creates a resdiential Place point', 'wmepie', 'Place Interface Enhancements', settings.CreateResidentialPlaceShortcut, function(){startPlacementMode(resCategory, true);}, null).add(); new WazeWrap.Interface.Shortcut('CreateParkingLotShortcut', 'Creates a parking lot Place', 'wmepie', 'Place Interface Enhancements', settings.CreateParkingLotShortcut, function(){startPlacementMode("PARKING_LOT", false);}, null).add(); window.addEventListener("beforeunload", function() { saveSettings(); }, false); //Trim whitespace from start and end of house number field on Places W.selectionManager.events.register("selectionchanged", null, function(){ if(W.selectionManager.selectedItems.length > 0 && W.selectionManager.selectedItems[0].model.type === "venue") $('.form-control.house-number').focusout(function(){ $('.form-control.house-number')[0].value = $('.form-control.house-number')[0].value.trim(); }); }); //Highlight the categories box when the old hospital category is present W.selectionManager.events.register("selectionchanged", null, highlightObsoleteHospitalCategory); W.model.actionManager.events.register("afterundoaction",null, highlightObsoleteHospitalCategory); W.model.actionManager.events.register("afterclearactions",null, highlightObsoleteHospitalCategory); W.model.actionManager.events.register("afteraction",null, highlightObsoleteHospitalCategory); W.map.events.register("zoomend", null, DisplayPlaceNames); W.map.events.register("changelayer", null, DisplayPlaceNames); //map.events.register("mouseout", null, wmepn_showLandmarkNames); //Waze.selectionManager.events.register("selectionchanged", null, wmepn_showLandmarkNames); //Shamelessly copied from URO+ var MO_MPLayer = new MutationObserver(MPLayerChanged); MO_MPLayer.observe(W.map.problemLayer.div,{childList : true}); } function registerEvents(handler){ W.selectionManager.events.register("selectionchanged", null, handler); W.model.actionManager.events.register("afterundoaction",null, handler); W.model.actionManager.events.register("afterclearactions",null, handler); W.model.actionManager.events.register("afteraction",null, handler); } function unregisterEvents(handler){ W.selectionManager.events.unregister("selectionchanged", null, handler); W.model.actionManager.events.unregister("afterundoaction",null, handler); W.model.actionManager.events.unregister("afterclearactions",null, handler); W.model.actionManager.events.unregister("afteraction",null, handler); } function ToggleExternalProvidersCSS(truthiness){ if(truthiness) injectCSSWithID('pieExternalProvidersTweaks', '#edit-panel .external-providers-view .select2-container {width:90%; margin-bottom:2px;}'); else{ var styles = document.getElementById('pieExternalProvidersTweaks'); if(styles) styles.parentNode.removeChild(styles); } } function DisplayPlaceNames(){ PIEPlaceNameLayer.removeAllFeatures(); var showPoint, showArea, showLock, showNames, showPLA; showNames = isChecked('_cbShowPlaceNames'); showPoint = isChecked('_cbShowPlaceNamesPoint'); showArea = isChecked('_cbShowPlaceNamesArea'); showLock = isChecked('_cbShowPlaceNamesLock'); showPLA = isChecked('_cbShowPlaceNamesPLA'); if(showNames){ var isPoint; for (var placeID in W.model.venues.objects) { var venue = W.model.venues.get(placeID); isPoint = venue.geometry.toString().match(/^POINT/); if((isPoint && W.map.zoom >= 5) || (!isPoint && W.map.zoom >= 3)){ if(WazeWrap.Geometry.isGeometryInMapExtent(venue.geometry)){ if( (isPoint && showPoint) || (!isPoint && showArea && venue.attributes.categories[0] !== "PARKING_LOT") || (!isPoint && showPLA && venue.attributes.categories[0] === "PARKING_LOT")){ var textLoc; if(isPoint) textLoc = new OpenLayers.Geometry.Point(venue.geometry.x, venue.geometry.y); else textLoc = venue.geometry.getCentroid(); var placeName =WordWrap(venue.attributes.name.trim() + (showLock ? ' (L' + (venue.attributes.lockRank + 1) + ')' : '')); if(venue.attributes.categories[0] === "RESIDENCE_HOME") placeName = venue.attributes.houseNumber + (venue.attributes.name.trim() !== '' ? ' - ' + venue.attributes.name : '') + (showLock ? ' (L' + (venue.attributes.lockRank + 1) + ')' : ''); var placeNameLabel = new OL.Feature.Vector(textLoc,{display: 'block',labelText: placeName.trim(), yOffset:(isPoint ? -18 - placeName.split("\n").length * 5 : 0)}); PIEPlaceNameLayer.addFeatures([placeNameLabel]); } } } } } } function WordWrap(text){ var newName = ""; if(text !== ""){ var splitName = text.match(/(.{1,35})(?:\s|$)/g); for(var i=0;i", {style:"min-height:20px", id:"Wazebar"}); $PIECreatePLA.html([ '
', '
Create Suggested PLA
', '
' ].join(' ')); setTimeout(function(){$('#panel-container > div > div > div.body > div.actions > div > div').append($PIECreatePLA); $('#PIECreatePLAButton').click(function(){createPLAFromMP(markerID);})}, 150); } } } //Shamelessly copied from URO+ function GetMarkerType(className) { var markerType = null; if(className.indexOf('user-generated') !== -1) markerType = 'ur'; else if(className.indexOf('map-problem') !== -1) markerType = 'mp'; else if(className.indexOf('place-update') !== -1) markerType = 'pur'; return markerType; } function createPLAFromMP(MPID){ var pos = W.model.problemDetails.objects[MPID].venueGeom; var PlaceObject = require("Waze/Feature/Vector/Landmark"); var AddPlace = require("Waze/Action/AddLandmark"); var NewPlace = new PlaceObject(); var points = []; var i; for(i=0;i 0 && W.selectionManager.selectedItems[0].model.type === "venue"){ if(W.selectionManager.selectedItems[0].model.attributes.categories.contains("HOSPITAL_MEDICAL_CARE")){ $('.select2-choices').css('animation-iteration-count', 'infinite'); $('.select2-choices').attr('title', 'The "Hospital / Medical Care" category is no longer valid.\n\nPlease change it to "Hospital / Urgent Care" or "Doctor / Clinic", whichever is most appropriate'); $('.select2-choices').tooltip(); } } } var newPlaceCategory = ""; function startPlacementMode(category, isPoint){ $('#edit-buttons > div > div.toolbar-button.waze-icon-place.toolbar-submenu.toolbar-group.toolbar-group-venues.ItemInactive').removeClass("open"); newPlaceCategory = category; var polyDrawFeatureOptions = {callbacks : {"done": doneHandler}}; if(isPoint){ $("#map").on('mousemove', MouseMoveHandler); $("#map").click(function(){endPlacementMode(category, isPoint);}); /*drawPoly = new OpenLayers.Control.DrawFeature(newPlaceLayer, OpenLayers.Handler.Polygon, polyDrawFeatureOptions); W.map.addControl(drawPoly); drawPoly.activate();*/ } else{ drawPoly = new OpenLayers.Control.DrawFeature(newPlaceLayer, OpenLayers.Handler.Polygon, polyDrawFeatureOptions); W.map.addControl(drawPoly); drawPoly.activate(); } document.addEventListener('keyup', keyUpHandler, false); } var businessPLAPlaceName, businessPLAPlaceAddress;//, businessPLAPlacePhone, businessPLAPlaceURL; function startBusinessPLAPlacementMode(){ var polyDrawFeatureOptions = {callbacks : {"done": doneHandlerBusinessPLAPlace}}; drawPoly = new OpenLayers.Control.DrawFeature(newPlaceLayer, OpenLayers.Handler.Polygon, polyDrawFeatureOptions); W.map.addControl(drawPoly); drawPoly.activate(); document.addEventListener('keyup', keyUpHandler, false); } function doneHandlerBusinessPLAPlace(geom){ drawPoly.destroy(); BusinessPLAMode = false; CreateBusinesPLAPlace(geom, businessPLAPlaceName, businessPLAPlaceAddress);//, businessPLAPlacePhone, businessPLAPlaceURL); } function CreateBusinesPLAPlace(geom, name, address){//, phone, url){ drawPoly.destroy(); var PlaceObject = require("Waze/Feature/Vector/Landmark"); var AddPlace = require("Waze/Action/AddLandmark"); var multiaction = new MultiAction(); multiaction.setModel(W.model); var NewPlace = new PlaceObject(); var points = []; var i; for(i=0;i 0){ //segment has alt names for(var j=0;j 0) { $('.edit-button').trigger("click"); $('.house-number:first').focus(); } else if (rppTries < 1000) { console.log("not found"); setTimeout(function () {editRPPAddress(rppTries++);}, 200); } } function buildItemOption(itemNumber){ var $section = $("
", {style:"padding:8px 16px", id:"piePlaceCat" + itemNumber}); $section.html([ I18n.t('pie.prefs.Item') + " ", itemNumber, buildItemList(itemNumber), '
' ].join(' ')); return $section.html(); } function buildLockLevelsList(){ var $lockLevels = $("
"); for(var i=0;i" + (i+1) + ""); } return $lockLevels.html(); } function attachRPPLockButtonHandlers(){ $('#pieRPPLockButtonsContainer').remove(); W.selectionManager.events.register("selectionchanged", null, addLockButtons); W.model.actionManager.events.register("afterundoaction",null, addLockButtons); W.model.actionManager.events.register("afterclearactions",null, addLockButtons); W.model.actionManager.events.register("afteraction",null, addLockButtons); } function attachPlaceSizeHandlers(){ W.selectionManager.events.register("selectionchanged", null, updatePlaceSizeDisplay); W.model.actionManager.events.register("afteraction",null, updatePlaceSizeDisplay); W.model.actionManager.events.register("afterundoaction",null, updatePlaceSizeDisplay); W.model.actionManager.events.register("afterclearactions",null, updatePlaceSizeDisplay); W.model.actionManager.events.register("noActions",null, noActions); updatePlaceSizeDisplay(); } function removePlaceSizeHandlers(){ W.selectionManager.events.unregister("selectionchanged", null, updatePlaceSizeDisplay); W.model.actionManager.events.unregister("afteraction",null, updatePlaceSizeDisplay); W.model.actionManager.events.unregister("afterundoaction",null, updatePlaceSizeDisplay); W.model.actionManager.events.unregister("afterclearactions",null, updatePlaceSizeDisplay); W.model.actionManager.events.unregister("noActions",null, noActions); } function ShowPlaceLocatorCrosshair(){ $('#pieCrosshairs').remove(); if(W.selectionManager.selectedItems.length > 0){ if(W.selectionManager.selectedItems[0].model.type === "venue"){ var panelWidth = $('#landmark-edit-general').width(); var $crosshairs; if(W.selectionManager.selectedItems[0].model.attributes.categories.contains("RESIDENCE_HOME")){ $('.landmark > .tab-content').css('position', 'relative'); $crosshairs = $('
'); $('.landmark > .tab-content').append($crosshairs); } else{ $crosshairs = $('
'); $('#landmark-edit-general > form > div:nth-child(1) > i').after($crosshairs); } $('#pieCrosshairs').click(function(){ CenterOnPlace(W.selectionManager.selectedItems[0].model, settings.PlaceZoom); }); } } } var BusinessPLAMode = false; function ShowParkingLotButton(){ $('#piePLAButton').remove(); if(W.selectionManager.selectedItems.length > 0){ if(W.selectionManager.selectedItems[0].model.type === "venue"){ var $PLAButton; if(!(W.selectionManager.selectedItems[0].model.attributes.categories.contains("RESIDENCE_HOME") || W.selectionManager.selectedItems[0].model.attributes.categories.contains("PARKING_LOT"))){ $PLAButton = $('
'); $('#landmark-edit-general > form > div:nth-child(1) > i').after($PLAButton); $('#piePLAButton').click(function(){ if(!BusinessPLAMode) { BusinessPLAMode = true; businessPLAPlaceName = W.selectionManager.selectedItems[0].model.attributes.name; businessPLAPlaceAddress = W.selectionManager.selectedItems[0].model.getAddress().attributes; //businessPLAPlacePhone = W.selectionManager.selectedItems[0].model.attributes.phone; //businessPLAPlaceURL = W.selectionManager.selectedItems[0].model.attributes.url; startBusinessPLAPlacementMode(); } }); } } } } var extProviderTries = 0; function ShowExternalProviderTooltip(){ if(isChecked('_cbShowExternalProviderTooltip')) if(W.selectionManager.selectedItems.length > 0 && W.selectionManager.selectedItems[0].model.type === "venue"){ if($('.select2-container.uuid').length > 0) for(var i=0; i < $('.select2-container.uuid').find('span.select2-chosen').length; i++){ extProviderTries = 0; ReadExtProviderText(i, extProviderTries); } } } function ReadExtProviderText(index, extProviderTries){ var providersList = $('.select2-container.uuid').find('span.select2-chosen'); if($('.select2-container.uuid').find('span.select2-chosen')[index].innerHTML == " " && extProviderTries <= 20) setTimeout(function(){ReadExtProviderText(index, extProviderTries++);}, 50); else{ if($('#' + providersList[index].id).parent().parent().data('original-title') == null){ $('#' + providersList[index].id).parent().parent().attr('title', $('.select2-container.uuid').find('span.select2-chosen')[index].innerText); $('#' + providersList[index].id).parent().parent().tooltip() } else $('#' + providersList[index].id).parent().parent().attr('data-original-title', $('.select2-container.uuid').find('span.select2-chosen')[index].innerText); } } function ShowCopyPlaceButton(){ $('#pieCopyPlaceButton').remove(); if(W.selectionManager.selectedItems.length > 0){ //W.selectionManager.selectedItems[0].model.attributes.id.match(/(\d+\.){2}\d+/) if(W.selectionManager.selectedItems[0].model.type === "venue"){// && (typeof W.selectionManager.selectedItems[0].model.attributes.id === "string")){ //id is only a string if the Place has been saved - don't allow copying unsaved Places var $PlaceCopyButton; if(!W.selectionManager.selectedItems[0].model.attributes.categories.contains("RESIDENCE_HOME")){ $PlaceCopyButton = $('
'); $('#landmark-edit-general > form > div:nth-child(1) > i').after($PlaceCopyButton); $('#pieCopyPlaceButton').click(function(){ var PlaceObject = require("Waze/Feature/Vector/Landmark"); var AddPlace = require("Waze/Action/AddLandmark"); var NewPlace = new PlaceObject(); var oldPlace = W.selectionManager.selectedItems[0].model; NewPlace.attributes.name = oldPlace.attributes.name + " (copy)"; NewPlace.attributes.phone = oldPlace.attributes.phone; NewPlace.attributes.url = oldPlace.attributes.url; NewPlace.attributes.categories = oldPlace.attributes.categories.clone(); NewPlace.attributes.aliases = oldPlace.attributes.aliases.clone(); NewPlace.attributes.description = oldPlace.attributes.description; NewPlace.attributes.houseNumber = oldPlace.attributes.houseNumber; NewPlace.attributes.lockRank = oldPlace.attributes.lockRank; NewPlace.attributes.geometry = oldPlace.attributes.geometry.clone(); if(oldPlace.attributes.geometry.toString().match(/^POLYGON/)){ var convertedCoords; for(var i=0; i 0){ if(W.selectionManager.selectedItems[0].model.type === "venue"){ var $search = $('
'); $('.address-edit-view').before($search); $('#pieSearchButton').click(function(){ var address = $('.full-address')[0].innerHTML; var noCity = I18n.translations[I18n.currentLocale()].edit.address.no_city; var noStreet = I18n.translations[I18n.currentLocale()].edit.address.no_street; address = address.replace(noCity + ",",""); if(address !== I18n.translations[I18n.currentLocale()].edit.landmark.no_address) $('.search-query')[0].value = address; }); } } } function AddPlaceCategoriesButtons(){ $('#piePlaceCategoriesButtonsContainer').remove(); if(W.selectionManager.selectedItems.length > 0){ if(W.selectionManager.selectedItems[0].model.type === "venue"){ var $container = $('
',{id:'piePlaceCategoriesButtonsContainer', style:'white-space: nowrap;'}); var categoryOptions = $('[id^=pieItem]'); var $button = $('
',{id:'btnPlaceCatClear', title:'Clear current categories', style:'display:inline-block; cursor:pointer'}).click(function() { onPlaceCategoriesButtonsClick(this.id); }); $button.append(''); $container.append($button); for(var i=0;i',{id:divid, title:name.replace('&', '&'), style:'display:inline-block; cursor:pointer', 'data-category':categoryOptions[i].value}).click(function() { onPlaceCategoriesButtonsClick(this.id); }); $button.append(''); $container.append($button); } } } $('.categories.controls').before($container); } } function onPlaceCategoriesButtonsClick(buttonid){ if(buttonid === "btnPlaceCatClear"){ var blankCategories = []; //W.selectionManager.selectedItems[0].model.attributes.categories.clone(); //console.log(blankCategories.length); //blankCategories.splice(0, blankCategories.length); //console.log(blankCategories); W.model.actionManager.add(new UpdateObject(W.selectionManager.selectedItems[0].model, { categories: blankCategories })); } else{ var newCategories = W.selectionManager.selectedItems[0].model.attributes.categories.clone(); //console.log($('#'+buttonid)[0].getAttribute("data-category")); newCategories.push($('#'+buttonid)[0].getAttribute("data-category")); W.model.actionManager.add(new UpdateObject(W.selectionManager.selectedItems[0].model, {categories: newCategories})); } } function CenterOnPlace(venue, zoom){ var centroid = venue.geometry.getCentroid(); W.map.setCenter([centroid.x, centroid.y], zoom); } function isChecked(checkboxId) { return $('#' + checkboxId).is(':checked'); } function setChecked(checkboxId, checked) { $('#' + checkboxId).prop('checked', checked); } function noActions(){ setTimeout(updatePlaceSizeDisplay, 100 ); //have to put in a delay for when the user uses undo to clear all actions - WME updates on top of my changes otherwise. } function updatePlaceSizeDisplay(){ var count = W.selectionManager.selectedItems.length; var metersArea = 0; var bold = false; if(count === 1){ var venue = W.selectionManager.selectedItems[0]; var isArea = venue.geometry.toString().match(/^POLYGON/); //var isPoint = venue.geometry.toString().match(/^POINT/); if(venue.model.type === "venue" && isArea){ if($('#AreaSize')) $('#AreaSize').remove(); metersArea = W.selectionManager.selectedItems[0].model.geometry.getGeodesicArea(W.map.getProjectionObject()); if(metersArea > 0 && isArea){ var ftArea = Math.round(metersArea * 10.76391 *100)/100; var list = $('#landmark-edit-general > ul')[0]; var newList = document.createElement("UL"); newList.id = "AreaSize"; var newItem = document.createElement("LI"); if(isChecked("_cbShowAreaPlaceSizeMetric")){ newItem.innerHTML = "Area: " + metersArea.toFixed(2) + " m2"; newList.appendChild(newItem); } if(isChecked("_cbShowAreaPlaceSizeImperial")){ newItem = document.createElement("LI"); newItem.innerHTML = "Area: " + ftArea.toFixed(2) + " ft2"; newList.appendChild(newItem); } if(metersArea < 500){ newItem = document.createElement("LI"); newItem.innerHTML = "Places smaller than 500 m2/5382 ft2 will not show in the client"; newList.appendChild(newItem); } if(metersArea > 20000){ newItem = document.createElement("LI"); newItem.innerHTML = "Places larger than 20000 m2/215278.2 ft2 will always show in the client"; newList.appendChild(newItem); } if(list.before != null) list.before(newList); else{ var parent = $('#landmark-edit-general > ul')[0].parentNode; parent.insertBefore(newList,$('#landmark-edit-general > ul')[0]); } $('#AreaSize').addClass("list-unstyled"); $('#AreaSize').addClass("additional-attributes"); } } } } function loadSettings() { var loadedSettings = $.parseJSON(localStorage.getItem("WMEPIE_Settings")); var defaultSettings = { ShowAreaPlaceSize: false, ShowAreaPlaceSizeImperial: false, ShowAreaPlaceSizeMetric: false, ShowLockButtonsRPP: true, NewPlacesList: W.Config.venues.categories.clone(), EditRPPAfterCreated: false, UseStreetFromClosestSeg: false, UseCityFromClosestSeg: false, ShowPlaceLocatorCrosshair: false, PlaceZoom: 6, DefaultLockLevel: 0, CreateResidentialPlaceShortcut: "A+r", CreateParkingLotShortcut: "A+p", UseAltCity: false, ShowSearchButton: false, AddPlaceCategoriesButtons: false, SkipPLR: false, ShowParkingLotButton: false, ShowPlaceNames: false, ShowPlaceNamesPoint: false, ShowPlaceNamesArea: false, ShowPlaceNamesLock: false, ShowCopyPlaceButton: false, ShowExternalProviderTooltip: false, ShowPlaceNamesPLA: false }; settings = loadedSettings ? loadedSettings : defaultSettings; for (var prop in defaultSettings) { if (!settings.hasOwnProperty(prop)) settings[prop] = defaultSettings[prop]; } if(settings.ShowAreaPlaceSizeImperial === false && settings.ShowAreaPlaceSizeMetric === false) if(Waze.prefs.attributes.isImperial) settings.ShowAreaPlaceSizeImperial = true; else settings.ShowAreaPlaceSizeMetric = true; } function saveSettings() { if (localStorage) { var localsettings = { ShowAreaPlaceSize: settings.ShowAreaPlaceSize, ShowAreaPlaceSizeImperial: settings.ShowAreaPlaceSizeImperial, ShowAreaPlaceSizeMetric: settings.ShowAreaPlaceSizeMetric, ShowLockButtonsRPP: settings.ShowLockButtonsRPP, NewPlacesList: settings.NewPlacesList, EditRPPAfterCreated: settings.EditRPPAfterCreated, UseStreetFromClosestSeg: settings.UseStreetFromClosestSeg, UseCityFromClosestSeg: settings.UseCityFromClosestSeg, ShowPlaceLocatorCrosshair: settings.ShowPlaceLocatorCrosshair, PlaceZoom: settings.PlaceZoom, DefaultLockLevel: settings.DefaultLockLevel, CreateResidentialPlaceShortcut: settings.CreateResidentialPlaceShortcut, CreateParkingLotShortcut: settings.CreateParkingLotShortcut, UseAltCity: settings.UseAltCity, ShowSearchButton: settings.ShowSearchButton, AddPlaceCategoriesButtons: settings.AddPlaceCategoriesButtons, SkipPLR: settings.SkipPLR, ShowParkingLotButton: settings.ShowParkingLotButton, ShowPlaceNames: settings.ShowPlaceNames, ShowPlaceNamesPoint: settings.ShowPlaceNamesPoint, ShowPlaceNamesArea: settings.ShowPlaceNamesArea, ShowPlaceNamesLock: settings.ShowPlaceNamesLock, ShowCopyPlaceButton: settings.ShowCopyPlaceButton, ShowExternalProviderTooltip: settings.ShowExternalProviderTooltip, ShowPlaceNamesPLA: settings.ShowPlaceNamesPLA }; for (var name in Waze.accelerators.Actions) { var TempKeys = ""; if (Waze.accelerators.Actions[name].group == 'wmepie') { if (Waze.accelerators.Actions[name].shortcut) { if (Waze.accelerators.Actions[name].shortcut.altKey === true) { TempKeys += 'A'; } if (Waze.accelerators.Actions[name].shortcut.shiftKey === true) { TempKeys += 'S'; } if (Waze.accelerators.Actions[name].shortcut.ctrlKey === true) { TempKeys += 'C'; } if (TempKeys !== "") { TempKeys += '+'; } if (Waze.accelerators.Actions[name].shortcut.keyCode) { TempKeys += Waze.accelerators.Actions[name].shortcut.keyCode; } } else { TempKeys = "-1"; } localsettings[name] = TempKeys; } } localStorage.setItem("WMEPIE_Settings", JSON.stringify(localsettings)); } } //Using the same display for lock buttons as ClickSaver (with permission from MapoMatic) - thanks MoM! function addLockButtons() { if(W.selectionManager.selectedItems.length > 0){ var item = W.selectionManager.selectedItems[0]; var isRPP = (item.model.type === "venue" && item.model.attributes.residential === true); if(isRPP){ var attr = item.model.attributes; var autoRank = attr.rank; var manualRank = attr.lockRank; var firstManualRank = manualRank; var userRank = WazeWrap.User.Rank() - 1; var maxAutoRank = autoRank; var disabled = false; var $div = $('#pieRPPLockButtonsContainer'); $div.remove(); $div = $('
',{id:'pieRPPLockButtonsContainer',style:'margin-bottom:5px;'}); $div.append(''); var btnInfos = []; for(var iBtn=0;iBtn<=6;iBtn++){btnInfos.push({r:iBtn,val:iBtn});} btnInfos.forEach(function(btnInfo){ var selected = (btnInfo.val == manualRank); disabled = userRank < btnInfo.val; if (btnInfo.val !== 6) { $div.append( $('
', { class:'btn btn-lh' + (selected ? ' btn-lh-selected':'') + (btnInfo.r < 6 & (userRank < btnInfo.r || disabled) ? ' disabled' : '') }) .text(btnInfo.hasOwnProperty('title') ? btnInfo.title : btnInfo.r + 1) .data('val',btnInfo.hasOwnProperty('val') ? btnInfo.val : btnInfo.r + 1) .hover(function() {}) .click(function() { if((userRank >= $(this).data('val')) && (btnInfo.r < 6)) { W.model.actionManager.add(new UpdateObject(item.model,{lockRank:($(this).data('val'))})); addLockButtons(); } }) ); } }); $('#landmark-edit-general > div.address-edit.side-panel-section').after($div); } } } function buildItemList(itemNumber){ var $places = $("
"); $places.html([ '' ].join(' ')); return $places.html(); } function injectCss() { var css = [ // Lock button formatting '.btn-lh {cursor:pointer;padding:1px 6px;height:22px;border:solid 1px #c1c1c1;margin-right:3px;}', '.btn.btn-lh.btn-lh-selected {background-color:#6999ae;color:white}', '.btn.btn-lh.btn-lh-selected:hover {color:white}', '.btn.btn-lh.disabled {color:#909090;background-color:#f7f7f7;}', '.btn.btn-lh.btn-lh-selected.disabled {color:white;background-color:#6999ae;}', //Settings Panel '#sidebar .controls-container.pie-controls-container {padding: 0px;}', '.select2-choices {-webkit-animation-name: oldCategoryDetected; -webkit-animation-duration: 10s; -webkit-animation-iteration-count: 0; animation-name: oldCategoryDetected; animation-duration: 3s; animation-iteration-count: 0;}', '@keyframes oldCategoryDetected {0% {border-color:rgb(204, 204, 204); border-width:3px;} 50% {border-color:red; border-width:3px;} 100% {border-color:rgb(204, 204, 204); border-width:3px;}', ].join(' '); $('').appendTo('head'); } function injectCSSWithID(id, css){ $('').appendTo('head'); } function loadTranslations() { setTranslations({ en: { prefs: { title: 'Place Interface Enhancements', ShowAreaPlaceSize: 'Show area Place size', ShowImperial: 'Show imperial', ShowMetric: 'Show metric', ShowRPPLockButtons: 'Show lock buttons for RPPs', ShowRPPLockButtonsTitle: 'Displays lock level buttons for Residential Place Points', ShowPlaceLocatorCrosshair: 'Centers the Place on screen and zooms to the defined level', ShowPlaceLocatorCrosshairTitle: 'Centers the Place on screen and zooms to the defined level', Zoom: 'Zoom', ZoomTitle: 'The zoom level to use when centering on a Place', ShowAddressSearch: 'Show search button next to address', ShowAddressSearchTitle: "Show a magnifying glass next to the Place's address. Clicking this button will load the address into the search box", ShowPlaceCategoryButtons: 'Add Place category buttons above the categories selection', ShowPLAButton: 'Show parking lot button', ShowPLAButtonTitle: "Starts creation mode for a Parking Lot Area Place and will set the name to match this Place\'s name when complete", ShowCopyPlaceButton: 'Show copy Place button', ShowCopyPlaceButtonTitle: 'Copies the selected Place to a new Place with identical settings', ShowGPIDTooltip: 'Show External Provider tooltip', ShowGPIDTooltipTitle: 'Displays a tooltip with the external provider information', NewPlaces: 'New Places', EditRPPAfterCreate: 'Edit RPP address after created', EditRPPAfterCreateTitle: "Automatically opens the RPP address edit window and focuses on the House Number entry", UseStreetFromClosestSegment: 'Use street name from closest segment', UseStreetFromClosestSegmentTitle: "Pulls the street name from the closest visible segment and inserts into the new Place's address", UseCityFromClosestSegment: 'Use city name from closest segment', UseCityFromClosestSegmentTitle: "Pulls the city name from the closest visible segment and inserts into the new Place's address", ClosestSegmentAltCity: 'When the primary is "No city" look for an alt city', ClosestSegmentAltCityTitle: 'When the primary is \'No city\' try to find an alt street name with a city', ClosestSegmentIgnorePLRUnnamedPR: "Ignore PLRs & unnamed PR when using closest segment's name and city", ClosestSegmentIgnorePLRUnnamedPRTitle: "When looking for the closest segment, PLRs and unnamed PRs will be ignored", LockLevel: 'Lock level', LockLevelTitle: 'The lock level to set automatically when creating new Places', MapChanges: 'Map Changes', ShowPlaceNames: 'Show Place names', ShowPlaceNamesTitle: '', ShowPointNames: 'Show point names', ShowPointNamesTitle: "Will display the Place's name below the Place point", ShowAreaNames: 'Show area names', ShowAreaNamesTitle: "Will display the Place's name in the middle of the Place area", ShowLockLevel: 'Show lock level', ShowLockLevelTitle: "Will display the Place's lock level in the middle of the Place area", ShowPLAName: 'Show PLA name', ShowPLANameTitle: '', Item: 'Item', PlaceMenuCustomization: "Place Menu Customization" } }, "es-419": { prefs: { title: 'Place Interface Enhancements', ShowAreaPlaceSize: 'Mostrar tamaño del área', ShowImperial: 'Sistema Imperial', ShowMetric: 'Sistema Métrico', ShowRPPLockButtons: 'Mostrar botones de bloqueo para RPPs', ShowRPPLockButtonsTitle: 'Muestra los botones de nivel de bloqueo para lugares residenciales', ShowPlaceLocatorCrosshair: 'Mostrar reticula localizadora del lugar', ShowPlaceLocatorCrosshairTitle: 'Centra el lugar en la pantalla y acercamiento al nivel definido', Zoom: 'Acercamiento', ZoomTitle: 'Nivel de acercamiento a utilizar cuando se centra en un lugar', ShowAddressSearch: 'Mostrar el botón de búsqueda junto a la dirección', ShowAddressSearchTitle: "Muestra una lupa junto a la dirección del lugar. Al hacer clic en este botón, se cargará la dirección en la barra de búsqueda", ShowPlaceCategoryButtons: 'Botones de categorías de lugares', ShowPLAButton: 'Mostrar botón de PLAs', ShowPLAButtonTitle: 'Inicia el modo de creación de un lugar del área de estacionamiento y establecerá el nombre del estacionamiento para que coincida con el nombre del lugar cuando se complete', ShowCopyPlaceButton: 'Mostrar botón de copiado de lugar', ShowCopyPlaceButtonTitle: 'Copia el lugar seleccionado en un lugar nuevo con configuraciones idénticas', ShowGPIDTooltip: 'Mostrar información del proveedor externo', ShowGPIDTooltipTitle: 'Muestra un texto con la información del proveedor externo', NewPlaces: 'Nuevos lugares', EditRPPAfterCreate: 'Editar la dirección del RPP una vez creada', EditRPPAfterCreateTitle: "Automáticamente abre la ventana de edición en la dirección del lugar residencial y se enfoca en el campo de número de casa", UseStreetFromClosestSegment: 'Utilice el nombre de la calle del segmento más cercano', UseStreetFromClosestSegmentTitle: "Extrae el nombre de la calle del segmento visible más cercano y lo agrega en la dirección del nuevo lugar", UseCityFromClosestSegment: 'Usar el nombre de la ciudad del segmento más cercano', UseCityFromClosestSegmentTitle: "Extrae el nombre de la ciudad del segmento visible más cercano y lo agrega en la dirección del nuevo lugar", ClosestSegmentAltCity: 'Cuando la ciudad principal es \'Ninguno\' busca una ciudad alternativa', ClosestSegmentAltCityTitle: 'Cuando la ciudad principal es "Ninguno" trata de encontrar un nombre de calle alternativo con una ciudad', ClosestSegmentIgnorePLRUnnamedPR: "Ignora los PLR y PR sin nombre cuando utilice el nombre y la ciudad del segmento más cercano", ClosestSegmentIgnorePLRUnnamedPRTitle: "Ignorar segmentos de estacionamiento o privados al buscar el segmento mas cercano", LockLevel: 'Nivel de bloqueo', LockLevelTitle: 'El nivel de bloqueo para establecer automáticamente al crear nuevos lugares', MapChanges: 'Cambios en el mapa', ShowPlaceNames: 'Mostrar nombres de lugares', ShowPlaceNamesTitle: '', ShowPointNames: 'Mostrar nombres de punto', ShowPointNamesTitle: "Muestra el nombre de lugares definidos como punto", ShowAreaNames: 'Mostrar nombres de área', ShowAreaNamesTitle: "Muestra el nombre de lugares definidos como área", ShowLockLevel: 'Mostrar nivel de bloqueo', ShowLockLevelTitle: "Muestra el nivel de bloqueo en el centro del lugar", ShowPLAName: 'Mostrar nombre de PLA', ShowPLANameTitle: 'Muestra el nombre de áreas de estacionamiento (PLAs)', Item: 'Opción', PlaceMenuCustomization: "Personalización del menú de lugares" } } }); } function setTranslations(translations) { I18n.translations[I18n.currentLocale()].pie = translations.en; for (var i = 0; i < Object.keys(translations).length; i++) { var locale = Object.keys(translations)[i]; if (I18n.currentLocale() == locale) { I18n.translations[locale].pie.prefs = translations[locale].prefs; return; } } } function listPlaces(){ var category = ""; for(i=0; i