// ==UserScript==
// @name Locking Standards Tool (LST)
// @namespace https://greasyfork.org/en/users/5920-rickzabel
// @description Adds Highlights to segments that need their lock level raised
// @include https://www.waze.com/editor*
// @include https://www.waze.com/*/editor*
// @include https://beta.waze.com/*
// @version 0.3.9
// @require https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js?version=157879
// @icon data:image/png;base64,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
// ==/UserScript==
//removed grant for firefox // @grant GM_xmlhttpRequest
// @require https://greasyfork.org/scripts/16071-wme-keyboard-shortcuts/code/WME%20Keyboard%20Shortcuts.js
(function() {
//setup the varibles that will be used more that one function
var Version = GM_info.script.version;
var ScriptName = GM_info.script.name;
var UpdateMessage = "yes"; // yes alert the user, no has a silent update.
var VersionUpdateNotes = ScriptName + " has been updated to v" + Version;
//remove any lines >1 month old. dont leave \n on last line.
VersionUpdateNotes = VersionUpdateNotes + "\n" +
"last version updated keyboardshortcut layer info this version updates the beta url";
if (UpdateMessage === "yes") {
var ScriptNameVersion = ScriptName.replace(/\s/g, "") + "Version"; //prepare the scripts name for
if (localStorage.getItem(ScriptNameVersion) !== Version) {
alert(VersionUpdateNotes);
localStorage.setItem(ScriptNameVersion, Version);
}
}
/*
//Keep my layers neato update message window
kmlNoticePanel(Version, "test");
function kmlNoticePanel(kmlVersion, kmlNoticeText) {
if($('#map').length < 2 ) {
setTimeout(kmlNoticePanel(kmlVersion, kmlNoticeText) , 1000);
} else {
console.log('blah');
}
var kmlNoticeUI = document.createElement("div");
kmlNoticeUI.id = "divKMLnotice";
kmlNoticeUI.innerHTML =
'<i id="iKMLnotice" class="icon-exclamation-sign icon-4x pull-left fa fa-exclamation-circle fa-4x fa-pull-left"></i>' +
'<h2>' + ScriptName +'</h2>' +
'<hr class="kml-panel-hr">';
kmlNoticeUI.innerHTML +=
'<div class="kml-panel-section" style="font-size: 10pt">' +
kmlNoticeText +
'</div>' +
'<div style="margin-top: 6px; font-size: 10pt">' +
'</div>' +
'<div style="margin-top:10px; font-size: 8pt;"> ' +
'Note: This is a one-time alert for WME KMLayers v. ' + kmlVersion +
'</div>';
kmlNoticeUI.innerHTML += '<hr class="kml-panel-hr">' +
'<div style="position: relative; width: 70px; display: block; left: 148px; bottom: 0px; margin: 10px; vertical-align: middle; padding: 0">' +
'<button id="btnKMLokay" style="width: 70px" class="btn btn-primary kml-panel-btn">OK</button></div>' +
'</div>';
kmlNoticeUI.innerHTML = '<div class="kml-panel" style="width: 420px; padding-left: 15px; padding-right: 15px;">' + kmlNoticeUI.innerHTML;
kmlNoticeUI.innerHTML += '</div>';
kmlNoticeUI.className = "kml-panel-blackout";
//alert(kmlNoticeUI);
//document.getElementById("map").appendChild(kmlNoticeUI);
$("#map").append(kmlNoticeUI);
$('#divKMLnotice').click(function() {
$('#divKMLnotice').remove();
});
}
}
//kmlNoticePanel("blackout", Version, VersionUpdateNotes);
*/
//setup keyboard shortcut's header and add a keyboard shortcuts
function WMEKSRegisterKeyboardShortcut(ScriptName, ShortcutsHeader, NewShortcut, ShortcutDescription, FunctionToCall, ShortcutKeysObj) {
//check for and add keyboard shourt group to WME
try {
var x = I18n.translations[I18n.currentLocale()].keyboard_shortcuts.groups[ScriptName].members.length;
} catch (e) {
//setup keyboard shortcut's header
Waze.accelerators.Groups[ScriptName] = []; //setup your shortcut group
Waze.accelerators.Groups[ScriptName].members = []; //set up the members of your group
I18n.translations[I18n.currentLocale()].keyboard_shortcuts.groups[ScriptName] = []; //setup the shortcuts text
I18n.translations[I18n.currentLocale()].keyboard_shortcuts.groups[ScriptName].description = ShortcutsHeader; //Scripts header
I18n.translations[I18n.currentLocale()].keyboard_shortcuts.groups[ScriptName].members = []; //setup the shortcuts text
}
//check if the function we plan on calling exists
if (FunctionToCall && (typeof FunctionToCall == "function")) {
I18n.translations[I18n.currentLocale()].keyboard_shortcuts.groups[ScriptName].members[NewShortcut] = ShortcutDescription; //shortcut's text
Waze.accelerators.addAction(NewShortcut, {
group: ScriptName
}); //add shortcut one to the group
//clear the short cut other wise the previous shortcut will be reset MWE seems to keep it stored
var ClearShortcut = '-1';
var ShortcutRegisterObj = {};
ShortcutRegisterObj[ClearShortcut] = NewShortcut;
Waze.accelerators._registerShortcuts(ShortcutRegisterObj);
if (ShortcutKeysObj !== null) {
//add the new shortcut
ShortcutRegisterObj = {};
ShortcutRegisterObj[ShortcutKeysObj] = NewShortcut;
Waze.accelerators._registerShortcuts(ShortcutRegisterObj);
}
//listen for the shortcut to happen and run a function
W.accelerators.events.register(NewShortcut, null, function() {
FunctionToCall();
});
} else {
alert('The function ' + FunctionToCall + ' has not been declared');
}
}
//if saved load and set the shortcuts
function WMEKSLoadKeyboardShortcuts(ScriptName) {
if (localStorage[ScriptName + 'KBS']) {
var LoadedKBS = JSON.parse(localStorage[ScriptName + 'KBS']); //JSON.parse(localStorage['WMEAwesomeKBS']);
for (var i = 0; i < LoadedKBS.length; i++) {
Waze.accelerators._registerShortcuts(LoadedKBS[i]);
}
}
}
function WMEKSSaveKeyboardShortcuts(ScriptName) {
//return function() {
var TempToSave = [];
for (var name in Waze.accelerators.Actions) {
//console.log(name);
var TempKeys = "";
if (Waze.accelerators.Actions[name].group == ScriptName) {
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";
}
var ShortcutRegisterObj = {};
ShortcutRegisterObj[TempKeys] = Waze.accelerators.Actions[name].id;
TempToSave[TempToSave.length] = ShortcutRegisterObj;
}
}
localStorage[ScriptName + 'KBS'] = JSON.stringify(TempToSave);
//}
}
//example function show show the shortcuts have been pressed
function WMEKSKyboardShortcutToCall() {
alert('Awesome keyboard shortcut was pressed');
}
function toconsole(message) {
console.log(ScriptName + ": " + message);
}
var LSTPurple = "data:image/png;base64,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";
var LSTYellow = "data:image/png;base64,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";
var LSTLayer;
var LSTIconLayer;
var LSTlineWidth = [
[0, 0], //zoom 0
[0, 0], //zoom 1
[20, 15], //zoom 2
[20, 15], //zoom 3
[20, 15], //zoom 4
[25, 20], //zoom 5
[25, 20], //zoom 6
[25, 20], //zoom 7
[25, 20], //zoom 8
[25, 20], //zoom 9
[25, 20] //zoom 10
];
var LSTIconWidth = [
[0, 0, 0], //zoom 0
[0, 0, 0], //zoom 1
[10, 5, 10], //zoom 2
[20, 10, 15], //zoom 3
[20, 10, 15], //zoom 4
[20, 10, 15], //zoom 5
[30, 15, 25], //zoom 6
[30, 15, 25], //zoom 7
[40, 20, 35], //zoom 8
[40, 20, 35], //zoom 9
[40, 20, 35] //zoom 10
];
var spreadsheetlockarray = [];
var RampArray = [];
setTimeout(Startcode, 1000);
// on start-up keep checking the site to see if the user detials are loaded
function Startcode() {
if (Waze.model.loginManager.isLoggedIn()) {
//toconsole("Editor is logged in");
try {
var element = $("#user-details");
if (typeof element !== "undefined" && element.value !== '') {
//init();
//toconsole("initializing");
initialize();
} else {
//toconsole(ScriptName + " - waiting to start");
setTimeout(Startcode, 750);
}
} catch (err) {
toconsole(err);
//setTimeout(Startcode, 1000);
}
} else {
//toconsole(ScriptName + " - Editor not logged in");
setTimeout(Startcode, 1000);
}
}
function initialize() {
LSTLayer = new OpenLayers.Layer.Vector("LST", {
displayInLayerSwitcher: false,
uniqueName: "__LST"
});
I18n.translations[I18n.currentLocale()].layers.name["__LST"] = "LST";
Waze.map.addLayer(LSTLayer);
var roads = Waze.map.getLayersBy('uniqueName', 'satellite_imagery').first();
var roadsZIdx = roads.getZIndex();
roadsZIdx = Number(roadsZIdx);
var LST = Waze.map.getLayersBy('uniqueName', '__LST').first();
LST.setZIndex(Number(roadsZIdx) + 1);
LSTIconLayer = new OpenLayers.Layer.Vector("LSTIcons", {
displayInLayerSwitcher: false,
uniqueName: "__LSTIcons"
});
I18n.translations[I18n.currentLocale()].layers.name["__LSTIcons"] = "LSTIcons";
Waze.map.addLayer(LSTIconLayer);
Waze.map.raiseLayer(LSTIconLayer, -2); //move the icon layer below the wme segment layer
var addon = document.createElement('section');
addon.id = "highlight-addon";
addon.innerHTML = '<b>' + GM_info.script.name + '</u></b> v' + Version;
// Highlight Locks Needed
var section = document.createElement('p');
section.style.paddingTop = "8px";
//section.style.textIndent = "16px";
section.id = "LSTOptions";
//area drop down
var htmlstring = '<font style="font-size: 12px;">Area </font>';
htmlstring = htmlstring + '<select id="LSTArea" style="font-size: 12px; margin-top: 5px;">';
htmlstring = htmlstring + '</select> ';
//add area link
htmlstring = htmlstring + '<a target="_blank" Title="LSTAddArea" href="https://goo.gl/OZsyGO">Add area</a><br>';
//city dropdown
htmlstring = htmlstring + '<font style="font-size: 12px;">City </font>';
htmlstring = htmlstring + '<select id="LSTCity" style="font-size: 12px; margin-top: 5px;"><option>-</option></select><br>';
section.innerHTML = section.innerHTML + htmlstring;
var thisUser = Waze.loginManager.user;
if (thisUser === null) return;
var usrRank = thisUser.normalizedLevel;
var thisUserID = thisUser.id;
//set locks link
if (usrRank >= 1 || thisUserID == "103267873") { //
section.innerHTML = section.innerHTML + '<br><a class="btn btn-default" id="LSTRaiseLocks" style="background-color: #93c4d3; color: #FFFFFF;">Set locks </a>';
//section.innerHTML = section.innerHTML + '<br><a id="LSTSetCities">Set Cities </a>';
section.innerHTML = section.innerHTML + '<br><br><font"><input type="checkbox" id="LSTDoNotChangeAutoLocks" class="URCommentsCheckbox"> Do not change auto-locks</font>';
section.innerHTML = section.innerHTML + '<br><font"><input type="checkbox" id="LSTRemoveManualWhereAutoLock" class="URCommentsCheckbox"> Remove manual locks where auto-locked</font>';
section.innerHTML = section.innerHTML + '<br><font"><input type="checkbox" id="LSTEnableAbsolute" class="URCommentsCheckbox"> Absolute</font><br>';
}
section.innerHTML = section.innerHTML + '<br><font"><input type="checkbox" id="LSTShowHighAutoLocked" class="URCommentsCheckbox"> Show high auto-locks (orange)</font>';
section.innerHTML = section.innerHTML + '<br><font"><input type="checkbox" id="LSTShowManualAndAuto" class="URCommentsCheckbox"> Show segments that have manual and auto locks (pink)</font>';
section.innerHTML = section.innerHTML + '<br><input type="checkbox" id="LSTShowHRCSValues" class="URCommentsCheckbox"> Show LST lock Bubbles<br>';
section.innerHTML = section.innerHTML + '<br><input type="checkbox" id="LSTEnableHighlights" class="URCommentsCheckbox"> Enable Highlights (purple: low; yellow: high)<br>';
section.innerHTML = section.innerHTML + '<br><input type="text" id="LSTFreway" style="width: 35px; margin-bottom: 5px;"> Freeway<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTfwdToll" style="width: 35px; margin-bottom: 5px;"> Toll<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTRamp" style="width: 35px; margin-bottom: 5px;"> Ramp ';
section.innerHTML = section.innerHTML + '<input type="checkbox" id="LSTEnableRampHRCS" class="URCommentsCheckbox" title="Highest Rank of Connected Segments"> HRCS<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTMajorHighway" style="width: 35px; margin-bottom: 5px;"> Major Highway<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTMinorHighway" style="width: 35px; margin-bottom: 5px;"> Minor Highway<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTPrimaryStreet" style="width: 35px; margin-bottom: 5px;"> Primary Street ';
section.innerHTML = section.innerHTML + '<input type="checkbox" id="PrimaryStreetEnableOnewayPlusOne" class="URCommentsCheckbox"> One-way +1<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTRailRoad" style="width: 35px; margin-bottom: 5px;"> Railroad<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTFerry" style="width: 35px; margin-bottom: 5px;"> Ferry<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTStreet" style="width: 35px; margin-bottom: 5px;"> Street ';
section.innerHTML = section.innerHTML + '<input type="checkbox" id="StreetEnableOnewayPlusOne" class="URCommentsCheckbox"> One-way +1<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTParkingLotRoads" style="width: 35px; margin-bottom: 5px;"> Parking Lot Road<br>';
//section.innerHTML = section.innerHTML + '<input type="text" id="LSToneWay" style="width: 35px; margin-bottom: 5px;"> One-way Roads<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTRoundabout" style="width: 35px; margin-bottom: 5px;"> Roundabout ';
section.innerHTML = section.innerHTML + '<input type="checkbox" id="LSTEnableRoundaboutsHRCS" class="URCommentsCheckbox" title="Highest Rank of Connected Segments"> HRCS<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTPrivate" style="width: 35px; margin-bottom: 5px;"> Private ';
section.innerHTML = section.innerHTML + '<input type="checkbox" id="PrivateEnableOnewayPlusOne" class="URCommentsCheckbox"> One-way +1<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTDirt4x4" style="width: 35px; margin-bottom: 5px;"> Dirt or 4x4<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTWalkingTrail" style="width: 35px; margin-bottom: 5px;"> Walking Trail<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTWBoardwalk" style="width: 35px; margin-bottom: 5px;"> Pedestrian Boardwalk<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTRunway" style="width: 35px; margin-bottom: 5px;"> Runway<br>';
section.innerHTML = section.innerHTML + '<input type="text" id="LSTStairway" style="width: 35px; margin-bottom: 5px;"> Stairway<br>';
addon.appendChild(section);
//var userTabs = getId('user-info');
//var navTabs = getElementsByClassName('nav-tabs', userTabs)[0];
//$("#user-info ul.nav-tabs").first();
//$("#user-tabs ul.nav-tabs").first()
var newtab = document.createElement('li');
newtab.innerHTML = '<a href="#sidepanel-LST" data-toggle="tab"><span class="icon-lock fa fa-lock" id="LSTlockcolor" style="color: Purple !important; font-size: 15px !important;" Title="LST"></span></a>';
$("#user-info ul.nav-tabs").first().append(newtab); //production 10/29/2015
$("#user-tabs ul.nav-tabs").first().append(newtab); //beta 10/29/2015
addon.id = "sidepanel-LST";
addon.className = "tab-pane";
//var tabContent = getElementsByClassName('tab-content', userTabs)[0];
$("#user-info div.tab-content").first().append(addon); //production 10/29/2015
$("#user-tabs div.tab-content").first().append(addon); //beta 10/29/2015
//load area date from sheet
/*
var xmlhttpReply = "";
GM_xmlhttpRequest({
method: "GET",
url: "https://docs.google.com/spreadsheets/d/1kZ_1OTpBtmUGOQX-M6EFlRXmr7nupBDv9H6z_lr4RN8/pub?output=tsv",
onload: function(response) {
xmlhttpReply = response.responseText.split('\n');
//toconsole(xmlhttpReply);
for (var i = 1; i < xmlhttpReply.length; i++) {
var tempdata = xmlhttpReply[i].split(' ');
//toconsole(tempdata);
spreadsheetlockarray.push({
'Timestamp': tempdata[0],
'AreaName': tempdata[1],
'Requestor': tempdata[2],
'Freway': tempdata[3],
'DoNotChangeAutoLocked': tempdata[4],
'RemoveManualLocksWhereAutoLock': tempdata[5],
'ShowHighAutoLocks': tempdata[6],
'ShowSegmentsAutoAndManual': tempdata[7],
'Tolls': tempdata[8],
'Ramps': tempdata[9],
'MajorHighway': tempdata[10],
'MinorHighway': tempdata[11],
'PrimaryStreet': tempdata[12],
'PrimaryStreetOnewayPlusOne': tempdata[13],
'RailRoad': tempdata[14],
'Ferry': tempdata[15],
'Street': tempdata[16],
'StreetOnewayPlusOne': tempdata[17],
'ParkingLotRoads': tempdata[18],
'Roundabout': tempdata[19],
'Private': tempdata[20],
'Dirt4x4': tempdata[21],
'WalkingTrial': tempdata[22],
'Boardwalk': tempdata[23],
'Runway': tempdata[24],
'Stairway': tempdata[25]
});
//toconsole('"' + spreadsheetlockarray[0].StreetOnewayPlusOne + '"');
var c = '<option style="font-size 12px;" value="' + tempdata[1] + '">' + tempdata[1] + '</option>';
$("#LSTArea").append(c);
}
// restore saved settings
if (localStorage.LSTHighlightScript) {
var options = JSON.parse(localStorage.LSTHighlightScript);
$('#LSTEnableHighlights').prop('checked', options[0]);
$('#LSTFreway').val(options[1]);
$('#LSTRamp').val(options[2]);
$('#LSTMajorHighway').val(options[3]);
$('#LSTMinorHighway').val(options[4]);
$('#LSTPrimaryStreet').val(options[5]);
$('#LSTRailRoad').val(options[6]);
$('#LSTFerry').val(options[7]);
$('#LSTStreet').val(options[8]);
$('#LSTParkingLotRoads').val(options[9]);
// $('#LSToneWay').val(options[10]);
$('#LSTRoundabout').val(options[11]);
$('#LSTfwdToll').val(options[12]);
$('#LSTPrivate').val(options[13]);
$('#LSTEnableRampHRCS').prop('checked', options[14]);
$('#LSTEnableRoundaboutsHRCS').prop('checked', options[15]);
$('#LSTShowHighAutoLocked').prop('checked', options[16]);
$('#LSTDoNotChangeAutoLocks').prop('checked', options[17]);
$('#LSTRemoveManualWhereAutoLock').prop('checked', options[18]);
$('#LSTShowManualAndAuto').prop('checked', options[19]);
$('#PrimaryStreetEnableOnewayPlusOne').prop('checked', options[20]);
$('#StreetEnableOnewayPlusOne').prop('checked', options[21]);
$('#LSTDirt4x4').val(options[22]);
$('#LSTWalkingTrail').val(options[23]);
$('#LSTWBoardwalk').val(options[24]);
$('#LSTRunway').val(options[25]);
$('#LSTStairway').val(options[26]);
$('#LSTShowHRCSValues').prop('checked', options[27]);
$('#LSTArea').val(options[28]);
}
//Alpha sort the select
var my_options = $("#LSTArea option");
var selected = $("#LSTArea").val(); //preserving original selection, step 1
//toconsole(selected);
my_options.sort(function(a, b) {
if (a.text > b.text) return 1;
else if (a.text < b.text) return -1;
else return 0;
});
$("#LSTArea").empty().append(my_options);
$("#LSTArea").val(selected); // preserving original selection, step 2
//end of sort
window.setInterval(highlightSegments, 1000);
highlightSegments();
LSTLoadCities();
}
});
console.log(spreadsheetlockarray);
*/
//var spreadsheetlockarray = [];
$.ajax({
type: 'GET',
url: 'https://spreadsheets.google.com/feeds/list/1kZ_1OTpBtmUGOQX-M6EFlRXmr7nupBDv9H6z_lr4RN8/oat86fm/public/values',
jsonp: 'callback',
data: {
alt: 'json-in-script'
},
dataType: 'jsonp',
success: function(b) {
//console.log('success', b);
for (var i = 0; i < b.feed.entry.length; i++) {
spreadsheetlockarray.push({
'Timestamp': b.feed.entry[i].gsx$timestamp.$t,
'AreaName': b.feed.entry[i].gsx$areaname.$t,
'Requestor': b.feed.entry[i].gsx$requestor.$t,
'Freway': b.feed.entry[i].gsx$freeway.$t,
'DoNotChangeAutoLocked': b.feed.entry[i].gsx$donotchangeautolockedsegmentsthatareabove1.$t,
'RemoveManualLocksWhereAutoLock': b.feed.entry[i].gsx$removemanuallockswherethereisanautolock.$t,
'ShowHighAutoLocks': b.feed.entry[i].gsx$showhighautolocks.$t,
'ShowSegmentsAutoAndManual': b.feed.entry[i].gsx$showsegmentsthatarebothautoandmanuallocked.$t,
'Tolls': b.feed.entry[i].gsx$tolls.$t,
'Ramps': b.feed.entry[i].gsx$ramps.$t,
'MajorHighway': b.feed.entry[i].gsx$majorhighway.$t,
'MinorHighway': b.feed.entry[i].gsx$minorhighway.$t,
'PrimaryStreet': b.feed.entry[i].gsx$primarystreet.$t,
'PrimaryStreetOnewayPlusOne': b.feed.entry[i].gsx$primarystreetonewayplusone.$t,
'RailRoad': b.feed.entry[i].gsx$railroad.$t,
'Ferry': b.feed.entry[i].gsx$ferry.$t,
'Street': b.feed.entry[i].gsx$street.$t,
'StreetOnewayPlusOne': b.feed.entry[i].gsx$streetonewayplusone.$t,
'ParkingLotRoads': b.feed.entry[i].gsx$parkinglotroads.$t,
'Roundabout': b.feed.entry[i].gsx$roundabout.$t,
'Private': b.feed.entry[i].gsx$private.$t,
'PrivateEnableOnewayPlusOne': b.feed.entry[i].gsx$privateonewayplusone.$t,
'PrivateOnewayPlusOne': b.feed.entry[i].gsx$privateonewayplusone.$t,
'Dirt4x4': b.feed.entry[i].gsx$dirt4x4.$t,
'WalkingTrial': b.feed.entry[i].gsx$walkingtrail.$t,
'Boardwalk': b.feed.entry[i].gsx$boardwalk.$t,
'Runway': b.feed.entry[i].gsx$runway.$t,
'Stairway': b.feed.entry[i].gsx$stairway.$t
});
var c = '<option style="font-size 12px;" value="' + b.feed.entry[i].gsx$areaname.$t + '">' + b.feed.entry[i].gsx$areaname.$t + '</option>';
$("#LSTArea").append(c);
}
// restore saved settings
if (localStorage.LSTHighlightScript) {
var options = JSON.parse(localStorage.LSTHighlightScript);
$('#LSTEnableHighlights').prop('checked', options[0]);
$('#LSTFreway').val(options[1]);
$('#LSTRamp').val(options[2]);
$('#LSTMajorHighway').val(options[3]);
$('#LSTMinorHighway').val(options[4]);
$('#LSTPrimaryStreet').val(options[5]);
$('#LSTRailRoad').val(options[6]);
$('#LSTFerry').val(options[7]);
$('#LSTStreet').val(options[8]);
$('#LSTParkingLotRoads').val(options[9]);
// $('#LSToneWay').val(options[10]);
$('#LSTRoundabout').val(options[11]);
$('#LSTfwdToll').val(options[12]);
$('#LSTPrivate').val(options[13]);
$('#LSTEnableRampHRCS').prop('checked', options[14]);
$('#LSTEnableRoundaboutsHRCS').prop('checked', options[15]);
$('#LSTShowHighAutoLocked').prop('checked', options[16]);
$('#LSTDoNotChangeAutoLocks').prop('checked', options[17]);
$('#LSTRemoveManualWhereAutoLock').prop('checked', options[18]);
$('#LSTShowManualAndAuto').prop('checked', options[19]);
$('#PrimaryStreetEnableOnewayPlusOne').prop('checked', options[20]);
$('#StreetEnableOnewayPlusOne').prop('checked', options[21]);
$('#LSTDirt4x4').val(options[22]);
$('#LSTWalkingTrail').val(options[23]);
$('#LSTWBoardwalk').val(options[24]);
$('#LSTRunway').val(options[25]);
$('#LSTStairway').val(options[26]);
$('#LSTShowHRCSValues').prop('checked', options[27]);
$('#LSTArea').val(options[28]);
$('#PrivateEnableOnewayPlusOne').prop('checked', options[29]);
}
//Alpha sort the select
var my_options = $("#LSTArea option");
var selected = $("#LSTArea").val(); /* preserving original selection, step 1 */
//toconsole(selected);
my_options.sort(function(a, b) {
if (a.text > b.text) return 1;
else if (a.text < b.text) return -1;
else return 0;
});
$("#LSTArea").empty().append(my_options);
$("#LSTArea").val(selected); // preserving original selection, step 2
//end of sort
//reload the settings if an area is chosen
//this will overwrite the saved settings incase we have to make changes to the sheet
if(selected !== "-") {
LSTChangeArea(selected);
}
window.setInterval(highlightSegments, 1000);
highlightSegments();
LSTLoadCities();
}
});
//console.log(spreadsheetlockarray);
// setup onclick handlers for instant update:
$("#LSTArea").change(LSTChangeArea);
$('#LSTDoNotChangeAutoLocks').change(LSTManualSettings);
$('#LSTRemoveManualWhereAutoLock').change(LSTManualSettings);
$('#LSTShowHighAutoLocked').change(LSTManualSettings);
$('#LSTShowManualAndAuto').change(LSTManualSettings);
$('#LSTFreway').change(LSTManualSettings);
$('#LSTfwdToll').change(LSTManualSettings);
$('#LSTEnableRampHRCS').change(LSTManualSettings);
$('#LSTRamp').change(LSTManualSettings);
$('#LSTMajorHighway').change(LSTManualSettings);
$('#LSTMinorHighway').change(LSTManualSettings);
$('#LSTPrimaryStreet').change(LSTManualSettings);
$('#PrimaryStreetEnableOnewayPlusOne').change(LSTManualSettings);
$('#LSTRailRoad').change(LSTManualSettings);
$('#LSTFerry').change(LSTManualSettings);
$('#LSTStreet').change(LSTManualSettings);
$('#StreetEnableOnewayPlusOne').change(LSTManualSettings);
$('#LSTParkingLotRoads').change(LSTManualSettings);
$('#LSTEnableRoundaboutsHRCS').change(LSTManualSettings);
$('#LSTRoundabout').change(LSTManualSettings);
$('#LSTPrivate').change(LSTManualSettings);
$('#LSTDirt4x4').change(LSTManualSettings);
$('#LSTWalkingTrail').change(LSTManualSettings);
$('#LSTWBoardwalk').change(LSTManualSettings);
$('#LSTRunway').change(LSTManualSettings);
$('#LSTStairway').change(LSTManualSettings);
$('#PrivateEnableOnewayPlusOne').change(LSTManualSettings);
//setlocks
$("#LSTRaiseLocks").click(function() {
var r = confirm("LST: Please check with your state manager before auto setting the lock levels! If you are not allowed to run this script in your area you may be blocked from editing! \nClick ok to set the lock levels.");
if (r === true) {
LHNRaiseLocks();
}
});
/*
//set cities
$("#LSTSetCities").click(function() {
var r = confirm("LST: Please check with your state manager before auto setting the City for every segment! If you are not allowed to run this script in your area you may be blocked from editing! \nClick ok to set the Cities.");
if (r === true) {
LSTSetCity();
}
});
*/
//calback functions
if (thisUserID == "6945278") { //orbit
$('#LSTEnableAbsolute').prop('checked', true);
}
// overload the WME exit function
//window.addEventListener("beforeunload", saveHighlightOptions, false);
// register some events...
Waze.map.events.register("zoomend", null, highlightSegments);
Waze.map.events.register("moveend", null, highlightSegments);
Waze.map.events.register("zoomend", null, LSTLoadCities);
Waze.map.events.register("moveend", null, LSTLoadCities);
//Waze.map.events.register("moveend", null, LHNRaiseLocks);
//Waze.map.events.register("zoomend", null, highlightPlaces);
//Waze.map.events.register("zoomend", null, highlightSelectedNodes);
//Waze.selectionManager.events.register("selectionchanged", null, highlightSelectedNodes);
//Waze.selectionManager.events.register("selectionchanged", null, extraDetails);
//Waze.loginManager.events.register("afterloginchanged", null, enableAdvancedOptions);
//Waze.model.events.register("mergeend", null, initCityList);
//LSTSetupKeyboardShortcuts();
//add keyboard shortcuts
WMEKSRegisterKeyboardShortcut('LST', 'Locking Standards Tool', 'LSTShortcut1', 'Sets the locks based on your settings', LHNRaiseLocks, '-1'); //shortcut1
//WMEKSRegisterKeyboardShortcut('LST', 'Locking Standards Tool', 'LSTShortcut2', 'call KS test function', WMEKSKyboardShortcutToCall, '-1'); //shortcut1
//load the saved shortcuts
WMEKSLoadKeyboardShortcuts('LST');
//before unloading WME save the shortcuts
window.addEventListener("beforeunload", function() {
saveHighlightOptions();
WMEKSSaveKeyboardShortcuts('LST');
}, false);
}
function highlightSegments() {
var layer = Waze.map.getLayersBy('uniqueName', 'satellite_imagery').first();
var layerZIdx = layer.getZIndex();
layerZIdx = Number(layerZIdx);
var LST = Waze.map.getLayersBy('uniqueName', '__LST').first();
LST.setZIndex(layerZIdx + 1);
LSTLayer.destroyFeatures();
LSTIconLayer.destroyFeatures();
if (LSTEnableHighlights.checked === true) {
for (var seg in Waze.model.segments.objects) {
RampArray = [];
var segment = Waze.model.segments.get(seg);
var attributes = segment.attributes;
var line = segment.geometry.id;
if (line !== null) {
var sid = attributes.primaryStreetID;
if (sid !== null) {
var hasClosures = attributes.hasClosures; //true false
if (hasClosures === false) {
var roadType = attributes.roadType;
//Waze.model.segments.get(88163272).hasClosures
//with closure Waze.model.segments.get(88163272).attributes.allowNoDirection
/*
1: "Streets",
2: "Primary Street",
3: "Freeways",
4: "Ramps",
5: "Walking Trails",
6: "Major Highway",
7: "Minor Highway",
8: "Dirt roads",
10: "Boardwalk",
14: "Ferry"
16: "Stairway",
17: "Private Road",
18: "Railroad",
19: "Runway",
20: "Parking Lot Road",
------NON USEABLE--------
21: "Service Road",
98: "Non-Routable Roads"
199: "Non-Drivable Roads"
*/
var street = Waze.model.streets.get(sid);
var LockRank = attributes.lockRank;
var AutoLocksRank = attributes.rank;
//toconsole(street);
var cityID = (street !== null) && street.cityID;
var noCity = false;
var countryID = 0;
if (cityID !== null && Waze.model.cities.get(cityID) !== null) {
noCity = Waze.model.cities.get(cityID).isEmpty;
countryID = Waze.model.cities.get(cityID).countryID;
}
var oneWay = ((attributes.fwdDirection + attributes.revDirection) == 1); // it is 1-way only if either is true
//var noDirection = (!attributes.fwdDirection && !attributes.revDirection); // Could use the .attribute.allowNoDirection?
//var hasRestrictions = (attributes.fwdRestrictions.length + attributes.revRestrictions.length > 0);
//var updatedOn = new Date(attributes.updatedOn);
//var updatedBy = attributes.updatedBy;
var roundabout = attributes.junctionID !== null;
var TollRoad = attributes.fwdToll;
// default colours
var newColor = "#dd7700";
var Freway_lvl = Number($('#LSTFreway').val());
var Ramp_lvl = Number($('#LSTRamp').val());
var MajorHighway_lvl = Number($('#LSTMajorHighway').val());
var MinorHighway_lvl = Number($('#LSTMinorHighway').val());
var PrimaryStreet_lvl = Number($('#LSTPrimaryStreet').val());
var RailRoad_lvl = Number($('#LSTRailRoad').val());
var Ferry_lvl = Number($('#LSTFerry').val());
var Street_lvl = Number($('#LSTStreet').val());
var ParkingLotRoad_lvl = Number($('#LSTParkingLotRoads').val());
var Roundabout_lvl = Number($('#LSTRoundabout').val());
var fwdToll_lvl = Number($('#LSTfwdToll').val());
var Private_lvl = Number($('#LSTPrivate').val());
var LSTDirt4x4_lvl = Number($('#LSTDirt4x4').val());
var LSTWalkingTrail_lvl = Number($('#LSTWalkingTrail').val());
var LSTWBoardwalk_lvl = Number($('#LSTWBoardwalk').val());
var LSTRunway_lvl = Number($('#LSTRunway').val());
var LSTStairway_lvl = Number($('#LSTStairway').val());
/*
//convert locks to waze's format
Freway_lvl = Freway_lvl - 1;
Ramp_lvl = Ramp_lvl - 1;
MajorHighway_lvl = MajorHighway_lvl - 1;
MinorHighway_lvl = MinorHighway_lvl - 1;
PrimaryStreet_lvl = PrimaryStreet_lvl - 1;
RailRoad_lvl = RailRoad_lvl - 1;
Ferry_lvl = Ferry_lvl - 1;
Street_lvl = Street_lvl - 1;
ParkingLotRoad_lvl = ParkingLotRoad_lvl - 1;
Roundabout_lvl = Roundabout_lvl - 1;
fwdToll_lvl = fwdToll_lvl - 1;
Private_lvl = Private_lvl - 1;
*/
//normalize lockrank
if (LockRank === null) {
LockRank = -1;
} else {
LockRank = LockRank + 1;
}
//normalize autolock rank
if (AutoLocksRank === null) {
AutoLocksRank = -1;
} else {
AutoLocksRank = AutoLocksRank + 1;
}
var TrackRampToRamp = false;
//toconsole(attributes.id);
//HRCS
var ToLock = 0;
if ((roadType == 4 && LSTEnableRampHRCS.checked === true) || (roundabout === true && LSTEnableRoundaboutsHRCS.checked === true)) {
//toconsole("LST hrcs: " + attributes.id);
//ramps =4 roundabout=true
var HRCSHigh = 1;
var HRCS = 0;
var fromNodeID = "";
var toNodeID = "";
var index = 0;
//var RampToRamp = "";
if (roadType == 4) { //ramps
//toconsole(attributes.id + " HRCSHigh: " + HRCSHigh + " HRCS: " + HRCS + " Lockrank: " + LockRank + " AutoLocksRank: " + AutoLocksRank);
//toconsole("segid " + attributes.id);
RampArray = [attributes.id];
//toconsole("segid " + attributes.id + " Built RampArray " + RampArray);
//call ramp function to get HRCS down the line
HRCSHigh = FxRampToRamp(HRCSHigh);
//toconsole(HRCSHigh);
} else if (roundabout === true) { //roundabouts
//toconsole("LST attributes.id: " + attributes.id);
var junctionID = attributes.junctionID;
var RounaboutSegments = Waze.model.junctions.objects[junctionID].segIDs;
for (var roundaboutindex = 0; roundaboutindex < RounaboutSegments.length; ++roundaboutindex) {
var RoundaboutSingleSegments = Waze.model.junctions.objects[junctionID].segIDs[roundaboutindex];
//toconsole("LST roundabout segID: " + Waze.model.junctions.objects[junctionID].segIDs[roundaboutindex]);
fromNodeID = Waze.model.segments.get(RoundaboutSingleSegments).attributes.fromNodeID;
//toconsole(fromNodeID);
t = Waze.model.nodes.objects[fromNodeID].attributes.segIDs; //node segments
//toconsole(t);
for (index = 0; index < t.length; ++index) {
if (attributes.id !== t[index]) {
HRCS = Waze.model.segments.get(t[index]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(t[index]).attributes.rank + 1;
if (HRCS > HRCSHigh) {
HRCSHigh = HRCS;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
//toconsole("" + attributes.id + " fromseg: " + t[index] + " HRCS: " + HRCS + " HRCSAutoLock: " + HRCSAutoLock + " HRCSHigh: " + HRCSHigh);
}
}
toNodeID = Waze.model.segments.get(RoundaboutSingleSegments).attributes.toNodeID;
t = Waze.model.nodes.objects[toNodeID].attributes.segIDs; //node segments
//toconsole(t);
for (index = 0; index < t.length; ++index) {
if (attributes.id !== t[index]) {
HRCS = Waze.model.segments.get(t[index]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(t[index]).attributes.rank + 1;
if (HRCS > HRCSHigh) {
HRCSHigh = HRCS;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
//toconsole("" + attributes.id + " fromseg: " + t[index] + " HRCS: " + HRCS + " HRCSAutoLock: " + HRCSAutoLock + " HRCSHigh: " + HRCSHigh);
}
}
} //end of looking up all of the roundabout segemtns
} //end of roundabouts
newColor = CalculateHighlightColor(HRCSHigh, LockRank, AutoLocksRank, TrackRampToRamp);
ToLock = HRCSHigh;
//end of HRCS ramps and roundabouts
} else if (roundabout === true && Roundabout_lvl > 0 && LSTEnableRoundaboutsHRCS.checked === false) {
newColor = CalculateHighlightColor(Roundabout_lvl, LockRank, AutoLocksRank);
ToLock = roundabout;
} else if (TollRoad === true && fwdToll_lvl > 0) {
newColor = CalculateHighlightColor(fwdToll_lvl, LockRank, AutoLocksRank);
ToLock = fwdToll_lvl;
} else if (Freway_lvl > 0 && roadType == 3) {
newColor = CalculateHighlightColor(Freway_lvl, LockRank, AutoLocksRank);
ToLock = Freway_lvl;
} else if (Ramp_lvl > 0 && roadType == 4 && LSTEnableRampHRCS.checked === false) {
newColor = CalculateHighlightColor(Ramp_lvl, LockRank, AutoLocksRank);
ToLock = Ramp_lvl;
} else if (MajorHighway_lvl > 0 && roadType == 6) {
newColor = CalculateHighlightColor(MajorHighway_lvl, LockRank, AutoLocksRank);
ToLock = MajorHighway_lvl;
} else if (MinorHighway_lvl > 0 && roadType == 7) {
newColor = CalculateHighlightColor(MinorHighway_lvl, LockRank, AutoLocksRank);
ToLock = MinorHighway_lvl;
} else if (PrimaryStreet_lvl > 0 && roadType == 2) {
if (oneWay === true && PrimaryStreetEnableOnewayPlusOne.checked) {
PrimaryStreet_lvl = PrimaryStreet_lvl + 1;
}
ToLock = PrimaryStreet_lvl;
newColor = CalculateHighlightColor(PrimaryStreet_lvl, LockRank, AutoLocksRank);
} else if (RailRoad_lvl > 0 && roadType == 18) {
newColor = CalculateHighlightColor(RailRoad_lvl, LockRank, AutoLocksRank);
ToLock = RailRoad_lvl;
} else if (Ferry_lvl > 0 && roadType == 14) {
newColor = CalculateHighlightColor(Ferry_lvl, LockRank, AutoLocksRank);
ToLock = Ferry_lvl;
} else if (Street_lvl > 0 && roadType == 1) {
if (oneWay === true && StreetEnableOnewayPlusOne.checked) {
Street_lvl = Street_lvl + 1;
}
ToLock = Street_lvl;
newColor = CalculateHighlightColor(Street_lvl, LockRank, AutoLocksRank);
} else if (ParkingLotRoad_lvl > 0 && roadType == 20) {
newColor = CalculateHighlightColor(ParkingLotRoad_lvl, LockRank, AutoLocksRank);
ToLock = ParkingLotRoad_lvl;
} else if (Private_lvl > 0 && roadType == 17) {
if (oneWay === true && PrivateEnableOnewayPlusOne.checked) {
Private_lvl = Private_lvl + 1;
}
ToLock = Private_lvl;
newColor = CalculateHighlightColor(Private_lvl, LockRank, AutoLocksRank);
} else if (LSTDirt4x4_lvl > 0 && roadType == 8) {
newColor = CalculateHighlightColor(LSTDirt4x4_lvl, LockRank, AutoLocksRank);
ToLock = LSTDirt4x4_lvl;
} else if (LSTWalkingTrail_lvl > 0 && roadType == 5) {
newColor = CalculateHighlightColor(LSTWalkingTrail_lvl, LockRank, AutoLocksRank);
ToLock = LSTWalkingTrail_lvl;
} else if (LSTWBoardwalk_lvl > 0 && roadType == 10) {
newColor = CalculateHighlightColor(LSTWBoardwalk_lvl, LockRank, AutoLocksRank);
ToLock = LSTWBoardwalk_lvl;
} else if (LSTRunway_lvl > 0 && roadType == 19) {
newColor = CalculateHighlightColor(LSTRunway_lvl, LockRank, AutoLocksRank);
ToLock = LSTRunway_lvl;
} else if (LSTStairway_lvl > 0 && roadType == 16) {
newColor = CalculateHighlightColor(LSTStairway_lvl, LockRank, AutoLocksRank);
ToLock = LSTStairway_lvl;
}
var zoom = Waze.map.getZoom();
//apply the highlight to the segment
//toconsole(ToLock)
if (newColor != "#dd7700" && zoom > 1) { //default
var Line = Waze.model.segments.objects[seg].attributes.geometry.components;
drawLine(Line, newColor, attributes.id, ToLock);
}
if (Number(LSTCity.value) == Number(cityID) && LSTCity.value !== "-" && LSTCity.value !== "") { //roadType == 5 &&
var Line = Waze.model.segments.objects[seg].attributes.geometry.components;
newColor = "#336699"; //blue
drawLine(Line, newColor, attributes.id, ToLock);
}
if (LSTCity.value !== "-" && LSTCity.value !== "" && roadType != 18) { //not railroad
if (Waze.model.cities.get(cityID).isEmpty === true) { //roadType == 5 &&
var Line = Waze.model.segments.objects[seg].attributes.geometry.components;
newColor = "#ff0000"; //red
drawLine(Line, newColor, attributes.id, ToLock);
}
}
}
}
}
}
}
}
function drawLine(line, newColor, segid, rank) {
//toconsole(segid);
var linePoints = [];
var zoom = Waze.map.getZoom();
if (zoom > LSTlineWidth.length) {
var zoom = LSTlineWidth.length - 1;
}
for (var i = 0; i < line.length; i++) {
//toconsole("livemap: xy " + i + " " + line[i].x + " " + line[i].y);
var p = new OpenLayers.Geometry.Point(line[i].x, line[i].y);
linePoints.push(p);
}
//toconsole(segid + " newColor: " + newColor + " " + linePoints);
var strokeOpacity = '.85';
var lineString = new OpenLayers.Geometry.LineString(linePoints);
var lineFeature = new OpenLayers.Feature.Vector(lineString, null, {
strokeColor: newColor,
strokeOpacity: strokeOpacity,
strokeDashstyle: 'solid',
strokeLinecap: 'round',
strokeWidth: LSTlineWidth[zoom][0]
});
LSTLayer.addFeatures(lineFeature);
var externalGraphic = LSTPurple;
if (newColor == "#909") {
newColor = '#FFFFFF';
} else if (newColor == "#E6E600") { //yellow
externalGraphic = LSTYellow;
newColor = 'orange';
} else {
newColor = '#000000';
}
/*
test road id 60143718
test road naperville cityId 5105
test road aurora cityId 5049
LA cityID 1772
Waze.model.cities.objects[Waze.model.streets.objects[986853].cityID].name
Waze.model.streets.objects[60143718].cityID = 5049;
Waze.model.cities.objects;
Waze.model.cities.get('1772');
Waze.model.cities.objects;
var UpdateObject = require("Waze/Action/UpdateObject");
var v = Waze.model.streets.objects[60143718];
W.model.actionManager.add(new UpdateObject(v, {
cityID: 1772,
}));
Waze.model.streets.objects[60143718].cityID
*/
lineString = new OpenLayers.Geometry.LineString(linePoints);
lineFeature = new OpenLayers.Feature.Vector(lineString, null, {
/*label: ' ' + Waze.model.cities.objects[Waze.model.streets.objects[986853].cityID].name,
labelOutlineColor: "#000000",
labelOutlineWidth: 5,
fontSize: LSTIconWidth[zoom][2],
fontColor: '#FFFFFF',
fontOpacity: 0.85,
fontWeight: "bold",*/
strokeColor: newColor,
strokeOpacity: strokeOpacity,
strokeDashstyle: 'dot',
strokeLinecap: 'round',
strokeWidth: LSTlineWidth[zoom][1]
});
LSTLayer.addFeatures(lineFeature);
if (LSTShowHRCSValues.checked === true && rank > 0) {
var x = getMid(segid);
var point1 = new OpenLayers.Geometry.Point(x.x, x.y);
//var lableFeature = new OpenLayers.Feature.Vector(point1); //Important pass true parameter otherwise it will return start point as centroid
var lableFeature = new OpenLayers.Feature.Vector(
point1, {
description: ' ' + rank
}, {
label: ' ' + rank,
labelOutlineColor: "#000000",
labelOutlineWidth: 5,
fontSize: LSTIconWidth[zoom][2],
fontColor: '#FFFFFF',
fontOpacity: 0.85,
fontWeight: "bold",
labelAlign: "cm",
//externalGraphic: 'http://openlayers.org/en/v3.8.1/examples/data/icon.png',
externalGraphic: externalGraphic,
graphicHeight: LSTIconWidth[zoom][0],
graphicWidth: LSTIconWidth[zoom][0],
graphicXOffset: -LSTIconWidth[zoom][1],
graphicYOffset: -LSTIconWidth[zoom][1]
}
);
LSTIconLayer.addFeatures(lableFeature);
}
}
function getMid(segmentId) {
segment = Waze.model.segments.objects[segmentId].attributes;
var geoLengths = [];
for (var i = 1; i < segment.geometry.components.length; i++) {
var dx = segment.geometry.components[i].x - segment.geometry.components[i - 1].x;
var dy = segment.geometry.components[i].y - segment.geometry.components[i - 1].y;
geoLengths.push(Math.sqrt(dx * dx + dy * dy));
}
var totalLength = 0;
var cumulatedLengths = [];
geoLengths.forEach(function(e) {
totalLength += e;
cumulatedLengths.push(totalLength);
});
var middle = null;
cumulatedLengths.forEach(function(e, i) {
if (middle === null && e > totalLength / 3) {
var d = geoLengths[i];
var f = e - totalLength / 3;
middle = {
'x': (segment.geometry.components[i + 1].x - segment.geometry.components[i].x) * (d - f) / d + segment.geometry.components[i].x,
'y': (segment.geometry.components[i + 1].y - segment.geometry.components[i].y) * (d - f) / d + segment.geometry.components[i].y,
'i': i,
};
}
});
return middle;
}
function FxRampToRamp(HRCSHigh) {
//var RampArray = [];
//RampArray[RampArray.length] = '500914532';
//var HRCSHigh = 1;
var ConnectedRoadType, HRCSLock, HRCSAutoLock = "";
var ConnectedToNonRamp = false;
var TempSegs = [];
//toconsole("RampArray 1 " + RampArray);
//toconsole("FxRampToRamp: HRCSHigh: " + HRCSHigh);
for (var RampToRampIndex = 0; RampToRampIndex < RampArray.length; ++RampToRampIndex) {
ConnectedRoadType = Waze.model.segments.get(RampArray[RampToRampIndex]).attributes.roadType;
if (ConnectedRoadType == 4) { // is a ramp
var RampToRampSegments = Waze.model.segments.get(RampArray[RampToRampIndex]).attributes.toNodeID;
var RampToRampt = Waze.model.nodes.objects[RampToRampSegments].attributes.segIDs; //node segments
//toconsole("connected segmetns " + RampToRampt);
ConnectedToNonRamp = false;
for (var RampToRampIndex2 = 0; RampToRampIndex2 < RampToRampt.length; ++RampToRampIndex2) {
ConnectedRoadType2 = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.roadType;
if (ConnectedRoadType2 == 4) {
if (RampArray[RampToRampIndex] !== RampToRampt[RampToRampIndex2]) {
if ($.inArray(RampToRampt[RampToRampIndex2], RampArray) < 0) { //not in array
TempSegs[TempSegs.length] = RampToRampt[RampToRampIndex2];
}
//toconsole("tonodes is a ramp 1 " + RampToRampt[RampToRampIndex2]);
}
} else { //not a ramp
//toconsole("tonodes not a ramp 1 " + RampToRampt[RampToRampIndex2]);
HRCSLock = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.rank + 1;
if (HRCSLock > HRCSHigh) {
HRCSHigh = HRCSLock;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
/*
TempSeg = RampArray[0];
RampArray = [];
RampArray[RampArray.length] = TempSeg;
RampToRampIndex = 0;
*/
//break;
//ConnectedToNonRamp = true;
//break;
}
}
if (ConnectedToNonRamp === false) {
Array.prototype.push.apply(RampArray, TempSegs);
}
TempSegs = [];
RampToRampSegments = Waze.model.segments.get(RampArray[RampToRampIndex]).attributes.fromNodeID;
RampToRampt = Waze.model.nodes.objects[RampToRampSegments].attributes.segIDs; //node segments
//toconsole("connected segmetns " + RampToRampt);
ConnectedToNonRamp = false;
for (RampToRampIndex2 = 0; RampToRampIndex2 < RampToRampt.length; ++RampToRampIndex2) {
ConnectedRoadType2 = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.roadType;
if (ConnectedRoadType2 == 4) {
if (RampArray[RampToRampIndex] !== RampToRampt[RampToRampIndex2]) {
if ($.inArray(RampToRampt[RampToRampIndex2], RampArray) < 0) { //not in array
TempSegs[TempSegs.length] = RampToRampt[RampToRampIndex2];
}
//toconsole("tonodes is a ramp 2 " + RampToRampt[RampToRampIndex2]);
}
} else { //not a ramp
//toconsole("fromNodes not a ramp 2 " + RampToRampt[RampToRampIndex2]);
HRCSLock = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(RampToRampt[RampToRampIndex2]).attributes.rank + 1;
if (HRCSLock > HRCSHigh) {
HRCSHigh = HRCSLock;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
//break;
//ConnectedToNonRamp = true;
//break;
}
}
//toconsole("RampArray: " + RampArray);
if (ConnectedToNonRamp === false) {
Array.prototype.push.apply(RampArray, TempSegs);
TempSegs = [];
}
} else { //not a ramp
HRCSLock = Waze.model.segments.get(RampArray[RampToRampIndex]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(RampArray[RampToRampIndex]).attributes.rank + 1;
if (HRCSLock > HRCSHigh) {
HRCSHigh = HRCSLock;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
//toconsole("non-Ramp " + RampArray[RampToRampIndex] + " HRCSHigh: " + HRCSHigh);
//return HRCSHigh;
}
}
//toconsole("HRCSHigh " + HRCSHigh);
return HRCSHigh;
}
function CalculateHighlightColor(UsersLockSetting, LockRank, AutoLocksRank, TrackRampToRamp) {
var newColor = "#dd7700";
//toconsole("UsersLockSetting:" + UsersLockSetting + " LockRank:" + LockRank + " AutoLocksRank:" + AutoLocksRank + " TrackRampToRamp: " + TrackRampToRamp);
//UsersLockSetting:3 LockRank:1 AutoLocksRank:3
if (TrackRampToRamp === true && UsersLockSetting == LockRank) {
newColor = "#FFFFFF"; //White ramp to ramp
} else if (LockRank > 0 && UsersLockSetting > LockRank) {
newColor = "#990099"; //purple under locked
} else if (AutoLocksRank > 1 && UsersLockSetting > LockRank && LockRank < AutoLocksRank && UsersLockSetting > AutoLocksRank) {
newColor = "#990099"; //purple under locked
} else if (AutoLocksRank == 1 && UsersLockSetting > LockRank && UsersLockSetting > 1) {
newColor = "#990099"; //purple under locked
} else if (UsersLockSetting > LockRank && UsersLockSetting < AutoLocksRank && LSTShowHighAutoLocked.checked === true) {
newColor = "#ff8000"; //orange over locked
} else if (UsersLockSetting < LockRank) {
newColor = "#E6E600"; //yellow over locked
} else if (LockRank > 1 && AutoLocksRank > 1 && LSTShowManualAndAuto.checked) {
newColor = "#ff99ff"; //pink manual locks are the same as autolocks
}
return newColor;
}
function LHNSetLocks(UpdateObject, v, UsersLockSetting, LockRank, absolute, AutoLocksRank, count) {
//toconsole("LHNSetLocks AutoLocksRank: " + AutoLocksRank + " LockRank: " + LockRank );
var UserID = Waze.loginManager.getLoggedInUser().id; //editor's id number
var UserLevel = W.model.users.objects[UserID].rank + 1; //editor's rank
if ((LSTRemoveManualWhereAutoLock.checked && AutoLocksRank > 1 && LockRank > 0) || (absolute && UsersLockSetting == 1)) {
//remove manual lock reverting back to auto lock
//toconsole("remove manual lock reverting back to auto lock AutoLocksRank: " + AutoLocksRank + " LockRank: " + LockRank );
count++;
W.model.actionManager.add(new UpdateObject(v, {
lockRank: null
}));
} else if (LSTDoNotChangeAutoLocks.checked && AutoLocksRank > 1 && LockRank < 0) {
//do not change auto locked segments
//toconsole("do not change auto locked segments attrib: " + attributes.id + " AutoLocksRank: " + AutoLocksRank + " LockRank: " + LockRank );
} else if ((LockRank < UsersLockSetting && UsersLockSetting > 1 && LockRank != UsersLockSetting) || (absolute && LockRank != UsersLockSetting && UserLevel >= LockRank && UserLevel >= AutoLocksRank)) {
if (UsersLockSetting > UserLevel) {
UsersLockSetting = UserLevel;
}
//toconsole("LHNSetLocks: " + UsersLockSetting);
//set lock absolute
//toconsole("set lock absolute attrib: AutoLocksRank: " + AutoLocksRank + " LockRank: " + LockRank );
count++;
W.model.actionManager.add(new UpdateObject(v, {
lockRank: UsersLockSetting - 1
}));
}
return count;
}
function LHNRaiseLocks() {
var absolute = "";
if (LSTEnableAbsolute.checked === true) {
absolute = true;
$('#LSTEnableAbsolute').prop('checked', false);
} else {
absolute = false;
}
var count = 0;
var thisUser = Waze.loginManager.user;
if (thisUser === null) return;
var usrRank = thisUser.normalizedLevel;
var UpdateObject;
if (typeof(require) !== "undefined") {
UpdateObject = require("Waze/Action/UpdateObject");
} else {
UpdateObject = Waze.Action.UpdateObject;
}
function onScreen(obj) {
if (obj.geometry) {
return (W.map.getExtent().intersectsBounds(obj.geometry.getBounds()));
}
return (false);
}
for (var seg in Waze.model.segments.objects) {
var Freway_lvl = Number($('#LSTFreway').val());
var Ramp_lvl = Number($('#LSTRamp').val());
var MajorHighway_lvl = Number($('#LSTMajorHighway').val());
var MinorHighway_lvl = Number($('#LSTMinorHighway').val());
var PrimaryStreet_lvl = Number($('#LSTPrimaryStreet').val());
var RailRoad_lvl = Number($('#LSTRailRoad').val());
var Ferry_lvl = Number($('#LSTFerry').val());
var Street_lvl = Number($('#LSTStreet').val());
var ParkingLotRoad_lvl = Number($('#LSTParkingLotRoads').val());
var Roundabout_lvl = Number($('#LSTRoundabout').val());
var fwdToll_lvl = Number($('#LSTfwdToll').val());
var Private_lvl = Number($('#LSTPrivate').val());
var LSTDirt4x4_lvl = Number($('#LSTDirt4x4').val());
var LSTWalkingTrail_lvl = Number($('#LSTWalkingTrail').val());
var LSTWBoardwalk_lvl = Number($('#LSTWBoardwalk').val());
var LSTRunway_lvl = Number($('#LSTRunway').val());
var LSTStairway_lvl = Number($('#LSTStairway').val());
if (Freway_lvl > usrRank) Freway_lvl = usrRank;
if (Ramp_lvl > usrRank) Ramp_lvl = usrRank;
if (MajorHighway_lvl > usrRank) MajorHighway_lvl = usrRank;
if (MinorHighway_lvl > usrRank) MinorHighway_lvl = usrRank;
if (PrimaryStreet_lvl > usrRank) PrimaryStreet_lvl = usrRank;
if (RailRoad_lvl > usrRank) RailRoad_lvl = usrRank;
if (Ferry_lvl > usrRank) Ferry_lvl = usrRank;
if (Street_lvl > usrRank) Street_lvl = usrRank;
if (ParkingLotRoad_lvl > usrRank) ParkingLotRoad_lvl = usrRank;
if (Roundabout_lvl > usrRank) Roundabout_lvl = usrRank;
if (fwdToll_lvl > usrRank) fwdToll_lvl = usrRank;
if (Private_lvl > usrRank) Private_lvl = usrRank;
if (LSTDirt4x4_lvl > usrRank) LSTDirt4x4_lvl = usrRank;
if (LSTWalkingTrail_lvl > usrRank) LSTWalkingTrail_lvl = usrRank;
if (LSTWBoardwalk_lvl > usrRank) LSTWBoardwalk_lvl = usrRank;
if (LSTRunway_lvl > usrRank) LSTRunway_lvl = usrRank;
if (LSTStairway_lvl > usrRank) LSTStairway_lvl = usrRank;
var v = Waze.model.segments.get(seg);
var attributes = v.attributes;
var roadType = attributes.roadType;
var LockRank = attributes.lockRank;
var AutoLocksRank = attributes.rank;
//normalize lockrank
if (LockRank === null) {
LockRank = -1;
} else {
LockRank = LockRank + 1;
}
//normalize autolock rank
if (AutoLocksRank === null) {
AutoLocksRank = -1;
} else {
AutoLocksRank = AutoLocksRank + 1;
}
var oneWay = ((attributes.fwdDirection + attributes.revDirection) == 1); // it is 1-way only if either is true
var roundabout = attributes.junctionID !== null;
var TollRoad = attributes.fwdToll;
//var hasClosures = attributes.hasClosures; //true false
if (count < 150 && onScreen(v) && v.isGeometryEditable()) { //&& v.isGeometryEditable() && hasClosures === false
if ((roadType == 4 && LSTEnableRampHRCS.checked === true) || (roundabout === true && LSTEnableRoundaboutsHRCS.checked === true)) { //ramps =4 roundabout=true
var HRCSHigh = 1;
var HRCS = "";
var fromNodeID = "";
var toNodeID = "";
var index = 0;
if (roadType == 4) { //ramps
//toconsole(attributes.id + " HRCSHigh: " + HRCSHigh + " HRCS: " + HRCS + " Lockrank: " + LockRank + " AutoLocksRank: " + AutoLocksRank);
//toconsole("segid " + attributes.id);
RampArray = [attributes.id];
//toconsole("segid " + attributes.id + " Built RampArray " + RampArray);
//call ramp function to get HRCS down the line
HRCSHigh = FxRampToRamp(HRCSHigh);
} else if (roundabout === true) { //roundabouts
//toconsole("LST attributes.id: " + attributes.id);
var junctionID = attributes.junctionID;
var RounaboutSegments = Waze.model.junctions.objects[junctionID].segIDs;
for (var roundaboutindex = 0; roundaboutindex < RounaboutSegments.length; ++roundaboutindex) {
var RoundaboutSingleSegments = Waze.model.junctions.objects[junctionID].segIDs[roundaboutindex];
//toconsole("LST roundabout segID: " + Waze.model.junctions.objects[junctionID].segIDs[roundaboutindex]);
fromNodeID = Waze.model.segments.get(RoundaboutSingleSegments).attributes.fromNodeID;
//toconsole(fromNodeID);
t = Waze.model.nodes.objects[fromNodeID].attributes.segIDs; //node segments
//toconsole(t);
for (index = 0; index < t.length; ++index) {
if (attributes.id !== t[index]) {
HRCS = Waze.model.segments.get(t[index]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(t[index]).attributes.rank + 1;
//toconsole(t[index] + " fromNodeID " + HRCS);
if (HRCS > HRCSHigh) {
HRCSHigh = HRCS;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
}
}
toNodeID = Waze.model.segments.get(RoundaboutSingleSegments).attributes.toNodeID;
t = Waze.model.nodes.objects[toNodeID].attributes.segIDs; //node segments
//toconsole(t);
for (index = 0; index < t.length; ++index) {
if (attributes.id !== t[index]) {
HRCS = Waze.model.segments.get(t[index]).attributes.lockRank + 1;
HRCSAutoLock = Waze.model.segments.get(t[index]).attributes.rank + 1;
//toconsole(t[index] + " toNodeID " + HRCS);
if (HRCS > HRCSHigh) {
HRCSHigh = HRCS;
}
if (HRCSAutoLock > HRCSHigh) {
HRCSHigh = HRCSAutoLock;
}
}
}
} //end of looking up all of the roundabout segemtns
} //end of roundabouts
//toconsole(HRCSHigh);
LHNSetLocks(UpdateObject, v, HRCSHigh, LockRank, absolute, AutoLocksRank, count);
// end of ramps and roundabouts HRCS
} else if (Roundabout_lvl > 0 && LSTEnableRoundaboutsHRCS.checked === false && roundabout === true) {
LHNSetLocks(UpdateObject, v, Roundabout_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (fwdToll_lvl > 0 && TollRoad === true) {
LHNSetLocks(UpdateObject, v, fwdToll_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (Freway_lvl > 0 && roadType == 3) {
LHNSetLocks(UpdateObject, v, Freway_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (Ramp_lvl > 0 && roadType == 4 && LSTEnableRampHRCS.checked === false) {
LHNSetLocks(UpdateObject, v, Ramp_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (MajorHighway_lvl > 0 && roadType == 6) {
LHNSetLocks(UpdateObject, v, MajorHighway_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (MinorHighway_lvl > 0 && roadType == 7) {
LHNSetLocks(UpdateObject, v, MinorHighway_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (PrimaryStreet_lvl > 0 && roadType == 2) {
if (oneWay === true && PrimaryStreetEnableOnewayPlusOne.checked) {
PrimaryStreet_lvl = PrimaryStreet_lvl + 1;
}
LHNSetLocks(UpdateObject, v, PrimaryStreet_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (RailRoad_lvl > 0 && roadType == 18) {
LHNSetLocks(UpdateObject, v, RailRoad_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (Ferry_lvl > 0 && roadType == 14) {
LHNSetLocks(UpdateObject, v, Ferry_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (Street_lvl > 0 && roadType == 1) {
if (oneWay === true && StreetEnableOnewayPlusOne.checked) {
Street_lvl = Street_lvl + 1;
}
LHNSetLocks(UpdateObject, v, Street_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (ParkingLotRoad_lvl > 0 && roadType == 20) {
LHNSetLocks(UpdateObject, v, ParkingLotRoad_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (Private_lvl > 0 && roadType == 17) {
if (oneWay === true && PrivateEnableOnewayPlusOne.checked) {
Private_lvl = Private_lvl + 1;
}
LHNSetLocks(UpdateObject, v, Private_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (LSTDirt4x4_lvl > 0 && roadType == 8) {
LHNSetLocks(UpdateObject, v, LSTDirt4x4_lvl, LockRank, absolute, AutoLocksRank, count);
newColor = CalculateHighlightColor(LSTDirt4x4_lvl, LockRank, AutoLocksRank);
} else if (LSTWalkingTrail_lvl > 0 && roadType == 5) {
LHNSetLocks(UpdateObject, v, LSTWalkingTrail_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (LSTWBoardwalk_lvl > 0 && roadType == 10) {
LHNSetLocks(UpdateObject, v, LSTWBoardwalk_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (LSTRunway_lvl > 0 && roadType == 19) {
LHNSetLocks(UpdateObject, v, LSTRunway_lvl, LockRank, absolute, AutoLocksRank, count);
} else if (LSTStairway_lvl > 0 && roadType == 16) {
LHNSetLocks(UpdateObject, v, LSTStairway_lvl, LockRank, absolute, AutoLocksRank, count);
}
}
}
}
function getBool(val) {
var num = +val;
return !isNaN(num) ? !!num : !!String(val).toLowerCase().replace(!!0, '');
}
function LSTChangeArea() {
//toconsole('' + LSTArea.value);
//toconsole(spreadsheetlockarray);
for (var i = 0; i < spreadsheetlockarray.length; i++) {
if (LSTArea.value == spreadsheetlockarray[i].AreaName) {
//spreadsheetlockarray[i].Timestamp;
//spreadsheetlockarray[i].AreaName;
//spreadsheetlockarray[i].Requestor;
LSTFreway.value = spreadsheetlockarray[i].Freway;
$('#LSTDoNotChangeAutoLocks').prop('checked', getBool(spreadsheetlockarray[i].DoNotChangeAutoLocked));
$('#LSTRemoveManualWhereAutoLock').prop('checked', getBool(spreadsheetlockarray[i].RemoveManualLocksWhereAutoLock));
$('#LSTShowHighAutoLocked').prop('checked', getBool(spreadsheetlockarray[i].ShowHighAutoLocks));
$('#LSTShowManualAndAuto').prop('checked', getBool(spreadsheetlockarray[i].ShowSegmentsAutoAndManual));
LSTfwdToll.value = spreadsheetlockarray[i].Tolls;
if (spreadsheetlockarray[i].Ramps == 'HRCS') {
$('#LSTEnableRampHRCS').prop('checked', true);
LSTRamp.value = 0;
} else {
$('#LSTEnableRampHRCS').prop('checked', false);
LSTRamp.value = spreadsheetlockarray[i].Ramps;
}
LSTMajorHighway.value = spreadsheetlockarray[i].MajorHighway;
LSTMinorHighway.value = spreadsheetlockarray[i].MinorHighway;
LSTPrimaryStreet.value = spreadsheetlockarray[i].PrimaryStreet;
$('#PrimaryStreetEnableOnewayPlusOne').prop('checked', getBool(spreadsheetlockarray[i].PrimaryStreetOnewayPlusOne));
console.log(spreadsheetlockarray[i].PrimaryStreetOnewayPlusOne);
LSTRailRoad.value = spreadsheetlockarray[i].RailRoad;
LSTFerry.value = spreadsheetlockarray[i].Ferry;
LSTStreet.value = spreadsheetlockarray[i].Street;
$('#StreetEnableOnewayPlusOne').prop('checked', getBool(spreadsheetlockarray[i].StreetOnewayPlusOne));
LSTParkingLotRoads.value = spreadsheetlockarray[i].ParkingLotRoads;
if (spreadsheetlockarray[i].Roundabout == 'HRCS') {
$('#LSTEnableRoundaboutsHRCS').prop('checked', true);
LSTRoundabout.value = 0;
} else {
$('#LSTEnableRoundaboutsHRCS').prop('checked', false);
LSTRoundabout.value = spreadsheetlockarray[i].Roundabout;
}
LSTPrivate.value = spreadsheetlockarray[i].Private;
$('#PrivateEnableOnewayPlusOne').prop('checked', getBool(spreadsheetlockarray[i].PrivateEnableOnewayPlusOne));
LSTDirt4x4.value = spreadsheetlockarray[i].Dirt4x4;
LSTWalkingTrail.value = spreadsheetlockarray[i].WalkingTrial;
LSTWBoardwalk.value = spreadsheetlockarray[i].Boardwalk;
LSTRunway.value = spreadsheetlockarray[i].Runway;
LSTStairway.value = spreadsheetlockarray[i].Stairway;
break;
}
}
//area was chaged assume that the editor wants to see the highlights and enable highlights
$('#LSTEnableHighlights').prop('checked', true);
saveHighlightOptions();
highlightSegments();
}
function saveHighlightOptions() {
if (localStorage) {
//toconsole("WME Highlights: saving options");
var options = [];
// preserve previous options which may get lost after logout
//if (localStorage.LSTHighlightScript) options = JSON.parse(localStorage.LSTHighlightScript);
options[0] = $('#LSTEnableHighlights').prop('checked');
options[1] = $('#LSTFreway').val();
options[2] = $('#LSTRamp').val();
options[3] = $('#LSTMajorHighway').val();
options[4] = $('#LSTMinorHighway').val();
options[5] = $('#LSTPrimaryStreet').val();
options[6] = $('#LSTRailRoad').val();
options[7] = $('#LSTFerry').val();
options[8] = $('#LSTStreet').val();
options[9] = $('#LSTParkingLotRoads').val();
// options[10] = $('#LSToneWay').val();
options[11] = $('#LSTRoundabout').val();
options[12] = $('#LSTfwdToll').val();
options[13] = $('#LSTPrivate').val();
options[14] = $('#LSTEnableRampHRCS').prop('checked');
options[15] = $('#LSTEnableRoundaboutsHRCS').prop('checked');
options[16] = $('#LSTShowHighAutoLocked').prop('checked');
options[17] = $('#LSTDoNotChangeAutoLocks').prop('checked');
options[18] = $('#LSTRemoveManualWhereAutoLock').prop('checked');
options[19] = $('#LSTShowManualAndAuto').prop('checked');
options[20] = $('#PrimaryStreetEnableOnewayPlusOne').prop('checked');
options[21] = $('#StreetEnableOnewayPlusOne').prop('checked');
options[22] = $('#LSTDirt4x4').val();
options[23] = $('#LSTWalkingTrail').val();
options[24] = $('#LSTWBoardwalk').val();
options[25] = $('#LSTRunway').val();
options[26] = $('#LSTStairway').val();
options[27] = $('#LSTShowHRCSValues').prop('checked');
options[28] = $('#LSTArea').val(); //area drop down
options[29] = $('#PrivateEnableOnewayPlusOne').prop('checked');
//toconsole(JSON.stringify(options));
localStorage.LSTHighlightScript = JSON.stringify(options);
}
}
function LSTManualSettings() {
//toconsole("LSTManualSettings");
$('#LSTArea').val('-');
saveHighlightOptions();
}
function LSTLoadCities() {
var selected = $("#LSTCity").val(); /* preserving original selection, step 1 */
//toconsole("selected " + selected);
$('#LSTCity option').remove();
$('#LSTCity').append($('<option>', {
value: '-',
text: '-'
}));
for (var name in Waze.model.cities.objects) {
if (Waze.model.cities.objects[name].isEmpty === false) {
//toconsole(Waze.model.cities.objects[name].name);
$('#LSTCity').append($('<option>', {
value: Waze.model.cities.objects[name].id,
text: Waze.model.cities.objects[name].name + " " + Waze.model.cities.objects[name].id
}));
}
}
//Alpha sort the select
var my_options = $("#LSTCity option");
//toconsole(selected);
my_options.sort(function(a, b) {
if (a.text > b.text) return 1;
else if (a.text < b.text) return -1;
else return 0;
});
$("#LSTCity").empty().append(my_options);
$("#LSTCity").val(selected); // preserving original selection, step 2
//end of sort
}
function LSTSetCity() {
/*
var UserID = Waze.loginManager.getLoggedInUser().id; //editor's id number
var UserLevel = W.model.users.objects[UserID].rank + 1; //editor's rank
function onScreen(obj) {
if (obj.geometry) {
return (W.map.getExtent().intersectsBounds(obj.geometry.getBounds()));
}
return (false);
}
for (var seg in Waze.model.segments.objects) {
var segment = Waze.model.segments.get(seg);
var attributes = segment.attributes;
var line = getId(segment.geometry.id);
if (line !== null) {
var sid = attributes.primaryStreetID;
if (sid !== null) {
var hasClosures = attributes.hasClosures; //true false
if (hasClosures === false) {
var roadType = attributes.roadType;
var street = Waze.model.streets.get(sid);
var LockRank = attributes.lockRank + 1;
var AutoLocksRank = attributes.rank + 1;
var cityID = (street !== null) && street.cityID;
var noCity = false;
var countryID = 0;
if (cityID !== null && Waze.model.cities.get(cityID) !== null) {
noCity = Waze.model.cities.get(cityID).isEmpty;
countryID = Waze.model.cities.get(cityID).countryID;
}
//1: "Streets",
//2: "Primary Street",
//3: "Freeways",
//4: "Ramps",
//5: "Walking Trails",
//6: "Major Highway",
//7: "Minor Highway",
//8: "Dirt roads",
//10: "Boardwalk",
//14: "Ferry"
//16: "Stairway",
//17: "Private Road",
//18: "Railroad",
//19: "Runway",
//20: "Parking Lot Road",
if (onScreen(segment) === true && UserLevel >= LockRank && UserLevel >= AutoLocksRank && segment.isGeometryEditable() === true) { //count < 150 &&
//toconsole(attributes.id + " " + UserLevel + " " + LockRank + " " + AutoLocksRank );
//toconsole(attributes.id + " isGeometryEditable " + segment.isGeometryEditable());
//toconsole(attributes.id + " " +);
//toconsole(attributes.id + " " +);
//500927009
if (roadType == 5) {
if (Number(LSTCity.value) !== Number(cityID) && LSTCity.value !== "-") {
//Waze.model.streets.objects['501342708'];
var segid = '78351399';
var primaryStreetID = Waze.model.segments.objects[segid].attributes.primaryStreetID;
// Waze.model.streets.objects[primaryStreetID];
var UpdateObject = require("Waze/Action/UpdateObject","Waze/Action/UpdateFeatureAddress");
var v = Waze.model.streets.objects[primaryStreetID];
W.model.actionManager.add(new UpdateObject(v, {
cityID: Number(LSTCity.value),
//isEmpty: false
}));
//var sid = '501342708';
//var UpdateObject = require("Waze/Action/UpdateObject");
//var v = Waze.model.streets.objects[sid];
//W.model.actionManager.add(new UpdateObject(v, {
// cityID: Number(LSTCity.value),
// emptyCity: true
//}));
//segment id 500927009
//primaryStreetID: 10111299
//Waze.model.streets.objects['10111299'];
var segid = '500927009';
var primaryStreetID = Waze.model.segments.objects[segid].attributes.primaryStreetID;
var cityID = Waze.model.streets.objects[primaryStreetID].cityID;
toconsole(cityID);
Waze.model.segments.objects['500927009'].attributes.cityID;
//500927009
var cityID = Waze.model.cities.objects[cityID];
var newAttributes,
UpdateFeatureAddress = require('Waze/Action/UpdateFeatureAddress');
//v = v || item;
//if (v && address && address.state && address.country) {
newAttributes = {
//countryID: address.country.id, //data in cities
//stateID: address.state.id, //data in cities
cityName: 'Test',
//cityID: Number(LSTCity.value), //data in streets
//emptyCity: address.city.name ? null : true,
//streetName: address.street.name, //data in
//emptyStreet: address.street.name ? null : true
};
W.model.actionManager.add(new UpdateFeatureAddress(v, newAttributes));
//}
}
}
}
}
}
}
}
*/
}
})();