geonetwork-ui 2.5.0-dev.e41adefdb → 2.5.0-dev.ed99f2ef4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +22 -2
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +8 -8
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -3
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
- package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
- package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
- package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +9 -7
- package/esm2022/translations/de.json +1 -1
- package/esm2022/translations/en.json +2 -10
- package/esm2022/translations/es.json +1 -1
- package/esm2022/translations/fr.json +11 -11
- package/esm2022/translations/it.json +18 -17
- package/esm2022/translations/nl.json +1 -1
- package/esm2022/translations/pt.json +1 -1
- package/fesm2022/geonetwork-ui.mjs +264 -151
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +1 -0
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +41 -2
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
- package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
- package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
- package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
- package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
- package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
- package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
- package/src/libs/util/data-fetcher/src/lib/utils.ts +36 -32
- package/translations/de.json +1 -1
- package/translations/en.json +2 -10
- package/translations/es.json +1 -1
- package/translations/fr.json +11 -11
- package/translations/it.json +18 -17
- package/translations/nl.json +1 -1
- package/translations/pt.json +1 -1
- package/translations/sk.json +1 -1
|
@@ -19023,6 +19023,7 @@ var de = {
|
|
|
19023
19023
|
"record.action.download": "Herunterladen",
|
|
19024
19024
|
"record.action.duplicate": "",
|
|
19025
19025
|
"record.action.duplicating": "",
|
|
19026
|
+
"record.action.rollback": "",
|
|
19026
19027
|
"record.action.view": "Anzeigen",
|
|
19027
19028
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
19028
19029
|
"record.feature.limit": "Die Ressource enthält mehr als {count} Features und kann hier nicht angezeigt werden.",
|
|
@@ -19202,7 +19203,6 @@ var de = {
|
|
|
19202
19203
|
"tooltip.url.open": "URL öffnen",
|
|
19203
19204
|
"ui.readLess": "Weniger lesen",
|
|
19204
19205
|
"ui.readMore": "Weiterlesen",
|
|
19205
|
-
"wfs.aggregations.notsupported": "",
|
|
19206
19206
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
19207
19207
|
"wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
|
|
19208
19208
|
"wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",
|
|
@@ -19254,15 +19254,7 @@ var en = {
|
|
|
19254
19254
|
"dashboard.records.username": "Username",
|
|
19255
19255
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
19256
19256
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
19257
|
-
"datafeeder.
|
|
19258
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
19259
|
-
"datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
|
|
19260
|
-
"datafeeder.analysisProgressBar.title": "Analysis in progress",
|
|
19261
|
-
"datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
|
|
19262
|
-
"datafeeder.datasetValidation.submitButton": "OK, my data is correct",
|
|
19263
|
-
"datafeeder.datasetValidation.title": "Make sure your data is correct",
|
|
19264
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
19265
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
|
|
19257
|
+
"datafeeder.anaeditor.record.saveStatus.recordNotPublishedasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
|
|
19266
19258
|
"datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
|
|
19267
19259
|
"datafeeder.form.abstract": "How would you describe your dataset?",
|
|
19268
19260
|
"datafeeder.form.datepicker": "Do you know when the dataset was created?",
|
|
@@ -19639,6 +19631,7 @@ var en = {
|
|
|
19639
19631
|
"record.action.download": "Download",
|
|
19640
19632
|
"record.action.duplicate": "Duplicate",
|
|
19641
19633
|
"record.action.duplicating": "Duplicating...",
|
|
19634
|
+
"record.action.rollback": "Rollback",
|
|
19642
19635
|
"record.action.view": "View",
|
|
19643
19636
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19644
19637
|
"record.feature.limit": "The resource contains more than {count} features and cannot be displayed here.",
|
|
@@ -19818,7 +19811,6 @@ var en = {
|
|
|
19818
19811
|
"tooltip.url.open": "Open URL",
|
|
19819
19812
|
"ui.readLess": "Read less",
|
|
19820
19813
|
"ui.readMore": "Read more",
|
|
19821
|
-
"wfs.aggregations.notsupported": "Aggregations are currently not supported for WFS services",
|
|
19822
19814
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
19823
19815
|
"wfs.featuretype.notfound": "No matching feature type was found in the service",
|
|
19824
19816
|
"wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
|
|
@@ -20255,6 +20247,7 @@ var es = {
|
|
|
20255
20247
|
"record.action.download": "",
|
|
20256
20248
|
"record.action.duplicate": "",
|
|
20257
20249
|
"record.action.duplicating": "",
|
|
20250
|
+
"record.action.rollback": "",
|
|
20258
20251
|
"record.action.view": "",
|
|
20259
20252
|
"record.externalViewer.open": "",
|
|
20260
20253
|
"record.feature.limit": "",
|
|
@@ -20434,7 +20427,6 @@ var es = {
|
|
|
20434
20427
|
"tooltip.url.open": "",
|
|
20435
20428
|
"ui.readLess": "",
|
|
20436
20429
|
"ui.readMore": "",
|
|
20437
|
-
"wfs.aggregations.notsupported": "",
|
|
20438
20430
|
"wfs.feature.limit": "",
|
|
20439
20431
|
"wfs.featuretype.notfound": "",
|
|
20440
20432
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -20713,14 +20705,14 @@ var fr = {
|
|
|
20713
20705
|
"editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
|
|
20714
20706
|
"editor.record.form.keywords.place.withoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
|
|
20715
20707
|
"editor.record.form.keywords.placeholder": "Sélectionnez un mot-clé",
|
|
20716
|
-
"editor.record.form.license.cc-by": "",
|
|
20717
|
-
"editor.record.form.license.cc-by-sa": "",
|
|
20718
|
-
"editor.record.form.license.cc-zero": "",
|
|
20708
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
20709
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
20710
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
20719
20711
|
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
20720
20712
|
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
20721
|
-
"editor.record.form.license.odbl": "",
|
|
20722
|
-
"editor.record.form.license.odc-by": "",
|
|
20723
|
-
"editor.record.form.license.pddl": "",
|
|
20713
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
20714
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20715
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20724
20716
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20725
20717
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
20726
20718
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
@@ -20773,7 +20765,7 @@ var fr = {
|
|
|
20773
20765
|
"editor.record.resourceError.closeMessage": "Compris",
|
|
20774
20766
|
"editor.record.resourceError.title": "Erreur avec les pièces jointes",
|
|
20775
20767
|
"editor.record.saveStatus.draftWithChangesPending": "Sauvegardé - Modifications non publiées",
|
|
20776
|
-
"editor.record.saveStatus.recordNotPublished": "",
|
|
20768
|
+
"editor.record.saveStatus.recordNotPublished": "Sauvegardé - non publié",
|
|
20777
20769
|
"editor.record.saveStatus.recordUpToDate": "Sauvegardé - Jeu de données à jour",
|
|
20778
20770
|
"editor.record.undo.confirmation.cancelText": "Garder les modifications",
|
|
20779
20771
|
"editor.record.undo.confirmation.confirmText": "Retirer les modifications",
|
|
@@ -20783,7 +20775,7 @@ var fr = {
|
|
|
20783
20775
|
"editor.record.undo.tooltip.enabled": "Cliquer sur ce bouton pour annuler les modifications apportées à ce jeu de données",
|
|
20784
20776
|
"editor.record.upToDate": "Ce jeu de données est à jour",
|
|
20785
20777
|
"editor.sidebar.logout": "Se déconnecter",
|
|
20786
|
-
"editor.sidebar.menu.editor": "",
|
|
20778
|
+
"editor.sidebar.menu.editor": "Editeur",
|
|
20787
20779
|
"editor.temporary.disabled": "Pas encore implémenté",
|
|
20788
20780
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
20789
20781
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -20831,7 +20823,7 @@ var fr = {
|
|
|
20831
20823
|
"map.add.layer": "Ajouter une couche",
|
|
20832
20824
|
"map.add.layer.catalog": "Du catalogue",
|
|
20833
20825
|
"map.add.layer.file": "À partir d'un fichier",
|
|
20834
|
-
"map.add.layer.ogc.api": "",
|
|
20826
|
+
"map.add.layer.ogc.api": "Depuis un service OGC API",
|
|
20835
20827
|
"map.add.layer.wfs": "Depuis un service WFS",
|
|
20836
20828
|
"map.add.layer.wms": "Depuis un service WMS",
|
|
20837
20829
|
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
@@ -20844,7 +20836,7 @@ var fr = {
|
|
|
20844
20836
|
"map.loading.data": "Chargement des données...",
|
|
20845
20837
|
"map.loading.service": "Chargement du service...",
|
|
20846
20838
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
20847
|
-
"map.ogc.urlInput.hint": "",
|
|
20839
|
+
"map.ogc.urlInput.hint": "Entrez l'URL du service OGC API",
|
|
20848
20840
|
"map.select.layer": "Source de données",
|
|
20849
20841
|
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
20850
20842
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
@@ -20871,6 +20863,7 @@ var fr = {
|
|
|
20871
20863
|
"record.action.download": "Télécharger",
|
|
20872
20864
|
"record.action.duplicate": "Dupliquer",
|
|
20873
20865
|
"record.action.duplicating": "Duplication...",
|
|
20866
|
+
"record.action.rollback": "Restaurer",
|
|
20874
20867
|
"record.action.view": "Voir",
|
|
20875
20868
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20876
20869
|
"record.feature.limit": "La ressource contient plus de {count} entités et ne peut pas être affichée ici.",
|
|
@@ -21050,7 +21043,6 @@ var fr = {
|
|
|
21050
21043
|
"tooltip.url.open": "Ouvrir l'URL",
|
|
21051
21044
|
"ui.readLess": "Réduire",
|
|
21052
21045
|
"ui.readMore": "Lire la suite",
|
|
21053
|
-
"wfs.aggregations.notsupported": "Agrégations non supportées pour les services WFS",
|
|
21054
21046
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
21055
21047
|
"wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
|
|
21056
21048
|
"wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
|
|
@@ -21267,9 +21259,9 @@ var it = {
|
|
|
21267
21259
|
"editor.record.deleteError.title": "Errore durante l'eliminazione",
|
|
21268
21260
|
"editor.record.deleteSuccess.body": "Il dataset è stato eliminato correttamente",
|
|
21269
21261
|
"editor.record.deleteSuccess.title": "Eliminazione riuscita",
|
|
21270
|
-
"editor.record.error.back": "",
|
|
21271
|
-
"editor.record.error.explanation": "",
|
|
21272
|
-
"editor.record.error.message": "",
|
|
21262
|
+
"editor.record.error.back": "Ritorna al catalogo",
|
|
21263
|
+
"editor.record.error.explanation": "Forse non ha accesso a questa pagina oppure questo collegamento potrebbe non essere valido.",
|
|
21264
|
+
"editor.record.error.message": "Qualcosa è andato storto",
|
|
21273
21265
|
"editor.record.form.bottomButtons.comeBackLater": "Ritorna più tardi",
|
|
21274
21266
|
"editor.record.form.bottomButtons.next": "Avanti",
|
|
21275
21267
|
"editor.record.form.bottomButtons.previous": "Precedente",
|
|
@@ -21329,18 +21321,18 @@ var it = {
|
|
|
21329
21321
|
"editor.record.form.keywords.place.placeholder": "Cerca una posizione per parola chiave",
|
|
21330
21322
|
"editor.record.form.keywords.place.withoutExtent": "Questa parola chiave non ha una posizione geografica associata",
|
|
21331
21323
|
"editor.record.form.keywords.placeholder": "Seleziona una parola chiave",
|
|
21332
|
-
"editor.record.form.license.cc-by": "",
|
|
21333
|
-
"editor.record.form.license.cc-by-sa": "",
|
|
21334
|
-
"editor.record.form.license.cc-zero": "",
|
|
21324
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
21325
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
21326
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
21335
21327
|
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
21336
21328
|
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
21337
|
-
"editor.record.form.license.odbl": "",
|
|
21338
|
-
"editor.record.form.license.odc-by": "",
|
|
21339
|
-
"editor.record.form.license.pddl": "",
|
|
21329
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
21330
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21331
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21340
21332
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21341
21333
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21342
21334
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21343
|
-
"editor.record.form.page.resources": "",
|
|
21335
|
+
"editor.record.form.page.resources": "Risorse",
|
|
21344
21336
|
"editor.record.form.section.about.description": "Queste informazioni riguardano il dataset",
|
|
21345
21337
|
"editor.record.form.section.about.label": "Informazioni sul dataset",
|
|
21346
21338
|
"editor.record.form.section.annexes.description": "Gli allegati sono risorse facoltative. Sono allegati al dataset e aiutano a comprendere meglio i dati (avviso, ecc.).",
|
|
@@ -21367,7 +21359,7 @@ var it = {
|
|
|
21367
21359
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21368
21360
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21369
21361
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21370
|
-
"editor.record.lock.reason": "",
|
|
21362
|
+
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21371
21363
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21372
21364
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
21373
21365
|
"editor.record.onlineResourceError.closeMessage": "Capito",
|
|
@@ -21389,7 +21381,7 @@ var it = {
|
|
|
21389
21381
|
"editor.record.resourceError.closeMessage": "Capito",
|
|
21390
21382
|
"editor.record.resourceError.title": "Errore con gli allegati",
|
|
21391
21383
|
"editor.record.saveStatus.draftWithChangesPending": "Salvato - Modifiche non pubblicate",
|
|
21392
|
-
"editor.record.saveStatus.recordNotPublished": "",
|
|
21384
|
+
"editor.record.saveStatus.recordNotPublished": "Salvato - non pubblicato",
|
|
21393
21385
|
"editor.record.saveStatus.recordUpToDate": "Salvato - Dataset aggiornato",
|
|
21394
21386
|
"editor.record.undo.confirmation.cancelText": "Mantieni le modifiche",
|
|
21395
21387
|
"editor.record.undo.confirmation.confirmText": "Annulla le modifiche",
|
|
@@ -21399,7 +21391,7 @@ var it = {
|
|
|
21399
21391
|
"editor.record.undo.tooltip.enabled": "Fare clic su questo pulsante per annullare le modifiche apportate a questo dataset",
|
|
21400
21392
|
"editor.record.upToDate": "Questo dataset è aggiornato",
|
|
21401
21393
|
"editor.sidebar.logout": "Esci",
|
|
21402
|
-
"editor.sidebar.menu.editor": "",
|
|
21394
|
+
"editor.sidebar.menu.editor": "Editore",
|
|
21403
21395
|
"editor.temporary.disabled": "Non ancora implementato",
|
|
21404
21396
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
21405
21397
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
@@ -21447,7 +21439,7 @@ var it = {
|
|
|
21447
21439
|
"map.add.layer": "Aggiungere un layer",
|
|
21448
21440
|
"map.add.layer.catalog": "Dal catalogo",
|
|
21449
21441
|
"map.add.layer.file": "Da un file",
|
|
21450
|
-
"map.add.layer.ogc.api": "",
|
|
21442
|
+
"map.add.layer.ogc.api": "Da OGC API",
|
|
21451
21443
|
"map.add.layer.wfs": "Da un WFS",
|
|
21452
21444
|
"map.add.layer.wms": "Da un WMS",
|
|
21453
21445
|
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
@@ -21460,7 +21452,7 @@ var it = {
|
|
|
21460
21452
|
"map.loading.data": "Caricamento dati...",
|
|
21461
21453
|
"map.loading.service": "Caricamento del servizio...",
|
|
21462
21454
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
21463
|
-
"map.ogc.urlInput.hint": "",
|
|
21455
|
+
"map.ogc.urlInput.hint": "Inserisci URL del servizio OGC API",
|
|
21464
21456
|
"map.select.layer": "Sorgente dati",
|
|
21465
21457
|
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
21466
21458
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
@@ -21486,7 +21478,8 @@ var it = {
|
|
|
21486
21478
|
"record.action.delete": "Elimina",
|
|
21487
21479
|
"record.action.download": "Scarica",
|
|
21488
21480
|
"record.action.duplicate": "Duplicato",
|
|
21489
|
-
"record.action.duplicating": "",
|
|
21481
|
+
"record.action.duplicating": "Duplicazione",
|
|
21482
|
+
"record.action.rollback": "Annulla",
|
|
21490
21483
|
"record.action.view": "Visualizza",
|
|
21491
21484
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21492
21485
|
"record.feature.limit": "La risorsa contiene più di {count} funzionalità e non può essere visualizzata qui.",
|
|
@@ -21666,7 +21659,7 @@ var it = {
|
|
|
21666
21659
|
"tooltip.url.open": "Aprire l'URL",
|
|
21667
21660
|
"ui.readLess": "Ridurre",
|
|
21668
21661
|
"ui.readMore": "Leggere di più",
|
|
21669
|
-
"wfs.aggregations.notsupported": "",
|
|
21662
|
+
"wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
|
|
21670
21663
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
21671
21664
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
21672
21665
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
@@ -22103,6 +22096,7 @@ var nl = {
|
|
|
22103
22096
|
"record.action.download": "",
|
|
22104
22097
|
"record.action.duplicate": "",
|
|
22105
22098
|
"record.action.duplicating": "",
|
|
22099
|
+
"record.action.rollback": "",
|
|
22106
22100
|
"record.action.view": "",
|
|
22107
22101
|
"record.externalViewer.open": "",
|
|
22108
22102
|
"record.feature.limit": "",
|
|
@@ -22282,7 +22276,6 @@ var nl = {
|
|
|
22282
22276
|
"tooltip.url.open": "",
|
|
22283
22277
|
"ui.readLess": "",
|
|
22284
22278
|
"ui.readMore": "",
|
|
22285
|
-
"wfs.aggregations.notsupported": "",
|
|
22286
22279
|
"wfs.feature.limit": "",
|
|
22287
22280
|
"wfs.featuretype.notfound": "",
|
|
22288
22281
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -22719,6 +22712,7 @@ var pt = {
|
|
|
22719
22712
|
"record.action.download": "",
|
|
22720
22713
|
"record.action.duplicate": "",
|
|
22721
22714
|
"record.action.duplicating": "",
|
|
22715
|
+
"record.action.rollback": "",
|
|
22722
22716
|
"record.action.view": "",
|
|
22723
22717
|
"record.externalViewer.open": "",
|
|
22724
22718
|
"record.feature.limit": "",
|
|
@@ -22898,7 +22892,6 @@ var pt = {
|
|
|
22898
22892
|
"tooltip.url.open": "",
|
|
22899
22893
|
"ui.readLess": "",
|
|
22900
22894
|
"ui.readMore": "",
|
|
22901
|
-
"wfs.aggregations.notsupported": "",
|
|
22902
22895
|
"wfs.feature.limit": "",
|
|
22903
22896
|
"wfs.featuretype.notfound": "",
|
|
22904
22897
|
"wfs.geojsongml.notsupported": "",
|
|
@@ -23085,6 +23078,16 @@ class Gn4FieldMapper {
|
|
|
23085
23078
|
isOpenData: (output, source) => this.addExtra({
|
|
23086
23079
|
isOpenData: selectField(source, 'isOpenData') !== 'false',
|
|
23087
23080
|
}, output),
|
|
23081
|
+
featureTypes: (output, source) => this.addExtra({
|
|
23082
|
+
featureTypes: selectField(source, 'featureTypes'),
|
|
23083
|
+
}, output),
|
|
23084
|
+
related: (output, source) => {
|
|
23085
|
+
const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')), '_source');
|
|
23086
|
+
const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
|
|
23087
|
+
return featureCatalogIdentifier
|
|
23088
|
+
? this.addExtra({ featureCatalogIdentifier }, output)
|
|
23089
|
+
: output;
|
|
23090
|
+
},
|
|
23088
23091
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
23089
23092
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
23090
23093
|
}, output),
|
|
@@ -23932,9 +23935,29 @@ class Gn4Repository {
|
|
|
23932
23935
|
}
|
|
23933
23936
|
getRecord(uniqueIdentifier) {
|
|
23934
23937
|
return this.gn4SearchApi
|
|
23935
|
-
.search('bucket',
|
|
23938
|
+
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
23936
23939
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23937
23940
|
}
|
|
23941
|
+
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23942
|
+
) {
|
|
23943
|
+
if (record.extras &&
|
|
23944
|
+
record.extras['featureTypes'] &&
|
|
23945
|
+
record.extras['featureTypes'][0]?.attributeTable &&
|
|
23946
|
+
Array.isArray(record.extras['featureTypes'][0].attributeTable)) {
|
|
23947
|
+
return of({
|
|
23948
|
+
attributes: record.extras['featureTypes'][0]?.attributeTable?.map((attr) => ({
|
|
23949
|
+
name: attr.name,
|
|
23950
|
+
title: attr.definition,
|
|
23951
|
+
})),
|
|
23952
|
+
});
|
|
23953
|
+
}
|
|
23954
|
+
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
23955
|
+
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
23956
|
+
visited.add(featureCatalogIdentifier);
|
|
23957
|
+
return this.getRecord(featureCatalogIdentifier).pipe(switchMap((record) => record ? this.getFeatureCatalog(record, visited) : of(null)));
|
|
23958
|
+
}
|
|
23959
|
+
return of(null);
|
|
23960
|
+
}
|
|
23938
23961
|
getSimilarRecords(similarTo) {
|
|
23939
23962
|
return this.gn4SearchApi
|
|
23940
23963
|
.search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
|
|
@@ -30581,6 +30604,7 @@ class ActionMenuComponent {
|
|
|
30581
30604
|
this.duplicate = new EventEmitter();
|
|
30582
30605
|
this.delete = new EventEmitter();
|
|
30583
30606
|
this.closeActionMenu = new EventEmitter();
|
|
30607
|
+
this.rollback = new EventEmitter();
|
|
30584
30608
|
this.sectionDisplayed = 'mainMenu';
|
|
30585
30609
|
}
|
|
30586
30610
|
openMenu() {
|
|
@@ -30591,11 +30615,16 @@ class ActionMenuComponent {
|
|
|
30591
30615
|
this.cdr.markForCheck();
|
|
30592
30616
|
}
|
|
30593
30617
|
displayDeleteMenu() {
|
|
30594
|
-
this.
|
|
30618
|
+
if (this.isDraftPage) {
|
|
30619
|
+
this.sectionDisplayed = 'rollbackMenu';
|
|
30620
|
+
}
|
|
30621
|
+
else {
|
|
30622
|
+
this.sectionDisplayed = 'deleteMenu';
|
|
30623
|
+
}
|
|
30595
30624
|
this.cdr.markForCheck();
|
|
30596
30625
|
}
|
|
30597
30626
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$b.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30598
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span translate>record.action.delete</span></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
30627
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
30599
30628
|
}
|
|
30600
30629
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
30601
30630
|
type: Component,
|
|
@@ -30606,17 +30635,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30606
30635
|
MatDialogModule,
|
|
30607
30636
|
ConfirmationDialogComponent,
|
|
30608
30637
|
TranslateModule,
|
|
30609
|
-
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span translate>record.action.delete</span></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
30638
|
+
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
30610
30639
|
}], ctorParameters: () => [{ type: i1$b.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
30611
30640
|
type: Input
|
|
30612
30641
|
}], canDelete: [{
|
|
30613
30642
|
type: Input
|
|
30643
|
+
}], isDraftPage: [{
|
|
30644
|
+
type: Input
|
|
30614
30645
|
}], duplicate: [{
|
|
30615
30646
|
type: Output
|
|
30616
30647
|
}], delete: [{
|
|
30617
30648
|
type: Output
|
|
30618
30649
|
}], closeActionMenu: [{
|
|
30619
30650
|
type: Output
|
|
30651
|
+
}], rollback: [{
|
|
30652
|
+
type: Output
|
|
30620
30653
|
}], trigger: [{
|
|
30621
30654
|
type: ViewChild,
|
|
30622
30655
|
args: [MatMenuTrigger]
|
|
@@ -30641,6 +30674,7 @@ class ResultsTableComponent {
|
|
|
30641
30674
|
this.recordClick = new EventEmitter();
|
|
30642
30675
|
this.duplicateRecord = new EventEmitter();
|
|
30643
30676
|
this.deleteRecord = new EventEmitter();
|
|
30677
|
+
this.rollbackDraft = new EventEmitter();
|
|
30644
30678
|
this.recordsSelectedChange = new EventEmitter();
|
|
30645
30679
|
this.isActionMenuOpen = false;
|
|
30646
30680
|
}
|
|
@@ -30719,6 +30753,10 @@ class ResultsTableComponent {
|
|
|
30719
30753
|
this.deleteRecord.emit(item);
|
|
30720
30754
|
this.closeActionMenu();
|
|
30721
30755
|
}
|
|
30756
|
+
handleRollback(item) {
|
|
30757
|
+
this.rollbackDraft.emit(item);
|
|
30758
|
+
this.closeActionMenu();
|
|
30759
|
+
}
|
|
30722
30760
|
setSortBy(col, order) {
|
|
30723
30761
|
this.sortByChange.emit([col, order]);
|
|
30724
30762
|
}
|
|
@@ -30743,7 +30781,7 @@ class ResultsTableComponent {
|
|
|
30743
30781
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30744
30782
|
}
|
|
30745
30783
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$9.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30746
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
30784
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "isDraftPage"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
30747
30785
|
}
|
|
30748
30786
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30749
30787
|
type: Component,
|
|
@@ -30757,7 +30795,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30757
30795
|
ActionMenuComponent,
|
|
30758
30796
|
NgIconComponent,
|
|
30759
30797
|
CdkOverlayOrigin,
|
|
30760
|
-
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30798
|
+
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30761
30799
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30762
30800
|
type: Input
|
|
30763
30801
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -30782,6 +30820,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30782
30820
|
type: Output
|
|
30783
30821
|
}], deleteRecord: [{
|
|
30784
30822
|
type: Output
|
|
30823
|
+
}], rollbackDraft: [{
|
|
30824
|
+
type: Output
|
|
30785
30825
|
}], recordsSelectedChange: [{
|
|
30786
30826
|
type: Output
|
|
30787
30827
|
}], actionMenuButtons: [{
|
|
@@ -33038,7 +33078,7 @@ class ResultsTableContainerComponent {
|
|
|
33038
33078
|
this.subscription.unsubscribe();
|
|
33039
33079
|
}
|
|
33040
33080
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33041
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDuplicating: "isDuplicating" }, outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete", "isDraftPage", "isDuplicating"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "recordsSelectedChange"] }] }); }
|
|
33081
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDuplicating: "isDuplicating" }, outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete", "isDraftPage", "isDuplicating"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "rollbackDraft", "recordsSelectedChange"] }] }); }
|
|
33042
33082
|
}
|
|
33043
33083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
33044
33084
|
type: Component,
|
|
@@ -35187,6 +35227,9 @@ const loadFullMetadata = createAction('[Metadata view] Load full metadata', prop
|
|
|
35187
35227
|
const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
|
|
35188
35228
|
const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
|
|
35189
35229
|
const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
|
|
35230
|
+
const loadFeatureCatalog = createAction("[Metadata view] Load metadata's feature catalog", props());
|
|
35231
|
+
const loadFeatureCatalogSuccess = createAction('[Metadata view] Load metadata feature catalog success', props());
|
|
35232
|
+
const loadFeatureCatalogFailure = createAction('[Metadata view] Load metadata feature catalog failure', props());
|
|
35190
35233
|
const closeMetadata = createAction('[Metadata view] close');
|
|
35191
35234
|
/*
|
|
35192
35235
|
Related actions
|
|
@@ -35212,6 +35255,9 @@ var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
|
35212
35255
|
addUserFeedbackFailure: addUserFeedbackFailure,
|
|
35213
35256
|
addUserFeedbackSuccess: addUserFeedbackSuccess,
|
|
35214
35257
|
closeMetadata: closeMetadata,
|
|
35258
|
+
loadFeatureCatalog: loadFeatureCatalog,
|
|
35259
|
+
loadFeatureCatalogFailure: loadFeatureCatalogFailure,
|
|
35260
|
+
loadFeatureCatalogSuccess: loadFeatureCatalogSuccess,
|
|
35215
35261
|
loadFullMetadata: loadFullMetadata,
|
|
35216
35262
|
loadFullMetadataFailure: loadFullMetadataFailure,
|
|
35217
35263
|
loadFullMetadataSuccess: loadFullMetadataSuccess,
|
|
@@ -35229,6 +35275,8 @@ const initialMetadataViewState = {
|
|
|
35229
35275
|
loadingFull: false,
|
|
35230
35276
|
allUserFeedbacksLoading: false,
|
|
35231
35277
|
addUserFeedbackLoading: false,
|
|
35278
|
+
featureCatalogLoading: false,
|
|
35279
|
+
featureCatalogError: null,
|
|
35232
35280
|
};
|
|
35233
35281
|
const metadataViewReducer = createReducer(initialMetadataViewState,
|
|
35234
35282
|
/*
|
|
@@ -35288,6 +35336,22 @@ on(loadUserFeedbacks, (state) => ({
|
|
|
35288
35336
|
error: { otherError, notFound },
|
|
35289
35337
|
addUserFeedbackLoading: false,
|
|
35290
35338
|
allUserFeedbacksLoading: false,
|
|
35339
|
+
})),
|
|
35340
|
+
/**
|
|
35341
|
+
* FeatureCatalog reducers
|
|
35342
|
+
*/
|
|
35343
|
+
on(loadFeatureCatalog, (state) => ({
|
|
35344
|
+
...state,
|
|
35345
|
+
featureCatalogError: null,
|
|
35346
|
+
featureCatalogLoading: true,
|
|
35347
|
+
})), on(loadFeatureCatalogSuccess, (state, { datasetCatalog }) => ({
|
|
35348
|
+
...state,
|
|
35349
|
+
featureCatalog: datasetCatalog,
|
|
35350
|
+
featureCatalogLoading: false,
|
|
35351
|
+
})), on(loadFeatureCatalogFailure, (state, { error }) => ({
|
|
35352
|
+
...state,
|
|
35353
|
+
featureCatalogError: error,
|
|
35354
|
+
featureCatalogLoading: false,
|
|
35291
35355
|
})));
|
|
35292
35356
|
function reducer$1(metadataViewState, action) {
|
|
35293
35357
|
return metadataViewReducer(metadataViewState, action);
|
|
@@ -35316,6 +35380,11 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
|
|
|
35316
35380
|
const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
|
|
35317
35381
|
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
35318
35382
|
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
35383
|
+
/*
|
|
35384
|
+
Feature Catalog Selectors
|
|
35385
|
+
*/
|
|
35386
|
+
const getFeatureCatalog = createSelector(getMdViewState, (state) => state.featureCatalog);
|
|
35387
|
+
const getFeatureCatalogIsLoading = createSelector(getMdViewState, (state) => state.featureCatalogLoading);
|
|
35319
35388
|
|
|
35320
35389
|
class FetchError {
|
|
35321
35390
|
constructor(type, info, httpStatus = 0) {
|
|
@@ -35431,8 +35500,8 @@ function fetchHeaders(url) {
|
|
|
35431
35500
|
return parseHeaders(response.headers);
|
|
35432
35501
|
});
|
|
35433
35502
|
}
|
|
35434
|
-
function fetchDataAsText(url) {
|
|
35435
|
-
|
|
35503
|
+
function fetchDataAsText(url, cacheActive) {
|
|
35504
|
+
const fetchFactory = () => sharedFetch(url)
|
|
35436
35505
|
.catch((error) => {
|
|
35437
35506
|
throw FetchError.corsOrNetwork(error.message);
|
|
35438
35507
|
})
|
|
@@ -35441,10 +35510,11 @@ function fetchDataAsText(url) {
|
|
|
35441
35510
|
throw FetchError.http(response.status, await response.text());
|
|
35442
35511
|
}
|
|
35443
35512
|
return response.text();
|
|
35444
|
-
})
|
|
35513
|
+
});
|
|
35514
|
+
return cacheActive ? useCache(fetchFactory, url, 'asText') : fetchFactory();
|
|
35445
35515
|
}
|
|
35446
|
-
function fetchDataAsArrayBuffer(url) {
|
|
35447
|
-
|
|
35516
|
+
function fetchDataAsArrayBuffer(url, cacheActive) {
|
|
35517
|
+
const fetchFactory = () => sharedFetch(url)
|
|
35448
35518
|
.catch((error) => {
|
|
35449
35519
|
throw FetchError.corsOrNetwork(error.message);
|
|
35450
35520
|
})
|
|
@@ -35454,7 +35524,8 @@ function fetchDataAsArrayBuffer(url) {
|
|
|
35454
35524
|
}
|
|
35455
35525
|
// convert to a numeric array so that we can store the response in cache
|
|
35456
35526
|
return Array.from(new Uint8Array(await response.arrayBuffer()));
|
|
35457
|
-
})
|
|
35527
|
+
});
|
|
35528
|
+
return (cacheActive ? useCache(fetchFactory, url, 'asArrayBuffer') : fetchFactory()).then((array) => {
|
|
35458
35529
|
return new Uint8Array(array).buffer;
|
|
35459
35530
|
});
|
|
35460
35531
|
}
|
|
@@ -35600,68 +35671,6 @@ function getJsonDataItemsProxy(items) {
|
|
|
35600
35671
|
});
|
|
35601
35672
|
}
|
|
35602
35673
|
|
|
35603
|
-
class BaseReader {
|
|
35604
|
-
constructor(url) {
|
|
35605
|
-
this.url = url;
|
|
35606
|
-
this.selected = null;
|
|
35607
|
-
this.groupedBy = null;
|
|
35608
|
-
this.aggregations = null;
|
|
35609
|
-
this.filter = null;
|
|
35610
|
-
this.sort = null;
|
|
35611
|
-
this.startIndex = null;
|
|
35612
|
-
this.count = null;
|
|
35613
|
-
}
|
|
35614
|
-
load() {
|
|
35615
|
-
throw new Error('not implemented');
|
|
35616
|
-
}
|
|
35617
|
-
get properties() {
|
|
35618
|
-
throw new Error('not implemented');
|
|
35619
|
-
}
|
|
35620
|
-
get info() {
|
|
35621
|
-
throw new Error('not implemented');
|
|
35622
|
-
}
|
|
35623
|
-
read() {
|
|
35624
|
-
throw new Error('not implemented');
|
|
35625
|
-
}
|
|
35626
|
-
selectAll() {
|
|
35627
|
-
this.groupedBy = null;
|
|
35628
|
-
this.aggregations = null;
|
|
35629
|
-
this.selected = null;
|
|
35630
|
-
this.filter = null;
|
|
35631
|
-
this.startIndex = null;
|
|
35632
|
-
this.count = null;
|
|
35633
|
-
return this;
|
|
35634
|
-
}
|
|
35635
|
-
select(...selectedFields) {
|
|
35636
|
-
this.selected = selectedFields;
|
|
35637
|
-
this.aggregations = null; // clear aggregations & groups when selecting fields
|
|
35638
|
-
this.groupedBy = null;
|
|
35639
|
-
return this;
|
|
35640
|
-
}
|
|
35641
|
-
groupBy(...groupBy) {
|
|
35642
|
-
this.groupedBy = groupBy;
|
|
35643
|
-
this.selected = null; // clear normal field selection when aggregating
|
|
35644
|
-
return this;
|
|
35645
|
-
}
|
|
35646
|
-
aggregate(...aggregations) {
|
|
35647
|
-
this.aggregations = aggregations;
|
|
35648
|
-
return this;
|
|
35649
|
-
}
|
|
35650
|
-
where(filter) {
|
|
35651
|
-
this.filter = filter;
|
|
35652
|
-
return this;
|
|
35653
|
-
}
|
|
35654
|
-
orderBy(...fieldSorts) {
|
|
35655
|
-
this.sort = fieldSorts;
|
|
35656
|
-
return this;
|
|
35657
|
-
}
|
|
35658
|
-
limit(startIndex, count) {
|
|
35659
|
-
this.startIndex = startIndex;
|
|
35660
|
-
this.count = count;
|
|
35661
|
-
return this;
|
|
35662
|
-
}
|
|
35663
|
-
}
|
|
35664
|
-
|
|
35665
35674
|
function filterToSql(filter) {
|
|
35666
35675
|
const operator = filter[0];
|
|
35667
35676
|
const args = filter.slice(1);
|
|
@@ -35755,7 +35764,80 @@ function generateSqlQuery(selected = null, filter = null, sort = null, startInde
|
|
|
35755
35764
|
return sqlSelect + sqlFrom + sqlGroupBy + sqlOrderBy + sqlWhere + sqlLimit;
|
|
35756
35765
|
}
|
|
35757
35766
|
|
|
35758
|
-
class
|
|
35767
|
+
class BaseReader {
|
|
35768
|
+
constructor(url) {
|
|
35769
|
+
this.url = url;
|
|
35770
|
+
this.selected = null;
|
|
35771
|
+
this.groupedBy = null;
|
|
35772
|
+
this.aggregations = null;
|
|
35773
|
+
this.filter = null;
|
|
35774
|
+
this.sort = null;
|
|
35775
|
+
this.startIndex = null;
|
|
35776
|
+
this.count = null;
|
|
35777
|
+
}
|
|
35778
|
+
load() {
|
|
35779
|
+
throw new Error('not implemented');
|
|
35780
|
+
}
|
|
35781
|
+
get properties() {
|
|
35782
|
+
throw new Error('not implemented');
|
|
35783
|
+
}
|
|
35784
|
+
get info() {
|
|
35785
|
+
throw new Error('not implemented');
|
|
35786
|
+
}
|
|
35787
|
+
read() {
|
|
35788
|
+
throw new Error('not implemented');
|
|
35789
|
+
}
|
|
35790
|
+
selectAll() {
|
|
35791
|
+
this.groupedBy = null;
|
|
35792
|
+
this.aggregations = null;
|
|
35793
|
+
this.selected = null;
|
|
35794
|
+
this.filter = null;
|
|
35795
|
+
this.startIndex = null;
|
|
35796
|
+
this.count = null;
|
|
35797
|
+
return this;
|
|
35798
|
+
}
|
|
35799
|
+
select(...selectedFields) {
|
|
35800
|
+
this.selected = selectedFields;
|
|
35801
|
+
this.aggregations = null; // clear aggregations & groups when selecting fields
|
|
35802
|
+
this.groupedBy = null;
|
|
35803
|
+
return this;
|
|
35804
|
+
}
|
|
35805
|
+
groupBy(...groupBy) {
|
|
35806
|
+
this.groupedBy = groupBy;
|
|
35807
|
+
this.selected = null; // clear normal field selection when aggregating
|
|
35808
|
+
return this;
|
|
35809
|
+
}
|
|
35810
|
+
aggregate(...aggregations) {
|
|
35811
|
+
this.aggregations = aggregations;
|
|
35812
|
+
return this;
|
|
35813
|
+
}
|
|
35814
|
+
where(filter) {
|
|
35815
|
+
this.filter = filter;
|
|
35816
|
+
return this;
|
|
35817
|
+
}
|
|
35818
|
+
orderBy(...fieldSorts) {
|
|
35819
|
+
this.sort = fieldSorts;
|
|
35820
|
+
return this;
|
|
35821
|
+
}
|
|
35822
|
+
limit(startIndex, count) {
|
|
35823
|
+
this.startIndex = startIndex;
|
|
35824
|
+
this.count = count;
|
|
35825
|
+
return this;
|
|
35826
|
+
}
|
|
35827
|
+
}
|
|
35828
|
+
|
|
35829
|
+
class BaseCacheReader extends BaseReader {
|
|
35830
|
+
constructor(url, cacheActive = true) {
|
|
35831
|
+
super(url);
|
|
35832
|
+
this.url = url;
|
|
35833
|
+
this.cacheActive = cacheActive;
|
|
35834
|
+
}
|
|
35835
|
+
setCacheActive(value) {
|
|
35836
|
+
this.cacheActive = value;
|
|
35837
|
+
}
|
|
35838
|
+
}
|
|
35839
|
+
|
|
35840
|
+
class BaseFileReader extends BaseCacheReader {
|
|
35759
35841
|
getData() {
|
|
35760
35842
|
throw new Error('not implemented');
|
|
35761
35843
|
}
|
|
@@ -35819,7 +35901,7 @@ function parseCsv(text) {
|
|
|
35819
35901
|
}
|
|
35820
35902
|
class CsvReader extends BaseFileReader {
|
|
35821
35903
|
getData() {
|
|
35822
|
-
return fetchDataAsText(this.url).then(parseCsv);
|
|
35904
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseCsv);
|
|
35823
35905
|
}
|
|
35824
35906
|
}
|
|
35825
35907
|
|
|
@@ -35836,7 +35918,7 @@ function parseJson(text) {
|
|
|
35836
35918
|
}
|
|
35837
35919
|
class JsonReader extends BaseFileReader {
|
|
35838
35920
|
getData() {
|
|
35839
|
-
return fetchDataAsText(this.url).then(parseJson);
|
|
35921
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseJson);
|
|
35840
35922
|
}
|
|
35841
35923
|
}
|
|
35842
35924
|
|
|
@@ -35855,7 +35937,7 @@ function parseGeojson(text) {
|
|
|
35855
35937
|
}
|
|
35856
35938
|
class GeojsonReader extends BaseFileReader {
|
|
35857
35939
|
getData() {
|
|
35858
|
-
return fetchDataAsText(this.url).then(parseGeojson);
|
|
35940
|
+
return fetchDataAsText(this.url, this.cacheActive).then(parseGeojson);
|
|
35859
35941
|
}
|
|
35860
35942
|
}
|
|
35861
35943
|
|
|
@@ -35877,7 +35959,7 @@ function parseExcel(buffer) {
|
|
|
35877
35959
|
}
|
|
35878
35960
|
class ExcelReader extends BaseFileReader {
|
|
35879
35961
|
getData() {
|
|
35880
|
-
return fetchDataAsArrayBuffer(this.url).then(parseExcel);
|
|
35962
|
+
return fetchDataAsArrayBuffer(this.url, this.cacheActive).then(parseExcel);
|
|
35881
35963
|
}
|
|
35882
35964
|
}
|
|
35883
35965
|
|
|
@@ -35904,19 +35986,21 @@ function parseGml(text, namespace, version) {
|
|
|
35904
35986
|
throw Error("Couldn't retrieve namespace url");
|
|
35905
35987
|
}
|
|
35906
35988
|
class GmlReader extends BaseFileReader {
|
|
35907
|
-
constructor(url, namespace, version) {
|
|
35989
|
+
constructor(url, namespace, version, cacheActive = true) {
|
|
35908
35990
|
super(url);
|
|
35991
|
+
this.url = url;
|
|
35909
35992
|
this.namespace = namespace;
|
|
35910
35993
|
this.version = version;
|
|
35994
|
+
this.cacheActive = cacheActive;
|
|
35911
35995
|
}
|
|
35912
35996
|
getData() {
|
|
35913
|
-
return fetchDataAsText(this.url).then((text) => parseGml(text, this.namespace, this.version));
|
|
35997
|
+
return fetchDataAsText(this.url, this.cacheActive).then((text) => parseGml(text, this.namespace, this.version));
|
|
35914
35998
|
}
|
|
35915
35999
|
}
|
|
35916
36000
|
|
|
35917
|
-
class WfsReader extends
|
|
35918
|
-
constructor(url, wfsEndpoint, featureTypeName) {
|
|
35919
|
-
super(url);
|
|
36001
|
+
class WfsReader extends BaseCacheReader {
|
|
36002
|
+
constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
|
|
36003
|
+
super(url, cacheActive);
|
|
35920
36004
|
this.endpoint = wfsEndpoint;
|
|
35921
36005
|
this.featureTypeName = featureTypeName;
|
|
35922
36006
|
this.version = this.endpoint.getVersion();
|
|
@@ -35971,9 +36055,9 @@ class WfsReader extends BaseReader {
|
|
|
35971
36055
|
throw new Error('wfs.geojsongml.notsupported');
|
|
35972
36056
|
}
|
|
35973
36057
|
}
|
|
35974
|
-
getData() {
|
|
35975
|
-
if (
|
|
35976
|
-
|
|
36058
|
+
async getData(aggregation, groupedBy) {
|
|
36059
|
+
if (aggregation || groupedBy) {
|
|
36060
|
+
return { items: await this.getQueryData() };
|
|
35977
36061
|
}
|
|
35978
36062
|
const asJson = this.endpoint.supportsJson(this.featureTypeName);
|
|
35979
36063
|
const attributes = this.selected ?? undefined;
|
|
@@ -35993,19 +36077,26 @@ class WfsReader extends BaseReader {
|
|
|
35993
36077
|
// Direct update on string url to prevent encoding of +A and +D
|
|
35994
36078
|
url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`;
|
|
35995
36079
|
}
|
|
35996
|
-
return fetchDataAsText(url).then((text) => asJson
|
|
36080
|
+
return fetchDataAsText(url, this.cacheActive).then((text) => asJson
|
|
35997
36081
|
? parseGeojson(text)
|
|
35998
36082
|
: parseGml(text, this.featureTypeName, this.version));
|
|
35999
36083
|
}
|
|
36084
|
+
async getQueryData() {
|
|
36085
|
+
const items = (await this.getData()).items;
|
|
36086
|
+
const jsonItems = getJsonDataItemsProxy(items);
|
|
36087
|
+
const query = generateSqlQuery(this.selected, this.filter, this.sort, this.startIndex, this.count, this.groupedBy, this.aggregations);
|
|
36088
|
+
const result = await import('alasql').then((module) => module.default(query, [jsonItems]));
|
|
36089
|
+
return result.map(jsonToGeojsonFeature);
|
|
36090
|
+
}
|
|
36000
36091
|
load() {
|
|
36001
36092
|
// Nothing to load for Wfs
|
|
36002
36093
|
}
|
|
36003
36094
|
async read() {
|
|
36004
|
-
return (await this.getData()).items;
|
|
36095
|
+
return (await this.getData(this.aggregations, this.groupedBy)).items;
|
|
36005
36096
|
}
|
|
36006
36097
|
}
|
|
36007
36098
|
|
|
36008
|
-
async function openDataset(url, typeHint, options) {
|
|
36099
|
+
async function openDataset(url, typeHint, options, cacheActive) {
|
|
36009
36100
|
const fileType = await inferDatasetType(url, typeHint);
|
|
36010
36101
|
let reader;
|
|
36011
36102
|
try {
|
|
@@ -36029,6 +36120,7 @@ async function openDataset(url, typeHint, options) {
|
|
|
36029
36120
|
reader = await WfsReader.createReader(url, options.wfsFeatureType);
|
|
36030
36121
|
break;
|
|
36031
36122
|
}
|
|
36123
|
+
reader.setCacheActive(cacheActive);
|
|
36032
36124
|
reader.load();
|
|
36033
36125
|
return reader;
|
|
36034
36126
|
}
|
|
@@ -36045,8 +36137,8 @@ async function openDataset(url, typeHint, options) {
|
|
|
36045
36137
|
* 2. otherwise, look for a Content-Type header in the response with a supported mime type
|
|
36046
36138
|
* 3. if no valid mime type was found, look for an explicit file extension in the url (.csv, .geojson etc.)
|
|
36047
36139
|
*/
|
|
36048
|
-
async function readDataset(url, typeHint, options) {
|
|
36049
|
-
const reader = await openDataset(url, typeHint, options);
|
|
36140
|
+
async function readDataset(url, typeHint, options, cacheActive = true) {
|
|
36141
|
+
const reader = await openDataset(url, typeHint, options, cacheActive);
|
|
36050
36142
|
try {
|
|
36051
36143
|
return await reader.read();
|
|
36052
36144
|
}
|
|
@@ -36207,18 +36299,18 @@ class DataService {
|
|
|
36207
36299
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
36208
36300
|
}));
|
|
36209
36301
|
}
|
|
36210
|
-
readAsGeoJson(link) {
|
|
36211
|
-
return this.getDataset(link).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
|
|
36302
|
+
readAsGeoJson(link, cacheActive) {
|
|
36303
|
+
return this.getDataset(link, cacheActive).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
|
|
36212
36304
|
type: 'FeatureCollection',
|
|
36213
36305
|
features,
|
|
36214
36306
|
})));
|
|
36215
36307
|
}
|
|
36216
|
-
getDataset(link) {
|
|
36308
|
+
getDataset(link, cacheActive) {
|
|
36217
36309
|
if (link.type === 'service' && link.accessServiceProtocol === 'wfs') {
|
|
36218
36310
|
const wfsUrlEndpoint = this.proxy.getProxiedUrl(link.url.toString());
|
|
36219
36311
|
return from(openDataset(wfsUrlEndpoint, 'wfs', {
|
|
36220
36312
|
wfsFeatureType: link.name,
|
|
36221
|
-
}));
|
|
36313
|
+
}, cacheActive));
|
|
36222
36314
|
}
|
|
36223
36315
|
else if (link.type === 'download') {
|
|
36224
36316
|
const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString());
|
|
@@ -36226,18 +36318,18 @@ class DataService {
|
|
|
36226
36318
|
const supportedType = SupportedTypes.indexOf(format) > -1
|
|
36227
36319
|
? format
|
|
36228
36320
|
: undefined;
|
|
36229
|
-
return from(openDataset(linkProxifiedUrl, supportedType)).pipe();
|
|
36321
|
+
return from(openDataset(linkProxifiedUrl, supportedType, undefined, cacheActive)).pipe();
|
|
36230
36322
|
}
|
|
36231
36323
|
else if (link.type === 'service' &&
|
|
36232
36324
|
link.accessServiceProtocol === 'esriRest') {
|
|
36233
36325
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
36234
|
-
return from(openDataset(url, 'geojson')).pipe();
|
|
36326
|
+
return from(openDataset(url, 'geojson', undefined, cacheActive)).pipe();
|
|
36235
36327
|
}
|
|
36236
36328
|
else if (link.type === 'service' &&
|
|
36237
36329
|
link.accessServiceProtocol === 'ogcFeatures') {
|
|
36238
36330
|
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
36239
36331
|
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
36240
|
-
return openDataset(geojsonUrl, 'geojson');
|
|
36332
|
+
return openDataset(geojsonUrl, 'geojson', undefined, cacheActive);
|
|
36241
36333
|
}), tap$1((url) => {
|
|
36242
36334
|
if (url === null) {
|
|
36243
36335
|
throw new Error('wfs.geojsongml.notsupported');
|
|
@@ -36802,6 +36894,7 @@ class ChartViewComponent {
|
|
|
36802
36894
|
this.dataService = dataService;
|
|
36803
36895
|
this.changeDetector = changeDetector;
|
|
36804
36896
|
this.translateService = translateService;
|
|
36897
|
+
this.cacheActive = true;
|
|
36805
36898
|
this.currentLink$ = new BehaviorSubject(null);
|
|
36806
36899
|
this.aggregation$ = new BehaviorSubject('sum');
|
|
36807
36900
|
this.xProperty$ = new BehaviorSubject(undefined);
|
|
@@ -36831,7 +36924,7 @@ class ChartViewComponent {
|
|
|
36831
36924
|
this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
|
|
36832
36925
|
this.error = null;
|
|
36833
36926
|
this.loading = true;
|
|
36834
|
-
return this.dataService.getDataset(link).pipe(catchError((error) => {
|
|
36927
|
+
return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
|
|
36835
36928
|
this.handleError(error);
|
|
36836
36929
|
return EMPTY;
|
|
36837
36930
|
}));
|
|
@@ -36900,7 +36993,7 @@ class ChartViewComponent {
|
|
|
36900
36993
|
this.changeDetector.detectChanges();
|
|
36901
36994
|
}
|
|
36902
36995
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36903
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36996
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { cacheActive: "cacheActive", link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36904
36997
|
}
|
|
36905
36998
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
36906
36999
|
type: Component,
|
|
@@ -36912,7 +37005,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36912
37005
|
LoadingMaskComponent,
|
|
36913
37006
|
PopupAlertComponent,
|
|
36914
37007
|
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
36915
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: {
|
|
37008
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
37009
|
+
type: Input
|
|
37010
|
+
}], link: [{
|
|
36916
37011
|
type: Input
|
|
36917
37012
|
}], aggregation: [{
|
|
36918
37013
|
type: Input
|
|
@@ -37085,6 +37180,7 @@ class TableViewComponent {
|
|
|
37085
37180
|
constructor(dataService, translateService) {
|
|
37086
37181
|
this.dataService = dataService;
|
|
37087
37182
|
this.translateService = translateService;
|
|
37183
|
+
this.cacheActive = true;
|
|
37088
37184
|
this.currentLink$ = new BehaviorSubject(null);
|
|
37089
37185
|
this.loading = false;
|
|
37090
37186
|
this.error = null;
|
|
@@ -37102,7 +37198,7 @@ class TableViewComponent {
|
|
|
37102
37198
|
}), startWith(undefined), shareReplay(1));
|
|
37103
37199
|
}
|
|
37104
37200
|
getDatasetReader(link) {
|
|
37105
|
-
return this.dataService.getDataset(link);
|
|
37201
|
+
return this.dataService.getDataset(link, this.cacheActive);
|
|
37106
37202
|
}
|
|
37107
37203
|
onTableSelect(event) {
|
|
37108
37204
|
console.log(event);
|
|
@@ -37125,7 +37221,7 @@ class TableViewComponent {
|
|
|
37125
37221
|
this.loading = false;
|
|
37126
37222
|
}
|
|
37127
37223
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37224
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37129
37225
|
}
|
|
37130
37226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
37131
37227
|
type: Component,
|
|
@@ -37136,7 +37232,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37136
37232
|
PopupAlertComponent,
|
|
37137
37233
|
TranslateModule,
|
|
37138
37234
|
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
37139
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
37235
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
37236
|
+
type: Input
|
|
37237
|
+
}], link: [{
|
|
37140
37238
|
type: Input
|
|
37141
37239
|
}] } });
|
|
37142
37240
|
|
|
@@ -37155,7 +37253,15 @@ class MdViewFacade {
|
|
|
37155
37253
|
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
37156
37254
|
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
37157
37255
|
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
37256
|
+
this.featureCatalog$ = this.store.pipe(select(getFeatureCatalog));
|
|
37158
37257
|
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
37258
|
+
this.isHighUpdateFrequency$ = this.metadata$.pipe(map$1((record) => {
|
|
37259
|
+
if (record.updateFrequency instanceof Object) {
|
|
37260
|
+
return (record.updateFrequency.per === 'day' &&
|
|
37261
|
+
record.updateFrequency.updatedTimes > 1);
|
|
37262
|
+
}
|
|
37263
|
+
return record.updateFrequency === 'continual';
|
|
37264
|
+
}));
|
|
37159
37265
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37160
37266
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37161
37267
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
@@ -37251,6 +37357,11 @@ class MdViewEffects {
|
|
|
37251
37357
|
}
|
|
37252
37358
|
return loadFullMetadataSuccess({ full: record });
|
|
37253
37359
|
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
37360
|
+
this.loadFeatureCatalog$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), filter(({ full }) => full !== undefined), switchMap$1(({ full }) => this.recordsRepository.getFeatureCatalog(full)), map$1((featureCatalog) => loadFeatureCatalogSuccess({
|
|
37361
|
+
datasetCatalog: featureCatalog,
|
|
37362
|
+
})), catchError((error) => of(loadFeatureCatalogFailure({
|
|
37363
|
+
error: error.message,
|
|
37364
|
+
})))));
|
|
37254
37365
|
/*
|
|
37255
37366
|
Related effects
|
|
37256
37367
|
*/
|
|
@@ -37840,6 +37951,7 @@ class DataViewComponent {
|
|
|
37840
37951
|
this.mdViewFacade = mdViewFacade;
|
|
37841
37952
|
this.displaySource = true;
|
|
37842
37953
|
this.chartConfig$ = new BehaviorSubject(null);
|
|
37954
|
+
this.cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(map$1((highF) => !highF));
|
|
37843
37955
|
this.compatibleDataLinks$ = combineLatest([
|
|
37844
37956
|
this.mdViewFacade.dataLinks$,
|
|
37845
37957
|
this.mdViewFacade.geoDataLinks$,
|
|
@@ -37867,7 +37979,7 @@ class DataViewComponent {
|
|
|
37867
37979
|
this.selectedLink$.next(link);
|
|
37868
37980
|
}
|
|
37869
37981
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37870
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37982
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["cacheActive", "link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37871
37983
|
}
|
|
37872
37984
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
37873
37985
|
type: Component,
|
|
@@ -37877,7 +37989,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37877
37989
|
TableViewComponent,
|
|
37878
37990
|
TranslateModule,
|
|
37879
37991
|
ChartViewComponent,
|
|
37880
|
-
], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
|
|
37992
|
+
], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
|
|
37881
37993
|
}], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
|
|
37882
37994
|
type: Input
|
|
37883
37995
|
}], displaySource: [{
|
|
@@ -38170,7 +38282,8 @@ class MapViewComponent {
|
|
|
38170
38282
|
link.accessServiceProtocol === 'esriRest' ||
|
|
38171
38283
|
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
38172
38284
|
link.type === 'download') {
|
|
38173
|
-
|
|
38285
|
+
const cacheActive = true; // TODO implement whether should be true or false
|
|
38286
|
+
return this.dataService.readAsGeoJson(link, cacheActive).pipe(map$1((data) => ({
|
|
38174
38287
|
type: 'geojson',
|
|
38175
38288
|
data,
|
|
38176
38289
|
})));
|