您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Another House Number script. Adds its controls to the House Number editor.
当前为
/* global GM_info */ /* global W */ /* global Waze */ /* global I18n */ /* global unsafeWindow */ // ==UserScript== // @name WME Rapid House Numbers // @description Another House Number script. Adds its controls to the House Number editor. // @namespace http://compsol.cc // @version 0.1 // @match https://beta.waze.com/*editor* // @match https://editor-beta.waze.com/*editor* // @match https://www.waze.com/*editor* // @exclude https://www.waze.com/user/editor* // @author Kevin Greiner 2017 (kjg53) // @license MIT // ==/UserScript== (function() { var scriptName = GM_info.script.name; var version = GM_info.script.version; var oWaze=Waze; var oI18n=I18n; console.log("Initializing " + scriptName); { var changeLog = [ {version: "0.1", message: scriptName + ": Beta version with limited distribution"}, ]; var versionKey = scriptName.replace( /\s/g, "") + "Version"; var previousVersion = localStorage.getItem(versionKey); var i = 0; if (previousVersion) { while (changeLog[i++].version != previousVersion) {} } var announcement; while (i < changeLog.length) { var log = changeLog[i++]; var msg = "V" + log.version + ": " + log.message; announcement = (announcement ? announcement + "\n" + msg : msg); } if (announcement) { alert(announcement); localStorage.setItem(versionKey, version); } } function rapidHN_bootstrap() { if (typeof unsafeWindow !== "undefined") { oWaze=unsafeWindow.Waze; oI18n=unsafeWindow.I18n; } if (typeof oWaze === "undefined" || typeof oWaze.map === "undefined" || typeof oWaze.selectionManager === "undefined" || typeof oI18n === "undefined" || typeof oI18n.translations === "undefined") { console.log(scriptName + " dependencies not ready. Waiting..."); setTimeout(rapidHN_bootstrap, 500); return; } setTimeout(initialize, 999); } function initialize() { var observeHouseNumbersLayer; var addHouseNumber; function addAccelerator() { addHouseNumber && addHouseNumber.click(); } console.log(scriptName + " initializing."); oI18n.translations[oI18n.locale].keyboard_shortcuts.groups['default'].members.RapidHN_new = oI18n.t("toolbar.add_house_numbers"); oI18n.translations[oI18n.locale].keyboard_shortcuts.groups['default'].members.RapidHN_info = 'Set the next and increment fields to non-zero numbers to inject a house number as soon as the location is selected. The letter "a" will also be available as an accelerator.'; oWaze.accelerators.addAction("RapidHN_new", {group: 'default'}); var obs = new MutationObserver(function(mutations, observer) { var div = $('div#edit-buttons div'); var foundControls = $('.rapidHN-control', div); addHouseNumber = $('.add-house-number', div); if (addHouseNumber.length) { if (!foundControls.length) { addHouseNumber.after('<div class="toolbar-button rapidHN-control" style="float:left; padding-right: 3px; color: grey"><span class="menu-title" style="color: inherit">Next #</span><input type="number" name="nextHN" id="rapidHN-next" style="margin: 3px; height:20px; width: 64px; text-align: right; color: inherit"></div>', '<div class="toolbar-button rapidHN-control" style="float:left; color: grey"><span class="menu-title" style="text-align: right; color: inherit">Increment</span><input type="number" name="incrementHN" id="rapidHN-increment" value="4" style="margin: 3px; height:20px; width: 44px; text-align: right; color: inherit" step="1"></div>', '<img id="rapidHN-help" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAIAAADZrBkAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJgSURBVDhPbZPPa1NBEMdn9+3LS16S5lWql0qReLAg4rUqiDcP9uKpHqQHq4jWkyAi+CeIJxGFIiiI4LFWRS/Sk3gqij2oJIpFUWqal6YmeT/H776NxogDCbuz38+b2ZlZ0Wg0aNgqI2XLIhLZhilJqLXZzjYDG8I0oIhjWqondZ/hqXpiumoJRUk8BA+wbV4ZEU49ju6txqWcsLJoCdNWyLN71Z1jNiJv+H2yj4HpRrTrdpAyl2x9gFjMJDN4K8JCfDrrFOw+KfFDbogDRkkwAkCjywkLS4r1DqdMcOIIAsi02GC4z9yTCHEcCwxvBvR0xl2bL9bPFV/OFoGZI/xDBrHGNJ3Q3bexya0T0ZWDzqGd6vKLYP55sG+HvDSVgxMGAWQQA5Go9aNaUrQFDGdKUq2Z3loJF15Hi+9jeDxHppoiCCCDGIhEujVfq43llVj8EF1dDsKEHx7Pw3PtVehmicD0R33dUi1Hxf42kHDcPJo/MK4O3+9+76TKtD4zI5aodLVCicnjt8UpT42rB6vhyrfYVTo944cMYiAijkJ8wLnenSijN+aUooRHC6IdoN2sTO+yOJ/baXCxAJnEyCibTkxaP6NBrhs9fjNXWj7ptoKBE4KZSQtiIHpKvKyD22/0Copy2VBBcWa//aXNzz7GuCo8qFA3pvULuki+wbDCcP3o8J6FAFTWDE1ircvDeo3hfHfaGXPFYLhg2IwVxdfz+SMTcq2dNnt6pqKUsMAWThxB8O8oGxsdKeONtDq8VEvrvi5u1ZPTu2XFFXhNzf8+nD+Gq8ps8Iylsb5Mf2OM6Bc9JDhpKCzFQAAAAABJRU5ErkJggg==" style="margin-top: 13px"/>', '<div id="rapidHN-info" title="Rapid House Numbers">' + oI18n.translations[oI18n.locale].keyboard_shortcuts.groups['default'].members.RapidHN_info + '</div>'); $("#rapidHN-info").dialog({autoOpen: false}); $("#rapidHN-help").click(function() { $("#rapidHN-info").dialog("open"); return false; }); var controls = $('div.rapidHN-control'); $('input', controls).on('change', function(event) { var active = true; $('input', controls).each(function() { if (active) { var i = parseInt($(this).val(), 10); active = !isNaN(i) && i != 0; } }); if (active) { if ('black' != controls.css('color')) { controls.css('color', 'black'); oWaze.accelerators.events.register("RapidHN_new", null, addAccelerator); oWaze.accelerators._registerShortcuts({ 'a' : "RapidHN_new"}); observeHouseNumbersLayer = new MutationObserver(function(mutations, observer){ mutations.forEach(function(mutation) { var input = $('div.olLayerDiv.house-numbers-layer div.house-number div.content.active:not(".new") input.number'); if (input.val() == "") { var next = $('input#rapidHN-next'); var n = parseInt(next.val()); var inc = $('input#rapidHN-increment'); var i = parseInt(inc.val()); input.val(n).change(); next.val(n + i); } }); }); observeHouseNumbersLayer.observe( $('div.olLayerDiv.house-numbers-layer')[0], { childList:false, subtree:true, attributes: true }); } } else { if ('grey' != controls.css('color')) { controls.css('color', 'grey'); if (observeHouseNumbersLayer != undefined) { oWaze.accelerators.events.unregister("RapidHN_new", null, addAccelerator); oWaze.accelerators._registerShortcuts({ 'a' : null}); observeHouseNumbersLayer.disconnect(); observeHouseNumbersLayer = undefined; } } } }); } } }); // have the observer observe for changes in children obs.observe( $('div#edit-buttons')[0], { childList:true, subtree:false }); console.log(scriptName + " initialized."); } rapidHN_bootstrap(); })();