您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auxiliar Testes e Debugs
// ==UserScript== // @name Cobmais - Util // @namespace http://app.cobmais.com.br/ // @version 1.0.14 // @description Auxiliar Testes e Debugs // @author Rodrigo Mescua // @match http*://*.cobmais.com.br/*/telecobranca* // @match http*://localhost:*/telecobranca* // @match http*://172.36.1.4/*/telecobranca* // @match http*://192.36.1.4/*/telecobranca* // @match http*://app-hml-cobmais.brazilsouth.cloudapp.azure.com/*/telecobranca* // @icon https://raw.githubusercontent.com/romesc/cobmais-utils/master/favicon.ico // @require http://code.jquery.com/jquery-3.4.1.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js // @grant GM_addStyle // @grant GM_setClipboard // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true) // eslint-disable-line no-undef waitForKeyElements ("div.ev-item-inclusao", evcFunction); waitForKeyElements ("div.ct-item", conFunction); waitForKeyElements (".ct-sel-neg", negFunction); waitForKeyElements ("span.btneventofinal", testeCopy); waitForKeyElements ("span.btncontratofinal", testeConCopy); waitForKeyElements ("span.btnnegociacaofinal", testeNegCopy); function evcFunction (jNode) { var eventos = document.querySelectorAll('div.ev-item-inclusao'); var teste = ''; for ( var i = 0; i < eventos.length; i++ ) { if (eventos[i].style.display === "none") { continue; } var idEvento = eventos[i].parentElement.parentElement.id.replace('ev-item-',''); teste = ' <span id="btnEv' + idEvento + '" title="Clique para Copiar o ID Evento" class="btn btnevento badge badge-primary" style="cursor: pointer;" data-clipboard-text="' + idEvento + '">' + idEvento + '</span>'; if (i == eventos.length - 1) { teste = ' <span id="btnEv' + idEvento + '" title="Clique para Copiar o ID Evento" class="btn btnevento btneventofinal badge badge-primary" style="cursor: pointer;" data-clipboard-text="' + idEvento + '">' + idEvento + '</span>'; } if (eventos[i].innerHTML.indexOf(teste) == -1){ eventos[i].insertAdjacentHTML('beforeEnd',teste); } } } function conFunction (jNode) { var contratos = document.querySelectorAll('span.ct-item-clique'); var teste = ''; for ( var j = 0; j < contratos.length; j++ ) { var idContrato = contratos[j].parentElement.dataset.ctt; teste = '\t<span id="btnCt' + idContrato + '" title="Clique para Copiar o ID Contrato" class="btn btncontrato badge badge-primary" style="cursor: pointer;" data-clipboard-text="' + idContrato + '">' + idContrato + '</span>'; if (j == contratos.length - 1) { teste = '\t<span id="btnCt' + idContrato + '" title="Clique para Copiar o ID Contrato" class="btn btncontrato btncontratofinal badge badge-primary" style="cursor: pointer;" data-clipboard-text="' + idContrato + '">' + idContrato + '</span>'; } if (contratos[j].innerHTML.indexOf(teste) == -1){ contratos[j].innerHTML = contratos[j].innerHTML.concat(teste); } } } function testeCopy (teste) { var btns1 = document.querySelectorAll('span.btnevento'); var clipboard = new ClipboardJS(btns1); clipboard.on('success', function(e) { toastr.success('ID Evento copiado para a Área de Transferência'); }); } function testeConCopy (teste) { var btns2 = document.querySelectorAll('span.btncontrato'); var clipboard = new ClipboardJS(btns2); clipboard.on('success', function(e) { toastr.success('ID Contrato copiado para a Área de Transferência'); }); } function negFunction (jNode) { var negs = document.querySelectorAll('.ct-neg'); var teste = ''; for (var j = 0; j < negs.length; j++ ) { if (negs[j].lastElementChild.classList.contains("btnnegociacao")){ negs[j].lastElementChild.remove(); } var idNeg = negs[j].lastElementChild.firstElementChild.id.replace('ppvNegociacao', ''); teste = '\t<span id="btnCopiarNeg' + idNeg + '" title="Clique para copiar o ID da Negociação selecionada" class="btn btnnegociacao badge badge-primary" style="cursor: pointer;">Copiar ID Neg</span>'; if (negs[j].innerHTML.indexOf(teste) == -1){ negs[j].insertAdjacentHTML('beforeEnd', teste); } document.getElementById("btnCopiarNeg" + idNeg).addEventListener ( "click", testeNegCopy, false ); } } function testeNegCopy (teste) { var $combo = document.getElementById("selNegociacao" + teste.target.id.replace('btnCopiarNeg','')); GM_setClipboard($combo.value); toastr.success('ID Negociação copiado para a Área de Transferência'); } /*--- 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, actionFunction, bWaitOnce, iframeSelector) { 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; }