SPW-DIG / metawal-core-geonetwork

Metawal - Catalogue pour l'information géographique de Wallonie
http://metawal.wallonie.be
GNU General Public License v2.0
3 stars 1 forks source link

Liste de données intranet - Use case 1 - Documentation des données d'une BD spécifique #700

Closed vbombaerts closed 2 years ago

vbombaerts commented 2 years ago

Description du use case

Je suis un utilisateur interne. Je suis connecté en direct à une BD interne (ou un entrepôt de données raster). Je veux de l'information sur les données qui sont listées sur la BD sur laquelle je suis connecté.

Exemples de listing BD

image

image

image

Besoin

Un tableau qui reprend chaque série et chaque couche de données dans l'ordre dans lequel elles apparaissent dans mon listing BD (espace disque), donc, par ordre alphabétique des noms techniques, + qques infos qui me permettent de savoir à quelle donnée correspond quel nom technique + qques infos pour m'aider à exploiter cette donnée + qques infos pour se connecter à d'autres moyens de consommer cette donnée + lien vers fiche de MD

Nice to have : Différencier visuellement le niveau série et le niveau couche par une indentation ou qqch qui montre les différentes couches qui composent la série.

Scope du tableau (= quelles fiches apparaissent par défaut)

Les données et séries qui appartiennent à l'une ou l'autres des BD ou espaces de stockage interne.

Question : comment indiquer l'appartenance à une BD interne ? Approches envisagées :

Encore à définir : Y a-t-il un tableau par BD ou un tableau global dans lequel on peut (par exemple via radio bouton) choisir une des BD ? Dans un cas comme dans l'autre il faut être capable d'établir un filtre sur le nom de la BD.

Colonnes du tableau (= quels champs apparaissent)

Tri par défaut : nom physique. En principe les séries apparaissent au-dessus de leurs couches constitutives.

Note :

Vérifier que le lien Metawal est autorisé pour tout le public intranet ==>

Fonctionnalités

Démonstrateur

https://geoportail.test.wallonie.be/home/produire-et-publier/mw---test-agf-web-component/test-tableau-donnee.html

Code de configuration

<link href="https://metawal.wallonie.be/geonetwork/catalog/lib/icho/styles.css" rel="stylesheet" />
<link href="https://metawal.wallonie.be/geonetwork/catalog/lib/icho/main.css" rel="stylesheet" />
<div style="margin: 2.5em">
<h1>Contenu des bases de données</h1>
<catalogue-results-table 
catalogueurl="https://metawal.wallonie.be/geonetwork/srv" 
fields='
    {"columnName":"Nom de la donnée","columnIndex":"resourceTitleObject","columnJsonPath":"$.langfre","columnWidth":"2"} |
    {"columnName":"Nom de la donnée","columnIndex":"overview","columnJsonPath":"$[0].url","columnWidth":"2"} |
    {"columnName":"Type","columnIndex":"resourceType","columnJsonPath":"$[0]","columnWidth":"1"} |
    {"columnName":"BD","columnIndex":"mw-gp-localIdentifierCodespace","columnJsonPath":"","columnWidth":"1"} |
    {"columnName":"Nom physique","columnIndex":"mw-gp-localIdentifier","columnJsonPath":"","columnWidth":"2"} | 
    {"columnName":"Statut","columnIndex":"cl_status","columnJsonPath":"$[0].langfre","columnWidth":"1"} |   
    {"columnName":"Note","columnIndex":"supplementalInformationObject","columnJsonPath":"$[0].langfre","columnWidth":"2"} |     
    {"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"featureCatalogue\")].url.fre","columnIcon":"th","columnWidth":"2"} |
    {"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"legend\")].url.fre","columnIcon":"paint brush","columnWidth":"2"} |
    {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-thematicMap","columnJsonPath":"$[*].url","columnIcon":"map","columnWidth":"2"} |
    {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-allWebServices","columnJsonPath":"$[*].url","columnIcon":"world","columnWidth":"2"}|
    {"columnName":"Crédits","columnIndex":"resourceCreditObject","columnJsonPath":"$[0].langfre"}
    ' 
filter="+(resourceType:dataset or resourceType:series) -(th_infraSIG.default:Reporting INSPIRE) -(cl_status.key:obsolete) +(custodianOrgForResource:*SPW*)" filterfield="th_Themes_geoportail_wallon_hierarchy.default" 
size="10" 
sortby="mw-gp-localIdentifier" 
sorttype="asc" 
togglefilterfield="mw-gp-localIdentifierCodespace" 
toggleismultiselect="true" 
togglelabel='{"label": "GINET", "value": "BE.SPW.INFRASIG.GINET"} | {"label": "CARTON", "value": "BE.SPW.INFRASIG.CARTON"}'
>
</catalogue-results-table></div>
<script src="https://metawal.wallonie.be/geonetwork/catalog/lib/icho/runtime.esm.js"  type="module"></script><script src="https://metawal.wallonie.be/geonetwork/catalog/lib/icho/polyfills.esm.js" type="module"></script><script src="https://metawal.wallonie.be/geonetwork/catalog/lib/icho/main.esm.js" type="module"></script>
vbombaerts commented 2 years ago

Ce serait pas mal de pouvoir définir le type de champ pour chaque colonne. Par exemple pour les URL définir si on veut les afficher sous forme de texte ou de lien.

vbombaerts commented 2 years ago

Il faudrait ajouter la possibilité de trier selon le nom physique (tri par défaut) et d'inclure les valeurs du nom physique dans la recherche full-text. Pour le moment on a Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [mw-gp-localIdentifier] in order to load field data by uninverting the inverted index. Note that this can use significant memory

-- Edit -- Idem pour le nom de la BD. Pour le moment pas possible de définir le togglefilter dessus

vbombaerts commented 2 years ago

Ajouter la possibilité de définir un portail comme source

vbombaerts commented 2 years ago

Le truc du .keyword sur mw-gp-localIdentifier et mw-gp-localIdentifierCodespace, ça ne marche pas.

fxprunayre commented 2 years ago

Le truc du .keyword sur mw-gp-localIdentifier et mw-gp-localIdentifierCodespace, ça ne marche pas.

Schéma de l'index mis à jour. A déployer et réindexer en supprimant l'index.

vbombaerts commented 2 years ago

Si le champ ne permet pas le tri, ne pas afficher l'icône de tri car ça provoque une erreur

vbombaerts commented 2 years ago

Problème au niveau de l'affichage des services : si plusieurs services sont disponibles pour une donnée, ils s'affichent sur la même ligne dans la continuité l'un de l'autre. Par ailleurs, il y a autant de ces lignes que le nombre de services.

Et l'autre problème est le même que pour le tableau de services : les largeurs de colonne ne sont pas toujours adaptées au contenu (ex modèle et légende vs consulter) mais varient quand même en fonction du contenu. Donc si une colonne n'a pas de valeur, elle va être super étroite.

Voici comment j'ai codé cette colonne : {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-allWebServices","columnJsonPath":"$[*].url","columnIcon":"world"}|

Et voila le résultat

image

davinciagf commented 2 years ago

Correction de certaines entrées (double) + largeur des colonnes fixes:

image
vbombaerts commented 2 years ago

Les icônes ne s'affichent pas si on utilise les webcomponents de Metawal. Elles s'affichent correctement si on utilise les webcomponents de titellus.

mawibrin commented 2 years ago

C'est chouette cette avancée! Je vois un problème dans le tri alphabétique, l'alphabet n'est pas toujours respecté. image

mawibrin commented 2 years ago

Est-ce que la recherche pourrait porter aussi sur le nom physique et le résumé? Et être insensible à la casse? Pour le nom physique cela permet de retrouver les ouvrages d'art en tapant BDOA (nom communément utilisé en plus), mais aussi de retrouver la fiche d'une donnée sur base du nom physique que l'on a vu en BD. Pour le résumé cela permet de trouver par exemple les bâtiments qui font partie du PICC, ou les maisons de repos qui font partie de la série établissement pour ainés. (Le minicatalogue de WOM recherche lui sur le nom français, résumé et mot-clé.) Qu'on écrive avec ou sans accents, que cela marche.

vbombaerts commented 2 years ago

Est-ce que la recherche pourrait porter aussi sur le nom physique et le résumé? Et être insensible à la casse? Pour le nom physique cela permet de retrouver les ouvrages d'art en tapant BDOA (nom communément utilisé en plus), mais aussi de retrouver la fiche d'une donnée sur base du nom physique que l'on a vu en BD. Pour le résumé cela permet de trouver par exemple les bâtiments qui font partie du PICC, ou les maisons de repos qui font partie de la série établissement pour ainés. (Le minicatalogue de WOM recherche lui sur le nom français, résumé et mot-clé.) Qu'on écrive avec ou sans accents, que cela marche.

C'était le cas avant. @davinciagf tu peux regarder STP ?

davinciagf commented 2 years ago

Pour le soucis au niveau du tri, il s'agit d'une fiche ayant deux éléments "identifier" (sans codespace) dont l'un est vide. https://metawal4.test.wallonie.be/geonetwork/srv/api/records/71b463e9-1ce2-47cd-a349-1825a9a3e91e/formatters/xml?approved=true

image

Le mécanisme de création du champs "mw-gp-localIdentifier" de l'indexation ne tient pas compte d'un élément vide et ES retroune donc un tableau pour ces deux éléments:

image

Le tri tient compte de l'élément vide ...

@vbombaerts : Correction au niveau de la fiche et/ou paramètrisation pour éviter de tenir compte des "identifier" vides au niveau de l'indexation.

vbombaerts commented 2 years ago

J'ai corrigé au niveau de la fiche. C'est une erreur d'encodage sur laquelle on a la main. Pas nécessaire de paramétrer le webcomponent.

davinciagf commented 2 years ago

Pour le search, la query a été adpatée afin d'avoir le même comportement que sur GN, ce qui doit permettre de faire des recherches sur l'identifiant local, le résumé.... (redéploiement en cours sur test)

vbombaerts commented 2 years ago

@davinciagf Réouverture pour nouvelles demandes suite à test "en conditions réelles"

{"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"featureCatalogue\")].url.fre","columnIcon":"th","columnWidth":"2"} |  
{"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"legend\")].url.fre","columnIcon":"paint brush","columnWidth":"2"} |
{"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-thematicMap","columnJsonPath":"$[*].url","columnIcon":"map","columnWidth":"2"} |
{"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-allWebServices","columnJsonPath":"$[*].url","columnIcon":"world","columnWidth":"2"}|

image

davinciagf commented 2 years ago

@vbombaerts, mise à jour d'icho afin de répondre à :

Rép:

Rép:

{"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"featureCatalogue\")].url.fre","columnIcon":"th","columnWidth":"2","columnFormatter":"a"} |

image

vbombaerts commented 2 years ago
  • possibilité pour les champs de type string d'être sécable (vérifier les effets de bord potentiels à l'usage.. )

OK

vbombaerts commented 2 years ago
  • théoriquement l'url n'est utilisée que si le champ name/title n'est pas défini

Ce n'est pas le cas si on va chercher l'info via l'API related. Ici le nom est défini mais c'est l'URL qui s'affiche. Si on va "en direct" c'est comme ça que ça fonctionne

Ex : {"columnName":"Modèle et légende - link","columnIndex":"link","columnJsonPath":"$[?(@.function==\"featureCatalogue\")].url","columnIcon":"th","columnWidth":"2","columnFormatter":"a"} vs {"columnName":"Modèle et légende - related","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"featureCatalogue\")].url.fre","columnIcon":"th","columnWidth":"2","columnFormatter":"a"}

image

vbombaerts commented 2 years ago
  • pour afficher l'icone uniquement, il faut ajouter un nouveau paramètre "columnFormatter" et définir sa valeur à "a", j'ai rajouter un tooltip au niveau de l'icone si l'on n'affiche pas le texte/url

C'est l'inverse. Quand on ajoute la valeur "a" au columnFormatter, le nom s'affiche mais pas le tooltip. Quand on ne renseigne pas de formatter, on a juste l'icone et un tooltip.

Par ailleurs, je ne vois pas à quoi la valeur "a" fait référence. Tu pourrais pas mettre un truc plus explicite, genre "icon", "text", "tooltip", ou éventuellement une combinaison ?

vbombaerts commented 2 years ago

Par rapport à l'icône, elle s'affiche même si il n'y a pas de valeur pour le champ. Donc, par exemple, pour une donnée sans modèle de données, elle apparait quand même. Il faut conditionner l'apparition de l'icone à la présence de la valeur. Les deux vont ensemble.

image

vbombaerts commented 2 years ago
  • pour ne pas afficher l'icône, il suffit de ne pas le stipuler dans les paramètres de la colonne

OK

vbombaerts commented 2 years ago

Nouvelle demande : dans une configuration, peut-on commenter certaines colonnes (au sens informatique) pour qu'elles restent inscrites dans le code mais ne soient pas prises en compte.

davinciagf commented 2 years ago

Correction :

davinciagf commented 2 years ago

Tu peux commenter le tableau

    <!--catalogue-results-table
      catalogueurl="https://metawal4.test.wallonie.be/geonetwork/srv"
      fields='{"columnName":"Nom de la donnée","columnIndex":"resourceTitleObject","columnJsonPath":"$.langfre"} |
      {"columnName":"Nom de la donnée","columnIndex":"overview","columnJsonPath":"$[0].url"} |
      {"columnName":"Type","columnIndex":"resourceType","columnJsonPath":"$[0]","columnWidth":"1"} |
      {"columnName":"Nom physique","columnIndex":"mw-gp-localIdentifier","columnJsonPath":"","columnWidth":"4"} |
      {"columnName":"Statut","columnIndex":"cl_status","columnJsonPath":"$[0].langfre","columnWidth":"1"} |
      {"columnName":"Note","columnIndex":"supplementalInformationObject","columnJsonPath":"$[0].langfre"} |
      {"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"featureCatalogue\")].url.fre","columnIcon":"th"} |
      {"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"legend\")].url.fre","columnIcon":"paint brush"} |
      {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-thematicMap","columnJsonPath":"$[*].url","columnIcon":"map"} |
      {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-allWebServices","columnJsonPath":"$[*].url","columnIcon":"world"} |
      {"columnName":"Crédits","columnIndex":"resourceCreditObject","columnJsonPath":"$[0].langfre"}'
      filter="+(resourceType:dataset or resourceType:series) -(th_infraSIG.default:Reporting INSPIRE) -(cl_status.key:obsolete) +(custodianOrgForResource:*SPW*)"
      filterfield="th_Themes_geoportail_wallon_hierarchy.default"
      size="10"
      sortby="mw-gp-localIdentifier"
      sorttype="asc"
      togglefilterfield="mw-gp-localIdentifierCodespace"
      toggleismultiselect="true"
      togglelabel='{"label": "GINET", "value": "BE.SPW.INFRASIG.GINET"} | {"label": "CARTON", "value": "BE.SPW.INFRASIG.CARTON"}'>
    </catalogue-results-table-->
vbombaerts commented 2 years ago

Suite de la discussion dans le #744