Axudante · v2 en probas

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

  1. Un userscript asociado á URL da pantalla (por exemplo */igxsts/*) inclúe tz-bootstrap.js desde https://tramitazero.robertog.es/js/core/tz-bootstrap.js.
  2. O bootstrap inicializa o obxecto global window.__TZ__ e expón loadModule(nome), shouldLoadModuleOnPage(nome) e a lista negra en localStorage (tz.v2.disabled).
  3. O userscript chama __TZ__.loadModule('NomeModulo') (ou o módulo va directo por @require a /v2/javascript.php?script=NomeModulo).
  4. O servidor devolve un IIFE (function(){ ... })();) servido como application/javascript. A fonte vive en src/v2/js/modules/NomeModulo.js ou, en compatibilidade, en src/js/scripts/NomeModulo.js.
  5. 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.php en modo auto.

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 a procedementos.php?procedemento=) e pinta código: descrición na 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ñas clave = valor.
  • Ofrece «Deduplicar»: fusiona #contenidoEtiquetas co resultado, ordena (claves general* 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.