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

Géoportail - Tableau des services #702

Closed vbombaerts closed 2 years ago

vbombaerts commented 2 years ago

Les informations contenues dans les fiches de services ne sont pas très nombreuses. Les plus importantes sont :

L'objectif est de créer un tableau dynamique des webservices qui reprend ces informations en une liste synthétique, avec

Le tableau est à destination des utilisateurs qui souhaitent intégrer un service dans leur application.

Une info intéressante qui pourrait prendre place dans le tableau est un résultat de monitoring de l'état du service (disponibilité globale et disponibilité instantanée).

Démonstrateur

https://geoportail.test.wallonie.be/home/produire-et-publier/mw---test-agf-web-component/test-webcomponents-vincent-1.html

Code

<link href="https://metawal4.valid.wallonie.be/geonetwork/catalog/lib/icho/styles.css" rel="stylesheet" />
<link href="https://metawal4.valid.wallonie.be/geonetwork/catalog/lib/icho/main.css" rel="stylesheet" />
<div style="margin: 2.5em">
<h1>Liste des services web</h1>
    <catalogue-results-table
      fields='{"columnName":"Nom du service","columnIndex":"resourceTitleObject","columnJsonPath":"$.default"} |
      {"columnName":"Type de service","columnIndex":"serviceType","columnJsonPath":""} |
      {"columnName":"Protocole","columnIndex":"linkProtocol","columnJsonPath":""} |
      {"columnName":"Point d accès","columnIndex":"linkUrl","columnJsonPath":""} |
      {"columnName":"Gestionnaire","columnIndex":"custodianOrgForResource","columnJsonPath":""} |
      {"columnName":"Données servies","columnIndex":"related","columnJsonPath":"$.datasets[?(@.origin==\"portal\")].title.fre"} |
      {"columnName":"Qualité du service","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"dataQualityReport\")].url.fre"}'
      filterfield="linkProtocol"
      togglefilterfield="serviceType"
      toggleismultiselect="true"
      togglelabel='{"label": "Consultation", "value": "view"} | {"label": "Download", "value": "download"}'
      filter="+(resourceType:service) -(cl_status.key:obsolete)"
      size="10"
      catalogueurl="https://metawal4.test.wallonie.be/geonetwork/srv"
    ></catalogue-results-table></div>
<script src="https://metawal4.valid.wallonie.be/geonetwork/catalog/lib/icho/runtime.esm.js"  type="module"></script><script src="https://metawal4.valid.wallonie.be/geonetwork/catalog/lib/icho/polyfills.esm.js" type="module"></script><script src="https://metawal4.valid.wallonie.be/geonetwork/catalog/lib/icho/main.esm.js" type="module"></script>
fxprunayre commented 2 years ago

Exemple https://apps.titellus.net/hub/catalogue-table/ cf. onglet service

A améliorer:

vbombaerts commented 2 years ago

Au niveau de la fonction toggle, ce serait bien d'avoir des possibilités plus étendues pour définir les différentes valeurs. Pour le moment on a juste la possibilité de déclarer 1 label = 1 valeur.

Dans certains cas, on pourrait avoir besoin de

vbombaerts commented 2 years ago

@vbombaerts Au niveau du contenu pour les fiches de service :

fxprunayre commented 2 years ago

Testé en local sur le webcomponent mapstore. Example de config :

<catalogue-results-card
  filter=""
  size="25"
  fields='{"image": "overview", "imageJsonPath":"$[0].url", "title": "resourceTitleObject", "titleJsonPath":"$.default", "subTitle": "custodianOrgForResource", "subTitleJsonPath":"", "text": "resourceHookAbstractObject", "textJsonPath":"$.default","link": "mw-gp-thematicMap", "linkJsonPath":"$[0].url","info": "revisionDateForResource","infoJsonPath":"$[0]"}'
  catalogueurl="https://metawal4.test.wallonie.be/geonetwork/srv"
  sorttype="asc"
  sortby="custodianOrgForResource"
></catalogue-results-card>

Il est possible d'utiliser une customQuery afin de regrouper certains éléments via la fonctionnalité du toggle button. Il suffit de mettre les éléments via une syntaxe lucene:

togglelabel='{"label": "Air", "value": "Air AND Eau"} | {"label": "Eau", "value": "Eau"} | {"label": "Agriculture", "value": "Agriculture"}'

Attention, ce dévelopment n'est pas encore dispo car il y a un bug au niveau de reactiveSearch qui empêche d'utiliser la customQuery dans l'outil ToggleButton. Une solution a été soumise pour correction : https://github.com/appbaseio/reactivesearch/issues/1888

Ce point n'est donc pas encore dispo.

davinciagf commented 2 years ago

@vbombaerts - Nouvelle config pour ce tableau:

    <catalogue-results-table
      fields='{"columnName":"Nom du service","columnIndex":"resourceTitleObject","columnJsonPath":"$.default"} |
      {"columnName":"Type de service","columnIndex":"serviceType","columnJsonPath":""} |
      {"columnName":"Protocole","columnIndex":"linkProtocol","columnJsonPath":""} |
      {"columnName":"Point d accès","columnIndex":"linkUrl","columnJsonPath":""} |
      {"columnName":"Gestionnaire","columnIndex":"custodianOrgForResource","columnJsonPath":""}'
      filterfield="linkProtocol"
      togglefilterfield="serviceType"
      toggleismultiselect="true"
      togglelabel='{"label": "Consultation", "value": "view"} | {"label": "Download", "value": "download"}'
      filter="+(resourceType:service) -(cl_status.key:obsolete)"
      size="4"
      catalogueurl="https://metawal4.test.wallonie.be/geonetwork/srv"
    ></catalogue-results-table>
vbombaerts commented 2 years ago

Pour tester les JSONPath

Evaluateur de JSONpath

https://jsonpath.com/

Requête API Metawal msearch

{"preference":"tableOfRecord"}
{"query":{"bool":{"must":[{"bool":{"must":[{"bool":{"boost":1,"minimum_should_match":1,"should":[{"term":{"serviceType":"view"}}]}},{"query_string":{"query":"+(resourceType:service) -(cl_status.key:obsolete)"}}]}}]}},"size":4,"_source":{"includes":["resourceTitleObject","serviceType","linkProtocol","linkUrl","custodianOrgForResource"],"excludes":[]},"from":0,"sort":[{"_score":{"order":"asc"}}]}

JSONpath de base jusqu'aux éléments de l'index

responses..

vbombaerts commented 2 years ago

@vbombaerts - Nouvelle config pour ce tableau:

    <catalogue-results-table
      fields='{"columnName":"Nom du service","columnIndex":"resourceTitleObject","columnJsonPath":"$.default"} |
      {"columnName":"Type de service","columnIndex":"serviceType","columnJsonPath":""} |
      {"columnName":"Protocole","columnIndex":"linkProtocol","columnJsonPath":""} |
      {"columnName":"Point d accès","columnIndex":"linkUrl","columnJsonPath":""} |
      {"columnName":"Gestionnaire","columnIndex":"custodianOrgForResource","columnJsonPath":""}'
      filterfield="linkProtocol"
      togglefilterfield="serviceType"
      toggleismultiselect="true"
      togglelabel='{"label": "Consultation", "value": "view"} | {"label": "Download", "value": "download"}'
      filter="+(resourceType:service) -(cl_status.key:obsolete)"
      size="4"
      catalogueurl="https://metawal4.test.wallonie.be/geonetwork/srv"
    ></catalogue-results-table>

Pas réussi à avoir un tableau complet. Un problème dans la gestion des arrays ? Par ailleurs la config proposée n'inclut pas les deux champs suivants :

davinciagf commented 2 years ago

Tableau dispo à https://apps.titellus.net/hub/webcomponents/ (mais sans les données servies et la qualité du service)

image

Je regarde pour le mettre à jour avec les données servies et la qualité du service

vbombaerts commented 2 years ago

Pas réussi à avoir un tableau complet. Un problème dans la gestion des arrays ?

Erreur de css. Mis à jour.

davinciagf commented 2 years ago

Pour les points suivants:

vbombaerts commented 2 years ago

Super ! Au niveau des listes à plusieurs entrées, est-il possible de séparer un peu plus les entrées? Par exemple la liste des données servies. Pour le moment c'est un peu confus. Est-il possible d'avoir des largeurs de colonnes mieux proportionnées par rapport à leur contenu ?

image

davinciagf commented 2 years ago

Correction des entrées de certains input avec séparation + largeur de colonne fixe

image
vbombaerts commented 2 years ago

Icones non disponibles

image

davinciagf commented 2 years ago

Corrigé pour les appels vers les js et css de l'env de test.