// ==UserScript==
// @name WME Data Store
// @author davielde
// @description Store objects when panning the map to compile lists for export (i.e. cities, places, segments)
// @include https://www.waze.com/editor/*
// @include https://www.waze.com/*/editor/*
// @include https://editor-beta.waze.com/*
// @version 0.4.3
// @grant none
// @namespace https://greasyfork.org/users/5252
// ==/UserScript==
function bootstrapDS()
{
var bGreasemonkeyServiceDefined = false;
try {
bGreasemonkeyServiceDefined = (typeof Components.interfaces.gmIGreasemonkeyService === "object");
}
catch (err) { /* Ignore */ }
if (typeof unsafeWindow === "undefined" || ! bGreasemonkeyServiceDefined) {
unsafeWindow = ( function () {
var dummyElem = document.createElement('p');
dummyElem.setAttribute('onclick', 'return window;');
return dummyElem.onclick();
}) ();
}
setTimeout(initializeDS, 2000);
}
function replaceCommas(commaString){
var noCommaString = commaString.replace(/,/g, '.');
return noCommaString;
}
function epsg900913to4326(init900913){
var transformedTo4326 = init900913.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));
return transformedTo4326;
}
function getWMEData(){
var locale = I18n.locale;
var zoom = Waze.map.zoom;
var cityLabel = I18n.translations[locale].layers.name["cities"];
var venueLabel = I18n.translations[locale].layers.name["landmarks"];
var segmentLabel = I18n.translations[locale].layers.name["segments"];
if(locale == 'en'){
var editorVersion = 'https://www.waze.com/editor/';
}
else{
var editorVersion = 'https://www.waze.com/' + locale + '/editor/';
}
var editorCode = Waze.location.code;
var center900913 = Waze.map.getCenter();
var center4326 = epsg900913to4326(center900913);
console.log('WME Data Store: new execution');
//Cities
var cityData = ['CountryID','Country','StateID','State','CityID'
,'CityName','CityEnglishName','IsEmpty','Permalink'
];
try{
var currentCities = Waze.model.cities.additionalInfo.clone();
for(i=0; i<currentCities.length; i++)
{
var stateObj = Waze.model.states.get(currentCities[i].stateID);
var stateName = replaceCommas(stateObj.name);
var countryObj = Waze.model.countries.get(currentCities[i].countryID);
var countryName = replaceCommas(countryObj.name);
var cityPermalink = editorVersion + '?env=' + editorCode + '&lon=' + center4326.lon + '&lat=' + center4326.lat +'&zoom=0';
cityData.push('\n'+currentCities[i].countryID,countryName,currentCities[i].stateID,stateName
,currentCities[i].id,currentCities[i].name,currentCities[i].englishName,currentCities[i].isEmpty,cityPermalink
);
}
}
catch(e){
console.log('WME Data Store: unable to process city list, ' + e);
}
//Places
var venueData = ['PlaceID','PlaceName','Brand','Lock','PrimaryCategory','Type'
,'CreateDateTime','CreatedByName','CreatedByRank','UpdateDateTime','UpdatedByName','UpdatedByRank','Permalink'
];
try{
var currentVenues = Waze.model.venues.additionalInfo.clone();
for(i=0; i<currentVenues.length; i++)
{
var venueID = currentVenues[i].attributes.id;
var venueName = replaceCommas(currentVenues[i].attributes.name);
if(currentVenues[i].attributes.geometry.CLASS_NAME == 'OpenLayers.Geometry.Point'){var venueType = 'Point'}else{var venueType = 'Area'}
var venueLockRank = currentVenues[i].attributes.lockRank + 1;
var venueBrand = currentVenues[i].attributes.brand;
var venuePrimaryCategory = currentVenues[i].attributes.categories[0];
var venueCreatedOn = new Date(parseInt(currentVenues[i].attributes.createdOn));
var venueCreatedByUserObj = Waze.model.users.get(currentVenues[i].attributes.createdBy);
var venueCreatedByName = venueCreatedByUserObj.userName;
var venueCreatedByRank = venueCreatedByUserObj.rank + 1;
var venueUpdatedOn = ((currentVenues[i].attributes.updatedOn == null) ? "" : new Date(parseInt(currentVenues[i].attributes.updatedOn)));
var venueUpdatedByUserObj = ((currentVenues[i].attributes.updatedOn == null) ? "" : Waze.model.users.get(currentVenues[i].attributes.updatedBy));
var venueUpdatedByName = ((venueUpdatedByUserObj == "") ? "" : replaceCommas(venueUpdatedByUserObj.userName));
var venueUpdatedByRank = ((currentVenues[i].attributes.updatedOn == null) ? "" : venueUpdatedByUserObj.rank + 1);
var venueCentroid = epsg900913to4326(currentVenues[i].attributes.geometry.getCentroid());
var venuePermalink = editorVersion + '?env=' + editorCode + '&lon=' + venueCentroid.x + '&lat=' + venueCentroid.y +'&zoom=6&venues=' + venueID;
venueData.push('\n'+venueID,venueName,venueBrand,venueLockRank,venuePrimaryCategory,venueType
,venueCreatedOn,venueCreatedByName,venueCreatedByRank,venueUpdatedOn,venueUpdatedByName,venueUpdatedByRank,venuePermalink
);
}
}
catch(e){
console.log('WME Data Store: unable to process venue list, ' + e);
}
//Segments
//if(zoom >= 4){
var segmentData = ['SegmentID','CountryName','StateName','CityName','PrimaryStreetName','RoadType','RoadTypeName'
,'FwdToll','ReverseToll','FwdDirection','ReverseDirection','Elevation','Rank','LengthInMeters'
,'CreateDateTime','CreatedByName','CreatedByRank','UpdateDateTime','UpdatedByName','UpdatedByRank','Permalink'
];
try{
var currentSegments = Waze.model.segments.additionalInfo.clone();
var statsSegMaxUpdate = '';
var statsDistinctEditors = {};
//var statsSegRoadTypeCount = [];
for(i=0; i<currentSegments.length; i++)
{
var segmentID = currentSegments[i].attributes.id;
var primaryStreetObj = Waze.model.streets.get(currentSegments[i].attributes.primaryStreetID);
var primaryStreetName = ((primaryStreetObj.name == null) ? "" : replaceCommas(primaryStreetObj.name));
var segCityObj = Waze.model.cities.get(primaryStreetObj.cityID);
var segCityName = ((segCityObj.name == null) ? "" : replaceCommas(segCityObj.name));
var segStateObj = Waze.model.states.get(segCityObj.stateID);
var segStateName = ((segStateObj.name == null) ? "" : replaceCommas(segStateObj.name));
var segCountryObj = Waze.model.countries.get(segCityObj.countryID);
var segCountryName = ((segCountryObj.name == null) ? "" : replaceCommas(segCountryObj.name));
var segRoadType = currentSegments[i].attributes.roadType;
var segRoadTypeName = I18n.translations[locale].segment.road_types[segRoadType];
var segCreatedOn = new Date(parseInt(currentSegments[i].attributes.createdOn));
var segCreatedByUserObj = Waze.model.users.get(currentSegments[i].attributes.createdBy);
var segCreatedByName = replaceCommas(segCreatedByUserObj.userName);
var segCreatedByRank = segCreatedByUserObj.rank + 1;
var segUpdatedOn = ((currentSegments[i].attributes.updatedOn == null) ? "" : new Date(parseInt(currentSegments[i].attributes.updatedOn))); //segments with no updates will throw errors
var segUpdatedByUserObj = ((currentSegments[i].attributes.updatedOn == null) ? "" : Waze.model.users.get(currentSegments[i].attributes.updatedBy));
var segUpdatedByName = ((segUpdatedByUserObj == "") ? "" : replaceCommas(segUpdatedByUserObj.userName));
var segUpdatedByRank = ((currentSegments[i].attributes.updatedOn == null) ? "" : segUpdatedByUserObj.rank + 1);
var segFwdToll = currentSegments[i].attributes.fwdToll;
var segRevToll = currentSegments[i].attributes.revToll;
var segFwdDirection = currentSegments[i].attributes.fwdDirection;
var segRevDirection = currentSegments[i].attributes.revDirection;
var segElevation = currentSegments[i].attributes.level;
var segRank = currentSegments[i].attributes.lockRank + 1;
var segLength = currentSegments[i].attributes.length;
var segCentroid = epsg900913to4326(currentSegments[i].geometry.getCentroid());
var segPermalink = editorVersion + '?env=' + editorCode + '&lon=' + segCentroid.x + '&lat=' + segCentroid.y +'&zoom=5&segments=' + segmentID;
segmentData.push('\n'+segmentID,segCountryName,segStateName,segCityName,primaryStreetName,segRoadType,segRoadTypeName
,segFwdToll,segRevToll,segFwdDirection,segRevDirection,segElevation,segRank,segLength
,segCreatedOn,segCreatedByName,segCreatedByRank,segUpdatedOn,segUpdatedByName,segUpdatedByRank,segPermalink
);
//basic stats
if(currentSegments[i].attributes.updatedOn > statsSegMaxUpdate){
statsSegMaxUpdate = currentSegments[i].attributes.updatedOn;
var statsSegMaxUpdateUserObj = ((currentSegments[i].attributes.updatedOn == null) ? "" : Waze.model.users.get(currentSegments[i].attributes.updatedBy));
var statsSegMaxUpdateUser = ((statsSegMaxUpdateUserObj == "") ? "" : replaceCommas(statsSegMaxUpdateUserObj.userName));
}
var num = currentSegments[i].attributes.updatedBy;
statsDistinctEditors[num] = statsDistinctEditors[num]+1 || 1;
} //end FOR
var statsSegmentCount = currentSegments.length;
console.log('WME Data Store: max update = ' + new Date(parseInt(statsSegMaxUpdate)) + ' by ' + statsSegMaxUpdateUser
+ ', segment count = ' + statsSegmentCount + ', distinct editors = ' + JSON.stringify(statsDistinctEditors));
}
catch(e){
console.log('WME Data Store: unable to process segment list, ' + e);
}
//}
//Export div
divJDS = document.createElement('div');
divJDS.id = 'divJDS';
divJDS.style.position = 'absolute';
divJDS.style.bottom = '35px';
divJDS.style.left = '425px';
divJDS.style.text = 'white';
divJDS.style.backgroundColor = 'transparent';
divJDS.style.borderWidth = '2px';
divJDS.style.borderStyle = 'groove';
divJDS.style.boxShadow = '1px 1px 1px Grey';
divJDS.style.padding = '1px';
divJDS.style.color = '#F8F8F8';
divJDS.innerHTML = '';
iconJDS = document.createElement('img');
iconJDS.id = 'iconJDS';
iconJDS.src= 'data:image/png;base64,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';
divJDS.appendChild(iconJDS);
document.body.appendChild(divJDS);
//Export Cities link -- move to function later
var a = divJDS.appendChild(
document.createElement('a')
);
a.id = 'divJDS_' + cityLabel + '_' + center4326.lon + '_' + center4326.lat;
a.download = cityLabel + '_' + center4326.lon + '_' + center4326.lat + '.csv';
a.href = 'data:text/csv;base64,' + btoa(cityData);
a.style.color = '#F8F8F8';
a.innerHTML = cityLabel + ' ';
//Export Places link -- move to function later
var a = divJDS.appendChild(
document.createElement('a')
);
a.id = 'divJDS_' + venueLabel + '_' + '_' + center4326.lon + '_' + center4326.lat;
a.download = venueLabel + '_' + center4326.lon + '_' + center4326.lat + '.csv';
a.href = 'data:text/csv;base64,' + btoa(venueData);
a.style.color = '#F8F8F8';
a.innerHTML = venueLabel + ' ';
//Export Segments link -- move to function later
var a = divJDS.appendChild(
document.createElement('a')
);
a.id = 'divJDS_' + segmentLabel + '_' + center4326.lon + '_' + center4326.lat;
a.download = segmentLabel + '_' + center4326.lon + '_' + center4326.lat + '.csv';
a.href = 'data:text/csv;base64,' + btoa(segmentData);
a.style.color = '#F8F8F8';
a.innerHTML = segmentLabel + ' ';
}
function initializeDS()
{
//Canvas
canvasJDS = document.createElement('canvas');
canvasJDS.id = 'canvasJDS';
canvasJDS.width = '400';
canvasJDS.height = '400';
canvasJDS.style.visibility = 'hidden';
canvasJDS.style.position = 'absolute';
canvasJDS.style.bottom = '60px';
canvasJDS.style.left = '425px';
document.body.appendChild(canvasJDS);
Waze.map.events.register("mergeend", Waze.map, getWMEData);
Waze.map.events.register("moveend", Waze.map, getWMEData);
Waze.map.events.register("zoomend", Waze.map, getWMEData);
}
bootstrapDS();