1class wf_abmc{constructor(e,o="/enrutador.php?proceso=",a={}){this.modulo=e,this.enrutador=o,this.tabla_json=a.tabla_json||e+"_tabla_json"}_gestionar_error(e){eliminar_espera(),wf_alerta("error","¡Error!","Producido error de clase"),console.error("Error:",e)}async ejecutar_rellamada(e,...o){if("function"==typeof e)return e(...o)}async abrir_ventana(e,a=null,t=null){e.preventDefault();var o=performance.now(),a=(a?String(a):this.modulo+"_load").replace(/^[.#]/,"");console.groupCollapsed("ðª wf_abmc.abrir_ventana() â "+a),console.log("Evento recibido:",e),console.log("Target original:",e.target),console.log("Módulo:",this.modulo),console.log("Método normalizado:",a),console.log("Enrutador:",this.enrutador),console.log("Tabla JSON inicial:",this.tabla_json),console.log("Rellamada:",t),mostrar_espera();try{var r=e.target.closest("."+a);if(console.log("Selector buscado:","."+a),console.log("Elemento encontrado:",r),r){console.log("Dataset completo:",{...r.dataset}),r?.dataset?.cont&&r.dataset.cont!==this.tabla_json&&(console.warn("Cambio de tabla_json por data-cont."),console.log("tabla_json anterior:",this.tabla_json),console.log("tabla_json nueva:",r.dataset.cont),this.tabla_json=r.dataset.cont);var n=parseInt(r.dataset?.id??0,10),l=datas(r.dataset??{}),s=""+this.enrutador+a+l,c=obtener_ids_seleccionados(this.tabla_json);console.log("ID detectado:",n),console.log("Dataset convertido con datas():",l),console.log("URL final:",s),console.log("Tabla JSON usada para selección:",this.tabla_json),console.log("IDs Tabulator seleccionados:",c);let o=new URLSearchParams;c.forEach(e=>o.append("ids_tabulator[]",e)),console.log("POST enviado como URLSearchParams:",o.toString());var i=await fetch(s,{method:"POST",cache:"no-cache",body:o});if(console.log("Respuesta fetch completa:",i),console.log("HTTP status:",i.status,i.statusText),console.log("Content-Type:",i.headers.get("content-type")),!i.ok)throw new Error("Error respuesta servidor: "+s);var d,u,_,g,m,h=await i.json();console.log("JSON recibido:",h),console.log("data.code:",h?.code),console.log("data.str:",h?.str),console.log("data.html length:",h?.html?h.html.length:0),h?.d&&(console.groupCollapsed("ð§¾ Depuración servidor data.d"),console.log(h.d),console.groupEnd()),1===h.code?(d=document.querySelector("#"+a),console.log(`Modal existente #${a}:`,d),d?(console.log("Modo actualización: ventana existente."),(u=document.createElement("div")).innerHTML=h.html,_=u.querySelector("div.contenedor_principal"),console.log("Nuevo contenedor_principal recibido:",_),_?(g=d.querySelector("div.contenedor_principal"),console.log("Contenedor_principal actual:",g),g?(g.innerHTML=_.innerHTML,console.log(`Contenido actualizado dentro de #${a}.`)):console.warn(`Existe modal #${a}, pero no tiene div.contenedor_principal actual.`)):console.warn("La respuesta no contiene div.contenedor_principal. No se actualiza innerHTML.")):(console.log("Modo creación: se inserta ventana nueva en body."),document.body.insertAdjacentHTML("beforeend",h.html),console.log(`HTML insertado. Buscando ahora #${a}:`,document.querySelector("#"+a)),ventana_wf("#"+a),console.log(`ventana_wf ejecutado sobre #${a}.`)),console.log("Inicializando combo_buscador en:",`#${a} form select.combo_buscador`),new combo_buscador(`#${a} form select.combo_buscador`),m=$(`#${a} textarea.textareafullscreen`).length,console.log("Textareas fullscreen encontrados:",m),m&&$(`#${a} textarea.textareafullscreen`).textareafullscreen({overlay:!0,maxWidth:"99%",maxHeight:"99%"}),console.log("Inicializando TinyMCE dentro de #"+a),editor_tinymce("iniciar","","#"+a),console.log("Inicializando CodeMirror dentro de #"+a),editor_codemirror("iniciar","","#"+a),wf_abmc.restaurar_lengueta_activa(document.querySelector("#"+a),this.modulo,a),console.log("Ejecutando rellamada con:",{rellamada:t,id:n,dataset_string:l,elemento:r}),this.ejecutar_rellamada(t,n,l,r),console.log("Rellamada ejecutada.")):(console.warn("Respuesta con code distinto de 1."),wf_alerta("error","¡Error!",h.str))}else console.warn(`cargar_formulario: no se ha encontrado .${a} en la ruta del evento.`)}catch(e){console.error("Error capturado en abrir_ventana():",e),this._gestionar_error(e)}finally{eliminar_espera();e=(performance.now()-o).toFixed(2);console.log("Loader eliminado."),console.log(`Tiempo total abrir_ventana(): ${e} ms`),console.groupEnd()}}async abrir_ventana_old(e,a=null,t=null){e.preventDefault(),mostrar_espera();a=(a?String(a):this.modulo+"_load").replace(/^[.#]/,""),e=e.target.closest("."+a);if(e){e?.dataset?.cont&&e.dataset.cont!==this.tabla_json&&(this.tabla_json=e.dataset.cont);var r=parseInt(e.dataset?.id??0,10),n=datas(e.dataset??{}),l=""+this.enrutador+a+n,s=obtener_ids_seleccionados(this.tabla_json);let o=new URLSearchParams;
1s.forEach(e=>o.append("ids_tabulator[]",e));try{var c=await fetch(l,{method:"POST",cache:"no-cache",body:o});if(!c.ok)throw new Error("Error respuesta servidor: "+l);var i,d,u,_,g=await c.json();1===g.code?((i=document.querySelector("#"+a))?((d=document.createElement("div")).innerHTML=g.html,(u=d.querySelector("div.contenedor_principal"))&&(_=i.querySelector("div.contenedor_principal"))&&(_.innerHTML=u.innerHTML)):(document.body.insertAdjacentHTML("beforeend",g.html),ventana_wf("#"+a)),new combo_buscador(`#${a} form select.combo_buscador`),$(`#${a} textarea.textareafullscreen`).length&&$(`#${a} textarea.textareafullscreen`).textareafullscreen({overlay:!0,maxWidth:"99%",maxHeight:"99%"}),editor_tinymce("iniciar","","#"+a),editor_codemirror("iniciar","","#"+a),wf_abmc.restaurar_lengueta_activa(document.querySelector("#"+a),this.modulo,a),this.ejecutar_rellamada(t,r,n,e)):wf_alerta("error","¡Error!",g.str),console.log(g.d)}catch(e){this._gestionar_error(e)}finally{eliminar_espera()}}else console.warn(`cargar_formulario: no se ha encontrado .${a} en la ruta del evento.`),eliminar_espera()}async ejecutar_filtro(e,o=null,a=1,t=0){e.preventDefault();var r,n,l,e=e.target;e.matches("form")&&(mostrar_espera(),r=e.dataset.en,n="&"+new URLSearchParams(new FormData(e)).toString(),"contiguo"===r&&(a+=`Se ha solicitado pintar resultados en TABLE continuo al formulario. 2`,e.nextElementSibling&&"div"===e.nextElementSibling.tagName.toLowerCase()||((l=document.createElement("div")).className="tabulator",e.parentNode.insertBefore(l,e.nextSibling)),a+=`En.......: ${r} 3 4`),ventana_wf(`#${this.modulo}_filtro`,!0),eliminar_espera(),pintar_tabla_json(""+this.enrutador+this.tabla_json,"#"+this.tabla_json,a,t,n),"function"==typeof o&&o({form:e,en:r,data:n,d:a,dc:t}),console.log(a))}async ejecutar_metodo(e,o=null,t=null,r={},n=!1){if(e.preventDefault(),await confirmar("¿Está seguro de que desea continuar?")){mostrar_espera();var o=(o?String(o):this.modulo+"_del").replace(/^[.#]/,""),e=e.target.closest("."+o),l=(e?.dataset?.cont&&e.dataset.cont!==this.tabla_json&&(this.tabla_json=e.dataset.cont),obtener_ids_seleccionados(this.tabla_json)),s=datas(e?.dataset??{}),o=""+this.enrutador+o+s;let a=new URLSearchParams;l.forEach(e=>a.append("ids[]",e)),r&&"object"==typeof r&&Object.entries(r).forEach(([e,o])=>{null!=o&&a.append(e,o)}),n&&(l=await this.wf_huella_cliente(),a.append("huella",l));try{var c=await fetch(o,{method:"POST",cache:"no-cache",body:a});if(!c.ok)throw new Error("Error respuesta servidor: "+o);var i=await c.json();eliminar_espera(),1===i.code?(wf_alerta("ok","¡Hecho!",i.str,500),await this.ejecutar_rellamada(t,s,e)):wf_alerta("error","¡Error!",i.str),console.log(i.d)}catch(e){this._gestionar_error(e)}}}static lenguetas_raiz(e,o=null){return e.closest?.(".contenedor_principal")||o?.closest?.(".contenedor_principal")||e.closest?.(".modal-content")||e.parentElement||document}static lenguetas_claves(e,o=null,a=""){var t=[],r=e.querySelector?.("input[name='id']"),r=r&&parseInt(r.value)||0,o=e.dataset?.wfLenguetasClave||o?.dataset?.wfLenguetasClave||e.dataset?.wfInstancia||o?.dataset?.wfInstancia||e.dataset?.instancia||o?.dataset?.instancia||"",n=e.getAttribute?.("id")||"",e=Array.from(e.classList||[]).filter(e=>e.includes("_form")||e.includes(a)).join(".");return o&&t.push("wf:"+o),n&&0<r&&t.push(`id:${n}:`+r),e&&0<r&&t.push(`clase:${e}:`+r),n&&t.push("id:"+n),e&&t.push("clase:"+e),a&&0<r&&t.push(`mod:${a}:`+r),[...new Set(t)]}static guardar_lengueta_activa(e,o=null,a="",t=""){var r=wf_abmc.lenguetas_raiz(e,o);let n=r.querySelector('.nav-tabs .nav-link.active[data-toggle="tab"][href]'),l=e.closest?.(".tab-pane");if(!(n=!n&&l?.id?Array.from(r.querySelectorAll('.nav-tabs .nav-link[data-toggle="tab"][href]')).find(e=>e.getAttribute("href")==="#"+l.id):n))return null;r=Array.from(n.closest(".nav-tabs")?.querySelectorAll('.nav-link[data-toggle="tab"][href]')||[]).indexOf(n);if(r<0)return null;let s={href:n.getAttribute("href")||"",indice:r,texto:(n.textContent||"").trim(),modulo:a,clase:t};return window.wf_lenguetas_activas=window.wf_lenguetas_activas||{}
4,wf_abmc.lenguetas_claves(e,o,a).forEach(e=>window.wf_lenguetas_activas[e]=s),a&&t&&(window.wf_lenguetas_activas[`recarga:${a}:`+t]=s),s}static restaurar_lengueta_activa(o=document,a="",t=""){if(window.wf_lenguetas_activas){o=o||document;let e=o.matches?.("form")?[o]:Array.from(o.querySelectorAll("form"));for(const n of e=e.length?e:[o]){let o=null;for(const l of wf_abmc.lenguetas_claves(n,n,a))if(window.wf_lenguetas_activas[l]){o=window.wf_lenguetas_activas[l];break}if(o=!o&&a&&t?window.wf_lenguetas_activas[`recarga:${a}:`+t]:o){var r=wf_abmc.lenguetas_raiz(n,n),r=Array.from(r.querySelectorAll('.nav-tabs .nav-link[data-toggle="tab"][href]')),r=r.find(e=>e.getAttribute("href")===o.href)||r[o.indice]||r.find(e=>(e.textContent||"").trim()===o.texto);if(r)return window.jQuery?.fn?.tab?jQuery(r).tab("show"):r.click(),a&&t&&delete window.wf_lenguetas_activas[`recarga:${a}:`+t],!0}}}return!1}async guardar_formulario(e,t=null,r=null,n=!1,l=null){e.preventDefault();e=e.target;if(e.matches("form")){t=(t?String(t):this.modulo+"_save").replace(/^[.#]/,"");let o=e.closest(`#${this.modulo}_form`)||e;var s=e.querySelector("input[name='id']"),s=s&&parseInt(s.value)||0,l=(l?String(l):this.modulo+"_load").replace(/^[.#]/,"");let a=datas(o.dataset);var t=""+this.enrutador+t+a,c=(wf_abmc.guardar_lengueta_activa(e,o,this.modulo,l),e.dataset?.cont||o.dataset?.cont||this.tabla_json);try{editor_tinymce("sincronizar","",o)}catch(e){}try{editor_codemirror("sincronizar","",o)}catch(e){}var i=crear_callback();i.add(e=>this.ejecutar_rellamada(r,e,a,o));const m=null!==e.querySelector('input[type="file"]')?new FormData(e):new URLSearchParams(new FormData(e));var d=obtener_ids_seleccionados(c);console.log("guardar_formulario ids_tabulator",{cont_tabulator:c,ids_tabulator:d,tabla_json_clase:this.tabla_json,form:e,elemento:o}),Array.isArray(d)&&0<d.length&&d.forEach(e=>{m.append("ids[]",e)}),n&&(c=await this.wf_huella_cliente(),m.append("huella",c)),mostrar_espera();try{var u=await fetch(t,{method:"POST",body:m,cache:"no-cache"});if(!u.ok)throw new Error("Error respuesta servidor: "+t);var _,g=await u.json();eliminar_espera(),1===g.code?(wf_alerta("ok","¡Hecho!",g.str,500),i.fire(s),_=wf_abmc.r_a_datas(g),"no_recargar"!==l&&lanzar_y_borrar(l,_.keys,_.values)):wf_alerta("error","¡Error!",g.str),console.log(g.d)}catch(e){this._gestionar_error(e)}}}async wf_huella_cliente(){var e=await this.wf_geo_posicion(),e={geo_lat:e.lat,geo_lng:e.lng,geo_acc:e.acc,geo_ts:e.ts,geo_err:e.err,tz:Intl.DateTimeFormat().resolvedOptions().timeZone,hora_cli:(new Date).toISOString(),ua:navigator.userAgent,lang:navigator.language,langs:(navigator.languages||[]).join(","),movil:/Mobi|Android|iPhone/i.test(navigator.userAgent)?1:0,screen:screen.width+`x${screen.height}@`+(window.devicePixelRatio||1),conn:navigator.connection?.effectiveType||"",rtt:navigator.connection?.rtt||""};return this.wf_huella_constructor(e)}wf_huella_constructor(e={}){let a="";return Object.entries(e).forEach(([e,o])=>{null!=o&&""!==o&&(o=String(o).replace(/;/g,","),a+=`~${e}=${o};`)}),a}async wf_geo_posicion(e={}){const a={enableHighAccuracy:!0,timeout:8e3,maximumAge:0,...e},t={lat:"",lng:"",acc:"",ts:(new Date).toISOString(),err:""};return"geolocation"in navigator?new Promise(o=>{navigator.geolocation.getCurrentPosition(e=>{o({lat:e.coords?.latitude??"",lng:e.coords?.longitude??"",acc:e.coords?.accuracy??"",ts:(e.timestamp?new Date(e.timestamp):new Date).toISOString(),err:""})},e=>{o({...t,err:`ERR_${e.code}: `+e.message})},a)}):(t.err="Geolocalización no soportada",t)}async pintar_totales_doc(e="",o="",a=0){if(console.groupCollapsed("wf_abmc.pintar_totales_doc"),console.log("Parámetros recibidos:",{contenedor:e,doc:o,id:a}),e)if(o)if(a){var t=document.querySelector(e);if(t){console.log("â Contenedor encontrado",t);o=`/f/ajax.php?proceso=pintar_totales_doc&doc=${o}&id=`+a;console.log("ð URL",o);try{var r=await fetch(o);if(console.log("ð¡ fetch status",r.status,r.ok),!r.ok)return console.warn("â Respuesta no OK"),void console.groupEnd();var n=await r.text();console.log("ð HTML recibido (length)",n.length),t.innerHTML=n,console.log("â
HTML pintado en contenedor")}catch(e){console.error("ð¥ Excepción en pintar_totales_doc",e)}}else console.warn("â No se encontró el contenedor",e)}else console.warn("â id inválido",a);else console.warn("â doc vacÃo");else console.warn("â contenedor vacÃo");console.groupEnd()}async pintar_totales_doc_auto(){console.groupCollapsed("wf_abmc.pintar_totales_doc_auto");var e=document.querySelectorAll(".totales_doc");
4if(console.log("Contenedores encontrados:",e.length),e.length)for(const s of e){var o=s.dataset.doc||"",a=parseInt(s.dataset.id||"0",10);if(console.groupCollapsed("totales_doc",{doc:o,id:a,nodo:s}),o)if(a){o=`/f/enrutador.php?proceso=f_docs_totales_doc&doc=${encodeURIComponent(o)}&id=`+encodeURIComponent(a);console.log("ð URL",o);try{var t=await fetch(o);if(console.log("ð¡ fetch status",t.status,t.ok),!t.ok){console.warn("â Respuesta no OK"),console.groupEnd();continue}var r=await t.json();if(console.log("ð¦ JSON recibido",r),1!==parseInt(r.code,10)){console.warn("â code distinto de 1",r),console.groupEnd();continue}if(!r.html||!r.html.trim()){console.warn("â data.html vacÃo. No se modifica el contenedor."),console.groupEnd();continue}var n=document.createElement("template"),l=(n.innerHTML=r.html.trim(),n.content.firstElementChild);l&&l.classList.contains("totales_doc")?(s.replaceWith(l),console.log("â
Contenedor reemplazado con replaceWith()")):(s.innerHTML=r.html,console.log("â
HTML pintado dentro del contenedor"))}catch(e){console.error("ð¥ Excepción actualizando totales",e)}}else console.warn("â data-id inválido",s);else console.warn("â data-doc vacÃo",s);console.groupEnd()}else console.warn("â No hay contenedores .totales_doc en el DOM");console.groupEnd()}async traer_json(e="",o="",a="POST",t=null){let r=""+this.enrutador+String(e||"").replace(/^[.#]/,"");o&&(e=String(o).replace(/^&/,""),r+="&"+e);try{var n=String(a||"POST").toUpperCase(),l={method:n,cache:"no-cache"},s=(null!==t&&"GET"!==n&&"HEAD"!==n&&(l.body=t),await fetch(r,l));if(!s.ok)throw new Error("Error respuesta servidor: "+r);var c=await s.json();if("object"!=typeof c||null===c)throw new Error("La respuesta no es un JSON válido.");return void 0===c.code&&(c.code=0),void 0===c.id&&(c.id=0),void 0===c.str&&(c.str="Respuesta JSON sin estructura R."),void 0===c.html&&(c.html=""),void 0===c.d&&(c.d=""),c}catch(e){return console.error("wf_abmc.traer_json()",e),{code:0,id:0,str:String(e.message||e||"Error no identificado."),html:"",d:"Error en traer_json(): "+String(e.message||e)}}}static r_a_datas(a,t=["html","d","str"]){let r=[],n=[];return Object.keys(a).forEach(e=>{var o;t.includes(e)||null!=(o=a[e])&&"object"!=typeof o&&(r.push(e),n.push(o))}),{keys:r,values:n}}}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.