gcm1001 / TFG-CeniehAriadne

CENIEH & Ariadne+ project.
GNU General Public License v3.0
3 stars 2 forks source link

Finalizar el desarrollo del plugin "AriadnePlus Monitor" #38

Closed gcm1001 closed 4 years ago

gcm1001 commented 4 years ago

Para finalizar el desarrollo del plugin AriadnePlus Monitor debo implementar las siguientes funcionalidades:

gcm1001 commented 4 years ago

Actualización 01

En esta nueva actualización, he conseguido implementar el sistema de Logs visible al usuario. Para ello he creado dos nuevas tablas en la base de datos:

  1. AriadnePlusLogEntry: Almacena las entradas de cada registro (log). Cada entrada contiene información sobre la petición del cambio de estado que se ha llevado a cabo. Esta se compone de los siguientes campos:
    • id : Identificador del registro.
    • record_type : Tipo del recurso sobre el que se ha realizado la petición de cambio de estado.
    • record_id : Identificador del recurso sobre el que se ha realizado la petición de cambio de estado.
    • part_of : En caso de que el recurso sea parte de otro recurso, indica el identificador del recurso al que pertenece.
    • user_id : Usuario que realizó la petición del cambio de estado.
    • operation: Tipo de operación llevada a cabo para materializar el cambio de estado.
    • added: Instante en el que se llevó a cabo la petición de cambio de estado.

Muestra de ejemplo Screenshot_20200422_140103

  1. AriadnePlusLogMsg: Almacena los mensajes asociados a una determinada entrada, es decir, permite guardar el conjunto de mensajes existentes en cada registro. Para ello se hace uso de los siguientes campos:
    • id : Identificador del mensaje.
    • entry_id : Identificador del registro al que pertenece el mensaje.
    • msg : Contenido del mensaje.

Muestra de ejemplo Screenshot_20200422_140138

Haciendo uso de estas dos nuevas tablas somos capaces de mostrar al usuario los registros que se van generando "internamente" durante una transición de estado.

Además, para que el Usuario pueda actualizar toda la información sin tener que recargar la página, he incorporado un botón de actualización, tanto en el panel de Registros (Logs) como en el campo de Estados (Metadata Status).

Muestra de ejemplo Screenshot_20200422_141754

También he añadido una nueva opción que sirve para indicar como va a ser el modo de publicación en el caso de escoger previamente el tipo 'Colección'. Existen dos modos:

Además, para que el Usuario no se pierda, haciendo uso de JavaScript (JQuery), he conseguido que las opciones se muestren al usuario de forma escalonada.

Gifs

Opciones se muestran de forma progresiva GIF2

Ejemplo de funcionamiento GIF1

gcm1001 commented 4 years ago

Actualización 02

Esta actualización cubre los dos últimos puntos de esta Issue, que son:

A continuación expondré, de una forma más detallada, las cambios/novedades introducidos.

Cambios en el diseño

selops

botones

Nuevas funcionalidades

Screenshot_20200501_205308

final

Comentarios adicionales

Para la próxima actualización, trataré de:

gcm1001 commented 4 years ago

Actualización 03

En esta última actualización he podido completar todas las metas propuestas para esta Issue. Además, he solucionado bugs existentes en alguna de las funcionalidades desarrolladas en actualizaciones previas.

Avances

  1. Completar el desarrollo del sistema de restricciones. A continuación comentaré los posibles casos en los que se activaría el sistema.
    • Caso 01
      • Tipo de bloqueo: Bloqueo total.
      • Estado responsable: Proposed.
      • Descripción: Si un ítem/colección ha sido propuesto para ser publicado en Ariadne+, se bloquea su edición de forma total. Este será desbloqueado en el momento que el usuario le asigne un nuevo estado (acción Assign Status).
    • Caso 02
      • Tipo de bloqueo: Bloqueo parcial
      • Estado responsable: Incomplete.
      • Descripción: Si el ítem/colección tiene sus metadatos incompletos, se bloquea de forma parcial la edición, en concreto, se bloquea el área responsable de enriquecer los metadatos, ya que no puede existir dicho enriquecimiento si los metadatos no están aún completos. Para salir del bloqueo deberá pasar al siguiente estado (Complete).
    • Caso 03
      • Tipo de bloqueo: Bloqueo parcial
      • Estado responsable: Complete.
      • Descripción: Si el ítem/colección tiene sus metadatos completos, se bloquea de forma parcial la edición, en concreto, se bloquea el área responsable de rellenar los metadatos (incluyendo el mapa y los tags), ya que no sería fiable modificar los metadatos una vez pasadas todas las pruebas. Este bloqueo permanecerá inmutable hasta el estado Published.
    • Caso 04
      • Tipo de bloqueo: Bloqueo parcial
      • Estado responsable: Mapped.
      • Descripción: Si el ítem/colección tiene un mapeo asociado en D4Science, se bloquea de forma parcial la edición, en concreto, se bloquea el área responsable de indicar el identificador del mapeo. Este bloqueo permanecerá inmutable hasta el estado Published.
    • Caso 05
      • Tipo de bloqueo: Bloqueo parcial
      • Estado responsable: Enriched.
      • Descripción: Si el ítem/colección está enriquecido con una colección de Period0 o un archivo JSON (responsable del mapeo al vocabulario GETTY AAT), se bloquea de forma parcial la edición, en concreto, se bloquea el área responsable de indicar estos dos elementos. Este bloqueo permanecerá inmutable hasta el estado Published.
    • Caso 06
      • Tipo de bloqueo: Bloqueo total
      • Estado responsable: Ready to publish.
      • Descripción: Si el ítem/colección está preparado para ser publicado, se bloquea de forma total. Este bloqueo permanecerá inmutable hasta el estado Published.
    • Caso 07
      • Tipo de bloqueo: Ninguno
      • Estado responsable: Published.
      • Descripción: Una vez publicado el ítem/colección, se volverá a habilitar la edición de los ítems/colecciones involucrados. En el momento que un ítem/colección es editado y este tiene estado "Published", se avisa al usuario de la situación y, en caso de proseguir con la edición, se actualiza automáticamente su estado a "Proposed".
  2. Incluir el logo de Ariadne+ en las insignias de estado. Screenshot_20200507_172356
  3. Añadir dos nuevas opciones.
    • Activar/Desactivar la edición por lotes: será decisión del administrador activar/desactivar la edición por lotes. He decidido añadir esta opción ya que la herramienta Batch Edit puede ser peligrosa a la hora de editar cantidades masivas de datos. Screenshot_20200507_121111
    • Ocultar elementos Dublin Core innecesarios: con esta opción activada se ocultarán, de la página de edición, los elementos del esquema Dublin Core que no son necesarios (teniendo en cuenta los requisitos de importación de A+). Screenshot_20200507_121125
  4. Crear un logo para el plugin. ariadne-monitor-logo
  5. Tratar casos que pueden dar lugar a errores en el sistema de estados.
    • Caso 01: Después de crear un ítem, se comprueba si lo hemos asociado a una colección que está en proceso de importación. En tal caso, se le asigna el estado "Proposed", siendo ahora visible en el sistema de estados.
    • Caso 02: Después de eliminar un ítem, se comprueba que este tenga alguna colección asociada y, en caso de que la colección esté en proceso de importación, se actualiza su estado (el de la colección) automáticamente.
  6. Crear un sistema de seguridad para la carga de ficheros.
    • Solo se permitirán asociar ficheros de tipo application/json a los ítems/colecciones que estén dentro del proceso de publicación.

Comentarios adicionales

Actualmente Ariadne+ no dispone de ningún SPARQL endpoint público para realizar consultas remotas a su base de datos. Sin embargo, nos han comentado que podremos disponer pronto de dicho enlace. Por ello, en cuanto esté disponible, ampliaré este plugin para implementar todas las funcionalidades que dependen de este recurso, que son: