您需要先安装一个扩展,例如 篡改猴、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.2.0 // @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'; var isBeta = (location.hostname.split('.')).shift() === 'beta'; 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="text" 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="text" 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>' ); if (!isBeta) { $('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 expInXDays = $('#expireinXdays').val(); var v = Number(expInXDays); if (expInXDays === '') { $('#RTCimprovXdaysmsg').text(''); return; } else if (v === 0 || !Number.isInteger(v) || isNaN(v)) { $('#RTCimprovXdaysmsg').text(ls.notint); return; } if (v < 0) { $('#RTCimprovXdaysmsg').text(ls.neg); return; } $('#RTCimprovXdaysmsg').text(''); newdate.setDate(newdate.getDate() + v); if (isBeta) { $('input[name="closure_endDate"]').data('daterangepicker').setStartDate(newdate); } else { $('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); if (isBeta) { $('input[name="closure_endDate"]').data('daterangepicker').setStartDate(cur); } else { $('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); }