NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name auto-fill-onedigit // @namespace http://tampermonkey.net/ // @version 4.8 // @description like a boss // @author afr // @include /https:\/{2}onedigit.telkom.co.id\/tiket/ // @include /https:\/{2}onedigit.telkom.co.id\/tiket\/\S+/ // @icon https://www.google.com/s2/favicons?domain=co.id // @grant GM_xmlhttpRequest // @copyright 2021 // @license MIT // @updateURL https://openuserjs.org/meta/afr/auto-fill-onedigit.meta.js // ==/UserScript== (function () { "use strict"; // waitForKeyEements /*--- waitForKeyElements(): A utility function, for Greasemonkey scripts, that detects and handles AJAXed content. Usage example: waitForKeyElements ( "div.comments" , commentCallbackFunction ); //--- Page-specific function to do what we want when the node is found. function commentCallbackFunction (jNode) { jNode.text ("This comment changed by waitForKeyElements()."); } IMPORTANT: This function requires your script to have loaded jQuery. */ function waitForKeyElements( selectorTxt, /* Required: The jQuery selector string that specifies the desired element(s). */ actionFunction, /* Required: The code to run when elements are found. It is passed a jNode to the matched element. */ bWaitOnce, /* Optional: If false, will continue to scan for new elements even after the first match is found. */ iframeSelector /* Optional: If set, identifies the iframe to search. */ ) { var targetNodes, btargetsFound; if (typeof iframeSelector == "undefined") targetNodes = $(selectorTxt); else targetNodes = $(iframeSelector).contents().find(selectorTxt); if (targetNodes && targetNodes.length > 0) { btargetsFound = true; /*--- Found target node(s). Go through each and act if they are new. */ targetNodes.each(function () { var jThis = $(this); var alreadyFound = jThis.data("alreadyFound") || false; if (!alreadyFound) { //--- Call the payload function. var cancelFound = actionFunction(jThis); if (cancelFound) btargetsFound = false; else jThis.data("alreadyFound", true); } }); } else { btargetsFound = false; } //--- Get the timer-control variable for this selector. var controlObj = waitForKeyElements.controlObj || {}; var controlKey = selectorTxt.replace(/[^\w]/g, "_"); var timeControl = controlObj[controlKey]; //--- Now set or clear the timer as appropriate. if (btargetsFound && bWaitOnce && timeControl) { //--- The only condition where we need to clear the timer. clearInterval(timeControl); delete controlObj[controlKey]; } else { //--- Set a timer, if needed. if (!timeControl) { timeControl = setInterval(function () { waitForKeyElements( selectorTxt, actionFunction, bWaitOnce, iframeSelector ); }, 300); controlObj[controlKey] = timeControl; } } waitForKeyElements.controlObj = controlObj; } //'use strict'; function autoFill(jNode) { jNode.on("paste", () => { function setImpact(hl, rawImpact) { let metro = /metro/i; let radioip = /radioip/i; let metrolite = /lite/i; if (metrolite.test(hl)) { return ""; } else if (radioip.test(hl) || metro.test(hl)) { return `Jumlah Site:${rawImpact.length} 2G:${rawImpact.length}NE 3G:${rawImpact.length}NE 4G:${rawImpact.length}NE Detail Site: ${rawImpact}`; } else { return rawImpact; } } function totalImpact(hl, impact) { let metro = /metro/i; let radioip = /radioip/i; let metrolite = /lite/i; if (metrolite.test(hl)) { return ""; } else if (radioip.test(hl) || metro.test(hl)) { return impact.length; } else { return impact[0].match(/\d+/i); } } setTimeout(() => { const query = document.querySelector("#TTiketcase_faultnb").value; const details = { method: "GET", url: `https://autofill-2u8b.onrender.com/list?id=${query}`, // url: `http://localhost:3000/list?id=${query}`, // url: `https://autofill.faizruzain.site/list?id=${query}`, responseType: "json", onload: (res) => { const data = JSON.parse(res.responseText); const radioip = /radioip/i; const metro = /metro/i; const sld = /sld/i; const radiolh = /radiolh/i; const iptransit = /iptransit/i; const backhaul = /BACKHAUL/i; const idr = /idr/i; const down = /down/i; const quality = /quality/i; const proaktif = /PROAKTIF|PREVENTIVE/i; const metrolite = /lite/i; const siteID = /\w{3}\d{3}/; const nogaransi = /NOGARANSI/; const gamas = /([7-9]|[1-9]\d+)NODEB/g; const ceragon = /ceragon/i; const description = data.ticketHL; console.log(data.impact); // const rawImpact = data.impact // const impact = `Jumlah Site:${rawImpact.length} // 2G:${rawImpact.length}NE // 3G:${rawImpact.length}NE // 4G:${rawImpact.length}NE // Detail Site: // ${rawImpact}` document.querySelector("#TTiketcase_description").value = data.ticketHL; document.querySelector("#TTiketcase_dateOpen").value = data.dateOpen; if (radioip.test(description)) { document.querySelector("#TTiketcase_starttime").value = data.dateOpen; } // if (!sld.test(description) && !radiolh.test(description) && !iptransit.test(description) && !backhaul.test(description)) { // document.querySelector('#TTiketcase_impact').value = impact // document.querySelector('#TTiketcase_jmlservice').value = rawImpact.length // } document.querySelector("#TTiketcase_impact").value = data.impact; //setImpact(description, data.impact) document.querySelector("#TTiketcase_jmlservice").value = data.impact[0].match(/\d+/i); //totalImpact(description, data.impact) document.querySelector("#TTiketcase_noRemedy").value = data.remedy; document.querySelector("#TTiketcase_siteA").value = backhaul.test( description ) ? "" : data.datek; if (radioip.test(description)) { document.querySelector( "#TTiketcase_actGroupGgn" ).options[1].selected = true; document.querySelector( "#TTiketcase_productName" ).options[3].selected = true; document.querySelector("#TTiketcase_siteId").value = description.match(siteID); if ( parseInt( document.querySelector("#TTiketcase_jmlservice").value ) >= 7 ) { document.querySelector( "#TTiketcase_ownerGgn" ).options[2].selected = true; } else if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (proaktif.test(description) || data.remedy.length === 0) { document.querySelector("#TTiketcase_ownerGgn").options[5].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } if (nogaransi.test(description)) { document.querySelector( "#TTiketcase_garansi" ).options[2].selected = true; } else if (!nogaransi.test(description)) { document.querySelector( "#TTiketcase_garansi" ).options[1].selected = true; } } else if (metro.test(description)) { metrolite.test(description) ? (document.querySelector( "#TTiketcase_actGroupGgn" ).options[5].selected = true) : (document.querySelector( "#TTiketcase_actGroupGgn" ).options[3].selected = true); metrolite.test(description) ? (document.querySelector( "#TTiketcase_productName" ).options[4].selected = true) : (document.querySelector( "#TTiketcase_productName" ).options[2].selected = true); document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; metrolite.test(description) ? "" : (document.querySelector("#TTiketcase_siteId").value = description.match(siteID)); if ( description.match(gamas) || parseInt( document.querySelector("#TTiketcase_jmlservice").value ) >= 7 ) { if (!quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[2].selected = true; document.querySelector("#TTiketcase_starttime").value = data.dateOpen; } else { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } } else if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } else if (sld.test(description) && !ceragon.test(description)) { let pattSiteA = /\d+STM\d+.+TO|\d+X\d+[A-Z].+TO|\d+[A-Z]+.+TO|STM\d+.+TO/gi; let pattSiteB = /TO.+VIA|TO.+HIGHCAP|TO.+LOWCAP|TO.+DOWN/gi; let siteA = description.match(pattSiteA); let siteB = description.match(pattSiteB); siteA = siteA[0].replace( /\d+STM\d+_|\d+[A-Z]+_|\d+[A-Z]+|STM\d+_|_TO/gi, "" ); siteB = siteB[0].replace(/TO_|_VIA|_HIGHCAP|_LOWCAP/gi, ""); document.querySelector("#TTiketcase_siteA").value = siteA; document.querySelector("#TTiketcase_siteB").value = siteB; document.querySelector( "#TTiketcase_actGroupGgn" ).options[4].selected = true; document.querySelector( "#TTiketcase_productName" ).options[1].selected = true; document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } else if (radiolh.test(description) || ceragon.test(description)) { function cap(hl) { let capPatt = /\d+[A-Z]+\d+[A-Z]+|\d+[A-Z]+/i; let cap = hl.match(capPatt); if (cap) { cap = cap[0].replace(/g+|\d+x|mb|m/gi, ""); if (cap.length === 1) { return cap + "000"; } else { return cap; } } else { return null; } } let pattSiteA = /RADIOLH.+_TO_|\d+[a-z]+\d+[a-z]+.+TO_/gi; let pattSiteB = /TO_.+(VIA|DOWN)/gi; let siteA = description.match(pattSiteA); let siteB = description.match(pattSiteB); siteA = siteA[0].replace( /RADIOLH_\d+[A-Z]+\d+[A-Z]+_|\d+[A-Z]+_|RADIOLH_|\d+[a-z]+\d+[a-z]+.|_TO_/gi, "" ); siteB = siteB[0].replace(/TO_|_DOWN|_VIA|_LOWCAP|_CERAGON/gi, ""); document.querySelector("#TTiketcase_siteA").value = siteA; document.querySelector("#TTiketcase_siteB").value = siteB; document.querySelector( "#TTiketcase_actGroupGgn" ).options[2].selected = true; document.querySelector( "#TTiketcase_productName" ).options[1].selected = true; document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; document.querySelector("#TTiketcase_capacity").value = cap(description); if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } else if (iptransit.test(description)) { let pattSiteA = /(\d+[a-z]+\d+[a-z]+|\d+[a-z]+).+VIA/i; let siteA = description.match(pattSiteA); siteA = siteA[0].replace( /(\d+[a-z]+\d+[a-z]+.|\d+[a-z]+.)|(_VIA|_TO)/gi, "" ); let pattSiteB = /([a-z]+|[a-z]+\d+)-[a-z]+\d+-[a-z]+-[a-z]+/gi; let siteB = description.match(pattSiteB); document.querySelector("#TTiketcase_siteA").value = siteA; document.querySelector("#TTiketcase_siteB").value = siteB; document.querySelector( "#TTiketcase_actGroupGgn" ).options[4].selected = true; document.querySelector( "#TTiketcase_productName" ).options[5].selected = true; document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } else if (backhaul.test(description)) { let metroPatt = /([A-Z]+|[A-Z]+\d+)-D\d+-[A-Z]+/gi; let gponPatt = /[A-Z]+\d+-D\d+-[A-Z]+-(\d+[A-Z]+|\d+)/gi; let pattSiteA = /\d+[a-z]+\d+[a-z]+.+(TO|VIA)/i; let siteA = description.match(pattSiteA); siteA = siteA[0].replace(/\d+[a-z]+\d+[a-z]+_|_VIA|_TO/gi, ""); let siteB = description.match(gponPatt) === null ? description.match(metroPatt) : description.match(gponPatt); let pattCap = /\d+g/i; let cap = description.match(pattCap); cap = cap[0].replace(/g/i, "") + "000"; document.querySelector("#TTiketcase_siteA").value = siteA; document.querySelector("#TTiketcase_siteB").value = siteB; document.querySelector( "#TTiketcase_actGroupGgn" ).options[3].selected = true; document.querySelector( "#TTiketcase_productName" ).options[2].selected = true; document.querySelector("#TTiketcase_capacity").value = cap; document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } else if (idr.test(description)) { console.log("IDR"); let pattSiteA = /\d+[a-z]+\d+[a-z]+.+TO/i; let siteA = description.match(pattSiteA); siteA = siteA[0].replace(/\d+[a-z]+\d+[a-z]+_|_TO/gi, ""); let pattSiteB = /TO.+(VIA|LOWCAP|HIGHCAP)/i; let siteB = description.match(pattSiteB); siteB = siteB[0].replace(/TO_|_VIA|_LOWCAP/gi, ""); let capPatt = /\d+[a-z]+\d+[a-z]+/i; let cap = description.match(capPatt); cap = cap[0].match(/\d{2,}/gi); document.querySelector("#TTiketcase_siteA").value = siteA; document.querySelector("#TTiketcase_siteB").value = siteB; document.querySelector("#TTiketcase_capacity").value = cap; document.querySelector( "#TTiketcase_actGroupGgn" ).selectedIndex = 5; document.querySelector( "#TTiketcase_productName" ).selectedIndex = 1; document.querySelector("#TTiketcase_ownerGgn").selectedIndex = 8; document.querySelector( "#TTiketcase_keterangan" ).value = `${data.dateOpen} On koordinasi dengan rekan MSO dan tim terkait.`; if (down.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[8].selected = true; } else if (quality.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[4].selected = true; } else if (proaktif.test(description)) { document.querySelector( "#TTiketcase_ownerGgn" ).options[5].selected = true; } } if ( siteID.test(description) && !sld.test(description) && !radiolh.test(description) && !iptransit.test(description) && !backhaul.test(description) ) { // next step -> siteID $(".search-button.btn.btn-info")[0].click(); setTimeout(() => { $(".filter-container")[21].childNodes[0].value = description.match(siteID); $(".filter-container")[21].childNodes[0].focus(); $(".filter-container")[21].childNodes[0].select(); }, 700); } }, }; GM_xmlhttpRequest(details); }, 100); }); } function paste(jNode) { jNode.on("paste", () => { const radioip = document.querySelector("#TTiketcase_productName").options .selectedIndex; const gamas = document.querySelector("#TTiketcase_ownerGgn").options .selectedIndex; if (radioip === 3 || gamas === 2) { setTimeout(() => { let close = document.querySelector("#TTiketcase_dateClose").value; document.querySelector("#TTiketcase_endtime").value = close; }, 100); } }); } function impactNum(jNode) { jNode.on("paste", () => { setTimeout(() => { const val = document.querySelector("#TTiketcase_impact").value; const impactNum = val.match(/\d+/); document.querySelector("#TTiketcase_jmlservice").value = impactNum; }, 100); }); } function close(jNode) { jNode.on("change", (event) => { if (event.target.value === "CLOSED") { console.log(event.target.value); const query = document.querySelector("#TTiketcase_faultnb").value; const details = { method: "GET", url: `https://autofill-2u8b.onrender.com/list?id=${query}`, // url: `http://localhost:3000/list?id=${query}`, // url: `https://autofill.faizruzain.site/list?id=${query}`, responseType: "json", onload: (res) => { const data = JSON.parse(res.responseText); if (data.message === "no data found") { return; } //const array = data.actualSolution.split("-") //const actualSolution = array[2].replace(/\W/, "") let initRFO = document.querySelector( "#TTiketcase_keterangan" ).value; const dateOpen = document.querySelector( "#TTiketcase_dateOpen" ).value; const optionsObj = document.querySelector( "#TTiketcase_rootcause" ).options; $("#TTiketcase_ttrRec").val(data.ttr_customer); for (const property in optionsObj) { if (optionsObj[property].value === data.incidentDomain) { document.querySelector("a.select2-choice span").innerText = data.incidentDomain; document.querySelector( "#TTiketcase_rootcause" ).options.selectedIndex = property; } } if ( document.querySelector("#TTiketcase_actGroupGgn") .selectedIndex === 1 ) { // radioip document.querySelector("#TTiketcase_dateClose").value = data.dateClosed; document.querySelector("#TTiketcase_starttime").value = dateOpen; document.querySelector("#TTiketcase_endtime").value = data.dateClosed; if ( document.querySelector("#TTiketcase_keterangan").value .length === 0 ) { document.querySelector("#TTiketcase_keterangan").value = data.RFO_details; } if ( document.querySelector("#TTiketcase_improve").value.length === 0 ) { document.querySelector("#TTiketcase_improve").value = data.RFO_details; } } else if ( document.querySelector("#TTiketcase_ownerGgn").options[2] .selected || document.querySelector("#TTiketcase_ownerGgn").options[1].selected ) { // gamas or force major document.querySelector("#TTiketcase_dateClose").value = data.dateClosed; document.querySelector("#TTiketcase_starttime").value = dateOpen; document.querySelector("#TTiketcase_endtime").value = data.dateClosed; if ( document.querySelector("#TTiketcase_improve").value.length === 0 ) { document.querySelector("#TTiketcase_improve").value = data.RFO_details; } document.querySelector("#TTiketcase_keterangan").value = data.RFO_details + "\n" + initRFO; } else { document.querySelector("#TTiketcase_dateClose").value = data.dateClosed; document.querySelector("#TTiketcase_starttime").value = dateOpen; document.querySelector("#TTiketcase_endtime").value = data.dateClosed; document.querySelector("#TTiketcase_keterangan").value = data.RFO_details + "\n" + initRFO; document.querySelector("#TTiketcase_improve").value = data.RFO_details; } document .querySelectorAll("a.search-button.btn.btn-info")[1] .click(); setTimeout(() => { document .querySelectorAll("div.modal-body")[1] .querySelectorAll("input")[1].value = ""; //rfo(actualSolution) document .querySelectorAll("div.modal-body")[1] .querySelectorAll("input")[1] .focus(); document .querySelectorAll("div.modal-body")[1] .querySelectorAll("input")[1] .select(); }, 1000); }, }; GM_xmlhttpRequest(details); } }); } function updateWorkLogs(jNode) { var finalData = ``; jNode.after("<button type='button' style='margin-left: 10px;' class='button-value btn btn-success' id='update-wl'>update-wl</button>"); $("#update-wl").on("click", () => { const query = $("#TTiketcase_faultnb").val(); const details = { method: "GET", url: `https://autofill-2u8b.onrender.com/update-worklogs?ticketId=${query}`, // url: `http://localhost:3000/update-worklogs?ticketId=${query}`, // url: `https://autofill.faizruzain.site/update-worklogs?ticketId=${query}`, responseType: "json", onload: res => { console.log(res.response); const data = res.response.worklogs; if (data) { for (var i = 0; i < data.length; i++) { finalData += `${data[i]}\n`; } jNode.val(finalData); } } } GM_xmlhttpRequest(details); }); } waitForKeyElements("#TTiketcase_faultnb", autoFill); waitForKeyElements("#TTiketcase_dateClose", paste); waitForKeyElements("#TTiketcase_impact", impactNum); waitForKeyElements("#TTiketcase_statusTiket", close); waitForKeyElements("#TTiketcase_keterangan", updateWorkLogs); })();