您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a dropdown list
当前为
// ==UserScript== // @name WME UR responses types // @namespace @UR2T_Myriades // @description Add a dropdown list // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @icon data:image/png;base64,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 // @version 0.0a2 // @copyright 2014, Myriades // ==/UserScript== var UR2T = {}; UR2T.debug_level = 3; UR2T.urIsSelected = false; UR2T.answers = {}; UR2T.answers.UR = {}; // Incorrect junction UR2T.answers.UR[12] = {'name': 'Jonction incorrecte', 'objects': {}}; UR2T.answers.UR[12].objects[0] = {'question': 'Jonction Incorrecte', 'answer': 'Bonjour, vous avez signalé une jonction incorrecte sur votre parcours, pouvez-vous être plus précis afin que nous puissions traiter ce désagrément. Merci pour votre contribution à l\'amélioration de Waze.'}; // Global vars UR2T_UR_Selected = false; /* bootstrap, will call UR2T_init() */ function UR2T_bootstrap(){ UR2T_addLog(1, 'info', 'Init'); if (typeof(unsafeWindow) === "undefined"){ unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute('onclick', 'return window;'); return dummyElem.onclick(); }) (); } /* begin running the code! */ setTimeout(UR2T_init, 1000); } /* helper functions */ // function getElementsByClassName(classname, node) { // if(!node) node = document.getElementsByTagName("body")[0]; // var a = []; // var re = new RegExp('\\b' + classname + '\\b'); // var els = node.getElementsByTagName("*"); // for (var i=0,j=els.length; i<j; i++) // if (re.test(els[i].className)) a.push(els[i]); // return a; // } function getId(node){ if(node != '')return document.getElementById(node); return false; } function DOMDataFilter(obj){ return JSON.parse(JSON.stringify(obj)); } function getSelectedValue(node){ var t = getId(node); return t.options[t.selectedIndex].value; } function getSelectedText(node){ var t = getId(node); return t.options[t.selectedIndex].text; } function UR2T_addLog(UR2T_Level, UR2T_type, UR2T_text){ if(UR2T_Level <= UR2T.debug_level){ var HLaL_text = 'WME_UR2T_' + GM_info.script.version + ' : ' + UR2T_text; switch(UR2T_type){ case 'info': console.info(HLaL_text); break; case 'error': console.error(HLaL_text); break; default: console.log(HLaL_text); break; } if(typeof(arguments[3]) !== 'undefined'){ console.debug(HLaL_text); console.debug(arguments[3]); } } } function UR2T_init(){ // Waze object needed if(typeof(unsafeWindow.Waze) == 'undefined'){ // waze UR2T_addLog(1, 'error', 'unsafeWindow.Waze NOK', unsafeWindow.Waze); window.setTimeout(UR2T_init, 500); return; } UR2T_Waze = unsafeWindow.Waze; if(typeof(UR2T_Waze.model) == 'undefined'){ // waze.model UR2T_addLog(1, 'error', 'UR2T_Waze.model NOK', UR2T_Waze.model); window.setTimeout(UR2T_init, 500); return; } UR2T_Waze_model = UR2T_Waze.model; if(typeof(UR2T_Waze_model.mapUpdateRequests) == 'undefined'){ // waze.model.mapUpdateRequests UR2T_addLog(1, 'error', 'UR2T_Waze_model.mapUpdateRequests NOK', UR2T_Waze_model.mapUpdateRequests); window.setTimeout(UR2T_init, 500); return; } UR2T_model_mapUpdateRequests = UR2T_Waze_model.mapUpdateRequests; if(typeof(UR2T_Waze.updateRequestsControl) == 'undefined'){ // waze.updateRequestsControl UR2T_addLog(1, 'error', 'UR2T_Waze.updateRequestsControl NOK', UR2T_Waze.updateRequestsControl); window.setTimeout(UR2T_init, 500); return; } UR2T_updateRequestsControl = UR2T_Waze.updateRequestsControl; UR2T_addLog(1, 'info', 'GVars done'); lastURfid = null; UR2T_UR_Selected = null; // Periodic updates window.setInterval(UR2T_detect_UR_selected, 250); // pas d'event de sélection sur les UR :/ UR2T_addLog(1, 'info', 'Periodic uptdates done'); // Events UR2T_addLog(1, 'info', 'Events done'); // Init finished UR2T_addLog(1, 'info', 'Init done'); } function UR2T_detect_UR_selected(){ UR2T_currentRequest = UR2T_updateRequestsControl.currentRequest; // UR sélectionnée ou pas if(UR2T_currentRequest === null){ UR2T_UR_Selected = false; return; } // Fast update? var URfid = UR2T_currentRequest.fid; if(URfid != lastURfid){ lastURfid = URfid; UR2T_UR_Selected = false; } // UR déjà sélectionnée if(UR2T_UR_Selected === true)return; // Then wait for messages being visible. UR2T_UR_Selected = true; UR2T_Html(); } function UR2T_Html(){ if(typeof(document.getElementsByClassName('clearfix new-comment-form')[0]) === 'undefined'){ window.setTimeout(UR2T_Html, 250); return; } var UR2T_MainTree = document.getElementsByClassName('clearfix new-comment-form')[0]; var UR2T_insertBefore = UR2T_MainTree.getElementsByClassName('form-control new-comment-text')[0]; // Main container var UR2T_container = document.createElement('div'); UR2T_container.style.textAlign = 'center'; if(UR2T_MainTree.firstChild)UR2T_MainTree.insertBefore(UR2T_container, UR2T_insertBefore); // Content var UR2T_content = document.createElement('select'); UR2T_content.id = 'UR2T_msg_index'; UR2T_content.style.backgroundColor = 'red'; UR2T_container.appendChild(UR2T_content); // Populate the select var dummy = document.createElement('option'); dummy.text = 'Choisissez une réponse type'; dummy.style.backgroundColor = 'red'; UR2T_content.add(dummy); populateAnswers(UR2T_content); // events getId('UR2T_msg_index').onchange = AutoComment; } function AutoComment(){ var myTextArea = document.getElementsByClassName('form-control new-comment-text')[0]; var UR2T_msg_index = getId('UR2T_msg_index'); if(UR2T_msg_index.selectedIndex > 0){ var indexes = getSelectedValue('UR2T_msg_index').split('-'); myTextArea.value = UR2T.answers.UR[indexes[0]].objects[indexes[1]].answer; UR2T_msg_index.selectedIndex = 0; } } function populateAnswers(theSelect){ var attr = UR2T_currentRequest.attributes; var cat_name = UR2T.answers.UR[attr.type].name; var dummy = document.createElement('option'); dummy.text = UR2T.answers.UR[attr.type].name; dummy.disabled = true; dummy.style.backgroundColor = 'blue'; theSelect.add(dummy); var answers = UR2T.answers.UR[attr.type].objects; for(var answer in answers){ dummy = document.createElement('option'); dummy.value = attr.type + '-' + answer; dummy.text = UR2T.answers.UR[attr.type].objects[answer].question; theSelect.add(dummy); } } UR2T_bootstrap();