您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows alterations to the WME UI to fix things screwed up or ignored by Waze
当前为
- // ==UserScript==
- // @name WME Fix UI
- // @namespace https://greasyfork.org/en/users/46070
- // @description Allows alterations to the WME UI to fix things screwed up or ignored by Waze
- // @include https://www.waze.com/editor/*
- // @include https://www.waze.com/*/editor/*
- // @include https://editor-beta.waze.com/*
- // @exclude https://www.waze.com/user/editor/*
- // @supportURL https://www.waze.com/forum/viewtopic.php?f=819&t=191178
- // @version 0.3
- // @grant none
- // ==/UserScript==
- // Thanks to (in no particular order) Bellhouse, Twister-UK, Timbones, Dave2084, Rickzabel
- (function()
- {
- // global variables
- var wmefu_version = "0.3";
- var applyCount = 0;
- var wmefuinit = false;
- var shrinkBlackBarActive = false;
- var compressSegmentTabActive = false;
- function initialiseFixUI() {
- if (wmefuinit) {
- return;
- }
- // go round again if map container isn't there yet
- if(!window.Waze.map)
- {
- window.console.log("WME FixUI: waiting for WME...");
- setTimeout(initialiseFixUI, 1000);
- return;
- }
- //create styles that will be used later
- // create tab contents
- var addon = document.createElement('section');
- addon.id = "wmefu-addon";
- var section = document.createElement('p');
- section.style.paddingTop = "0px";
- section.id = "fuContent";
- section.innerHTML = '<b>UI Fixes</b><br>';
- section.innerHTML += '<input type="checkbox" id="_cbMoveZoomBar" /> ' +
- '<span title="Because nobody likes a pointless UI change that breaks your workflow, imposed by idiots who rarely use the editor and don\'t listen to feedback">Move zoom bar to left</span><br>';
- section.innerHTML += '<input type="checkbox" id="_cbHideUserInfo" /> ' +
- '<span title="Because we can earn points quicker without a massive chunk of space wasted on telling us how many we earnt up to yesterday">Hide user info in the side panel</span><br>';
- section.innerHTML += '<input type="checkbox" id="_cbShrinkBlackBar" /> ' +
- '<span title="Because we can\'t afford to waste screen space on stuff we didn\'t ask for and don\'t want">Shrink the black bar above the map</span><br>';
- section.innerHTML += '<input type="checkbox" id="_cbCompressSegmentTab" /> ' +
- '<span title="Because I\'m sick of having to scroll the side panel because of oversized fonts and wasted space">Compress the contents of the side panel</span><br>';
- section.innerHTML += '<br>';
- section.innerHTML += '<b><a href="https://greasyfork.org/en/scripts/20077-wme-fix-ui" target="_blank"><u>'
- + 'WME Fix UI</u></a></b> v' + wmefu_version;
- addon.appendChild(section);
- // insert the content as a tab
- var userTabs = getId('user-info');
- var navTabs = getElementsByClassName('nav-tabs', userTabs)[0];
- var tabContent = getElementsByClassName('tab-content', userTabs)[0];
- if (typeof navTabs === "undefined") {
- console.log("WMEFU: not logged in - will initialise later");
- Waze.loginManager.on("login", initialiseFixUI);
- return;
- }
- newtab = document.createElement('li');
- newtab.innerHTML = '<a href="#sidepanel-FixUI" data-toggle="tab">FU</a>';
- navTabs.appendChild(newtab);
- addon.id = "sidepanel-FixUI";
- addon.className = "tab-pane";
- tabContent.appendChild(addon);
- // setup event handlers for user actions:
- getId('_cbMoveZoomBar').onclick = moveZoomBar;
- getId('_cbShrinkBlackBar').onclick = shrinkBlackBar;
- getId('_cbHideUserInfo').onclick = hideUserInfo;
- getId('_cbCompressSegmentTab').onclick = compressSegmentTab;
- // restore saved settings
- if (localStorage.WMEFixUI) {
- console.log("WMEFU: loading options");
- options = JSON.parse(localStorage.WMEFixUI);
- getId('_cbMoveZoomBar').checked = options[1];
- getId('_cbShrinkBlackBar').checked = options[2];
- getId('_cbHideUserInfo').checked = options[3];
- getId('_cbCompressSegmentTab').checked = options[4];
- } else {
- getId('_cbMoveZoomBar').checked = true;
- getId('_cbShrinkBlackBar').checked = true;
- getId('_cbHideUserInfo').checked = true;
- getId('_cbCompressSegmentTab').checked = true;
- }
- if (W.loginManager.user.userName == 'iainhouse') {
- // Adds an extra checkbox so I can test segment panel changes easily
- var brand = getId('brand');
- extraCBSection = document.createElement('p');
- extraCBSection.innerHTML = '<input type="checkbox" id="_cbextraCBSection" />';
- brand.appendChild(extraCBSection);
- getId('_cbextraCBSection').onclick = FALSEcompressSegmentTab;
- _cbextraCBSection.checked = _cbCompressSegmentTab.checked;
- }
- // overload the WME exit function
- saveOptions = function() {
- if (localStorage) {
- console.log("WMEFU: saving options");
- var options = [];
- // preserve previous options which may get lost after logout
- if (localStorage.WMEFixUI)
- options = JSON.parse(localStorage.WMEFixUI);
- options[1] = getId('_cbMoveZoomBar').checked;
- options[2] = getId('_cbShrinkBlackBar').checked;
- options[3] = getId('_cbHideUserInfo').checked;
- options[4] = getId('_cbCompressSegmentTab').checked;
- localStorage.WMEFixUI = JSON.stringify(options);
- }
- };
- window.addEventListener("beforeunload", saveOptions, false);
- // apply the settings
- setTimeout(applyAllSettings, 2000);
- wmefuinit = true;
- window.console.log("WMEFU: Initialised");
- }
- function applyAllSettings() {
- applyCount += 1;
- if (applyCount < 5) {
- setTimeout(applyAllSettings, 2000);
- }
- moveZoomBar();
- shrinkBlackBar();
- hideUserInfo();
- compressSegmentTab();
- }
- function moveZoomBar() {
- var WMETBZLI = getId('WMETB_ZoomLevelIndicator');
- var reportPanel = getId('panel-container');
- if (_cbMoveZoomBar.checked) {
- $(".olControlPanZoomBar").css({'left':10,'width':30,'right':""});
- if (reportPanel) {
- reportPanel.style.left = "70px";
- reportPanel.style.position = "absolute";
- }
- if (WMETBZLI) {
- WMETBZLI.style.left = "50px";
- WMETBZLI.style.right = "";
- }
- } else {
- $(".olControlPanZoomBar").css({'left':"",'width':30,'right':10});
- if (reportPanel) {
- reportPanel.style.left = "";
- reportPanel.style.position = "";
- }
- if (WMETBZLI) {
- WMETBZLI.style.left = "";
- WMETBZLI.style.right = "50px";
- }
- }
- }
- function hideUserInfo() {
- var PSButton = getId('WMEPS_UIButton');
- var userbox = getId('user-box');
- // WME Panel Swap button - move it up off the tabs if user info is hidden
- if (_cbHideUserInfo.checked) {
- userbox.style.padding = '0px';
- $(".user-profile").css({'display':'none'});
- if (PSButton) PSButton.style.top = '-20px';
- } else {
- userbox.style.padding = '20px';
- $(".user-profile").css({'display':'block'});
- if (PSButton) PSButton.style.top = '10px';
- }
- }
- function shrinkBlackBar() {
- var wm = getId('WazeMap');
- if (_cbShrinkBlackBar.checked) {
- $(".topbar").css({'height':'20px','line-height':'20px','padding':'0 10px'});
- $(".topbar .location-info").css({'font-size':'12px'});
- if (!shrinkBlackBarActive) wm.style.height = (wm.offsetHeight + 10) + 'px';
- } else {
- $(".topbar").css({'height':'30px','line-height':'30px','padding':'0 10px'});
- $(".topbar .location-info").css({'font-size':'15px'});
- if (shrinkBlackBarActive) wm.style.height = (wm.offsetHeight - 10) + 'px';
- }
- shrinkBlackBarActive = _cbShrinkBlackBar.checked;
- }
- function FALSEcompressSegmentTab() {
- _cbCompressSegmentTab.checked = _cbextraCBSection.checked;
- compressSegmentTab();
- }
- function compressSegmentTab() {
- var ep=getId('edit-panel')
- if (_cbCompressSegmentTab.checked) {
- if (!compressSegmentTabActive) {
- // shrink address
- addGlobalStyle('.primary-street { font-size: 13px; line-height: 15px; }');
- addGlobalStyle('.address-edit { margin-bottom: 5px !important; }');
- //shrink tabs
- addGlobalStyle('.nav > li > a { padding: 4px !important; }');
- //reduce some vertical margins
- addGlobalStyle('.contents { padding-top: 0px !important; }');
- addGlobalStyle('.form-group { margin-bottom: 2px !important; line-height: 1; font-size: 11px; }');
- addGlobalStyle('.selection { margin-bottom: 5px !important; }');
- addGlobalStyle('.side-panel-section { margin-bottom: 5px !important; }');
- addGlobalStyle('.side-panel-section::after { margin-top: 5px !important; margin-bottom: 2px !important; }');
- addGlobalStyle('.control-label { margin-bottom: 1px !important; }');
- //shrink dropdown controls
- addGlobalStyle('.form-control { height: 22px !important; padding: 0px 12px !important; font-size: 11px; }');
- //shrink button controls
- addGlobalStyle('.action-button { font-size: 11px; height: 22px; padding: 0px 12px; margin-bottom: 2px !important; }');
- }
- } else {
- if (compressSegmentTabActive) {
- //enlarge address
- addGlobalStyle('.primary-street { font-size: 18px; line-height: 24px; }');
- addGlobalStyle('.address-edit { margin-bottom: 20px !important; }');
- //enlarge tabs
- addGlobalStyle('.nav > li > a { padding: 5px 15px !important; }');
- //restore vertical margins
- addGlobalStyle('.contents { padding-top: 20px !important; }');
- addGlobalStyle('.form-group { margin-bottom: 10px !important; line-height: 1.43; font-size: 13px; }');
- addGlobalStyle('.selection { margin-bottom: 20px !important; }');
- addGlobalStyle('.side-panel-section { margin-bottom: 21px !important; }');
- addGlobalStyle('.side-panel-section::after { margin-top: 21px !important; margin-bottom: 21px !important; }');
- addGlobalStyle('.control-label { margin-bottom: 5px !important; }');
- //enlarge dropdown controls
- addGlobalStyle('.form-control { height: 32px !important; padding: 6px 12px !important; font-size: 13px; }');
- //enlarge button controls
- addGlobalStyle('.action-button { font-size: 13px; height: 32px; padding: 6px 12px; margin-bottom: 10px !important; }');
- }
- }
- compressSegmentTabActive = _cbCompressSegmentTab.checked
- }
- //Helper functions
- function addGlobalStyle(css) {
- var head, style;
- head = document.getElementsByTagName('head')[0];
- if (!head) {
- return;
- }
- style = document.createElement('style');
- style.type = 'text/css';
- style.innerHTML = css;
- head.appendChild(style);
- }
- function getElementsByClassName(classname, node) {
- if(!node) node = document.getElementsByTagName("body")[0];
- var a = [];
- var re = new RegExp('\\b' + classname + '\\b');
- var els = node.getElementsByTagName("*");
- for (var i=0,j=els.length; i<j; i++)
- if (re.test(els[i].className)) a.push(els[i]);
- return a;
- }
- function getId(node) {
- return document.getElementById(node);
- }
- // Start it running
- setTimeout(initialiseFixUI, 1000);
- })();