Shortcuts for multiple WME functions
// ==UserScript==
// @name WME Shortcuts+
// @description Shortcuts for multiple WME functions
// @icon data:image/png;base64,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
// @author N190392
// @match https://*.waze.com/*editor*
// @version 0.5
// @require https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js
// @namespace https://greasyfork.org/en/scripts/517140-wme-shortcuts
// @grant GM_xmlhttpRequest
// @license MIT
// ==/UserScript==
/* global W */
/* global WazeWrap */
(function() {
'use strict';
const SCRIPT_NAME = 'WME Shortcuts+';
const SCRIPT_VERSION = '0.5';
const UPDATE_MESSAGE = '';
const FORUM_URL = '';
const DOWNLOAD_URL = '';
const EXTERNAL_SETTINGS_NAME = 'WME_SHORTCUTS_PLUS_SETTINGS';
// *** 1 ADD SHORTCUTS HERE *** //
const EXTERNAL_SETTINGS = {
pressPieEditGeomShortcut: '',
clickOtherPointShortcut: '',
toggleRankShortcut: '',
clickOtherPolygonShortcut: '',
highlightSmallVenuesShortcut: '',
wmeutkadastrsShortcut: ''
};
// *** 2 FUNCTIONS *** //
// Function to create Other point
function clickOtherPoint() {
notifyAction("Creating 'Other' point");
const menuItems = document.querySelectorAll('wz-menu-item');
let pointButtonFound = false;
menuItems.forEach(item => {
const label = item.querySelector('.itemLabel--kXZjU');
if (label && ["Cits", "Other"].includes(label.textContent.trim())) {
const pointButton = item.querySelector('wz-button.point');
if (pointButton) {
pointButton.click();
console.log("WME Shortcuts+: Other (point) activated successfully.");
pointButtonFound = true;
}
}
});
if (!pointButtonFound) {
console.log("WME Shortcuts+: 'Other' button not found.");
}
}
// Function to create Other polygon
function clickOtherPolygon() {
notifyAction("Creating 'Other' polygon");
const menuItems = document.querySelectorAll('wz-menu-item');
let PolygonButtonFound = false;
menuItems.forEach(item => {
const label = item.querySelector('.itemLabel--kXZjU');
if (label && ["Cits", "Other"].includes(label.textContent.trim())) {
const PolygonButton = item.querySelector('wz-button.polygon');
if (PolygonButton) {
PolygonButton.click();
console.log("WME Shortcuts+: Other (polygon) activated successfully.");
PolygonButtonFound = true;
}
}
});
if (!PolygonButtonFound) {
console.log("WME Shortcuts+: 'Other' button not found.");
}
}
// Function to toggle rank to 2 and transoform point to polygon
function toggleRank() {
notifyAction("Rank 2 & Polygon");
const checkableChip = document.querySelector('#lockRank-1');
if (checkableChip) {
checkableChip.click();
console.log("WME Shortcuts+: Local rank changed to 2.");
}
const poligonsChip = Array.from(document.querySelectorAll('wz-checkable-chip'))
.find(chip => ['Poligons', 'Area'].some(text => chip.textContent.includes(text)));
if (poligonsChip) {
poligonsChip.click();
console.log("WME Shortcuts+: Point transformed to polygon");
}
}
// Function to open PIE Geometry settings
function pressPieEditGeomButton() {
notifyAction("PIE Geometry settings");
const button = document.querySelector('#pieEditGeom');
if (button) {
button.click();
console.log("WME Shortcuts+: Opened Geometry menu.");
}
}
// Function to highlight a place with specified colors
function highlightSmallVenues() {
notifyAction("Highlight venues < 500 m²");
//console.log("Starting small venues scan...");
function highlightAPlace(venue, fg, bg) {
var poly = W.userscripts.getFeatureElementByDataModel(venue);
if (poly) {
if (venue.isPoint()) {
poly.setAttribute("fill", fg);
} else { // area (polygon)
poly.setAttribute("stroke", fg);
poly.setAttribute("fill", bg);
poly.setAttribute("stroke-width", 4);
}
}
}
// Iterate over all venues
for (var mark in W.model.venues.objects) {
var venue = W.model.venues.getObjectById(mark);
if (!venue) continue;
if (venue.attributes) {
try {
// Try to get geometry directly from the venue
var metersArea = venue.getOLGeometry().getGeodesicArea(W.map.getProjectionObject());
// If area is less than 500m², highlight in red
if (metersArea < 500) {
highlightAPlace(venue, "#f00", "#f99"); // Red stroke, light red fill
const message = venue.attributes.name +": " + metersArea.toFixed(2) + " m²";
showToast(message);
}
} catch(e) {
// Skip venues that cause errors (like points)
continue;
}
}
}
}
// Function WME UT Kadastrs button
function wmeutkadastrs() {
notifyAction("WME UT Kadastrs");
//console.log("WME UT Kadastrs");
const wmeutbutton = document.querySelector('.overlay-buttons-container.top wz-button.overlay-button h6.w-icon');
if (wmeutbutton) {
wmeutbutton.click();
console.log("WME UT Kadastrs");
}
}
// *** 3 SHORTCUT MENU *** //
// WazeWrap Shortcut setup functions
function addShortcuts() {
new WazeWrap.Interface.Shortcut(
'clickOtherPoint',
'Cits: Izveidot punktu',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.clickOtherPointShortcut,
clickOtherPoint,
null
).add();
new WazeWrap.Interface.Shortcut(
'clickOtherPolygon',
'Cits: Izveidot poligonu',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.clickOtherPolygonShortcut,
clickOtherPolygon,
null
).add();
new WazeWrap.Interface.Shortcut(
'toggleRank',
'Slēgt ar līmeni (2) & pārveidot punktu par poligonu',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.toggleRankShortcut,
toggleRank,
null
).add();
new WazeWrap.Interface.Shortcut(
'PressEditGeom',
'Atvērt ģeometrijas izvēlni',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.pressPieEditGeomShortcut,
pressPieEditGeomButton,
null
).add();
new WazeWrap.Interface.Shortcut(
'highlightSmallVenues',
'Iezīmēt vietas, kas ir mazākas par 500m²',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.highlightSmallVenuesShortcut,
highlightSmallVenues,
null
).add();
new WazeWrap.Interface.Shortcut(
'wmeutkadastrs',
'WME UT Kadastrs',
'shortcuts_plus',
'WME Shortcuts+',
EXTERNAL_SETTINGS.wmeutkadastrsShortcut,
wmeutkadastrs,
null
).add();
}
// *** 4 MAKE SHORTCUTS CHANGABLE *** //
function sandboxLoadSettings() {
const loadedSettings = JSON.parse(localStorage.getItem(EXTERNAL_SETTINGS_NAME)) || {};
EXTERNAL_SETTINGS.clickOtherPointShortcut = loadedSettings.clickOtherPointShortcut || 'C+1';
EXTERNAL_SETTINGS.clickOtherPolygonShortcut = loadedSettings.clickOtherPolygonShortcut || 'C+2';
EXTERNAL_SETTINGS.toggleRankShortcut = loadedSettings.toggleRankShortcut || 'A+2';
EXTERNAL_SETTINGS.pressPieEditGeomShortcut = loadedSettings.pressPieEditGeomShortcut || 'A+3';
EXTERNAL_SETTINGS.highlightSmallVenuesShortcut = loadedSettings.highlightSmallVenuesShortcut || 'A+1';
EXTERNAL_SETTINGS.wmeutkadastrsShortcut = loadedSettings.wmeutkadastrsShortcut || 'A+4';
addShortcuts();
$(window).on('beforeunload', () => sandboxSaveSettings());
}
function getShortcutKeys(shortcutAction) {
let keys = '';
const { shortcut } = shortcutAction;
if (shortcut) {
if (shortcut.altKey) keys += 'A';
if (shortcut.shiftKey) keys += 'S';
if (shortcut.ctrlKey) keys += 'C';
if (keys.length) keys += '+';
if (shortcut.keyCode) keys += shortcut.keyCode;
}
return keys;
}
function sandboxSaveSettings() {
EXTERNAL_SETTINGS.clickOtherPointShortcut = getShortcutKeys(W.accelerators.Actions.clickOtherPoint);
EXTERNAL_SETTINGS.toggleRankShortcut = getShortcutKeys(W.accelerators.Actions.toggleRank);
EXTERNAL_SETTINGS.pressPieEditGeomShortcut = getShortcutKeys(W.accelerators.Actions.PressEditGeom);
EXTERNAL_SETTINGS.clickOtherPolygonShortcut = getShortcutKeys(W.accelerators.Actions.clickOtherPolygon);
EXTERNAL_SETTINGS.highlightSmallVenuesShortcut = getShortcutKeys(W.accelerators.Actions.highlightSmallVenues); // Add this line
localStorage.setItem(EXTERNAL_SETTINGS_NAME, JSON.stringify(EXTERNAL_SETTINGS));
}
function loadScriptUpdateMonitor() {
let updateMonitor;
try {
updateMonitor = new WazeWrap.Alerts.ScriptUpdateMonitor(
SCRIPT_NAME,
SCRIPT_VERSION,
DOWNLOAD_URL,
GM_xmlhttpRequest
);
updateMonitor.start();
} catch (ex) {
console.error(`${SCRIPT_NAME}:`, ex);
}
}
function bootstrap() {
if (WazeWrap?.Ready) {
WazeWrap.Interface.ShowScriptUpdate(
SCRIPT_NAME,
SCRIPT_VERSION,
UPDATE_MESSAGE,
FORUM_URL
);
loadScriptUpdateMonitor();
sandboxLoadSettings();
} else {
setTimeout(bootstrap, 250);
}
}
let toastMessages = [];
let toastTimeout = null;
let toastElement = null; // Keep global reference to the toast
function showToast(message, options = {}) {
const {
duration = 4000,
position = 'bottom-left',
containerId = 'editor-container'
} = options;
const container = document.getElementById(containerId);
if (!container) return;
container.style.position = 'relative';
const positionStyles = {
'bottom-left': { left: '10px', bottom: '30px' },
'bottom-right': { right: '10px', bottom: '30px' },
'top-left': { left: '10px', top: '30px' },
'top-right': { right: '10px', top: '30px' }
};
if (!toastElement || !document.body.contains(toastElement)) {
toastElement = document.createElement('div');
toastElement.className = 'wme-toast';
Object.assign(toastElement.style, {
position: 'absolute',
background: '#333',
color: '#fff',
padding: '8px 12px',
borderRadius: '20px',
boxShadow: '0 0 10px rgba(0,0,0,0.3)',
zIndex: '9999',
fontFamily: 'Arial, sans-serif',
maxWidth: '300px',
...positionStyles[position] || positionStyles['bottom-left']
});
const list = document.createElement('ul');
list.id = 'wme-toast-list';
list.style.paddingLeft = '20px';
list.style.margin = '0';
list.style.whiteSpace = 'pre-line';
toastElement.appendChild(list);
container.appendChild(toastElement);
}
// Prevent duplicate messages
if (toastMessages.includes(message)) return;
toastMessages.push(message);
const list = toastElement.querySelector('#wme-toast-list');
const item = document.createElement('li');
item.textContent = message;
list.appendChild(item);
if (toastTimeout) clearTimeout(toastTimeout);
toastTimeout = setTimeout(() => {
toastElement.remove();
toastElement = null;
toastMessages = [];
toastTimeout = null;
}, duration);
}
let actionPopupTimeout = null;
let actionPopupElement = null;
function notifyAction(text, duration = 3000) {
if (actionPopupElement) {
actionPopupElement.remove();
clearTimeout(actionPopupTimeout);
}
actionPopupElement = document.createElement('div');
actionPopupElement.className = 'wme-action-popup';
Object.assign(actionPopupElement.style, {
position: 'fixed',
top: '40px',
right: '0px',
background: '#007acc',
color: '#fff',
padding: '5px 12px',
borderRadius: '4px',
boxShadow: '0 2px 6px rgba(0,0,0,0.3)',
fontFamily: 'Arial, sans-serif',
fontSize: '14px',
zIndex: '99999',
maxWidth: '300px',
whiteSpace: 'nowrap'
});
actionPopupElement.textContent = `✓ ${text}`;
document.body.appendChild(actionPopupElement);
actionPopupTimeout = setTimeout(() => {
actionPopupElement.remove();
actionPopupElement = null;
}, duration);
}
bootstrap();
})();