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

Tableau de données - améliorations #744

Closed vbombaerts closed 2 years ago

vbombaerts commented 2 years ago

Suite de https://github.com/SPW-DIG/metawal-core-geonetwork/issues/700#issuecomment-1130069795_

vbombaerts commented 2 years ago

J'ai fait un runtime field pour simplifier le nom du codespace de l'identifiant local en nom de la BD. mw-gp-localIdentifierCodespace ---> mw-gp-localIdentifierCodespaceDB

def path = doc['mw-gp-localIdentifierCodespace'].value ;
if (path != null) {
    int lastSlashIndex = path.lastIndexOf('.');
    if (lastSlashIndex > 0) {
        emit(path.substring(lastSlashIndex+1));
    return;
    }
}
emit("");

Ca marche dans Kibana, mais ça ne transparait pas dans la sortie de l'API. Donc inexploitable dans le Webcomponent.

Je propose de n'encoder que le nom de la BD dans le codespace de l'identifiant local plutôt que toute la chaine BE.SPW.INFRASIG... Je vais faire la modif en batch.

vbombaerts commented 2 years ago

Hé mince, j'ai tout pété. L'index recherche SPW.INFRASIG. pour créer le localIdentifierCodeSpace :(

https://github.com/SPW-DIG/metawal-core-geonetwork/blob/be695f6af1d238d9d19f611c802c5f67f4ced723/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/index-fields/index.xsl#L378-381

vbombaerts commented 2 years ago

Retour à la situation initiale. Je vais tenter une autre approche...

vbombaerts commented 2 years ago

Pour le tableau des données intranet, on manque de place. J'essaie donc de réduire les champs au maximum. Par exemple, pour le nom de la BD, on peut passer de BE.SPW.INFRASIG.CARTON à CARTON ou même C Pour le statut, on pourrait le remplacer par des icones de couleur.

D'où ces quelques questions abordées au tél avec Arnaud : Peut-on :

davinciagf commented 2 years ago

Deux cas sont possibles : Cas 1 - On choisit une couleur de label unique pour l'ensemble des valeurs du jsonpath. Le paramètre columnLabel est une simple string définissant la couleur

    {"columnName":"BD","columnIndex":"mw-gp-localIdentifierCodespace", "columnLabel":"red", "columnJsonPath":"","columnWidth":"1"} |

Cas 2 - On choisit de différencier la couleur de label selon la valeur du jsonpath. Le paramètre columnLabel est un objet de type key/value qui correspond à la valeur du jsonpath/couleur pour cette valeur. Si une valeur du jsonpath n'est pas définie dans l'objet, aucun label n'est appliqué.

    {"columnName":"Type","columnIndex":"resourceType", "columnLabel":{"series":"blue"}, "columnJsonPath":"$[0]","columnWidth":"1"} |

image

image

    {"columnName":"Type","columnIndex":"resourceType", "columnLabel":{"series":"blue","dataset":"green"}, "columnIcon":{"series":"th","dataset":"map"}, "columnIconColor":"green", "columnFormatter":"withouttext", "columnJsonPath":"$[0]","columnWidth":"1"} |

image

Cas 2 - On choisit de différencier la couleur des icones selon la valeur du jsonpath. Le paramètre columnIconColor est un objet de type key/value qui correspond à la valeur du jsonpath/couleur pour cette valeur. Si une valeur du jsonpath n'est pas définie dans l'objet, aucune couleur n'est appliquée pour l'icone.

    {"columnName":"Type","columnIndex":"resourceType", "columnLabel":{"series":"blue","dataset":"green"}, "columnIcon":{"series":"th","dataset":"map"}, "columnIconColor":{"series":"green","dataset":"red"}, "columnFormatter":"withouttext", "columnJsonPath":"$[0]","columnWidth":"1"} |

Cas 2 - On choisit de différencier les valeurs affichées selon des conditions (sur base des valeurs de retour du jsonpath) Le paramètre `columnValue` est un objet de type key/value qui correspond à la valeur du jsonpath/valeur à afficher pour cette valeur. Affichage d'un tooltip avec la valeur du jsonpath
{"columnName":"BD","columnIndex":"mw-gp-localIdentifierCodespace", "columnLabel":"red", "columnJsonPath":"","columnWidth":"1" , "columnValue":{"BE.SPW.INFRASIG.GINET":"G","BE.SPW.INFRASIG.CARTON":"C"}} |


![image](https://user-images.githubusercontent.com/576292/175014575-612a313d-080f-457c-91d6-84a8fe0b6fc6.png)
vbombaerts commented 2 years ago

C'est super !

J'aurais juste besoin d'une paire d'yeux supplémentaire pour détecter ce qui coince dans mon code. C'est au niveau de la colonne BD et de la colonne Statut. Le columnLabel, le columnIconColor et le columnIcon ne fonctionnent plus. Pourtant plus tôt j'avais réussi.

Autre point : depuis que tu as autorisé le découpage des mots, j'ai l'impression que le paramètre relatif à la largeur des colonnes ne fonctionne plus.


<link href="https://metawal4.test.wallonie.be/geonetwork/catalog/lib/icho/styles.css" rel="stylesheet" />
<link href="https://metawal4.test.wallonie.be/geonetwork/catalog/lib/icho/main.css" rel="stylesheet" />

<!--
<link href="https://apps.titellus.net/hub/webcomponents/styles.ef53c8a098d2c6ec.css" rel="stylesheet" />
<link href="https://apps.titellus.net/hub/webcomponents/main.5210541a9d9540bc.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/intranet" 
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]","columnIcon":{"series":"copy outline","dataset":"file outline"},"columnLabel":{"series":"blue","dataset":"teal"},"columnFormatter":"withouttext","columnWidth":"2"} |
    {"columnName":"Identifiant","columnIndex":"mw-gp-localIdentifier","columnJsonPath":"","columnWidth":"3"} |
    {"columnName":"BD","columnIndex":"mw-gp-localIdentifierCodespace","columnJsonPath":"","columnValue":{"BE.SPW.INFRASIG.GINET":"G","BE.SPW.INFRASIG.CARTON":"C"},"columnLabel":{"BE.SPW.INFRASIG.GINET":"yellow","BE.SPW.INFRASIG.CARTON":"pink"},"columnWidth":"1"} |
    {"columnName":"Statut","columnIndex":"cl_status","columnJsonPath":"$[0].key","columnIcon":{"onGoing":"sync alternate","completed":"check","obsolete":"ban","planned":"calendar alternate outline","superseded":"ban"}, "columnIconColor":{"onGoing":"violet","completed":"green","obsolete":"red","planned":"orange","superseded":"red"},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","columnFormatter":"withouttext","columnWidth":"2"} |
    {"columnName":"Modèle et légende","columnIndex":"related","columnJsonPath":"$.onlines[?(@.function==\"legend\")].url.fre","columnIcon":"paint brush","columnFormatter":"withouttext","columnWidth":"2"} |
    {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-thematicMap","columnJsonPath":"$[*].url","columnIcon":"map","columnFormatter":"withouttext","columnWidth":"2"} |
    {"columnName":"Consulter (applications et services)","columnIndex":"mw-gp-allWebServices","columnJsonPath":"$[*].url","columnIcon":"world","columnFormatter":"withouttext","columnWidth":"2"}|
    {"columnName":"Crédits","columnIndex":"resourceCreditObject","columnJsonPath":"$[0].langfre","columnWidth":"1"}
    ' 
filter="+(resourceType:dataset or resourceType:series) -(th_infraSIG.default:Reporting INSPIRE) +(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://metawal4.test.wallonie.be/geonetwork/catalog/lib/icho/runtime.esm.js"  type="module">
</script><script src="https://metawal4.test.wallonie.be/geonetwork/catalog/lib/icho/polyfills.esm.js" type="module">
</script><script src="https://metawal4.test.wallonie.be/geonetwork/catalog/lib/icho/main.esm.js" type="module"></script>

<!--
<script src="https://apps.titellus.net/hub/webcomponents/runtime.04986a7c605c2376.esm.js"  type="module">
</script><script src="https://apps.titellus.net/hub/webcomponents/polyfills.7e0034cfe0406d00.esm.js" type="module">
</script><script src="https://apps.titellus.net/hub/webcomponents/main.6420a91a188ea8ef.esm.js" type="module"></script>
-->
davinciagf commented 2 years ago

Non il y a un bug dans le code lorsque l'on a un object en columnValue et un en columnLabel. Je regarde...

davinciagf commented 2 years ago

Correctif apporté. Le template de l'intranet ne semble pas respecter la largeur des colonnes : image Non reproductible en local, pas d'accès au site.

vbombaerts commented 2 years ago

J'ai séparé la partie concernant le template intranet. A priori c'est à régler côté Jahia.