Toll Pricing Project: Difference between revisions View history

(→‎User information and communication: added glossary entry BM)
 
(Created page with "This feature displays the expected toll price of a route in the Waze app. == Resources == * [https://www.waze.com/forum/viewtopic.php?f=1963&t=287077 Feature announcement] *...")
Line 1: Line 1:
{{construction
This feature displays the expected toll price of a route in the Waze app.
| contact    = http://www.waze.com/forum/viewtopic.php?f=276&t=94974
| contacttype = forum
| draft      = yes
| open        = yes}}


A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands to extend the browser's functionality through a single mouse click. For instance, a bookmarklet might enable the user to select an editor username on a page, click the bookmarklet, and be taken directly to the private message page with the username already entered.
== Resources ==


== Adding to a browser ==
* [https://www.waze.com/forum/viewtopic.php?f=1963&t=287077 Feature announcement]
* [https://sites.google.com/view/wazertowazer/resources-processes-for-coordinators/toll-prices Wazer to Wazer site] on toll prices
* [https://www.waze.com/forum/viewtopic.php?f=56&t=287870 APAC pre-project webinar] with the Waze Community Management Team
* [https://docs.google.com/spreadsheets/d/1iJRfXFJi6q0YEZoYjrQInDUOWKjhtseL-Nb6cXmF8kY/edit#gid=0 Internal toll roads spreadsheet] - do not change without consulting the toll pricing team
* [https://tolls.waze.com/ Toll Tool] - The website where toll pricing is adjusted. Authorised users only. Consulting the toll pricing team before making any changes.
* [https://docs.google.com/forms/d/e/1FAIpQLSdtWEAkCmb5OS8McLmxd0HBLzEXKFfXoXih1goeRtA-wwKrQw/viewform Toll Tool Request Access Form] - Access is only granted to senior and experienced editors.
* [https://www.waze.com/forum/viewforum.php?f=1963 Toll Pricing Forum]


=== Chrome ===
== Toll Pricing Experts ==
To add a bookmarklet to Google Chrome, you must open the Bookmark Manager. There are three methods to do this:


'''METHOD 1:''' Via Chrome's Menu option
* GBSpeedy1305
* Vestigal


[[File:Chrome bookmark manager menu.png|right|400px|Click image to enlarge]]
== Toll Road Flag - DRAFT ==
* Left click on the Chrome menu [[File:Chrome-menu-button.png]] on the browser toolbar.  
'''This section is still under development.'''


* Hoover over the "Bookmarks" menu and a drop-down menu will display
Toll roads are mapped by ticking the toll road flag (under Edit Restrictions) on dedicated segments entering and exiting a toll road. These dedicated segments are usually flagged with a map comment and locked to a higher level to prevent adjustment. It is important that the segment ID not change on these segments - if it does, a new segment ID will need to be placed in the toll pricing tool.


* Left click on "Bookmark Manager"
Waze adds a 3 minute penalty to the route so users aren't routed onto a toll road if there's little or no advantage, and to cater for the stop/start of old cash booths. This occurs when the toll road flag (under Edit Restrictions) is ticked.
{{clear}}


'''METHOD 2:''' Bookmark menu
=== Mapping Entry/Exit Only ===
Where a toll road has toll points on the entry and exits of the road, map the road and toll road flag as such.


[[File:Bookmark Bar menu.png|right|border]]
[https://media.discordapp.net/attachments/600506930749767694/619347612763684874/unknown.png Example]
* If you have the Bookmark Bar enabled, right-click anywhere on the Bookmark Bar


* Scroll down to Bookmark Manager and left-click
=== Mapping Whole Road as Toll Road ===
{{clear}}
Where a toll road has multiple toll points along the entire length of the road, charging people for each point they pass, you need to map the map the road and toll road flag as such to avoid cumulative penalty. This was observed in Melbourne.


'''METHOD 3:''' Shortcut key
[https://media.discordapp.net/attachments/600506930749767694/619348149324087298/unknown.png Example]


[[File:Bookmark Manager.png|right|border]]
If you fail to map it correctly, the cumulative penalty will apply as such:
* Just use the shortcut {{key press|Ctrl|Shift|O}} or {{key press|Cmd|Option|B}}


After Opening the Bookmark menu:
[https://media.discordapp.net/attachments/600506930749767694/619347866690912256/unknown.png Example]
 
* In the left window pane, navigate to where you want to add the bookmarklet.
{{clear}}
 
[[File:Bookmark Manager dropdown menu.png|right|border]]
* In the main window pane, right click to see the context menu.
 
* Left click on "Add page"
{{clear}}
 
[[File:Bookmark Manager add page.png|right|border]]
* In the "Name" box, enter any name you prefer to assist in identifying the bookmarklet. You could also leave it empty.
 
* In the "URL" box, paste the code your previously copied.
 
When finished, it should look something like this:
[[File:Bookmark Manager Add page 02.jpg|border]]
 
{{clear}}
 
Shortcut keys can be added with external add-on tools. One example is [http://www.howtogeek.com/127162/how-to-create-custom-keyboard-shortcuts-for-browser-actions-and-extensions-in-google-chrome/ this tool].
 
=== Firefox ===
* Ensure the Bookmarks toolbar is visible with a Right-click in a blank area of the Firefox tab row or menu bar area. Alternately you can open the Bookmarks window with Ctrl-B.
 
* Right-click the bookmark bar or window and select '''New Bookmark.'''
 
* Enter a name for the bookmarklet in the '''Name''' field.
 
* The '''Location''' field is where you copy and paste the javascript code from one of the code boxes below. Be sure to include everything from the code box.
 
* The other fields are not required. Press '''Add''' to save the changes.
 
* Repeat the process for each bookmarklet desired.
 
== Defined scripts ==
The following bookmarklet scripts could be helpful to map editors. Following the instructions above for adding a bookmarklet based on your browser, select the code below with your mouse, highlighting all the code inside the box. Use that code to paste into the bookmark as the target or location.
 
''Formatted (viewable) code can be seen on the [[Talk:Bookmarklets#Expanded views|talk page]].''
 
<!-- this link has a script that needs to be added. http://www.waze.com/forum/viewtopic.php?f=12&t=17684#p431249 -->
=== Map location ===
 
==== Open Waze Map Editor from LiveMap ====
A script is no longer necessary. Click click the "Edit the map" link when viewing Livemap.
 
==== Open LiveMap from Waze Map Editor ====
This script opens a window with [[Live Map]] when currently viewing Waze Map Editor.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var center_lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(g_map.getCenter().lon,g_map.getCenter().lat);var mapZoom=(window.location.hostname=='www.waze.com'?(g_map.zoom>6?(g_map.zoom>7?g_map.zoom-5:g_map.zoom-6):0):(g_map.zoom>10?g_map.zoom-11:0));window.open('http://'+window.location.hostname+'/editor/?zoom='+mapZoom+'&lon='+center_lonlat.lon+'&lat='+center_lonlat.lat,'Waze Map Editor')})();
</nowiki>}}
 
''A drag-n-drop link can be copied from [http://dl.dropbox.com/u/1437031/waze_bookmarklets.html this dropbox page] (AlanOfTheBerg's dropbox).''
=== Map editing ===
{{Throttle warn}}
==== Custom location scripts ====
If you know of a script for a specific area, please add it to this list or request help from [http://www.waze.com/forum/viewforum.php?f=276 this forum] for it to be added.
 
* [[Michigan mapping resources|Michigan]]
* [[New York/Resources|New York]]
 
==== Set segment locks in area ====
This script will set the lock rank on various segment types in the visible area of the WME. Current configuration listed:
 
* It will only update up to 150 segments
* It only modifies what can be modified by the user's current rank and area
**If the user's current rank is lower than the defined lock level, it will lock the roads at the user's rank
* It will not lower a rank less than it is currently set
* Freeways and Ramps are set to 4
* Major Highways are set to 3
* Minor Highways are set to 2
* Primary Streets are set to 2
* Railroads are set to 2
* Ferries are set to 5
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var fwy_lvl=4;var rmp_lvl=3;var maj_lvl=2;var min_lvl=1;var pri_lvl=1;var rr_lvl=1;var fer_lvl=4;var 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}if(fwy_lvl>(usrRank-1))fwy_lvl=usrRank-1;if(rmp_lvl>(usrRank-1))rmp_lvl=usrRank-1;if(maj_lvl>(usrRank-1))maj_lvl=usrRank-1;if(min_lvl>(usrRank-1))min_lvl=usrRank-1;if(pri_lvl>(usrRank-1))pri_lvl=usrRank-1;function onScreen(obj){if(obj.geometry){return(W.map.getExtent().intersectsBounds(obj.geometry.getBounds()))}return(false)}Object.forEach(W.model.segments.objects,function(k,v){if(count<150&&onScreen(v)&&v.isGeometryEditable()){if(v.attributes.roadType==3&&(v.attributes.lockRank<fwy_lvl||(absolute&&v.attributes.lockRank!=fwy_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:fwy_lvl}))}if(v.attributes.roadType==4&&(v.attributes.lockRank<rmp_lvl||(absolute&&v.attributes.lockRank!=rmp_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:rmp_lvl}))}if(v.attributes.roadType==6&&(v.attributes.lockRank<maj_lvl||(absolute&&v.attributes.lockRank!=maj_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:maj_lvl}))}if(v.attributes.roadType==7&&(v.attributes.lockRank<min_lvl||(absolute&&v.attributes.lockRank!=min_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:min_lvl}))}if(v.attributes.roadType==2&&(v.attributes.lockRank<pri_lvl||(absolute&&v.attributes.lockRank!=pri_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:pri_lvl}))}if(v.attributes.roadType==18&&(v.attributes.lockRank<rr_lvl||(absolute&&v.attributes.lockRank!=rr_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:rr_lvl}))}if(v.attributes.roadType==14&&(v.attributes.lockRank<fer_lvl||(absolute&&v.attributes.lockRank!=fer_lvl))){count++;W.model.actionManager.add(new UpdateObject(v,{lockRank:fer_lvl}))}}})})();
</nowiki>}}
 
==== Extraneous node remover ====
This script will remove extraneous junction nodes that are not required. It will not remove nodes that prevent the problems related to loops with too few segments. This function is similar to the feature built into the Toolbox, but it operates as a stand alone script from other tools.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
 
javascript:(function(){var count=0;var geo=W.map.getExtent().toGeometry();Object.forEach(W.model.nodes.objects,function(k,v){if(count<10){if(v.areConnectionsEditable()&&geo.containsPoint(v.geometry)){if(v.attributes.segIDs.length==2){var seg1=W.model.segments.get(v.attributes.segIDs[0]);var seg2=W.model.segments.get(v.attributes.segIDs[1]);if(seg1&&seg2&&seg1.attributes.primaryStreetID==seg2.attributes.primaryStreetID&&seg1.attributes.roadType==seg2.attributes.roadType&&seg1.isOneWay()==seg2.isOneWay()&&seg1.isDrivable()&&seg2.isDrivable()){var update=true;if(seg1.attributes.fwdRestrictions&&seg1.attributes.revRestrictions&&seg2.attributes.fwdRestrictions&&seg2.attributes.revRestrictions&&v.attributes.restrictions){if(seg1.attributes.fwdRestrictions.length==0&&seg1.attributes.revRestrictions.length==0&&seg2.attributes.fwdRestrictions.length==0&&seg2.attributes.revRestrictions.length==0){for(var obj in v.attributes.restrictions){update=false;break}if(seg1.attributes.toNodeID==seg1.attributes.fromNodeID||seg2.attributes.toNodeID==seg2.attributes.fromNodeID){update=false}if(seg1.attributes.toNodeID!=v.fid&&(seg1.attributes.toNodeID==seg2.attributes.toNodeID||seg1.attributes.toNodeID==seg2.attributes.fromNodeID)){update=false}if(seg1.attributes.fromNodeID!=v.fid&&(seg1.attributes.fromNodeID==seg2.attributes.toNodeID||seg1.attributes.fromNodeID==seg2.attributes.fromNodeID)){update=false}if(update){var n1;var n2;if(seg1.attributes.toNodeID==v.fid){n1=W.model.nodes.get(seg1.attributes.fromNodeID)}else{n1=W.model.nodes.get(seg1.attributes.toNodeID)}if(seg2.attributes.toNodeID==v.fid){n2=W.model.nodes.get(seg2.attributes.fromNodeID)}else{n2=W.model.nodes.get(seg2.attributes.toNodeID)}for(var i=0;i<n1.attributes.segIDs.length;i++){for(var j=0;j<n2.attributes.segIDs.length;j++){if(n1.attributes.segIDs[i]==n2.attributes.segIDs[j]){console.log("Merge on",v.fid,"would cause two or more segments connected to same nodes.");update=false}if(update==false){break}}if(update==false){break}}}if(update){W.model.actionManager.add(new W.Action.MergeSegments(null,v));count++;console.log("merged("+count+") "+seg1.fid+" with "+seg2.fid+" at "+v.fid)}}}}}}}})})();</nowiki>}}
 
==== Geometry Node Wiper (GeoWipe) ====
Completely straightens all selected segments by removing all geometry nodes. DO NOT USE this on segments which are supposed to curve or have doglegs on them for navigational aids.
{{pre2|<nowiki>
javascript:(function() {var UpdateSegmentGeometry=require("Waze/Action/UpdateSegmentGeometry");  Object.forEach(Waze.selectionManager.selectedItems, function(k, va) {v=va.model;if (v && v.type == "segment" && v.geometry.components.length > 2) {var geo = v.geometry.clone();        geo.components.splice(1,geo.components.length-2);geo.components[0].calculateBounds();        geo.components[1].calculateBounds();Waze.model.actionManager.add(new UpdateSegmentGeometry(v, v.geometry, geo));}});})();</nowiki>}}
 
=== User information and communication ===
 
==== Create private message to user ====
This script will use the mouse-selected (highlighted) text on the page to prepare a private message page with the username already populated. If you don't highlight a username, the script will ask for one to be entered.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var s='';if(window.getSelection){s=window.getSelection()}else if(document.getSelection){s=document.getSelection()}else if(document.selection){s=document.selection.createRange().text}if(s==""){var s=prompt("Enter Username for sending PM (or highlight name before selecting bookmarklet).")}if((s!="")&&(s!=null)){window.location.href="http://www.waze.com/forum/ucp.php?i=pm&mode=compose&username="+s}})();
</nowiki>}}
 
==== Display user's forum posts ====
This script will use the mouse-selected (highlighted) text on the page to display the user's forum posts. If you don't highlight a username, the script will ask for one to be entered.
 
Once on that page, selecting any entry of the user's name will move to the user's forum profile data.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var s='';if(window.getSelection){s=window.getSelection()}else if(document.getSelection){s=document.getSelection()}else if(document.selection){s=document.selection.createRange().text}if(s==""){var s=prompt("Enter Username to view forum posts (or highlight name before selecting bookmarklet).")}if((s!="")&&(s!=null)){window.location.href="http://www.waze.com/forum/search.php?keywords=&terms=all&sv=0&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Search&author="+s}})();
</nowiki>}}
 
==== Display user's Wiki page ====
This script will use the mouse-selected (highlighted) text on the page to display the user's Wiki page. If you don't highlight a username, the script will ask for one to be entered.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var s='';if(window.getSelection){s=window.getSelection()}else if(document.getSelection){s=document.getSelection()}else if(document.selection){s=document.selection.createRange().text}if(s==""){var s=prompt("Enter Username for Wiki user page (or highlight name before selecting bookmarklet).")}if((s!="")&&(s!=null)){window.location.href="http://wiki.waze.com/wiki/User:"+s}})();
</nowiki>}}
 
==== Display user's Wiki contributions ====
This script will use the mouse-selected (highlighted) text on the page to display the user's Wiki contributions. If you don't highlight a username, the script will ask for one to be entered.
 
<!-- Do not modify this code directly. Go to the talk page to modify the formatted code and then compress it and paste the result below -->
{{pre2|<nowiki>
javascript:(function(){var s='';if(window.getSelection){s=window.getSelection()}else if(document.getSelection){s=document.getSelection()}else if(document.selection){s=document.selection.createRange().text}if(s==""){var s=prompt("Enter Username for Wiki contributions (or highlight name before selecting bookmarklet).")}if((s!="")&&(s!=null)){window.location.href="http://wiki.waze.com/wiki/Special:Contributions/"+s}})();
</nowiki>}}
 
 
=== Wiki and support pages ===
==== Glossary Entries ====
This script will take you directly to the Waze [[Glossary]] entry for a highlighted or entered term.
{{Pre2|<nowiki>javascript:(function() {var s=new String(''); /* BM V5 2015-04-19 */ if (window.getSelection) {s=window.getSelection().toString();} else if (document.getSelection) {s=document.getSelection().toString();} else if (document.selection) {s=document.selection.createRange().text.toString();} if (!s) {s=prompt('No text selected. Enter a Glossary Entry term here:');} if (s) {window.open('http://www.waze.com/wiki/Glossary#'+encodeURIComponent(s.replace(/ /g,'_')).replace(/%/g,'.').replace(/\(/g,'.28').replace(/\)/g,'.29'));}})();</nowiki>}}
 
[[Category:Bookmarklets]]

Revision as of 07:30, 30 March 2020

This feature displays the expected toll price of a route in the Waze app.

Resources

Toll Pricing Experts

  • GBSpeedy1305
  • Vestigal

Toll Road Flag - DRAFT

This section is still under development.

Toll roads are mapped by ticking the toll road flag (under Edit Restrictions) on dedicated segments entering and exiting a toll road. These dedicated segments are usually flagged with a map comment and locked to a higher level to prevent adjustment. It is important that the segment ID not change on these segments - if it does, a new segment ID will need to be placed in the toll pricing tool.

Waze adds a 3 minute penalty to the route so users aren't routed onto a toll road if there's little or no advantage, and to cater for the stop/start of old cash booths. This occurs when the toll road flag (under Edit Restrictions) is ticked.

Mapping Entry/Exit Only

Where a toll road has toll points on the entry and exits of the road, map the road and toll road flag as such.

Example

Mapping Whole Road as Toll Road

Where a toll road has multiple toll points along the entire length of the road, charging people for each point they pass, you need to map the map the road and toll road flag as such to avoid cumulative penalty. This was observed in Melbourne.

Example

If you fail to map it correctly, the cumulative penalty will apply as such:

Example