Herramientas de usuario

Herramientas del sitio


pwa:doc:documentacion_diseno_de_menus_en_smartpwa

Layout del menú (PWA_MENUS)

El menú lateral de SmartPWA —sus categorías, sus secciones y cada opción con su icono y su destino— también se declara en un texto de configuración guardado en la base de datos.

Es el hermano del layout de los formularios: mismo sitio (un campo DESCRIPCION), mismos ámbitos y la misma idea de que lo que se ve no está compilado en el programa. Lo que cambia es la sintaxis, que aquí es más sencilla: una línea por opción.

Dónde vive

En la tabla PWA_MENUS, cuya clave es COD_MENU + TIPO_AMBITO + COD_AMBITO + CLAVE_INSTALACION.

Campo Qué es
COD_MENU qué menú es. El de la aplicación se llama PRINCIPAL
NOMBRE descripción para quien administra («Menú principal de SmartPWA»)
DESCRIPCION el texto de configuración, que es de lo que va esta página
ACTIVO S o N

A quién se le aplica cada fila lo resuelve PWA_GET_MENU(COD_MENU, COD_USUARIO) con las cinco precedencias de siempre: usuario, usuario del que hereda, clave de instalación, clave de grupo y general. Está explicado en Ámbitos: quién ve qué.

<note>El menú se lee de un solo tirón, así que su límite son 8000 caracteres (el del layout de un formulario es tres veces mayor). Un menú completo de los que hay hoy anda por la mitad.</note>

El menú nunca se queda vacío

Al arrancar, la aplicación pinta el menú en tres pasadas: primero el que lleva compilado dentro, después el que guardó de la última sesión y, cuando contesta la base de datos, el que le toca al usuario. Por eso:

  • una base de datos a la que todavía no ha llegado el script de PWA_MENUS enseña el menú de respaldo, sin dar ningún error;
  • sin conexión se sigue viendo el de la última vez;
  • y un cambio en la base de datos no se ve hasta la siguiente entrada, o hasta recargar el menú desde la pantalla de menús.

El texto, línea a línea

M:Gestión de flota
S:Formularios
Control de vehículos | VEHI_CONTROL | speedometer
Avisos               | /avisos      | notifications | badge=avisos
Línea Qué hace
M:nombre abre una categoría (lo que en el menú es una pestaña o un bloque)
S:nombre abre una sección dentro de la categoría
título | destino | icono | opciones una opción de la sección abierta
(en blanco) se ignora: sirve para separar bloques y que el texto se lea
– lo que sea comentario, se ignora

Repetir un M: que ya existe no crea otra categoría: sus opciones se suman a las que ya tenía. Con las secciones pasa lo mismo. Eso permite escribir el texto por bloques —o pegarle a un menú un trozo de otro— sin que salgan categorías duplicadas.

Si alguna sección de la categoría tiene nombre, la categoría se pinta como acordeón; si ninguna lo tiene, sale la lista de opciones sin más.

La opción, campo a campo

Los cuatro campos van separados por barras verticales. Los espacios sobran, así que se pueden alinear en columnas para que el texto se lea, que es como están escritos los menús de hoy.

Campo Obligatorio Qué es
título lo que se lee en el menú
destino adónde lleva (ver debajo)
icono no nombre del catálogo; sin él, o si no existe, sale el genérico
opciones no pares clave=valor separados por punto y coma

El destino

Se escribe Adónde va
VEHI_CONTROL al listado genérico de esa tabla (/tabla-list-wrap/VEHI_CONTROL)
/consultas/ALR_FICHA_VEHICULO a esa consulta
/planificador, /avisos a una pantalla propia de la aplicación

La regla es simple: si empieza por barra, es una ruta; si no, es una tabla.

Las opciones

Se escribe Qué hace
badge=avisos pinta junto al título el contador de avisos pendientes
id=algo identificador estable de la opción, para poder renombrarla sin perder su ancla
defecto.CAMPO=valor el listado propone ese valor al crear un registro nuevo
cualquier=cosa va como parámetro de la pantalla de destino; el más usado es titulo=
Clientes | TERCERO | people | titulo=Clientes; defecto.TIPO=CL

Esa línea abre el listado de terceros titulado «Clientes» y, al dar de alta, propone el tipo CL. Es la manera de sacar del mismo listado varias opciones de menú distintas: clientes, proveedores y empleados son la misma tabla TERCERO con distinto valor por defecto.

Los iconos

Se nombran sin sufijo (people, car, document-text), y la aplicación pinta la variante que corresponde. Solo valen los del catálogo; los que no estén salen con el icono genérico (ellipse), sin dar error. La opción Comprobar el texto de la pantalla de menús dice cuáles no ha reconocido.

Para añadir un icono nuevo hay que meterlo en el catálogo del programa (menu/iconos-menu.ts), que es un cambio de versión: al escribir un menú conviene quedarse en los que ya hay.

Ejemplos

Una categoría con tres secciones

M:Gestión de flota
S:Formularios
Control de vehículos    | VEHI_CONTROL                           | speedometer
Siniestros              | VEHI_SINIESTRO                         | warning
Contratos de vehículos  | VEHI_CAB_CONTRATO                      | document
Avisos                  | /avisos                                | notifications | badge=avisos
S:Configuración
Vehículos               | /consultas/ALR_FICHA_VEHICULO          | car
Perfiles documento      | DOC_PERFIL                             | document-text
S:Informes
Flota de vehículos      | /consultas/ALR_VEHICULOS_FLOTA         | car
Vehículos alquilados    | /consultas/ALR_VEHICULOS_ALQUILADOS    | car
Resumen facturación     | /consultas/ALV_DIARIO_FACTURAS_DELEG   | stats-chart

Es como está montado el menú de flota: los formularios con los que se trabaja, lo que se configura de tarde en tarde y los informes, separados.

Una categoría sin secciones

M:Procesos
Borrar lote asientos    | /ejecutar-proceso/BORRAR_LOTE_ASIENTOS | trash
Dotación amortizaciones | /ejecutar-proceso/CONTAB_AMORT2        | calculator

Sin ninguna S:, la categoría enseña sus opciones seguidas, sin acordeón. Y un destino /ejecutar-proceso/PROC lleva a la pantalla que pide los parámetros de un proceso y lo lanza.

Varias opciones sobre el mismo listado

M:Terceros
S:Formularios
Clientes     | TERCERO | people    | titulo=Clientes;    defecto.TIPO=CL
Proveedores  | TERCERO | briefcase | titulo=Proveedores; defecto.TIPO=PR
Empleados    | TERCERO | person    | titulo=Empleados;   defecto.TIPO=EM
Bancos       | TERCERO | cash      | titulo=Bancos;      defecto.TIPO=BA

Texto comentado

-- Menú de la instalación 026: sin alquiler y sin planificador.
M:Taller
S:Formularios
Partes de avería | CAB_PARTE_AVERIA | construct
-- Pendiente de que entre en producción el nuevo circuito de garantías:
-- Garantías      | GARANTIA_PARTE  | warning

Comentar una línea con es la manera de quitar una opción sin perderla, que en un menú por instalación se agradece.

Comprobar antes de dar por bueno un cambio

El menú se edita en Menús (/menus), y su propio menú de acciones trae:

Opción Para qué
Comprobar el texto dice cuántas categorías y opciones salen, qué iconos no están en el catálogo y qué líneas no ha entendido, sobre lo que hay escrito en pantalla, antes de guardar
Comparar con el general enseña lo que tiene el menú general y a este ámbito le falta
Copiar a otro ámbito duplica esta definición para un usuario, una instalación o un grupo
Copiar script de actualización / Descargar script (.sql) el UPDATE OR INSERT listo para llevar el cambio a otra base de datos

Lo de Comparar con el general importa más de lo que parece: cada ámbito describe el menú entero, no un parche. Una instalación con menú propio no se entera de las opciones nuevas que se añadan al general, y esa comparación es lo que lo pone de manifiesto. Está explicado en Ámbitos: quién ve qué.

Recetas

Lo que se quiere Cómo se escribe
Un bloque nuevo en el menú M:Tesorería
Separar dentro de él lo que se configura S:Configuración
Una opción a un listado de tabla Clientes | TERCERO | people
Una opción a una consulta Flota | /consultas/ALR_VEHICULOS_FLOTA | car
Ponerle otro título al listado titulo=Clientes
Que el alta proponga un valor defecto.TIPO=CL
El contador de avisos al lado del título badge=avisos
Quitar una opción sin perderla comentar la línea con
Que una instalación no vea una categoría borrar esas líneas de su fila de PWA_MENUS

Cómo se mantiene esta página

Como la de los formularios: se actualiza en el mismo cambio en que se toca la sintaxis.

Qué Dónde
Lectura del texto del menú projects/smart-core/src/lib/menu/menu-config.ts
Catálogo de iconos projects/smart-core/src/lib/menu/iconos-menu.ts
Lectura por ámbito, caché y respaldo projects/smart-core/src/lib/servicios/menu.service.ts
Pantalla de edición projects/smart-core/paginas/src/lib/pwa-menu-edit/
Menús versionados y sus procedimientos db/pwa_menus_datos.sql, db/pwa_menus_procs.sql
pwa/doc/documentacion_diseno_de_menus_en_smartpwa.txt · Última modificación: por juanma

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki