From 27a9cc3f7f8a4de96e3bf2be7769dc2deab0e075 Mon Sep 17 00:00:00 2001 From: jmbardallo Date: Thu, 22 Oct 2026 12:29:20 +0200 Subject: [PATCH] feat(plugins): implement declarative field.action contract standard and decouple script generation --- CHANGELOG.md | 2 +- .../plugin-settings.component.css | 14 ++- .../plugin-settings.component.html | 21 ++--- .../plugin-settings.component.ts | 92 +++++-------------- .../src/app/services/plugin.service.ts | 8 ++ 5 files changed, 54 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8833c20..bd3ad5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Incorporada infraestructura agnóstica para descubrimiento y gestión de plugins desacoplados a través de `/api/plugins`. - Agrupación ordenada de comandos de plugins en submenús dedicados en la consola de comandos (`execute-command`), organizados por plugin para mantener el menú limpio. - Comprobación y filtrado dinámico de compatibilidad por Sistema Operativo (`os: ['windows']`), deshabilitando automáticamente los comandos en puestos con sistemas incompatibles. - - Generador dinámico de formularios de configuración basados en esquemas JSON (`app-plugin-settings`) con botón de autogeneración y actualización reactiva de scripts según los parámetros seleccionados. + - Estándar de Contrato y Acciones de Campos para Plugins (`PluginSettingsComponent`): Incorporado soporte para acciones declarativas por campo (`field.action`) ejecutadas contra el backend del plugin mediante el contrato estándar `{ config: ... }` -> `{ data: { [key]: value }, message: "..." }`. Los botones de asistencia (como la generación de scripts) se integran directamente en la cabecera de la caja del script y la lógica reside 100% en el backend del plugin, manteniendo el núcleo de `oggui` completamente agnóstico y desacoplado. - Soporte de insignias de estado (badges) contextuales por cliente en las vistas de mosaico y lista de equipos (`groups.component`). - Nuevo elemento condicional "Plugins" en el menú lateral (`sidebar`), visible únicamente cuando existen plugins activos en el sistema. - Resaltador de sintaxis enriquecido y visor de terminal para scripts de configuración con numeración de líneas, colores semánticos (comentarios en verde itálica, comandos, parámetros, cadenas), botón de copiado rápido y alternancia entre vista coloreada y editor manual. diff --git a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.css b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.css index 1a56951..ca02592 100644 --- a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.css +++ b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.css @@ -271,6 +271,18 @@ border-color: #0284c7; } +.code-action-btn.action-helper { + background: rgba(14, 165, 233, 0.12); + color: #38bdf8; + border-color: rgba(56, 189, 248, 0.35); +} + +.code-action-btn.action-helper:hover { + background: rgba(14, 165, 233, 0.25); + color: #e0f2fe; + border-color: #38bdf8; +} + .action-btn-icon { font-size: 15px; width: 15px; @@ -392,7 +404,7 @@ border-top: none; } -.btn-save, .btn-reset, .btn-regenerate { +.btn-save, .btn-reset { display: flex; align-items: center; gap: 8px; diff --git a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html index ad9b387..022eaf3 100644 --- a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html +++ b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html @@ -27,12 +27,6 @@ restart_alt Restaurar por defecto - @if (hasScriptFields()) { - - } + }