1. Configuración de los menús
Para definir los menús utilizaremos un fichero yaml, donde cada menú es un objeto o diccionario cuya clave es el número de menu.
Si la clave tiene una sola cifra se entiende que es un menú principal (que no tiene padre), per ejemplo 1,2,3...
Si acabamos con los números podemos utilizar letras.
Es conveniente situarlos en orden, prinmero el menú y despúes sus hijos.
Supongamos que tenemos 3 menús principales (1,2,3) , y el número 1 tiene 2 hijos (11 y 12) y que el hijo (11) tiene 3 hijos más (111,112, y 113). Tendremos este orden
1,11,111,112,113,12,2,3
Si al menú 2 le damos dos hijos (21, 22) y al 3 le damos 3 hijos (31,32,33) quedaría:
1,11,111,112,113,12,2,21,22,3,31,32,33
Las propedades que podemos dar a cada menú son:
description: La descripción que aprarecerá
tooltip: mensaje que aparece al situar el rató sobre el menú,
icon: icono de font awesome
En principio, obligatoriament se necesita la clave que indica la posición del menú por ejemplo "111" y la "description". Los demás parámetros son opcionales, pero recomendables.
Veamos un ejemplo del fichero menus.yaml. Este fichero se guardará en la carpeta "static/conf" del proyecto
############################################################: # menus.yml ############################################################: 1 : {description: 'Secretaria', tooltip: 'Secretaria guai!' , icon: 'fa-solid fa-skull-crossbones'} 11 : { description: "Llibre d'actes de plens" } 111 : { description: "1. LOCAL: Firmar Actes per l'Alcaldia" } 112 : { description: "2. LOCAL: Firmar Actes per la Secretaria" } 113 : { description: "3. Generar l'index en PDF i part del llibre ENI XML" } 114 : { description: "4. LOCAL: firmar l'índex en PDF per Secretaria" } 115 : { description: "5. Afegir l'índex al PDF per Secretaria" } 116 : { description: "6. LOCAL: Firmar l'index del llibre ENI XML per Secretaria" } 2 : { description: 'Sedipualba' } 21 : { description: 'A. Expedients'} 211 : { description: 'A1. Copiar interessats entre expedients'} 212 : { description: 'A2. Copiar les resolucions d''un any a un expedient'} 3 : { description: 'Personal' } 31 : { description: 'Control Presència'} 32 : { description: 'Menu 32' } 321 : { description: 'Menu 321' , icon: 'fa-solid fa-skull-crossbones'} 322 : { description: 'Menu 322' } 323 : { description: 'Menu 323' } 4 : { description: 'Informàtica' , tooltip: 'Informàtica guai del Paraguai!' , icon: 'fa-solid fa-skull-crossbones'} 41 : { description: 'Taula Municipio' }
Esto nos dará una imagen como esta
2. La clase menu.py
De esta clase hemos destacado sus atributos que hemos visto antes. Cabe destacar el constuctor "__init__" ,los "setters" y las funciones encargadas de leer las propiedades de los menús que están guardadas en:
- menus_???.yml: Nomalmente los emnús de una aplicación se pueden ver bien en un solo fichero "menus.yml", pero podemos partirlo en varios ficheros como "menus_01.yml", "menus_011.yml". La condicion es que comience por "menus "y a continuación un guión bajo "_" y varios dígitos y terminar en ".yml"
- menu_icons.yml: Para cada tipo de acción asigna un icono por omisión.
- actions_???.yml: Aquí se definen las acciones. Si que es conveniente separarlo en varios ficheros pues las acciones tienen un montón de parámetros, por tanto con el fin de evitar errores se opta por tener un fichero por cada acción y como mucho 3 acciones, pero no es conveniente.
############################################################: # menu_icons.yml ############################################################: default: 'fa-solid fa-folder' table: 'fa-solid fa-table-cells' python: 'fa-brands fa-python' report: 'fa-solid fa-rectangle-list' action: 'fa-solid fa-gears' bash: 'fa-solid fa-bolt' none: 'fa-solid fa-hand-middle-finger'
No hay comentarios :
Publicar un comentario