// ==UserScript==
// @name WME Speed Display
// @namespace https://gf.qytechs.cn/scripts/526702-wme-speed-display/
// @version 1.1.4
// @description Displays road speed directly in the center of the segment (taking curves into account) in Waze Map Editor
// @author Luan Tavares
// @icon data:image/png;base64,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
// @license GPLv3
// @include https://www.waze.com/editor*
// @include https://www.waze.com/*/editor*
// @include https://beta.waze.com/*
// @exclude https://www.waze.com/user/editor*
// @grant none
// ==/UserScript==
/*
* @todo:
* Add a speed filter, where the user says from which speed he wants to see
* Add an opacity option for icons
*/
/* global W */
/* global I18n */
/* global OpenLayers */
class WmeSpeedDisplay {
constructor() {
this.version = '1.1.4';
this.layer = null;
this.debugMode = false;
this.segmentsCategories = {
highways: [
{
id: 3,
name: 'freeway'
},
{
id: 4,
name: 'ramp'
},
{
id: 6,
name: 'major_highway'
},
{
id: 7,
name: 'minor_highway'
}
],
non_drivable: [
{
id: 18,
name: 'railroad'
},
{
id: 19,
name: 'runway_taxiway'
},
{
id: 5,
name: 'walking_trail'
},
{
id: 10,
name: 'pedestrian_boardwalk'
},
{
id: 16,
name: 'stairway'
}
],
other_drivable: [
{
id: 8,
name: 'off_road_not_maintained'
},
{
id: 20,
name: 'parking_lot_road'
},
{
id: 17,
name: 'private_road'
},
{
id: 15,
name: 'ferry'
}
],
streets: [
{
id: 2,
name: 'primary_street'
},
{
id: 1,
name: 'street'
},
{
id: 22,
name: 'narrow_street'
}
]
};
this.spdTranslations = I18n.translations[I18n.locale].wmeSpd;
this.debounce = {
updateMapDisplay: this.debounce(this.updateMapDisplay.bind(this), 1000),
saveSettings: this.debounce(this.saveSettings.bind(this))
};
this.settings;
this.prepareAndInitialize();
}
/**
* Checks if WME is ready to initializes the plugin.
*/
prepareAndInitialize() {
this.defineInitialSettings();
this.defineTranslations();
if (W?.userscripts?.state?.isReady) {
this.logDebug(this.spdTranslations.log.wmeReadyStartScript);
this.initializePlugin();
} else {
this.logDebug(this.spdTranslations.log.waitingWme);
document.addEventListener('wme-ready', this.initializePlugin.bind(this), {once: true});
}
}
/**
* Initializes the plugin.
*/
async initializePlugin() {
this.logDebug(this.spdTranslations.log.wmeReadyStartingPlugin, true);
this.checkVersionAndShowChangelog();
this.layer = new OpenLayers.Layer.Vector('Speed Display Layer', {
displayInLayerSwitcher: false
});
W.map.addLayer(this.layer);
this.addLayerCheckbox();
this.addSettingsTab();
this.listen();
this.logDebug(this.spdTranslations.log.shortSleep);
await this.sleep(1000);
this.updateMapDisplay();
}
/**
* Method that listens to this script events.
*/
listen() {
W.map.events.register('moveend', null, this.onTriggeringMapEvent.bind(this));
W.map.events.register('zoomend', null, this.onTriggeringMapEvent.bind(this));
W.model.segments.on('objectschanged', this.onTriggeringMapEvent.bind(this));
}
/**
* When the map triggers an event, updates the map display.
*/
onTriggeringMapEvent() {
if (this.settings.spdEnabled)
this.debounce.updateMapDisplay();
}
/**
* Saves and updates the map display when WME SPD checkbox change.
* @param {Event} event
*/
onSpeedDisplayCheckboxChange(event) {
this.debounce.saveSettings();
this.debounce.updateMapDisplay();
this.toggleLayerVisibility(event.target.checked);
}
/**
* Saves the settings and updates the map display.
*/
onSettingsChange() {
this.debounce.saveSettings();
this.debounce.updateMapDisplay();
}
/**
* Updates the max zoom value display and triggers map update if the zoom level reaches the max.
* @param {Event} event
*/
onSettingZoomChanged(event) {
let zoomLevel = W.map.getZoom();
document.getElementById('spd-max-zoom-value').innerText = event.target.value;
this.debounce.saveSettings();
if (zoomLevel >= this.settings.general.spdMaxZoom)
this.debounce.updateMapDisplay();
}
/**
* Attaches event listeners to the settings elements to track user interactions and changes.
*/
attachSettingsListeners() {
['spd-show-no-speed', 'spd-show-roundabout'].forEach(id => {
document.getElementById(id).addEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-max-zoom').addEventListener('input', this.onSettingZoomChanged.bind(this));
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
input.addEventListener('change', this.onSettingsChange.bind(this));
});
if (this.debugMode) {
document.getElementById('btn-spd-update-settings-tab').addEventListener('click', this.updateSettingsTab.bind(this));
document.getElementById('btn-spd-show-modal').addEventListener('click', this.showSpdDialog.bind(this));
}
}
/**
* Detaches event listeners from the settings elements to stop tracking user interactions.
*/
detachSettingsListeners() {
['spd-show-no-speed', 'spd-show-roundabout'].forEach(id => {
document.getElementById(id).removeEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-max-zoom').removeEventListener('input', this.onSettingZoomChanged.bind(this));
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
input.removeEventListener('change', this.onSettingsChange.bind(this));
});
if (this.debugMode) {
document.getElementById('btn-spd-update-settings-tab').removeEventListener('click', this.updateSettingsTab.bind(this));
document.getElementById('btn-spd-show-modal').removeEventListener('click', this.showSpdDialog.bind(this));
}
}
/**
* Attaches listeners to close the dialog.
*/
attachDialogListeners() {
document.addEventListener('keydown', this.simulateBtnHideDialogClick.bind(this));
document.querySelector('#spd-dialog-container .dark-overlay').addEventListener('click', this.simulateBtnHideDialogClick.bind(this), {once: true});
document.getElementById('btn-spd-hide-dialog').addEventListener('click', this.hideSpdDialog.bind(this), {once: true});
}
/**
* Updates the map display by removing old features and adding new speed icons based on the settings.
*/
updateMapDisplay() {
this.logDebug(this.spdTranslations.log.updateMapDisplay);
let zoomLevel = W.map.getZoom();
this.layer.removeAllFeatures();
if (zoomLevel < this.settings.general.spdMaxZoom) {
this.logDebug(this.spdTranslations.log.maxZoomExceeded);
return;
}
let segments = W.model.segments.objects || {};
let segmentKeys = Object.keys(segments);
if (segmentKeys.length === 0) {
this.logDebug(this.spdTranslations.log.noneSegment);
return;
}
this.logDebug(`${this.spdTranslations.log.numSegmentsLoaded} ${segmentKeys.length}`);
segmentKeys.forEach(segmentId => {
let segment = segments[segmentId];
if (!segment || !segment.attributes) {
this.logDebug(`${this.spdTranslations.log.attributesNotFound} ${segmentId}.`);
return;
}
let attributes = segment.attributes;
let roadSettingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${this.getRoadSettingNameById(attributes.roadType)}`);
let speedFwd = attributes.fwdMaxSpeed || 'N/A';
let speedRev = attributes.revMaxSpeed || 'N/A';
let isFwd = attributes.fwdDirection;
let isRev = attributes.revDirection;
let hideNoSpeed = !this.settings.general.spdShowNoSpeed && ((speedFwd == 'N/A' && speedRev == 'N/A') || (isFwd && !isRev && speedFwd == 'N/A') || (!isFwd && isRev && speedRev == 'N/A'));
let ignoreOnRoundabout = attributes.junctionID && !this.settings.general.spdShowRoundabout;
if (hideNoSpeed || !this.settings.roads[roadSettingId] || ignoreOnRoundabout) {
this.logDebug(this.spdTranslations.log.disallowedSegment);
return;
}
let geometry = segment.getOLGeometry();
if (!geometry || geometry.components.length < 2) {
this.logDebug(`${this.spdTranslations.log.invalidGeometry} ${segmentId}.`);
return;
}
let midpoint = this.calculateMidpoint(geometry);
let feature = new OpenLayers.Feature.Vector(midpoint, {
segmentId,
speedFwd,
speedRev
});
let graphicWidth;
let graphicXOffset;
if (isFwd && isRev && speedFwd != speedRev) {
graphicWidth = 70;
graphicXOffset = -30;
} else if (isFwd && speedFwd != 'N/A' || isRev && speedRev != 'N/A') {
graphicWidth = 30;
graphicXOffset = -15;
}
feature.style = {
graphic: true,
externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedFwd, speedRev, isFwd, isRev)),
graphicHeight: 30,
graphicWidth: graphicWidth,
graphicYOffset: -15,
graphicXOffset: graphicXOffset
};
this.layer.addFeatures([feature]);
});
this.logDebug(this.spdTranslations.log.updateMapDisplayFinished);
}
/**
* Toggle visibility of the display of the speed layer.
* @param {Boolean} enabled
*/
toggleLayerVisibility(enabled) {
if (this.layer) {
this.layer.setVisibility(enabled);
this.logDebug(`${this.spdTranslations.log.speedLayer} ${enabled ? this.spdTranslations.enabled : this.spdTranslations.disabled}.`);
}
}
/**
* Saves the current settings to localStorage.
*/
saveSettings() {
this.settings.spdEnabled = document.getElementById('layer-switcher-item_speed_display').checked;
Object.keys(this.settings.general).forEach(setting => {
let element = document.getElementById(this.convertStringCaseStyle('camel', 'kebab', setting));
this.settings.general[setting] = setting != 'spdMaxZoom' ? element.checked : element.value;
});
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
let settingId = this.convertStringCaseStyle('kebab', 'camel', input.id);
this.settings.roads[settingId] = input.checked;
});
localStorage.setItem('wmeSpeedDisplaySettings', JSON.stringify(this.settings));
}
/**
* Loads the settings from localStorage or uses the provided settings to initialize the configuration.
* @param {Object} [savedSettings] - The saved settings object to load; if not provided, it will load from localStorage.
*/
loadSettings(savedSettings) {
savedSettings = savedSettings ?? JSON.parse(localStorage.getItem('wmeSpeedDisplaySettings'));
if (savedSettings)
this.settings = savedSettings;
}
/**
* Adds a settings tab to the user interface with options to configure the speed display settings.
*/
addSettingsTab() {
let scriptTabContainer = document.querySelector('#user-info .nav-tabs');
if (!scriptTabContainer) {
this.logDebug(this.spdTranslations.log.scriptsTabNotFound);
setTimeout(() => this.addSettingsTab(), 1000);
return;
}
if (document.getElementById('wme-spd-tab'))
return;
let tabButton = document.createElement('li');
tabButton.innerHTML = `<a href="#spd-settings" data-toggle="tab">${this.spdTranslations.name}</a>`;
scriptTabContainer.appendChild(tabButton);
let tabContentContainer = document.querySelector('.tab-content');
let userScriptsApiDocsLinkContainer = tabContentContainer.querySelector('.userscripts-api-docs-link-container');
let tabContent = document.createElement('div');
tabContent.id = 'spd-settings';
tabContent.classList.add('tab-pane');
let tabContentHtml = `
<div style="padding: 0 10px;">
<h4>${this.spdTranslations.settingTabName}</h4>
<hr>
<wz-label html-for="">${this.spdTranslations.title.general}</wz-label>
<wz-checkbox checked="${this.settings.general.spdShowNoSpeed}" indeterminate="false" disabled="false" id="spd-show-no-speed" value="true">${this.spdTranslations.label.showNoSpeed}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
<wz-checkbox checked="${this.settings.general.spdShowRoundabout}" indeterminate="false" disabled="false" id="spd-show-roundabout" value="true">${this.spdTranslations.label.showOnRoundabout}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
<br>
<wz-label html-for="" style="margin-top:10px">${this.spdTranslations.label.maxZoom} <span id="spd-max-zoom-value">${this.settings.general.spdMaxZoom}</span></wz-label>
<input type="range" id="spd-max-zoom" min="12" max="22" step="1" value="${this.settings.general.spdMaxZoom}">
<div style="display: flex; justify-content: space-between; width: 100%; color: #777; font-size: 11px; line-height: 15px;"><span>${this.spdTranslations.zoomOut}</span><span>${this.spdTranslations.zoomIn}</span></div>
<br>
<wz-label html-for="" style="margin:0">${this.spdTranslations.title.showOnRoadType}</wz-label>`;
Object.entries(this.segmentsCategories).forEach(segmentCategory => {
tabContentHtml += `<wz-menu-title style="padding:0;">${I18n.translations[I18n.locale].segment.categories[segmentCategory[0]]}</wz-menu-title>`;
Object.values(segmentCategory[1]).forEach(roadType => {
let id = this.convertStringCaseStyle('snake', 'kebab', `spd_show_speed_in_${roadType.name}`);
let settingId = this.convertStringCaseStyle('kebab', 'camel', id);
let checked = this.settings.roads[settingId];
tabContentHtml += `<wz-checkbox checked="${checked}" indeterminate="false" disabled="false" id="${id}" value="true">${I18n.translations[I18n.locale].segment.road_types[roadType.id]}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>`;
});
});
if (this.debugMode) {
tabContentHtml += `<wz-button color="primary" id="btn-spd-update-settings-tab" style="margin-top: 10px; width: 100%;">${this.spdTranslations.btn.updateSettingsTab}</wz-button>`;
tabContentHtml += `<wz-button color="secondary" id="btn-spd-show-modal" style="margin-top: 10px; width: 100%;">Exibir modal</wz-button>`;
}
tabContentHtml += `</div>`;
tabContent.innerHTML = tabContentHtml;
tabContentContainer.insertBefore(tabContent, userScriptsApiDocsLinkContainer);
this.attachSettingsListeners();
this.logDebug(this.spdTranslations.log.settingsTabAdded);
}
/**
* Updates the settings tab by removing the old one and adding a new one with updated settings.
*/
updateSettingsTab() {
this.logDebug(this.spdTranslations.log.updatingSettingsTab);
let linkTab = document.querySelector('#user-info .nav-tabs li a[href="#spd-settings"]');
let tabContent = document.getElementById('spd-settings');
if (!linkTab || !tabContent)
return;
this.detachSettingsListeners();
this.defineTranslations();
tabContent.remove();
linkTab.closest('li').remove();
this.addSettingsTab();
this.updateSettingsElementsStates();
}
/**
* Updates the state of the settings elements (checkboxes, inputs) based on the current settings.
*/
updateSettingsElementsStates() {
Object.entries(this.settings.general).forEach(([setting, value]) => {
let id = this.convertStringCaseStyle('camel', 'kebab', setting);
let element = document.getElementById(id);
if (!element)
return;
if (setting != 'spdMaxZoom') {
element.checked = value;
} else {
element.value = value;
document.getElementById('spd-max-zoom-value').innerText = value;
}
});
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
let settingId = this.convertStringCaseStyle('kebab', 'camel', input.id);
if (input.type == 'checkbox')
input.checked = this.settings.roads[settingId];
});
}
/**
* Calculates the real midpoint of a segment, considering curves.
* @param {OpenLayers.Geometry.LineString} geometry Segment geometry.
*
* @returns {OpenLayers.Geometry.Point} Real midpoint.
*/
calculateMidpoint(geometry) {
let length = geometry.getLength();
let cumulativeLength = 0;
for (let i = 0; i < geometry.components.length - 1; i++) {
let start = geometry.components[i];
let end = geometry.components[i + 1];
let segmentLength = start.distanceTo(end);
if (cumulativeLength + segmentLength >= length / 2) {
let ratio = (length / 2 - cumulativeLength) / segmentLength;
return new OpenLayers.Geometry.Point(
start.x + ratio * (end.x - start.x),
start.y + ratio * (end.y - start.y)
);
}
cumulativeLength += segmentLength;
}
return geometry.getCentroid();
}
/**
* Generates an SVG icon with the speeds.
* @param {String} speedFwd Forward speed.
* @param {String} speedRev Reverse speed.
* @param {String} isFwd Direction of the road forward.
* @param {String} isRev Reverse lane direction.
*
* @returns {String} SVG in string format.
*/
getSpeedIcon(speedFwd, speedRev, isFwd, isRev) {
if (isFwd && isRev && speedFwd != speedRev) {
return `
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="50" viewBox="0 0 120 50">
<circle cx="25" cy="25" r="21" fill="white" stroke="red" stroke-width="5"/>
<text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${speedFwd}</text>
<circle cx="80" cy="25" r="21" fill="white" stroke="red" stroke-width="5"/>
<text x="80" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${speedRev}</text>
</svg>`;
} else {
return `
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
<circle cx="25" cy="25" r="21" fill="white" stroke="red" stroke-width="5"/>
<text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${isFwd ? speedFwd : speedRev}</text>
</svg>`;
}
}
/**
* Makes a "dramatic" pause in the code.
* @param {Number} ms Pause time in milliseconds
*/
async sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
* Returns a function with delay.
* @param {Object} func Function that will be called with delay
* @param {(Number|null)} timeout Delay time in milliseconds
*
* @returns Function
*/
debounce(func, timeout = 300) {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, timeout);
}
}
/**
* Converts a string from one case style to another (camel, snake, kebab).
* @param {string} fromType - The original string case ('camel', 'snake', or 'kebab').
* @param {string} toType - The target string case ('camel', 'snake', or 'kebab').
* @param {string} string - The string to be converted.
*
* @returns {string} The converted string.
*/
convertStringCaseStyle(fromType, toType, string) {
if (fromType == toType)
return string;
let conversionMap = {
camel: {
kebab: str => str.match(/[A-Z]?[a-z]+|[0-9]+/g).join('-').toLowerCase(),
snake: str => str.match(/[A-Z]?[a-z]+|[0-9]+/g).join('_').toLowerCase()
},
snake: {
kebab: str => str.replace(/_/g, '-'),
camel: str => str.replace(/_([a-z])/g, (_, letra) => letra.toUpperCase())
},
kebab: {
camel: str => str.replace(/-([a-z])/g, (_, letra) => letra.toUpperCase()),
snake: str => str.replace(/-/g, '_')
}
};
return conversionMap[fromType]?.[toType]?.(string) || string;
}
/**
* Retrieves the road setting name by its ID from the segments categories.
* @param {string} id - The ID of the road setting.
*
* @returns {string|null} The name of the road setting if found, otherwise null.
*/
getRoadSettingNameById(id) {
for (let category of Object.values(this.segmentsCategories)) {
let segment = category.find(item => item.id === id);
if (segment)
return segment.name;
}
// Returns null if ID is not found
return null;
}
/**
* Logs a debug message to the console if debug mode is enabled or forceMessage is true.
* @param {string} message - The message to log.
* @param {boolean} [forceMessage] - Whether to log the message regardless of the debug mode setting.
*/
logDebug(message, forceMessage = false) {
if (this.debugMode || forceMessage)
console.log(`[WME Speed Display]: ${message}`);
}
/**
* Adds a checkbox to the layer switcher to toggle the speed display layer visibility.
*/
addLayerCheckbox() {
let houseNumbersCheckbox = document.getElementById('layer-switcher-item_house_numbers');
if (!houseNumbersCheckbox) {
this.logDebug(this.spdTranslations.log.houseNumberCheckboxNotFound);
setTimeout(() => this.addLayerCheckbox(), 1000);
return;
}
let layerItem = document.createElement('li');
layerItem.innerHTML = `
<div class="layer-selector">
<wz-checkbox id="layer-switcher-item_speed_display" checked="${this.settings.spdEnabled}">
<div class="layer-selector-container" title="WME ${this.spdTranslations.name}">${this.spdTranslations.label.displaySpeeds}</div>
</wz-checkbox>
</div>`;
houseNumbersCheckbox.closest('li').insertAdjacentElement('afterend', layerItem);
let switchElement = document.getElementById('layer-switcher-item_speed_display');
if (!switchElement)
return;
switchElement.addEventListener('change', this.onSpeedDisplayCheckboxChange.bind(this));
this.toggleLayerVisibility(this.settings.spdEnabled);
}
/**
* Initializes settings from localStorage or sets default values.
*/
defineInitialSettings() {
let localSettings = localStorage.getItem('wmeSpeedDisplaySettings');
if (localSettings != null) {
this.loadSettings(JSON.parse(localSettings));
this.updateSettingsElementsStates();
} else {
this.settings = {
spdEnabled: true,
general: {
spdShowNoSpeed: true,
spdShowRoundabout: true,
spdMaxZoom: 18
},
roads: {}
};
Object.values(this.segmentsCategories).forEach(category => {
Object.values(category).forEach(roadType => {
let settingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${roadType.name}`);
this.settings.roads[settingId] = true;
});
});
}
}
/**
* Checks if the plugin version changed and displays the changelog if necessary.
*/
checkVersionAndShowChangelog() {
this.logDebug(this.spdTranslations.log.checkingVersion);
let pluginChangelog = JSON.parse(localStorage.getItem('wmeSpeedDisplayVersion'));
if (pluginChangelog == null || pluginChangelog.version != this.version) {
let spdDialog = document.getElementById('spd-dialog-container');
spdDialog?.remove();
this.showSpdDialog(`${this.spdTranslations.changelog} ${this.spdTranslations.name} v${this.version}`, this.spdTranslations.changelogMessage);
localStorage.setItem('wmeSpeedDisplayVersion', JSON.stringify(this.version));
}
}
/**
* Displays a modal dialog with customizable title, body content, and button text.
* @param {string} title - The title of the modal (default: 'Without title').
* @param {string} body - The HTML content or string inside the modal (default: '<span>Without body message</span>').
* @param {string} [buttonText] - The text for the close button (default: 'Fechar').
*/
showSpdDialog(title = 'Without title', body = '<span>Without body message</span>', buttonText = 'Fechar') {
let wzDialogContainer = document.getElementById('wz-dialog-container');
let divDialog = document.createElement('div');
divDialog.id = 'spd-dialog-container';
Object.assign(divDialog.style, {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
position: 'absolute',
width: '100vw',
height: '100vh',
top: 0,
left: 0
});
divDialog.innerHTML = `
<div class="dark-overlay" style="background-color: var(--background_modal, rgba(32, 33, 36, 0.6)); width: 100vw; height: 100vh; position: absolute; top: 0px; left: 0px; z-index: 9999;"></div>
<div style="display: flex; flex-direction: column; background-color: var(--background_default, #ffffff); border-radius: var(--wz-dialog-border-radius, 10px); box-shadow: rgba(0, 0, 0, 0.26) 0px 4px 8px 3px; width: var(--wz-dialog-width, 720px); height: var(--wz-dialog-height); padding: var(--wz-dialog-padding, var(--space-l, 24px)); position: fixed; z-index: 99999;">
<h3 style="margin-bottom: 10px;">${title}</h3>
<div style="max-height: 70vh; overflow: auto;">
${body}
</div>
<div style="display: flex; justify-content: end; margin-top: 10px;">
<wz-button color="secondary" id="btn-spd-hide-dialog">${buttonText}</wz-button>
</div>
</div>`;
wzDialogContainer.appendChild(divDialog);
this.attachDialogListeners();
}
/**
* Closes the dialog and removes associated event listeners.
*/
hideSpdDialog() {
let spdDialog = document.getElementById('spd-dialog-container');
document.removeEventListener('keydown', this.simulateBtnHideDialogClick.bind(this));
spdDialog?.remove();
}
/**
* Simulates a click on the close dialog button.
* @param {Event} event
*/
simulateBtnHideDialogClick(event) {
if (event.key && (event.key != 'Escape' || event.key != 'Enter'))
return;
document.getElementById('btn-spd-hide-dialog')?.click();
}
/**
* Sets translations for the current locale.
*/
defineTranslations() {
switch (I18n.locale) {
case 'cs':
// Czech
this.spdTranslations = {
name: 'Zobrazení rychlosti',
settingTabName: 'Nastavení zobrazení rychlosti',
enabled: 'povolené',
disabled: 'zakázané',
zoomOut: 'Oddálit',
zoomIn: 'Přiblížit',
changelog: 'Seznam změn',
changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Přidán modální okno changelogu.</li></ul><h6>Opravy:</h6><ul><li>Opraven problém s ikonami bez rychlosti, které se zobrazovaly, i když byla možnost zobrazit bez rychlosti deaktivována;</li><li>Další drobné opravy a vylepšení.</li></ul>',
title: {
general: 'Obecné',
showOnRoadType: 'Zobrazit na segmentech typu:'
},
label: {
displaySpeeds: 'Zobrazit rychlosti',
showNoSpeed: 'Zobrazit na segmentu bez rychlosti',
showOnRoundabout: 'Zobrazit na kruhovém objezdu',
maxZoom: 'Renderovat až do úrovně zoomu:'
},
btn: {
updateSettingsTab: 'Aktualizovat menu',
},
log: {
wmeReadyStartScript: 'WME načteno a připraveno. Spouštím skript...',
waitingWme: 'Čekám, až bude WME připraveno...',
wmeReadyStartingPlugin: 'WME je připraveno. Nastavuji vlastní vrstvu...',
shortSleep: 'Čekám asi 1 sekundu, než se vše načte...',
updateMapDisplay: 'Aktualizuji zobrazení na mapě...',
maxZoomExceeded: 'Byl překročen maximální zoom. Rychlost nebude zobrazena.',
noneSegment: 'Žádné segmenty nebyly nalezeny.',
numSegmentsLoaded: 'Celkový počet načtených segmentů:',
attributesNotFound: 'Nelze najít atributy nebo chybí v segmentu',
disallowedSegment: 'Tento typ segmentu by neměl být načten.',
invalidGeometry: 'Neplatná geometrie v segmentu:',
updateMapDisplayFinished: 'Aktualizace dokončena.',
houseNumberCheckboxNotFound: 'Checkbox "Čísla domů" nebyl nalezen. Pokouším se znovu...',
scriptsTabNotFound: 'Záložka skriptů nebyla nalezena. Pokouším se znovu...',
settingsTabAdded: 'Přidána karta nastavení.',
speedLayer: 'Vrstva rychlosti',
opacityUpdated: 'Průhlednost ikon byla nastavena na',
updatingSettingsTab: 'Aktualizuji záložku nastavení...',
languageDefined: 'Jazyky definovány.',
checkingVersion: 'Kontroluji verzi pluginu.',
}
};
break;
case 'es-419':
// Latin-american spanish
this.spdTranslations = {
name: 'Mostrar Velocidad',
settingTabName: 'Configuraciones de Mostrar Velocidad',
enabled: 'habilitada',
disabled: 'deshabilitada',
zoomOut: 'Alejar',
zoomIn: 'Acercar',
changelog: 'Registro de cambios',
changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>Se agregó un modal de registro de cambios.</li></ul><h6>Correcciones:</h6><ul><li>Se corrigió un problema con los íconos sin velocidad que aparecían incluso con la opción de mostrar sin velocidad desactivada;</li><li>Otras pequeñas correcciones y mejoras.</li></ul>',
title: {
general: 'General',
showOnRoadType: 'Mostrar en los segmentos del tipo:'
},
label: {
displaySpeeds: 'Mostrar velocidades',
showNoSpeed: 'Mostrar en segmento sin velocidad',
showOnRoundabout: 'Mostrar en rotonda',
maxZoom: 'Renderizar hasta el nivel de zoom:'
},
btn: {
updateSettingsTab: 'Actualizar menú',
},
log: {
wmeReadyStartScript: 'WME cargado y listo. Iniciando el script...',
waitingWme: 'Esperando que WME esté listo...',
wmeReadyStartingPlugin: 'WME está listo. Configurando la capa personalizada...',
shortSleep: 'Esperando aproximadamente 1 segundo para que todo se cargue...',
updateMapDisplay: 'Actualizando la visualización en el mapa...',
maxZoomExceeded: 'Se ha excedido el zoom máximo. No se mostrará velocidad.',
noneSegment: 'No se encontraron segmentos.',
numSegmentsLoaded: 'Número total de segmentos cargados:',
attributesNotFound: 'No se pudieron encontrar los atributos o están ausentes en el segmento',
disallowedSegment: 'Este tipo de segmento no debe cargarse.',
invalidGeometry: 'Geometría inválida en el segmento:',
updateMapDisplayFinished: 'Actualización completada.',
houseNumberCheckboxNotFound: 'No se encontró el checkbox "Números de Casas". Intentando nuevamente...',
scriptsTabNotFound: 'No se encontró la pestaña de scripts. Intentando nuevamente...',
settingsTabAdded: 'Pestaña de configuraciones añadida.',
speedLayer: 'Capa de velocidad',
opacityUpdated: 'Opacidad de los íconos ajustada a',
updatingSettingsTab: 'Actualizando la pestaña de configuraciones...',
languageDefined: 'Idiomas definidos.',
checkingVersion: 'Comprobando la versión del plugin.',
}
};
break;
case 'fi':
// Finnish
this.spdTranslations = {
name: 'Nopeuden näyttö',
settingTabName: 'Nopeuden näyttöasetukset',
enabled: 'käytössä',
disabled: 'poistettu käytöstä',
zoomOut: 'Loitontaa',
zoomIn: 'Lähentää',
changelog: 'Muutosloki',
changelogMessage: '<h6>Uutta:</h6><ul style="margin-bottom: 10px"><li>Lisätty changelog-modali.</li></ul><h6>Korjaukset:</h6><ul><li>Korjattu ongelma, jossa nopeudettomat kuvakkeet ilmestyivät, vaikka asetus oli pois päältä;</li><li>Muita pieniä korjauksia ja parannuksia.</li></ul>',
title: {
general: 'Yleinen',
showOnRoadType: 'Näytä tyypin segmenttien kohdalla:'
},
label: {
displaySpeeds: 'Näytä nopeudet',
showNoSpeed: 'Näytä segmentissä, jossa ei ole nopeutta',
showOnRoundabout: 'Näytä liikenneympyrässä',
maxZoom: 'Renderöi enintään zoom-tasolle:'
},
btn: {
updateSettingsTab: 'Päivitä valikko',
},
log: {
wmeReadyStartScript: 'WME ladattu ja valmis. Käynnistetään skripti...',
waitingWme: 'Odotetaan, että WME on valmis...',
wmeReadyStartingPlugin: 'WME on valmis. Asetetaan mukautettua kerrosta...',
shortSleep: 'Odota noin 1 sekunti ennen kuin kaikki latautuu...',
updateMapDisplay: 'Päivitetään näyttö kartalla...',
maxZoomExceeded: 'Maksimi zoomaus ylitetty. Nopeutta ei näytetä.',
noneSegment: 'Ei löytynyt segmenttejä.',
numSegmentsLoaded: 'Yhteensä ladattuja segmenttejä:',
attributesNotFound: 'Attribuutteja ei löytynyt tai ne puuttuvat segmentistä',
disallowedSegment: 'Tämän tyyppistä segmenttiä ei tule ladata.',
invalidGeometry: 'Virheellinen geometria segmentissä:',
updateMapDisplayFinished: 'Päivitys valmis.',
houseNumberCheckboxNotFound: '"Talojen numerot" -valintaruutua ei löytynyt. Yritetään uudelleen...',
scriptsTabNotFound: 'Skripti-välilehteä ei löytynyt. Yritetään uudelleen...',
settingsTabAdded: 'Asetusvälilehti lisätty.',
speedLayer: 'Nopeuskerros',
opacityUpdated: 'Ikonien opasiteetti säädetty arvoon',
updatingSettingsTab: 'Päivitetään asetusten välilehteä...',
languageDefined: 'Kielet määritetty.',
checkingVersion: 'Tarkistetaan liitännäisen versiota.',
}
};
break;
case 'fr':
// French
this.spdTranslations = {
name: 'Affichage de la vitesse',
settingTabName: 'Paramètres d\'affichage de la vitesse',
enabled: 'activée',
disabled: 'désactivée',
zoomOut: 'Dézoomer',
zoomIn: 'Zoomer',
changelog: 'Journal des modifications',
changelogMessage: '<h6>Nouveautés :</h6><ul style="margin-bottom: 10px"><li>Ajout d’une fenêtre modale pour le changelog.</li></ul><h6>Corrections :</h6><ul><li>Correction d’un problème où les icônes sans vitesse apparaissaient même lorsque l’option d’affichage sans vitesse était désactivée ;</li><li>Autres petites corrections et améliorations.</li></ul>',
title: {
general: 'Général',
showOnRoadType: 'Afficher sur les segments de type :'
},
label: {
displaySpeeds: 'Afficher les vitesses',
showNoSpeed: 'Afficher sur le segment sans vitesse',
showOnRoundabout: 'Afficher sur le rond-point',
maxZoom: 'Rendre jusqu\'au niveau de zoom :'
},
btn: {
updateSettingsTab: 'Mettre à jour le menu',
},
log: {
wmeReadyStartScript: 'WME chargé et prêt. Démarrage du script...',
waitingWme: 'En attente que WME soit prêt...',
wmeReadyStartingPlugin: 'WME est prêt. Configuration de la couche personnalisée...',
shortSleep: 'Attente d\'environ 1 seconde pour que tout se charge...',
updateMapDisplay: 'Mise à jour de l\'affichage sur la carte...',
maxZoomExceeded: 'Le zoom maximum a été dépassé. Aucune vitesse ne sera affichée.',
noneSegment: 'Aucun segment trouvé.',
numSegmentsLoaded: 'Nombre total de segments chargés :',
attributesNotFound: 'Impossible de trouver les attributs ou ils sont manquants dans le segment',
disallowedSegment: 'Ce type de segment ne doit pas être chargé.',
invalidGeometry: 'Géométrie invalide dans le segment :',
updateMapDisplayFinished: 'Mise à jour terminée.',
houseNumberCheckboxNotFound: 'La case à cocher "Numéros des maisons" n\'a pas été trouvée. Tentative de nouveau...',
scriptsTabNotFound: 'L\'onglet des scripts n\'a pas été trouvé. Tentative de nouveau...',
settingsTabAdded: 'Onglet des paramètres ajouté.',
speedLayer: 'Couche de vitesse',
opacityUpdated: 'Opacité des icônes ajustée à',
updatingSettingsTab: 'Mise à jour de l\'onglet des paramètres...',
languageDefined: 'Langues définies.',
checkingVersion: 'Vérification de la version du plugin.',
}
};
break;
case 'pl':
// Polish
this.spdTranslations = {
name: 'Wyświetlanie prędkości',
settingTabName: 'Ustawienia wyświetlania prędkości',
enabled: 'włączona',
disabled: 'wyłączona',
zoomOut: 'Oddal',
zoomIn: 'Przybliż',
changelog: 'Dziennik zmian',
changelogMessage: '<h6>Nowości:</h6><ul style="margin-bottom: 10px"><li>Dodano modalny changelog.</li></ul><h6>Poprawki:</h6><ul><li>Naprawiono problem z ikonami bez prędkości, które pojawiały się mimo wyłączonej opcji ich wyświetlania;</li><li>Inne drobne poprawki i ulepszenia.</li></ul>',
title: {
general: 'Ogólne',
showOnRoadType: 'Wyświetl na segmentach typu:'
},
label: {
displaySpeeds: 'Wyświetlaj prędkości',
showNoSpeed: 'Pokaż na segmencie bez prędkości',
showOnRoundabout: 'Pokaż na rondzie',
maxZoom: 'Renderuj do poziomu zoomu:'
},
btn: {
updateSettingsTab: 'Zaktualizuj menu',
},
log: {
wmeReadyStartScript: 'WME załadowane i gotowe. Uruchamiam skrypt...',
waitingWme: 'Czekam, aż WME będzie gotowe...',
wmeReadyStartingPlugin: 'WME jest gotowe. Konfigurowanie warstwy niestandardowej...',
shortSleep: 'Czekam około 1 sekundy, aż wszystko się załaduje...',
updateMapDisplay: 'Aktualizuję wyświetlanie na mapie...',
maxZoomExceeded: 'Przekroczono maksymalny poziom zoomu. Prędkość nie będzie wyświetlana.',
noneSegment: 'Nie znaleziono segmentów.',
numSegmentsLoaded: 'Łączna liczba załadowanych segmentów:',
attributesNotFound: 'Nie można znaleźć atrybutów lub są one brakujące w segmencie',
disallowedSegment: 'Tego typu segment nie powinien być ładowany.',
invalidGeometry: 'Nieprawidłowa geometria w segmencie:',
updateMapDisplayFinished: 'Aktualizacja zakończona.',
houseNumberCheckboxNotFound: 'Nie znaleziono pola wyboru „Numery domów”. Próbuję ponownie...',
scriptsTabNotFound: 'Nie znaleziono zakładki skryptów. Próbuję ponownie...',
settingsTabAdded: 'Dodano kartę ustawień.',
speedLayer: 'Warstwa prędkości',
opacityUpdated: 'Przezroczystość ikon została ustawiona na',
updatingSettingsTab: 'Aktualizowanie zakładki ustawień...',
languageDefined: 'Języki zdefiniowane.',
checkingVersion: 'Sprawdzanie wersji wtyczki.',
}
};
break;
case 'pt-BR':
// Brazilian portuguese
this.spdTranslations = {
name: 'Exibição de Velocidade',
settingTabName: 'Configurações de Exibição de Velocidade',
enabled: 'atiavada',
disabled: 'desativada',
zoomOut: 'Mais afastado',
zoomIn: 'Mais aproximado',
changelog: 'Registro de alterações',
changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Adicionado modal de changelog.</li></ul><h6>Correções:</h6><ul><li>Corrigido problema com ícones sem velocidade que apareciam, mesmo com a opção de exibir sem velocidade desativado;</li><li>Outras pequenas correções e melhorias.</li></ul>',
title: {
general: 'Geral',
showOnRoadType: 'Exibir nos seguimentos do tipo:'
},
label: {
displaySpeeds: 'Exibir velocidades',
showNoSpeed: 'Exibir em seguimento sem velocidade',
showOnRoundabout: 'Exibir em rotatória',
maxZoom: 'Renderizar até o zoom:'
},
btn: {
updateSettingsTab: 'Atualizar menu',
},
log: {
wmeReadyStartScript: 'WME carregado e pronto. Iniciando script...',
waitingWme: 'Aguardando o WME estar pronto...',
wmeReadyStartingPlugin: 'WME está pronto. Configurando camada personalizada...',
shortSleep: 'Aguardando uns 1 segundo para tudo carregar...',
updateMapDisplay: 'Atualizando display no mapa...',
maxZoomExceeded: 'Zoom máximo excedido. Nenhuma velocidade será exibida.',
noneSegment: 'Nenhum segmento encontrado.',
numSegmentsLoaded: 'Total de segmentos carregados:',
attributesNotFound: 'Não foi possível encontrar os atributos ou estão ausentes no segmento',
disallowedSegment: 'Este tipo de seguimento não deve ser carregado.',
invalidGeometry: 'Geometria inválida no seguimento:',
updateMapDisplayFinished: 'Atualização concluída.',
houseNumberCheckboxNotFound: 'O checkbox "Números das Casas" não foi encontrado. Tentando novamente...',
scriptsTabNotFound: 'Painel de scripts não encontrado. Tentando novamente...',
settingsTabAdded: 'Aba de configurações adicionada.',
speedLayer: 'Camada de velocidade',
opacityUpdated: 'Opacidade dos ícones ajustada para',
updatingSettingsTab: 'Atualizando aba de configurações...',
languageDefined: 'Idiomas definidos.',
checkingVersion: 'Verificando a versão do plugin.'
}
};
break;
case 'ru':
// Russian
this.spdTranslations = {
name: 'Отображение скорости',
settingTabName: 'Настройки отображения скорости',
enabled: 'включено',
disabled: 'выключено',
zoomOut: 'Отдалить',
zoomIn: 'Приблизить',
changelog: 'Журнал изменений',
changelogMessage: '<h6>Новое:</h6><ul style="margin-bottom: 10px"><li>Добавлено модальное окно с журналом изменений.</li></ul><h6>Исправления:</h6><ul><li>Исправлена проблема с отображением значков без скорости, даже если эта опция была отключена;</li><li>Другие небольшие исправления и улучшения.</li></ul>',
title: {
general: 'Общие',
showOnRoadType: 'Отображать на сегментах типа:'
},
label: {
displaySpeeds: 'Отображать скорости',
showNoSpeed: 'Показывать на сегменте без скорости',
showOnRoundabout: 'Показывать на круговом движении',
maxZoom: 'Отображать до уровня зума:'
},
btn: {
updateSettingsTab: 'Обновить меню',
},
log: {
wmeReadyStartScript: 'WME загружен и готов. Запуск скрипта...',
waitingWme: 'Ожидание готовности WME...',
wmeReadyStartingPlugin: 'WME готово. Настройка пользовательского слоя...',
shortSleep: 'Ожидание около 1 секунды, пока все загрузится...',
updateMapDisplay: 'Обновление отображения на карте...',
maxZoomExceeded: 'Превышен максимальный уровень зума. Скорость отображаться не будет.',
noneSegment: 'Сегменты не найдены.',
numSegmentsLoaded: 'Общее количество загруженных сегментов:',
attributesNotFound: 'Не удалось найти атрибуты или они отсутствуют в сегменте',
disallowedSegment: 'Этот тип сегмента не должен загружаться.',
invalidGeometry: 'Неверная геометрия в сегменте:',
updateMapDisplayFinished: 'Обновление завершено.',
houseNumberCheckboxNotFound: 'Не найден флажок "Номера домов". Попробую снова...',
scriptsTabNotFound: 'Вкладка скриптов не найдена. Попробую снова...',
settingsTabAdded: 'Вкладка настроек добавлена.',
speedLayer: 'Слой скорости',
opacityUpdated: 'Прозрачность значков обновлена до',
updatingSettingsTab: 'Обновление вкладки настроек...',
languageDefined: 'Языки определены.',
checkingVersion: 'Проверка версии плагина.',
}
};
break;
case 'sv':
// Swedish
this.spdTranslations = {
name: 'Hastighetsvisning',
settingTabName: 'Inställningar för hastighetsvisning',
enabled: 'aktiverad',
disabled: 'inaktiverad',
zoomOut: 'Zooma ut',
zoomIn: 'Zooma in',
changelog: 'Ändringslogg',
changelogMessage: '<h6>Nyheter:</h6><ul style="margin-bottom: 10px"><li>Lagt till en modal för ändringsloggen.</li></ul><h6>Felkorrigeringar:</h6><ul><li>Fixat ett problem där ikoner utan hastighet visades även när alternativet att dölja dem var aktiverat;</li><li>Andra små korrigeringar och förbättringar.</li></ul>',
title: {
general: 'Allmänt',
showOnRoadType: 'Visa på segment av typen:'
},
label: {
displaySpeeds: 'Visa hastigheter',
showNoSpeed: 'Visa på segment utan hastighet',
showOnRoundabout: 'Visa på rondell',
maxZoom: 'Rendera upp till zoom-nivå:'
},
btn: {
updateSettingsTab: 'Uppdatera meny',
},
log: {
wmeReadyStartScript: 'WME laddad och redo. Startar skriptet...',
waitingWme: 'Väntar på att WME ska bli redo...',
wmeReadyStartingPlugin: 'WME är redo. Konfigurerar anpassad lager...',
shortSleep: 'Väntar cirka 1 sekund innan allt laddas...',
updateMapDisplay: 'Uppdaterar visningen på kartan...',
maxZoomExceeded: 'Maximal zoomnivå överskriden. Hastighet visas inte.',
noneSegment: 'Inga segment hittades.',
numSegmentsLoaded: 'Totalt antal laddade segment:',
attributesNotFound: 'Kunde inte hitta attribut eller de saknas i segmentet',
disallowedSegment: 'Den här typen av segment ska inte laddas.',
invalidGeometry: 'Ogiltig geometri i segmentet:',
updateMapDisplayFinished: 'Uppdatering slutförd.',
houseNumberCheckboxNotFound: 'Checkboxen "Husnummer" hittades inte. Försöker igen...',
scriptsTabNotFound: 'Fliken för skript hittades inte. Försöker igen...',
settingsTabAdded: 'Inställningsflik tillagd.',
speedLayer: 'Hastighetslager',
opacityUpdated: 'Opaciteten för ikoner har uppdaterats till',
updatingSettingsTab: 'Uppdaterar inställningsfliken...',
languageDefined: 'Språk definierade.',
checkingVersion: 'Kontrollerar plugin-version.',
}
};
break;
case 'uk':
// Ukrainian
this.spdTranslations = {
name: 'Відображення швидкості',
settingTabName: 'Налаштування відображення швидкості',
enabled: 'увімкнено',
disabled: 'вимкнено',
zoomOut: 'Віддалити',
zoomIn: 'Приблизити',
changelog: 'Журнал змін',
changelogMessage: '<h6>Новини:</h6><ul style="margin-bottom: 10px"><li>Додано модальне вікно для журналу змін.</li></ul><h6>Виправлення:</h6><ul><li>Виправлено проблему, коли значки без швидкості з’являлися, навіть якщо опція їх відображення була вимкнена;</li><li>Інші дрібні виправлення та покращення.</li></ul>',
title: {
general: 'Загальні',
showOnRoadType: 'Відображати на сегментах типу:'
},
label: {
displaySpeeds: 'Відображати швидкості',
showNoSpeed: 'Показувати на сегменті без швидкості',
showOnRoundabout: 'Показувати на круговому русі',
maxZoom: 'Рендерити до рівня масштабування:'
},
btn: {
updateSettingsTab: 'Оновити меню',
},
log: {
wmeReadyStartScript: 'WME завантажено та готове. Запуск скрипта...',
waitingWme: 'Очікуємо, поки WME стане готовим...',
wmeReadyStartingPlugin: 'WME готове. Налаштування кастомного шару...',
shortSleep: 'Чекаємо близько 1 секунди, поки все завантажиться...',
updateMapDisplay: 'Оновлення відображення на карті...',
maxZoomExceeded: 'Максимальний рівень масштабування перевищено. Швидкість не буде відображена.',
noneSegment: 'Сегменти не знайдено.',
numSegmentsLoaded: 'Загальна кількість завантажених сегментів:',
attributesNotFound: 'Не вдалося знайти атрибути або вони відсутні в сегменті',
disallowedSegment: 'Цей тип сегмента не повинен завантажуватися.',
invalidGeometry: 'Невірна геометрія в сегменті:',
updateMapDisplayFinished: 'Оновлення завершено.',
houseNumberCheckboxNotFound: 'Не знайдено чекбокс "Номери будинків". Спробую ще раз...',
scriptsTabNotFound: 'Не знайдена вкладка скриптів. Спробую ще раз...',
settingsTabAdded: 'Вкладку налаштувань додано.',
speedLayer: 'Шар швидкості',
opacityUpdated: 'Прозорість значків оновлено до',
updatingSettingsTab: 'Оновлення вкладки налаштувань...',
languageDefined: 'Мови визначено.',
checkingVersion: 'Перевірка версії плагіна.',
}
};
break;
default:
// Default language (english)
this.spdTranslations = {
name: 'Speed Display',
settingTabName: 'Speed Display Settings',
enabled: 'enabled',
disabled: 'disabled',
zoomOut: 'Zoom out',
zoomIn: 'Zoom in',
changelog: 'Changelog',
changelogMessage: '<h6>What’s New:</h6><ul style="margin-bottom: 10px"><li>Added a changelog modal.</li></ul><h6>Fixes:</h6><ul><li>Fixed an issue where speedless icons appeared even when the option to show them was disabled;</li><li>Other minor fixes and improvements.</li></ul>',
title: {
general: 'General',
showOnRoadType: 'Display on segments of type:'
},
label: {
displaySpeeds: 'Display speeds',
showNoSpeed: 'Show on segment with no speed',
showOnRoundabout: 'Show on roundabout',
maxZoom: 'Render up to zoom level:'
},
btn: {
updateSettingsTab: 'Update menu',
},
log: {
wmeReadyStartScript: 'WME loaded and ready. Starting script...',
waitingWme: 'Waiting for WME to be ready...',
wmeReadyStartingPlugin: 'WME is ready. Setting up custom layer...',
shortSleep: 'Waiting about 1 second for everything to load...',
updateMapDisplay: 'Updating display on the map...',
maxZoomExceeded: 'Maximum zoom exceeded. No speed will be displayed.',
noneSegment: 'No segments found.',
numSegmentsLoaded: 'Total segments loaded:',
attributesNotFound: 'Could not find attributes or they are missing in the segment',
disallowedSegment: 'This type of segment should not be loaded.',
invalidGeometry: 'Invalid geometry in segment:',
updateMapDisplayFinished: 'Update completed.',
houseNumberCheckboxNotFound: 'The "House Numbers" checkbox was not found. Trying again...',
settingsTabAdded: 'Settings tab added.',
settingsTabAdded: 'Aba de configurações adicionada.',
speedLayer: 'Speed layer',
opacityUpdated: 'Icon opacity adjusted to',
updatingSettingsTab: 'Updating settings tab...',
languageDefined: 'Languages defined.',
checkingVersion: 'Checking plugin version.',
}
};
break;
};
this.logDebug(this.spdTranslations.log.languageDefined);
}
}
new WmeSpeedDisplay();