Inxección JavaScript v2 en Tramita
tramitaZero v2 separa qué se executa (módulos JavaScript no servidor) de cando se executa (userscripts mínimos no navegador que só disparan a carga). O código inxectado corre no mesmo contexto que a aplicación Tramita (DOM, cookies, sesión).
Fluxo de carga
-
Un userscript asociado á URL da pantalla (por exemplo
*/igxsts/*) inclúetz-bootstrap.jsdesdehttps://tramitazero.robertog.es/js/core/tz-bootstrap.js. -
O bootstrap inicializa o obxecto global
window.__TZ__e expónloadModule(nome),shouldLoadModuleOnPage(nome)e a lista negra enlocalStorage(tz.v2.disabled). -
O userscript chama
__TZ__.loadModule('NomeModulo')(ou o módulo va directo por@requirea/v2/javascript.php?script=NomeModulo). -
O servidor devolve un IIFE (
function(){ ... })();) servido comoapplication/javascript. A fonte vive ensrc/v2/js/modules/NomeModulo.jsou, en compatibilidade, ensrc/js/scripts/NomeModulo.js. -
O módulo modifica a páxina: estilos, eventos, peticións a
procedementos.php, etc.
O rexistro tz-registry.js (modo paquete) define rutas lóxicas
(pattern, host, exclude) e a lista de módulos que deben
cargarse en cada tipo de pantalla. No modo granular, cada userscript declara un
@match estreito e un só módulo.
Comportamento do núcleo (común a todas as páxinas Tramita con bootstrap)
Antes de calquera módulo concreto, tz-bootstrap.js aplica axustes transversais:
-
Nome curto no header: reduce o nome completo do perfil ao primeiro token
(por exemplo «Roberto»), mantendo o nome enteiro no atributo
title. -
Filtro de consola do acordeón: suprime liñas ruidosas do módulo legacy de
agrupación de procedementos cando non está activo o modo depuración
(
localStorage tz.v2.debug=1). -
Control de carga: evita descargar o mesmo módulo dúas veces na mesma visita
(
__TZ__.loaded), respecta a lista negra de módulos e tenta primeiro/javascript.php(legacy) e despois/v2/javascript.phpen modoauto.
Módulos transversais (exemplos en portais igxsts / psxsts / mrxsts)
Estes módulos actúan en familias de pantallas (listaxes, administración, cabeceira), non nunha URL única. O userscript ou o rexistro indica o ámbito; o código decide se aplica ao DOM actual.
CambiosEsteticos-
Paquete de axustes visuais globais: espazados, contraste, elementos recorrentes da UI Tramita.
Carga en rutas amplas
*/xsts/*. LimparEspazos- Normaliza campos de formulario e táboas eliminando espazos en branco superfluos antes de gardar ou buscar. Útil en pantallas de listaxe e edición masiva.
Resaltar- Resalta filas ou coincidencias nas táboas principais para facilitar a revisión visual durante a tramitación.
ClickTR- Converte filas da táboa en áreas clicables para abrir o detalle sen apuntar ao icono exacto de cada fila.
TZ-DatosProcedemento-
Lê o código de procedemento activo na cabeceira (
#header-notifications), resolve a descrición (convocatoria máis recente na páxina ou fallback aprocedementos.php?procedemento=) e pintacódigo: descriciónna etiqueta de traballo. Inclúe observadores do DOM para resistir repintados de Tramita.
Módulo de pantalla concreta (exemplo: EditarEtiquetas)
Algúns módulos só teñen sentido nunha ruta. O userscript declara
@match https://*/*xsts/etiquetas/* e carga unicamente
EditarEtiquetas.js.
O módulo, a grandes rasgos:
- Reutiliza ou inxecta botóns «Busca Etiquetas» e «Convertir a Unicode» se a páxina de administración de etiquetas aínda non os ten.
- Analiza HTML pegado ou o DOM buscando atributos Thymeleaf (
th:text,th:utext, etc.) e xera liñasclave = valor. - Ofrece «Deduplicar»: fusiona
#contenidoEtiquetasco resultado, ordena (clavesgeneral*primeiro, logo alfabético), elimina duplicados por clave tras confirmación e escribe o resultado no textarea principal da aplicación.
Este patrón (userscript estreito + un só .js no servidor) é o modelo recomendado
para novas funcionalidades: mínima superficie no navegador, lóxica versionada no servidor.
Relación co «Modo 2» clásico
O endpoint javascript.php?script= segue sendo o
transporte. A diferenza v2 é a organización: módulos pequenos en ficheiros separados,
bootstrap común, rexistro de rutas e userscripts granulares fronte a un único script monolítico
por pantalla.
Depuración
localStorage.setItem('tz.v2.debug','1')— trazas en consola.__TZ__.listDisabledModules()— módulos desactivados na lista negra.window.__TZ_EDITAR_ETIQUETAS_INIT__(e equivalentes por módulo) — versión do IIFE xa executado.