您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
changes the styling of the segment and venue messages
当前为
// ==UserScript== // @name WME Simple Alert Messages // @namespace https://fxzfun.com/ // @version 1.01 // @description changes the styling of the segment and venue messages // @author FXZFun // @match https://*.waze.com/*/editor* // @match https://*.waze.com/editor* // @exclude https://*.waze.com/user/editor* // @icon https://www.google.com/s2/favicons?sz=64&domain=waze.com // @grant none // @license GNU GPL v3 // ==/UserScript== /* global W */ /* global OpenLayers */ (function() { 'use strict'; function fxzAddLockMessage(maxLock) { document.querySelector("#fxzMessages").insertAdjacentHTML("beforeEnd", `<span class="fxzMessage locked"><i class="w-icon"></i> Locked to L${maxLock}</span>`); document.querySelector(".fxzMessage.locked").addEventListener("click", () => { var url = fxzGetUrl(); var city = document.querySelector(".location-info").innerText.split(",")[0]; var discordFormat = `:unlock${maxLock}: ${city} - *reason* - <${url}>`; copyText(discordFormat); }); document.querySelector(".fxzMessage.locked").title = "Copy unlock request for Discord"; } function fxzAddEAMessage() { document.querySelector("#fxzMessages").insertAdjacentHTML("beforeEnd", `<span class="fxzMessage ea"><i class="w-icon"></i> Out of your EA</span>`); } function fxzAddMixedMessage() { document.querySelector("#fxzMessages").insertAdjacentHTML("beforeEnd", `<span class="fxzMessage mixed"><i class="w-icon"></i> Mixed A/B</span>`); } function fxzAddPurMessage() { document.querySelector("#fxzMessages").insertAdjacentHTML("beforeEnd", `<span class="fxzMessage pur"><i class="w-icon"></i> PUR Request</span>`); document.querySelector(".fxzMessage.pur").addEventListener("click", () => { document.querySelector(".venue-alert-pending-changes").click(); }); document.querySelector(".fxzMessage.pur").title = JSON.parse(document.querySelector("#localeStrings").innerText).edit.venue.update_requests.pending; } function fxzAddClosureMessage() { document.querySelector(".has-closure.segment-alert").style.display = "none"; document.querySelector("#fxzMessages").insertAdjacentHTML("beforeEnd", `<span class="fxzMessage closure"><i class="w-icon"></i> Has Closures</span>`); } function fxzAddSimpleMessagesContainer(mode) { var fxzMessagesDiv = document.createElement("div"); fxzMessagesDiv.id = "fxzMessages"; if (mode == "segment") document.querySelector("#edit-panel .panel-header-component").insertAdjacentElement("afterEnd", fxzMessagesDiv); else if (mode == "venue") document.querySelector(".venue-panel-header").insertAdjacentElement("afterEnd", fxzMessagesDiv); } function fxzGetUrl() { var lonlat = new OpenLayers.LonLat(W.map.getCenter().lon, W.map.getCenter().lat); lonlat.transform(new OpenLayers.Projection('EPSG:900913'), new OpenLayers.Projection('EPSG:4326')); var zoom = W.map.getZoom(); var segments = []; var venues = []; W.selectionManager.getSelectedFeatures().forEach(item => { if (item.model.type == "segment") { segments.push(item.model.attributes.id); } else if (item.model.type == "venue") { venues.push(item.model.attributes.id); } }); var url = location.href.split("?")[0] + `?env=${W.map.wazeMap.regionCode}&lat=${lonlat.lat}&lon=${lonlat.lon}&zoomLevel=${zoom}`; if (segments.length > 0) url += "&segments=" + segments.join(","); if (venues.length > 0) url += "&venues=" + venues.join(","); return url; } function copyText(textContent) { var text = document.createElement("textarea"); text.style = "position: fixed;top:0;left:0;width:2px;height:2px;"; text.innerHTML = textContent; document.body.appendChild(text); text.select(); document.execCommand("copy"); text.style = "display: none"; } function fxzSelectionChange() { if (W.selectionManager.getSelectedFeatures().length > 0) { var mode = W.selectionManager.getSelectedFeatures()[0].model.type; // wait for panel to open var i2Count = 0; var i2 = setInterval(()=>{ if (document.querySelector("#edit-panel").style.display != "none" || i2Count++ > 20) clearInterval(i2); else return; fxzAddSimpleMessagesContainer(mode); if (mode == "segment") document.querySelector(".segment-details").style.display = "none"; else if (mode == "venue") document.querySelector(".venue-alerts").style.display = "none"; // locked message var maxLock = Math.max(...Array.from(W.selectionManager.getSelectedFeatures()).map(item => item.model.attributes.lockRank)); var segDetails = document.querySelector("wz-alert.segment-details"); // TODO: add better out of EA matching, currently will not alert for segments above your rank out of your ea if (mode == "segment" && (segDetails.innerText.includes("driving area") || segDetails.innerText.includes("editing area")) && W.loginManager.user.rank >= maxLock) { fxzAddEAMessage(); } if (W.loginManager.user.rank < maxLock) { fxzAddLockMessage(maxLock + 1); } // mixed segments var incDirAlert = document.querySelector(".inconsistent-direction") if (incDirAlert && incDirAlert.style.display != "none") { incDirAlert.style.display = "none"; fxzAddMixedMessage(); } // pur var purAlert = document.querySelector(".venue-alert-pending-changes"); if (purAlert && purAlert.style.display != "none") { purAlert.style.display = "none"; fxzAddPurMessage(); } // closure var closureAlert = document.querySelector(".has-closure.segment-alert"); if (closureAlert && closureAlert.style.display != "none") { closureAlert.style.display = "none"; fxzAddClosureMessage(); } }, 100); } } // bootstrap if (location.href.match(/^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/) != null) { var i = setInterval(() => { if (W.selectionManager.events) { clearInterval(i); console.log("WME Simple Alert Messages Styling Loaded"); W.selectionManager.events.register('selectionchanged', this, fxzSelectionChange); // run preselected from url if (W.selectionManager.getSelectedFeatures().length > 0) fxzSelectionChange(); // add styling var style = document.createElement("style"); style.innerHTML = `/* WME Simple Alert Messages Styling */ #fxzMessages {margin-top: 5px; margin-left: 10px;} .fxzMessage {padding: 7px 10px; border-radius: 10px; width: fit-content; margin-left: 5px; white-space: nowrap;} .fxzMessage .w-icon {font-size: 20px;vertical-align: middle;} .fxzMessage.locked {background-color: #FE5F5D; cursor: pointer;} .fxzMessage.ea {background-color: #FF9800;} .fxzMessage.mixed {background-color: #42A5F5;} .fxzMessage.pur {background-color: #C9B5FF; cursor: pointer;} .fxzMessage.closure {background-color: #FE5F5D;}`; document.body.appendChild(style); } }, 1000); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址