WME Highlight HNs

Highlights un-nudged house numbers

目前为 2015-06-14 提交的版本。查看 最新版本

/* global W */
// ==UserScript==
// @name         	WME Highlight HNs
// @description		Highlights un-nudged house numbers
// @version      	1.00
// @author			SAR85
// @copyright		SAR85
// @license		 	CC BY-NC-ND
// @grant		 	none
// @include			https://www.waze.com/editor/*
// @include			https://www.waze.com/*/editor/*
// @include			https://editor-beta.waze.com/*
// @namespace		https://greasyfork.org/users/9321
// ==/UserScript==

function highlightUntouched(hnMarkers) {
	'use strict';
	var i, n, marker;
	for (i = 0, n = hnMarkers.length; i < n; i++) {
		marker = hnMarkers[i];
		//marker.model is undefined for a selected HN marker
		if ('undefined' !== typeof marker.model &&
			null === marker.model.updatedBy) {
			//marker.icon.$div.find('.drag-handle').css('background-color', "#3399FF");
			//marker.input.css('color', '#3399FF');
			marker.inputWrapper.css('background-color', '#FF9966');
		}
	}
}

function checkHNs() {
	'use strict';
	var count = 0,
		check = function () {
			console.debug('Checking for HN');
			var hnMarkers = W.appPresenter.sidebar.editPanel.typeToEditorClass
				.segment.houseNumbersControl.markerLayer.markers;
			if (hnMarkers.length > 0) {
				return highlightUntouched(hnMarkers);
			} else if (++count < 50) {
				window.setTimeout(check, 100);
			} else {
				console.debug('Error reading HNs');
			}
		};
	return check();
}

function updateAlert() {
	'use strict';
	var hnVersion = '1.00',
		alertOnUpdate = true,
		versionChanges = 'WME Highlight HNs has been updated to ' + hnVersion + '.\n';
	versionChanges += 'Changes:\n';
	versionChanges += '[*]Possible fix for issue with detecting house numbers.\n';
	versionChanges += '[*]Changed style of highlighting for un-nudged house numbers.\n';
	if (alertOnUpdate && window.localStorage && window.localStorage.hnVersion !== hnVersion) {
		window.localStorage.hnVersion = hnVersion;
		alert(versionChanges);
	}
}

function hnInit() {
	'use strict';
	var houseNumberControl = W.appPresenter.sidebar.editPanel.typeToEditorClass.segment.houseNumbersControl,
		wRender = houseNumberControl.render;
	houseNumberControl.render = function () {
		wRender.call(houseNumberControl);
		checkHNs();
	};
	console.debug('HN Tool: Initialized.');
	updateAlert();
}

function hnBootstrap(count) {
	'use strict';
	count = count || 0;
	if (undefined !== typeof W && undefined !== typeof W.accelerators &&
		W.appPresenter && W.appPresenter.sidebar && W.appPresenter.sidebar.editPanel && 
	    W.appPresenter.sidebar && W.appPresenter.sidebar.editPanel && 
	    W.appPresenter.sidebar.editPanel.typeToEditorClass && 
	    W.appPresenter.sidebar.editPanel.typeToEditorClass.segment &&
	    undefined !== typeof W.appPresenter.sidebar.editPanel.typeToEditorClass.segment.houseNumbersControl) {
		console.debug('HN Tool: Initializing...');
		window.setTimeout(hnInit, 100);
	} else if (count < 10) {
		console.debug('HN Tool: Bootstrap failed. Trying again...');
		window.setTimeout(function () {
			hnBootstrap(++count);
		}, 1000);
	} else {
		console.debug('HN Tool: Bootstrap error.');
	}
}
console.debug('HN Tool: Bootstrap...');
window.setTimeout(hnBootstrap, 100);