您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds several helpful features to RTC handling in the Waze Map Editor
当前为
- // ==UserScript==
- // @name WME RTC Improvements
- // @description Adds several helpful features to RTC handling in the Waze Map Editor
- // @namespace vaindil
- // @version 1.1.8
- // @grant none
- // @include https://www.waze.com/editor/*
- // @include https://www.waze.com/*/editor/*
- // @include https://beta.waze.com/editor/*
- // @include https://beta.waze.com/*/editor/*
- // @exclude https://www.waze.com/user/*
- // @exclude https://www.waze.com/*/user/*
- // @author vaindil
- // ==/UserScript==
- var firstrun = true;
- var ls = [];
- var dmins = 120;
- var dstr = '2';
- switch (I18n.locale) {
- case 'es':
- ls.locale = 'es';
- ls.name = 'RTC Mejoras';
- ls.prefs = 'Defecto accidente duración (minutos)';
- ls.xdays = 'Expirará en X días';
- ls.crash = 'Accidente';
- ls.invalidstart = 'Fecha de inicio no es válida';
- ls.notint = 'No es untero válido';
- ls.neg = 'No puede ser negativo';
- ls.prefdefault = 'Defecto: ' + dstr + ' hrs';
- ls.preffuture = 'No se puede establecer más de 180 días en el futuro';
- ls.daysing = 'día';
- ls.daypl = 'días';
- ls.hoursing = 'hr';
- ls.hourpl = 'hrs';
- ls.minsing = 'min';
- ls.minpl = 'mins';
- break;
- case 'fr':
- ls.locale = 'fr';
- ls.name = 'RTC Améliorations';
- ls.prefs = 'Défaut crash durée (minutes)';
- ls.xdays = 'Expirer en X jours';
- ls.crash = 'Crash';
- ls.invalidstart = 'Date de début est invalide';
- ls.notint = 'Pas un entier valide';
- ls.neg = 'Vous ne pouvez pas être négatif';
- ls.prefdefault = 'Défaut: ' + dstr + ' heures';
- ls.preffuture = 'Ne peut pas être réglé plus de 180 jours dans le futur';
- ls.daysing = 'journée';
- ls.daypl = 'journées';
- ls.hoursing = 'heure';
- ls.hourpl = 'heures';
- ls.minsing = 'min';
- ls.minpl = 'mins';
- break;
- case 'de':
- ls.locale = 'de';
- ls.name = 'RTC Verbesserungen';
- ls.prefs = 'Standard Absturz Dauer (minuten)';
- ls.xdays = 'in X Tagen verfallen';
- ls.crash = 'Absturz';
- ls.invalidstart = 'Startdatum ist ungültig';
- ls.notint = 'Keine gültige ganze Zahl';
- ls.neg = 'Kann nicht negativ sein';
- ls.prefdefault = 'Default: ' + dstr + ' std';
- ls.preffuture = 'Es können nicht mehr als 180 Tage in der Zukunft festgelegt werden';
- ls.daysing = 'Tag';
- ls.daypl = 'Tagen';
- ls.hoursing = 'std';
- ls.hourpl = 'std';
- ls.minsing = 'min';
- ls.minpl = 'min';
- break;
- case 'it':
- ls.locale = 'it';
- ls.name = 'RTC Miglioramenti';
- ls.prefs = 'Predefinito schianto durata (minuti)';
- ls.xdays = 'Scade in X giorni';
- ls.crash = 'Schianto';
- ls.invalidstart = 'Data di inizio non è valida';
- ls.notint = 'Non un intero valido';
- ls.neg = 'Non può essere negativo';
- ls.prefdefault = 'Predefinito: ' + dstr + ' ore';
- ls.preffuture = 'Non può essere impostato più di 180 giorni per il futuro';
- ls.daysing = 'day';
- ls.daypl = 'days';
- ls.hoursing = 'ora';
- ls.hourpl = 'ore';
- ls.minsing = 'min';
- ls.minpl = 'min';
- break;
- default:
- ls.locale = 'en';
- ls.name = 'RTC Improvements';
- ls.prefs = 'Default crash length (minutes)';
- ls.xdays = 'Expire in X days';
- ls.crash = 'Crash';
- ls.invalidstart = 'Start date is invalid';
- ls.notint = 'Not a valid integer';
- ls.neg = 'Cannot be negative';
- ls.prefdefault = 'Default: ' + dstr + ' hrs';
- ls.preffuture = 'Can\'t be set more than 180 days in the future';
- ls.daysing = 'day';
- ls.daypl = 'days';
- ls.hoursing = 'hr';
- ls.hourpl = 'hrs';
- ls.minsing = 'min';
- ls.minpl = 'mins';
- }
- function welcomeToTheJungle() {
- try {
- var element = $('#sidepanel-prefs');
- if ($(element).length) {
- letsAGo();
- } else {
- setTimeout(welcomeToTheJungle, 1000);
- }
- } catch (err) {
- console.log("RTCENH - " + err);
- setTimeout(welcomeToTheJungle, 1000);
- }
- }
- welcomeToTheJungle();
- function letsAGo() {
- $(document).on('mouseover', 'div.add-closure-button.btn.btn-pastrama.btn-positive', function() {
- $(document).off('mouseover.RTCXdays');
- $(document).on('mouseover.RTCXdays', 'div.edit-closure.new', function() {
- justDewIt();
- $(document).off('mouseover.RTCXdays');
- });
- });
- $(document).on('input.RTCXdaysfield', 'input#expireinXdays', timeAndRelativeDimensionInSpace);
- $(document).on('click.RTCXdayscrash', 'div#RTCXdayscrash', ohNoes);
- $('#sidepanel-prefs').append('<hr />' +
- '<h4 style="font-size:13px">' + ls.name + '<br />' + ls.prefs + '</h4>' +
- '<input type="number" class="form-control" id="RTCimprovcrashdays" />' +
- '<span style="font-weight:bold" id="RTCimprovprefsmsg"></span>' +
- '<hr />');
- thisIsWhatYouWanted();
- $(document).on('input.RTCXdaysprefs', 'input#RTCimprovcrashdays', thisIsWhatYouWanted);
- }
- function justDewIt() {
- $('div.edit-closure.new > form.form > div.checkbox').before(
- '<div class="form-group">' +
- '<label class="control-label">' + ls.xdays + '</label>' +
- '<div class="controls">' +
- '<input type="number" length="3" maxlength="4" class="form-control" id="expireinXdays" />' +
- '</div>' +
- '</div>' +
- '<span id="RTCimprovXdaysmsg" style="color:red;font-weight:bold"></span>'
- );
- $('div.action-buttons').append(
- '<div class="btn btn-danger" id="RTCXdayscrash" style="float:right"><i class="fa fa-exclamation-triangle"></i> ' + ls.crash + '</div>'
- );
- $('input[name="closure_endDate"]').datepicker('remove');
- $('input[name="closure_endDate"]').datepicker({ format: 'yyyy-mm-dd', todayHighlight: true, autoclose: true, language: ls.locale });
- }
- function timeAndRelativeDimensionInSpace() {
- var newdate = new Date();
- if ($('input[name="closure_startDate"]').val() !== '') {
- var p = $('input[name="closure_startDate"]').val().split('-');
- var y = Number(p[0]);
- var m = Number(p[1]);
- var d = Number(p[2]);
- if (!Number.isInteger(y) || isNaN(y) || !Number.isInteger(m) || isNaN(m) || !Number.isInteger(d) || isNaN(d)) {
- $('#RTCimprovXdaysmsg').text(ls.invalidstart);
- return;
- }
- newdate = new Date(y, m - 1, d);
- }
- var v = Number($('#expireinXdays').val());
- if (!Number.isInteger(v) || isNaN(v)) {
- $('#RTCimprovXdaysmsg').text('');
- return;
- }
- if (v === 0) {
- $('#RTCimprovXdaysmsg').text(ls.notint);
- return;
- }
- if (v < 0) {
- $('#RTCimprovXdaysmsg').text(ls.neg);
- return;
- }
- $('#RTCimprovXdaysmsg').text('');
- newdate.setDate(newdate.getDate() + v);
- $('input[name="closure_endDate"]').datepicker('update', newdate);
- if ($('input[name="closure_endTime"]').val() === '')
- $('input[name="closure_endTime"]').timepicker('setTime', '05:00');
- }
- function ohNoes() {
- $('input[name="closure_reason"]').val(ls.crash);
- var delay = Number(localStorage.getItem('RTCimprovcrashmins'));
- if (!Number.isInteger(delay) || isNaN(delay) || delay === 0 || delay === '0')
- delay = dmins;
- var cur = new Date();
- cur.setMinutes(cur.getMinutes() + delay);
- $('input[name="closure_endDate"]').datepicker('update', cur);
- $('input[name="closure_endTime"]').timepicker('setTime', (('0' + cur.getHours()).slice(-2)) + ':' + (('0' + cur.getMinutes()).slice(-2)));
- }
- function thisIsWhatYouWanted() {
- var v;
- if (firstrun) {
- v = localStorage.getItem('RTCimprovcrashmins');
- firstrun = false;
- }
- else
- v = $('input#RTCimprovcrashdays').val();
- v = Number(v);
- if (isNaN(Number(v)) || !Number.isInteger(v) || v === 0 || v === '0') {
- localStorage.setItem('RTCimprovcrashmins', dmins);
- $('#RTCimprovprefsmsg').css('color', 'green').text(ls.prefdefault);
- return;
- }
- if (!Number.isInteger(v) || isNaN(v)) {
- localStorage.setItem('RTCimprovcrashmins', dmins);
- $('#RTCimprovprefsmsg').css('color', 'red').text(ls.notint);
- return;
- }
- if (v < 0) {
- localStorage.setItem('RTCimprovcrashmins', dmins);
- $('#RTCimprovprefsmsg').css('color', 'red').text(ls.neg);
- return;
- }
- if (v > 259200) {
- localStorage.setItem('RTCimprovcrashmins', dmins);
- $('#RTCimprovprefsmsg').css('color', 'red').text(ls.preffuture);
- return;
- }
- localStorage.setItem('RTCimprovcrashmins', v);
- $('input#RTCimprovcrashdays').val(v);
- var min = v % 60;
- var hrso = (v - min) / 60;
- var hrsf = hrso % 24;
- var days = (hrso - hrsf) / 24;
- var ms = min !== 1 ? ls.minpl : ls.minsing;
- var hs = hrsf !== 1 ? ls.hourpl : ls.hoursing;
- var ds = days !== 1 ? ls.daypl : ls.daysing;
- $('#RTCimprovprefsmsg').css('color', 'green').text(days + ' ' + ds + ', ' + hrsf + ' ' + hs + ', ' + min + ' ' + ms);
- }