geonetwork-ui 2.5.0 → 2.6.0-dev.025a2f85d
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/base.converter.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +18 -11
- package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -3
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -1
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -3
- package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +2 -4
- package/esm2022/libs/feature/record/src/index.mjs +1 -2
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +45 -14
- package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
- package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
- package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
- package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +163 -0
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
- package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +14 -3
- package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +5 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +6 -2
- package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +4 -1
- package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +30 -2
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +33 -24
- package/esm2022/translations/de.json +34 -3
- package/esm2022/translations/en.json +35 -4
- package/esm2022/translations/es.json +34 -3
- package/esm2022/translations/fr.json +36 -5
- package/esm2022/translations/it.json +34 -4
- package/esm2022/translations/nl.json +34 -3
- package/esm2022/translations/pt.json +34 -3
- package/fesm2022/geonetwork-ui.mjs +1367 -531
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +23 -4
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -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.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +0 -1
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +7 -2
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
- 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 +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
- package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +43 -0
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +0 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
- package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/map/src/index.d.ts +1 -0
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +4 -2
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-legend/map-legend.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
- 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.map +1 -1
- package/libs/util/data-fetcher/src/lib/model.d.ts +3 -2
- package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +1 -0
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
- package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +30 -23
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -12
- package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +22 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
- package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +18 -2
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +1 -0
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -0
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +10 -8
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
- package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -3
- package/src/libs/feature/record/src/index.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +41 -7
- package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
- package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -7
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
- package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +156 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +190 -0
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
- package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +4 -2
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -0
- package/src/libs/ui/inputs/src/index.ts +0 -1
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
- package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
- package/src/libs/ui/map/src/index.ts +1 -0
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +14 -0
- package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +3 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
- package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +7 -8
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -2
- package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +3 -1
- package/src/libs/util/data-fetcher/src/lib/model.ts +11 -1
- package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +29 -3
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +50 -30
- package/tailwind.base.css +51 -13
- package/translations/de.json +34 -3
- package/translations/en.json +35 -4
- package/translations/es.json +34 -3
- package/translations/fr.json +36 -5
- package/translations/it.json +34 -4
- package/translations/nl.json +34 -3
- package/translations/pt.json +34 -3
- package/translations/sk.json +34 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
- package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
- package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
- package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
- /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/internal-link-card/internal-link-card.component.css} +0 -0
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise,
|
|
17
|
+
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgOptimizedImage, DatePipe
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, timer, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, startWith as startWith$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
@@ -26,8 +26,8 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
-
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber,
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirDatabase, iconoirMap, iconoirInternet, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
+
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matCode, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
31
|
import * as i1$4 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
@@ -41,7 +41,7 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -58,11 +58,17 @@ import * as i1$b from '@angular/material/dialog';
|
|
|
58
58
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
59
59
|
import * as i2$3 from '@angular/material/tabs';
|
|
60
60
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
61
|
-
import * as i1$
|
|
61
|
+
import * as i1$d from '@angular/router';
|
|
62
62
|
import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
63
63
|
import { marked } from 'marked';
|
|
64
64
|
import Duration from 'duration-relativetimeformat';
|
|
65
65
|
import * as basicLightbox from 'basiclightbox';
|
|
66
|
+
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
67
|
+
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
68
|
+
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
69
|
+
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
70
|
+
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
71
|
+
import { Polygon } from 'ol/geom';
|
|
66
72
|
import { formatDistance } from 'date-fns/formatDistance';
|
|
67
73
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
68
74
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
@@ -72,13 +78,7 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
72
78
|
import { valid as valid$1 } from 'geojson-validation';
|
|
73
79
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
74
80
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
75
|
-
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
76
|
-
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
77
|
-
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
78
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
79
|
-
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
80
81
|
import { extend } from 'ol/extent';
|
|
81
|
-
import { transformExtent } from 'ol/proj';
|
|
82
82
|
import * as TOML from '@ltd/j-toml';
|
|
83
83
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
84
84
|
import CircleStyle from 'ol/style/Circle';
|
|
@@ -97,9 +97,8 @@ import * as i4 from '@angular/material/paginator';
|
|
|
97
97
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
98
98
|
import { LetDirective } from '@ngrx/component';
|
|
99
99
|
import axios from 'axios';
|
|
100
|
-
import * as i1$
|
|
100
|
+
import * as i1$e from '@angular/platform-browser';
|
|
101
101
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
102
|
-
import { Polygon } from 'ol/geom';
|
|
103
102
|
import * as i4$1 from '@angular/material/radio';
|
|
104
103
|
import { MatRadioModule } from '@angular/material/radio';
|
|
105
104
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -1352,8 +1351,8 @@ function extractServiceOnlineResources() {
|
|
|
1352
1351
|
else {
|
|
1353
1352
|
return {
|
|
1354
1353
|
type: 'endpoint',
|
|
1355
|
-
|
|
1356
|
-
protocol,
|
|
1354
|
+
url: url,
|
|
1355
|
+
accessServiceProtocol: protocol,
|
|
1357
1356
|
...(description && { description }),
|
|
1358
1357
|
translations,
|
|
1359
1358
|
};
|
|
@@ -1852,7 +1851,7 @@ function writeLineage$1(record, rootEl) {
|
|
|
1852
1851
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
1853
1852
|
}
|
|
1854
1853
|
function getServiceEndpointProtocol(endpoint) {
|
|
1855
|
-
switch (endpoint.
|
|
1854
|
+
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
1856
1855
|
case 'wfs':
|
|
1857
1856
|
return 'OGC:WFS';
|
|
1858
1857
|
case 'wms':
|
|
@@ -1860,13 +1859,13 @@ function getServiceEndpointProtocol(endpoint) {
|
|
|
1860
1859
|
case 'wps':
|
|
1861
1860
|
return 'OGC:WPS';
|
|
1862
1861
|
default:
|
|
1863
|
-
return endpoint.
|
|
1862
|
+
return endpoint.accessServiceProtocol;
|
|
1864
1863
|
}
|
|
1865
1864
|
}
|
|
1866
1865
|
function createOnlineResource(onlineResource) {
|
|
1867
1866
|
let linkageUrl, functionCode, protocol;
|
|
1868
1867
|
if (onlineResource.type === 'endpoint') {
|
|
1869
|
-
linkageUrl = onlineResource.
|
|
1868
|
+
linkageUrl = onlineResource.url.toString();
|
|
1870
1869
|
protocol = getServiceEndpointProtocol(onlineResource);
|
|
1871
1870
|
functionCode = 'download';
|
|
1872
1871
|
}
|
|
@@ -18603,6 +18602,7 @@ var records$6 = "Datensätze";
|
|
|
18603
18602
|
var de = {
|
|
18604
18603
|
"": "",
|
|
18605
18604
|
"Add Layer As": "",
|
|
18605
|
+
"Enter to search": "",
|
|
18606
18606
|
"button.login": "",
|
|
18607
18607
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
18608
18608
|
"catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
@@ -18664,15 +18664,16 @@ var de = {
|
|
|
18664
18664
|
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
18665
18665
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
18666
18666
|
"datahub.news.figures": "Indikatoren",
|
|
18667
|
-
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
18668
18667
|
"datahub.search.back": "Zurück",
|
|
18669
18668
|
"datahub.search.filter.all": "Alle",
|
|
18670
18669
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
18671
18670
|
"datahub.search.filter.generatedByWfs": "",
|
|
18672
18671
|
"datahub.search.filter.others": "Andere",
|
|
18672
|
+
"dataset.error.forbidden": "Der Zugriff auf diese Ressource ist eingeschränkt",
|
|
18673
18673
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
18674
18674
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
18675
18675
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
18676
|
+
"dataset.error.restrictedAccess": "",
|
|
18676
18677
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
18677
18678
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
18678
18679
|
"domain.contact.role.author": "",
|
|
@@ -18833,6 +18834,7 @@ var de = {
|
|
|
18833
18834
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18834
18835
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18835
18836
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18837
|
+
"editor.record.lock.format": "",
|
|
18836
18838
|
"editor.record.lock.reason": "",
|
|
18837
18839
|
"editor.record.onlineResource.protocol.other": "",
|
|
18838
18840
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18892,7 +18894,6 @@ var de = {
|
|
|
18892
18894
|
"input.image.dropFileLabel": "",
|
|
18893
18895
|
"input.image.selectFileLabel": "",
|
|
18894
18896
|
"input.image.uploadErrorLabel": "",
|
|
18895
|
-
"input.image.uploadErrorRetry": "",
|
|
18896
18897
|
"input.image.uploadProgressCancel": "",
|
|
18897
18898
|
"input.image.uploadProgressLabel": "",
|
|
18898
18899
|
"language.ca": "Katalanisch",
|
|
@@ -18932,6 +18933,7 @@ var de = {
|
|
|
18932
18933
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18933
18934
|
"multiselect.filter.placeholder": "Suche",
|
|
18934
18935
|
"nav.back": "Zurück",
|
|
18936
|
+
"navbar.mobile.menuTitle": "Schnellzugriff",
|
|
18935
18937
|
next: next$6,
|
|
18936
18938
|
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
18937
18939
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
@@ -18955,8 +18957,13 @@ var de = {
|
|
|
18955
18957
|
"record.action.duplicating": "",
|
|
18956
18958
|
"record.action.rollback": "",
|
|
18957
18959
|
"record.action.view": "Anzeigen",
|
|
18960
|
+
"record.card.metadata.contact": "",
|
|
18958
18961
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18959
18962
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18963
|
+
"record.kind.data": "",
|
|
18964
|
+
"record.kind.dataset": "",
|
|
18965
|
+
"record.kind.reuse": "",
|
|
18966
|
+
"record.kind.service": "",
|
|
18960
18967
|
"record.metadata.about": "Beschreibung",
|
|
18961
18968
|
"record.metadata.api": "API",
|
|
18962
18969
|
"record.metadata.api.form.closeButton": "Schließen",
|
|
@@ -18990,6 +18997,7 @@ var de = {
|
|
|
18990
18997
|
"record.metadata.api.form.zoneTitle": "",
|
|
18991
18998
|
"record.metadata.api.form.zoneTooltip": "",
|
|
18992
18999
|
"record.metadata.api.gpfdl": "",
|
|
19000
|
+
"record.metadata.capabilities": "",
|
|
18993
19001
|
"record.metadata.catalog": "Katalog",
|
|
18994
19002
|
"record.metadata.contact": "Kontakt",
|
|
18995
19003
|
"record.metadata.creation": "Erstellungsdatum",
|
|
@@ -19026,11 +19034,12 @@ var de = {
|
|
|
19026
19034
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19027
19035
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19028
19036
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19037
|
+
"record.metadata.related.contents": "",
|
|
19038
|
+
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19029
19039
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19030
19040
|
"record.metadata.status": "Status",
|
|
19031
19041
|
"record.metadata.status.notPublished": "",
|
|
19032
19042
|
"record.metadata.status.published": "",
|
|
19033
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19034
19043
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19035
19044
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19036
19045
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19067,6 +19076,7 @@ var de = {
|
|
|
19067
19076
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19068
19077
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19069
19078
|
"results.sortBy.relevancy": "Relevanz",
|
|
19079
|
+
"reuse.metadata.access": "",
|
|
19070
19080
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19071
19081
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19072
19082
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19116,6 +19126,26 @@ var de = {
|
|
|
19116
19126
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19117
19127
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
19118
19128
|
"search.filters.user": "Editor",
|
|
19129
|
+
"service.metadata.capabilities": "",
|
|
19130
|
+
"service.metadata.capabilities.abstract": "",
|
|
19131
|
+
"service.metadata.capabilities.attribution": "",
|
|
19132
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
19133
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
19134
|
+
"service.metadata.capabilities.geometryName": "",
|
|
19135
|
+
"service.metadata.capabilities.geometryType": "",
|
|
19136
|
+
"service.metadata.capabilities.keywords": "",
|
|
19137
|
+
"service.metadata.capabilities.name": "",
|
|
19138
|
+
"service.metadata.capabilities.objectCount": "",
|
|
19139
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
19140
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
19141
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
19142
|
+
"service.metadata.capabilities.title": "",
|
|
19143
|
+
"service.metadata.filter": "",
|
|
19144
|
+
"service.metadata.filter.noLayers": "",
|
|
19145
|
+
"service.metadata.other": "",
|
|
19146
|
+
"service.metadata.question": "",
|
|
19147
|
+
"service.metadata.search": "",
|
|
19148
|
+
"service.metadata.spatialExtent": "",
|
|
19119
19149
|
"share.tab.permalink": "Teilen",
|
|
19120
19150
|
"share.tab.webComponent": "Integrieren",
|
|
19121
19151
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19148,6 +19178,7 @@ var records$5 = "datasets";
|
|
|
19148
19178
|
var en = {
|
|
19149
19179
|
"": "",
|
|
19150
19180
|
"Add Layer As": "",
|
|
19181
|
+
"Enter to search": "",
|
|
19151
19182
|
"button.login": "Log in",
|
|
19152
19183
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
19153
19184
|
"catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
|
|
@@ -19209,15 +19240,16 @@ var en = {
|
|
|
19209
19240
|
"datahub.news.contact.title": "A specific need?",
|
|
19210
19241
|
"datahub.news.feed": "News feed",
|
|
19211
19242
|
"datahub.news.figures": "Indicators",
|
|
19212
|
-
"datahub.record.addToFavorites": "Add to favorites",
|
|
19213
19243
|
"datahub.search.back": "Back",
|
|
19214
19244
|
"datahub.search.filter.all": "All",
|
|
19215
19245
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
19216
|
-
"datahub.search.filter.generatedByWfs": "",
|
|
19246
|
+
"datahub.search.filter.generatedByWfs": "Generated by a WFS",
|
|
19217
19247
|
"datahub.search.filter.others": "Others",
|
|
19248
|
+
"dataset.error.forbidden": "Access to this resource is restricted",
|
|
19218
19249
|
"dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
|
|
19219
19250
|
"dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
|
|
19220
19251
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
19252
|
+
"dataset.error.restrictedAccess": "Access to this resource is restricted",
|
|
19221
19253
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
19222
19254
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
19223
19255
|
"domain.contact.role.author": "Author",
|
|
@@ -19378,6 +19410,7 @@ var en = {
|
|
|
19378
19410
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19379
19411
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19380
19412
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19413
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19381
19414
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19382
19415
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19383
19416
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19437,7 +19470,6 @@ var en = {
|
|
|
19437
19470
|
"input.image.dropFileLabel": "or drop it here",
|
|
19438
19471
|
"input.image.selectFileLabel": "Select an image",
|
|
19439
19472
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19440
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19441
19473
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19442
19474
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19443
19475
|
"language.ca": "Catalan",
|
|
@@ -19477,6 +19509,7 @@ var en = {
|
|
|
19477
19509
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19478
19510
|
"multiselect.filter.placeholder": "Search",
|
|
19479
19511
|
"nav.back": "Back",
|
|
19512
|
+
"navbar.mobile.menuTitle": "Quick access",
|
|
19480
19513
|
next: next$5,
|
|
19481
19514
|
"ogc.unreachable.unknown": "The service could not be reached",
|
|
19482
19515
|
"organisation.filter.placeholder": "Filter results",
|
|
@@ -19500,8 +19533,13 @@ var en = {
|
|
|
19500
19533
|
"record.action.duplicating": "Duplicating...",
|
|
19501
19534
|
"record.action.rollback": "Rollback",
|
|
19502
19535
|
"record.action.view": "View",
|
|
19536
|
+
"record.card.metadata.contact": "Metadata Contact",
|
|
19503
19537
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19504
19538
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19539
|
+
"record.kind.data": "Data",
|
|
19540
|
+
"record.kind.dataset": "Dataset",
|
|
19541
|
+
"record.kind.reuse": "Reuse",
|
|
19542
|
+
"record.kind.service": "Service",
|
|
19505
19543
|
"record.metadata.about": "Description",
|
|
19506
19544
|
"record.metadata.api": "API",
|
|
19507
19545
|
"record.metadata.api.form.closeButton": "Close",
|
|
@@ -19535,6 +19573,7 @@ var en = {
|
|
|
19535
19573
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19536
19574
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19537
19575
|
"record.metadata.api.gpfdl": "Data download",
|
|
19576
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19538
19577
|
"record.metadata.catalog": "Catalog",
|
|
19539
19578
|
"record.metadata.contact": "Contact",
|
|
19540
19579
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19571,11 +19610,12 @@ var en = {
|
|
|
19571
19610
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19572
19611
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19573
19612
|
"record.metadata.related": "Related datasets",
|
|
19613
|
+
"record.metadata.related.contents": "Related content",
|
|
19614
|
+
"record.metadata.ressources.and.links": "Resources and links",
|
|
19574
19615
|
"record.metadata.sheet": "Original metadata",
|
|
19575
19616
|
"record.metadata.status": "Status",
|
|
19576
19617
|
"record.metadata.status.notPublished": "Not published",
|
|
19577
19618
|
"record.metadata.status.published": "Published",
|
|
19578
|
-
"record.metadata.technical": "Technical information",
|
|
19579
19619
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19580
19620
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19581
19621
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19612,6 +19652,7 @@ var en = {
|
|
|
19612
19652
|
"results.sortBy.popularity": "Popularity",
|
|
19613
19653
|
"results.sortBy.qualityScore": "Quality score",
|
|
19614
19654
|
"results.sortBy.relevancy": "Relevancy",
|
|
19655
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19615
19656
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19616
19657
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19617
19658
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19661,6 +19702,26 @@ var en = {
|
|
|
19661
19702
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19662
19703
|
"search.filters.useSpatialFilterHelp": "When this is enabled, datasets situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
19663
19704
|
"search.filters.user": "Editor",
|
|
19705
|
+
"service.metadata.capabilities": "Technical information",
|
|
19706
|
+
"service.metadata.capabilities.abstract": "Abstract",
|
|
19707
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
19708
|
+
"service.metadata.capabilities.availableCrs": "Available CRS",
|
|
19709
|
+
"service.metadata.capabilities.defaultCrs": "Default CRS",
|
|
19710
|
+
"service.metadata.capabilities.geometryName": "Geometry name",
|
|
19711
|
+
"service.metadata.capabilities.geometryType": "Geometry type",
|
|
19712
|
+
"service.metadata.capabilities.keywords": "Keywords",
|
|
19713
|
+
"service.metadata.capabilities.name": "Name",
|
|
19714
|
+
"service.metadata.capabilities.objectCount": "Object count",
|
|
19715
|
+
"service.metadata.capabilities.otherCrs": "Other CRS",
|
|
19716
|
+
"service.metadata.capabilities.outputFormats": "Output formats",
|
|
19717
|
+
"service.metadata.capabilities.resourceLinks": "Resource links",
|
|
19718
|
+
"service.metadata.capabilities.title": "Title",
|
|
19719
|
+
"service.metadata.filter": "Layers will be filtered by title and abstract",
|
|
19720
|
+
"service.metadata.filter.noLayers": "No layer matches your search",
|
|
19721
|
+
"service.metadata.other": "Other information",
|
|
19722
|
+
"service.metadata.question": "Ask a question",
|
|
19723
|
+
"service.metadata.search": "Search through the layer list",
|
|
19724
|
+
"service.metadata.spatialExtent": "Spatial extent",
|
|
19664
19725
|
"share.tab.permalink": "Share",
|
|
19665
19726
|
"share.tab.webComponent": "Integrate",
|
|
19666
19727
|
"table.loading.data": "Loading data...",
|
|
@@ -19693,6 +19754,7 @@ var records$4 = "";
|
|
|
19693
19754
|
var es = {
|
|
19694
19755
|
"": "",
|
|
19695
19756
|
"Add Layer As": "",
|
|
19757
|
+
"Enter to search": "",
|
|
19696
19758
|
"button.login": "",
|
|
19697
19759
|
"catalog.figures.datasets": "conjuntos de datos",
|
|
19698
19760
|
"catalog.figures.organizations": "organizaciones",
|
|
@@ -19754,15 +19816,16 @@ var es = {
|
|
|
19754
19816
|
"datahub.news.contact.title": "",
|
|
19755
19817
|
"datahub.news.feed": "",
|
|
19756
19818
|
"datahub.news.figures": "",
|
|
19757
|
-
"datahub.record.addToFavorites": "",
|
|
19758
19819
|
"datahub.search.back": "",
|
|
19759
19820
|
"datahub.search.filter.all": "",
|
|
19760
19821
|
"datahub.search.filter.generatedByAPI": "",
|
|
19761
19822
|
"datahub.search.filter.generatedByWfs": "",
|
|
19762
19823
|
"datahub.search.filter.others": "",
|
|
19824
|
+
"dataset.error.forbidden": "El acceso a este recurso está restringido",
|
|
19763
19825
|
"dataset.error.http": "",
|
|
19764
19826
|
"dataset.error.network": "",
|
|
19765
19827
|
"dataset.error.parse": "",
|
|
19828
|
+
"dataset.error.restrictedAccess": "",
|
|
19766
19829
|
"dataset.error.unknown": "",
|
|
19767
19830
|
"dataset.error.unsupportedType": "",
|
|
19768
19831
|
"domain.contact.role.author": "",
|
|
@@ -19923,6 +19986,7 @@ var es = {
|
|
|
19923
19986
|
"editor.record.loadError.body": "",
|
|
19924
19987
|
"editor.record.loadError.closeMessage": "",
|
|
19925
19988
|
"editor.record.loadError.title": "",
|
|
19989
|
+
"editor.record.lock.format": "",
|
|
19926
19990
|
"editor.record.lock.reason": "",
|
|
19927
19991
|
"editor.record.onlineResource.protocol.other": "",
|
|
19928
19992
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -19982,7 +20046,6 @@ var es = {
|
|
|
19982
20046
|
"input.image.dropFileLabel": "",
|
|
19983
20047
|
"input.image.selectFileLabel": "",
|
|
19984
20048
|
"input.image.uploadErrorLabel": "",
|
|
19985
|
-
"input.image.uploadErrorRetry": "",
|
|
19986
20049
|
"input.image.uploadProgressCancel": "",
|
|
19987
20050
|
"input.image.uploadProgressLabel": "",
|
|
19988
20051
|
"language.ca": "Catalán",
|
|
@@ -20022,6 +20085,7 @@ var es = {
|
|
|
20022
20085
|
"map.wms.urlInput.hint": "",
|
|
20023
20086
|
"multiselect.filter.placeholder": "",
|
|
20024
20087
|
"nav.back": "",
|
|
20088
|
+
"navbar.mobile.menuTitle": "Acceso rápido",
|
|
20025
20089
|
next: next$4,
|
|
20026
20090
|
"ogc.unreachable.unknown": "",
|
|
20027
20091
|
"organisation.filter.placeholder": "",
|
|
@@ -20045,8 +20109,13 @@ var es = {
|
|
|
20045
20109
|
"record.action.duplicating": "",
|
|
20046
20110
|
"record.action.rollback": "",
|
|
20047
20111
|
"record.action.view": "",
|
|
20112
|
+
"record.card.metadata.contact": "",
|
|
20048
20113
|
"record.externalViewer.open": "",
|
|
20049
20114
|
"record.feature.limit": "",
|
|
20115
|
+
"record.kind.data": "",
|
|
20116
|
+
"record.kind.dataset": "",
|
|
20117
|
+
"record.kind.reuse": "",
|
|
20118
|
+
"record.kind.service": "",
|
|
20050
20119
|
"record.metadata.about": "",
|
|
20051
20120
|
"record.metadata.api": "",
|
|
20052
20121
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -20080,6 +20149,7 @@ var es = {
|
|
|
20080
20149
|
"record.metadata.api.form.zoneTitle": "",
|
|
20081
20150
|
"record.metadata.api.form.zoneTooltip": "",
|
|
20082
20151
|
"record.metadata.api.gpfdl": "",
|
|
20152
|
+
"record.metadata.capabilities": "",
|
|
20083
20153
|
"record.metadata.catalog": "",
|
|
20084
20154
|
"record.metadata.contact": "",
|
|
20085
20155
|
"record.metadata.creation": "",
|
|
@@ -20116,11 +20186,12 @@ var es = {
|
|
|
20116
20186
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20117
20187
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20118
20188
|
"record.metadata.related": "",
|
|
20189
|
+
"record.metadata.related.contents": "",
|
|
20190
|
+
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20119
20191
|
"record.metadata.sheet": "",
|
|
20120
20192
|
"record.metadata.status": "",
|
|
20121
20193
|
"record.metadata.status.notPublished": "",
|
|
20122
20194
|
"record.metadata.status.published": "",
|
|
20123
|
-
"record.metadata.technical": "",
|
|
20124
20195
|
"record.metadata.temporalExtent": "",
|
|
20125
20196
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20126
20197
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20157,6 +20228,7 @@ var es = {
|
|
|
20157
20228
|
"results.sortBy.popularity": "",
|
|
20158
20229
|
"results.sortBy.qualityScore": "",
|
|
20159
20230
|
"results.sortBy.relevancy": "",
|
|
20231
|
+
"reuse.metadata.access": "",
|
|
20160
20232
|
"search.autocomplete.error": "",
|
|
20161
20233
|
"search.error.couldNotReachApi": "",
|
|
20162
20234
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20206,6 +20278,26 @@ var es = {
|
|
|
20206
20278
|
"search.filters.useSpatialFilter": "",
|
|
20207
20279
|
"search.filters.useSpatialFilterHelp": "",
|
|
20208
20280
|
"search.filters.user": "",
|
|
20281
|
+
"service.metadata.capabilities": "",
|
|
20282
|
+
"service.metadata.capabilities.abstract": "",
|
|
20283
|
+
"service.metadata.capabilities.attribution": "",
|
|
20284
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
20285
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
20286
|
+
"service.metadata.capabilities.geometryName": "",
|
|
20287
|
+
"service.metadata.capabilities.geometryType": "",
|
|
20288
|
+
"service.metadata.capabilities.keywords": "",
|
|
20289
|
+
"service.metadata.capabilities.name": "",
|
|
20290
|
+
"service.metadata.capabilities.objectCount": "",
|
|
20291
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
20292
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
20293
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
20294
|
+
"service.metadata.capabilities.title": "",
|
|
20295
|
+
"service.metadata.filter": "",
|
|
20296
|
+
"service.metadata.filter.noLayers": "",
|
|
20297
|
+
"service.metadata.other": "",
|
|
20298
|
+
"service.metadata.question": "",
|
|
20299
|
+
"service.metadata.search": "",
|
|
20300
|
+
"service.metadata.spatialExtent": "",
|
|
20209
20301
|
"share.tab.permalink": "",
|
|
20210
20302
|
"share.tab.webComponent": "",
|
|
20211
20303
|
"table.loading.data": "",
|
|
@@ -20238,6 +20330,7 @@ var records$3 = "Enregistrements";
|
|
|
20238
20330
|
var fr = {
|
|
20239
20331
|
"": "",
|
|
20240
20332
|
"Add Layer As": "",
|
|
20333
|
+
"Enter to search": "",
|
|
20241
20334
|
"button.login": "Se connecter",
|
|
20242
20335
|
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
|
|
20243
20336
|
"catalog.figures.organizations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
@@ -20299,15 +20392,16 @@ var fr = {
|
|
|
20299
20392
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
20300
20393
|
"datahub.news.feed": "Fil d'activité",
|
|
20301
20394
|
"datahub.news.figures": "Quelques chiffres",
|
|
20302
|
-
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
20303
20395
|
"datahub.search.back": "Retour",
|
|
20304
20396
|
"datahub.search.filter.all": "Tous",
|
|
20305
20397
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
20306
20398
|
"datahub.search.filter.generatedByWfs": "généré par un WFS",
|
|
20307
20399
|
"datahub.search.filter.others": "Autres",
|
|
20400
|
+
"dataset.error.forbidden": "L’accès à cette ressource est restreint",
|
|
20308
20401
|
"dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
|
|
20309
20402
|
"dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
|
|
20310
20403
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
20404
|
+
"dataset.error.restrictedAccess": "L’accès à cette ressource est restreint",
|
|
20311
20405
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
20312
20406
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
20313
20407
|
"domain.contact.role.author": "Auteur",
|
|
@@ -20468,6 +20562,7 @@ var fr = {
|
|
|
20468
20562
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20469
20563
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20470
20564
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20565
|
+
"editor.record.lock.format": "Les jeux de données de type 'service' et 'reuse' ne sont pas éditables",
|
|
20471
20566
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20472
20567
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20473
20568
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20527,7 +20622,6 @@ var fr = {
|
|
|
20527
20622
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20528
20623
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20529
20624
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20530
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20531
20625
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20532
20626
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20533
20627
|
"language.ca": "Catalan",
|
|
@@ -20567,6 +20661,7 @@ var fr = {
|
|
|
20567
20661
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20568
20662
|
"multiselect.filter.placeholder": "Rechercher",
|
|
20569
20663
|
"nav.back": "Retour",
|
|
20664
|
+
"navbar.mobile.menuTitle": "Navigation rapide",
|
|
20570
20665
|
next: next$3,
|
|
20571
20666
|
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
20572
20667
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
@@ -20590,9 +20685,14 @@ var fr = {
|
|
|
20590
20685
|
"record.action.duplicating": "Duplication...",
|
|
20591
20686
|
"record.action.rollback": "Restaurer",
|
|
20592
20687
|
"record.action.view": "Voir",
|
|
20688
|
+
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20593
20689
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20594
20690
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20595
|
-
"record.
|
|
20691
|
+
"record.kind.data": "Donnée",
|
|
20692
|
+
"record.kind.dataset": "Donnée",
|
|
20693
|
+
"record.kind.reuse": "Réutilisation",
|
|
20694
|
+
"record.kind.service": "Service",
|
|
20695
|
+
"record.metadata.about": "A propos",
|
|
20596
20696
|
"record.metadata.api": "API",
|
|
20597
20697
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
20598
20698
|
"record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
|
|
@@ -20625,6 +20725,7 @@ var fr = {
|
|
|
20625
20725
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
20626
20726
|
"record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
|
|
20627
20727
|
"record.metadata.api.gpfdl": "Téléchargement",
|
|
20728
|
+
"record.metadata.capabilities": "Capacités du service",
|
|
20628
20729
|
"record.metadata.catalog": "Catalogue",
|
|
20629
20730
|
"record.metadata.contact": "Contact",
|
|
20630
20731
|
"record.metadata.creation": "Date de création",
|
|
@@ -20634,7 +20735,7 @@ var fr = {
|
|
|
20634
20735
|
"record.metadata.keywords": "Mots-clés",
|
|
20635
20736
|
"record.metadata.languages": "Langues",
|
|
20636
20737
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20637
|
-
"record.metadata.links": "
|
|
20738
|
+
"record.metadata.links": "Ressources & liens",
|
|
20638
20739
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20639
20740
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
20640
20741
|
"record.metadata.owner": "Catalogue d'origine",
|
|
@@ -20661,11 +20762,12 @@ var fr = {
|
|
|
20661
20762
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20662
20763
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20663
20764
|
"record.metadata.related": "Voir aussi",
|
|
20765
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20766
|
+
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20664
20767
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20665
20768
|
"record.metadata.status": "Statut",
|
|
20666
20769
|
"record.metadata.status.notPublished": "Non publié",
|
|
20667
20770
|
"record.metadata.status.published": "Publié",
|
|
20668
|
-
"record.metadata.technical": "Informations techniques",
|
|
20669
20771
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20670
20772
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20671
20773
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20702,6 +20804,7 @@ var fr = {
|
|
|
20702
20804
|
"results.sortBy.popularity": "Popularité",
|
|
20703
20805
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20704
20806
|
"results.sortBy.relevancy": "Pertinence",
|
|
20807
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20705
20808
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20706
20809
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20707
20810
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20751,6 +20854,26 @@ var fr = {
|
|
|
20751
20854
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20752
20855
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les jeux de données portant sur la zone d'intérêt du catalogue seront montrés en premier; les jeux de données situés en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
20753
20856
|
"search.filters.user": "Éditeur",
|
|
20857
|
+
"service.metadata.capabilities": "Informations techniques",
|
|
20858
|
+
"service.metadata.capabilities.abstract": "Description",
|
|
20859
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
20860
|
+
"service.metadata.capabilities.availableCrs": "CRS disponibles",
|
|
20861
|
+
"service.metadata.capabilities.defaultCrs": "CRS par défaut",
|
|
20862
|
+
"service.metadata.capabilities.geometryName": "Nom de la géométrie",
|
|
20863
|
+
"service.metadata.capabilities.geometryType": "Type de géométrie",
|
|
20864
|
+
"service.metadata.capabilities.keywords": "Mots-clés",
|
|
20865
|
+
"service.metadata.capabilities.name": "Nom",
|
|
20866
|
+
"service.metadata.capabilities.objectCount": "Nombre d'objets",
|
|
20867
|
+
"service.metadata.capabilities.otherCrs": "Autres CRS",
|
|
20868
|
+
"service.metadata.capabilities.outputFormats": "Formats de sortie",
|
|
20869
|
+
"service.metadata.capabilities.resourceLinks": "Liens vers les ressources",
|
|
20870
|
+
"service.metadata.capabilities.title": "Titre",
|
|
20871
|
+
"service.metadata.filter": "Les couches seront filtrées par titre et description",
|
|
20872
|
+
"service.metadata.filter.noLayers": "Aucune couche ne correspond à votre recherche",
|
|
20873
|
+
"service.metadata.other": "Autres informations",
|
|
20874
|
+
"service.metadata.question": "Poser une question",
|
|
20875
|
+
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
20876
|
+
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
20754
20877
|
"share.tab.permalink": "Partager",
|
|
20755
20878
|
"share.tab.webComponent": "Intégrer",
|
|
20756
20879
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20783,6 +20906,7 @@ var records$2 = "record";
|
|
|
20783
20906
|
var it = {
|
|
20784
20907
|
"": "",
|
|
20785
20908
|
"Add Layer As": "",
|
|
20909
|
+
"Enter to search": "",
|
|
20786
20910
|
"button.login": "Login",
|
|
20787
20911
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
20788
20912
|
"catalog.figures.organizations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
|
|
@@ -20844,15 +20968,16 @@ var it = {
|
|
|
20844
20968
|
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
20845
20969
|
"datahub.news.feed": "Feed di attività",
|
|
20846
20970
|
"datahub.news.figures": "Alcune figure",
|
|
20847
|
-
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
20848
20971
|
"datahub.search.back": "Ritorna",
|
|
20849
20972
|
"datahub.search.filter.all": "Tutti",
|
|
20850
20973
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
20851
20974
|
"datahub.search.filter.generatedByWfs": "generato da un WFS",
|
|
20852
20975
|
"datahub.search.filter.others": "Altri",
|
|
20976
|
+
"dataset.error.forbidden": "L'accesso a questa risorsa è limitato",
|
|
20853
20977
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
20854
20978
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
20855
20979
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
20980
|
+
"dataset.error.restrictedAccess": "",
|
|
20856
20981
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
20857
20982
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
20858
20983
|
"domain.contact.role.author": "Autore",
|
|
@@ -21013,6 +21138,7 @@ var it = {
|
|
|
21013
21138
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21014
21139
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21015
21140
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21141
|
+
"editor.record.lock.format": "",
|
|
21016
21142
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21017
21143
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21018
21144
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21072,7 +21198,6 @@ var it = {
|
|
|
21072
21198
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21073
21199
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21074
21200
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21075
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21076
21201
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21077
21202
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21078
21203
|
"language.ca": "Catalano",
|
|
@@ -21112,6 +21237,7 @@ var it = {
|
|
|
21112
21237
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21113
21238
|
"multiselect.filter.placeholder": "Cerca",
|
|
21114
21239
|
"nav.back": "Indietro",
|
|
21240
|
+
"navbar.mobile.menuTitle": "",
|
|
21115
21241
|
next: next$2,
|
|
21116
21242
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21117
21243
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21135,8 +21261,13 @@ var it = {
|
|
|
21135
21261
|
"record.action.duplicating": "Duplicazione",
|
|
21136
21262
|
"record.action.rollback": "Annulla",
|
|
21137
21263
|
"record.action.view": "Visualizza",
|
|
21264
|
+
"record.card.metadata.contact": "",
|
|
21138
21265
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21139
21266
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21267
|
+
"record.kind.data": "",
|
|
21268
|
+
"record.kind.dataset": "",
|
|
21269
|
+
"record.kind.reuse": "",
|
|
21270
|
+
"record.kind.service": "",
|
|
21140
21271
|
"record.metadata.about": "Descrizione",
|
|
21141
21272
|
"record.metadata.api": "API",
|
|
21142
21273
|
"record.metadata.api.form.closeButton": "Chiude",
|
|
@@ -21170,6 +21301,7 @@ var it = {
|
|
|
21170
21301
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21171
21302
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21172
21303
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21304
|
+
"record.metadata.capabilities": "",
|
|
21173
21305
|
"record.metadata.catalog": "Catalogo",
|
|
21174
21306
|
"record.metadata.contact": "Contatto",
|
|
21175
21307
|
"record.metadata.creation": "Data di creazione",
|
|
@@ -21206,11 +21338,12 @@ var it = {
|
|
|
21206
21338
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21207
21339
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21208
21340
|
"record.metadata.related": "Vedi anche",
|
|
21341
|
+
"record.metadata.related.contents": "",
|
|
21342
|
+
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21209
21343
|
"record.metadata.sheet": "Origine del metadata",
|
|
21210
21344
|
"record.metadata.status": "Stato",
|
|
21211
21345
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21212
21346
|
"record.metadata.status.published": "Pubblicato",
|
|
21213
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21214
21347
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21215
21348
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21216
21349
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21247,6 +21380,7 @@ var it = {
|
|
|
21247
21380
|
"results.sortBy.popularity": "Popolarità",
|
|
21248
21381
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21249
21382
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21383
|
+
"reuse.metadata.access": "",
|
|
21250
21384
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21251
21385
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21252
21386
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21296,6 +21430,26 @@ var it = {
|
|
|
21296
21430
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21297
21431
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
21298
21432
|
"search.filters.user": "Editore",
|
|
21433
|
+
"service.metadata.capabilities": "Informazioni tecniche",
|
|
21434
|
+
"service.metadata.capabilities.abstract": "",
|
|
21435
|
+
"service.metadata.capabilities.attribution": "",
|
|
21436
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
21437
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
21438
|
+
"service.metadata.capabilities.geometryName": "",
|
|
21439
|
+
"service.metadata.capabilities.geometryType": "",
|
|
21440
|
+
"service.metadata.capabilities.keywords": "",
|
|
21441
|
+
"service.metadata.capabilities.name": "",
|
|
21442
|
+
"service.metadata.capabilities.objectCount": "",
|
|
21443
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
21444
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
21445
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
21446
|
+
"service.metadata.capabilities.title": "",
|
|
21447
|
+
"service.metadata.filter": "",
|
|
21448
|
+
"service.metadata.filter.noLayers": "",
|
|
21449
|
+
"service.metadata.other": "",
|
|
21450
|
+
"service.metadata.question": "",
|
|
21451
|
+
"service.metadata.search": "",
|
|
21452
|
+
"service.metadata.spatialExtent": "",
|
|
21299
21453
|
"share.tab.permalink": "Condividere",
|
|
21300
21454
|
"share.tab.webComponent": "Incorporare",
|
|
21301
21455
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21313,7 +21467,6 @@ var it = {
|
|
|
21313
21467
|
"tooltip.url.open": "Aprire l'URL",
|
|
21314
21468
|
"ui.readLess": "Ridurre",
|
|
21315
21469
|
"ui.readMore": "Leggere di più",
|
|
21316
|
-
"wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
|
|
21317
21470
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
21318
21471
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
21319
21472
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
@@ -21329,6 +21482,7 @@ var records$1 = "";
|
|
|
21329
21482
|
var nl = {
|
|
21330
21483
|
"": "",
|
|
21331
21484
|
"Add Layer As": "",
|
|
21485
|
+
"Enter to search": "",
|
|
21332
21486
|
"button.login": "",
|
|
21333
21487
|
"catalog.figures.datasets": "datasets",
|
|
21334
21488
|
"catalog.figures.organizations": "organisaties",
|
|
@@ -21390,15 +21544,16 @@ var nl = {
|
|
|
21390
21544
|
"datahub.news.contact.title": "",
|
|
21391
21545
|
"datahub.news.feed": "",
|
|
21392
21546
|
"datahub.news.figures": "",
|
|
21393
|
-
"datahub.record.addToFavorites": "",
|
|
21394
21547
|
"datahub.search.back": "",
|
|
21395
21548
|
"datahub.search.filter.all": "",
|
|
21396
21549
|
"datahub.search.filter.generatedByAPI": "",
|
|
21397
21550
|
"datahub.search.filter.generatedByWfs": "",
|
|
21398
21551
|
"datahub.search.filter.others": "",
|
|
21552
|
+
"dataset.error.forbidden": "",
|
|
21399
21553
|
"dataset.error.http": "",
|
|
21400
21554
|
"dataset.error.network": "",
|
|
21401
21555
|
"dataset.error.parse": "",
|
|
21556
|
+
"dataset.error.restrictedAccess": "",
|
|
21402
21557
|
"dataset.error.unknown": "",
|
|
21403
21558
|
"dataset.error.unsupportedType": "",
|
|
21404
21559
|
"domain.contact.role.author": "",
|
|
@@ -21559,6 +21714,7 @@ var nl = {
|
|
|
21559
21714
|
"editor.record.loadError.body": "",
|
|
21560
21715
|
"editor.record.loadError.closeMessage": "",
|
|
21561
21716
|
"editor.record.loadError.title": "",
|
|
21717
|
+
"editor.record.lock.format": "",
|
|
21562
21718
|
"editor.record.lock.reason": "",
|
|
21563
21719
|
"editor.record.onlineResource.protocol.other": "",
|
|
21564
21720
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21618,7 +21774,6 @@ var nl = {
|
|
|
21618
21774
|
"input.image.dropFileLabel": "",
|
|
21619
21775
|
"input.image.selectFileLabel": "",
|
|
21620
21776
|
"input.image.uploadErrorLabel": "",
|
|
21621
|
-
"input.image.uploadErrorRetry": "",
|
|
21622
21777
|
"input.image.uploadProgressCancel": "",
|
|
21623
21778
|
"input.image.uploadProgressLabel": "",
|
|
21624
21779
|
"language.ca": "Catalaans",
|
|
@@ -21658,6 +21813,7 @@ var nl = {
|
|
|
21658
21813
|
"map.wms.urlInput.hint": "",
|
|
21659
21814
|
"multiselect.filter.placeholder": "",
|
|
21660
21815
|
"nav.back": "",
|
|
21816
|
+
"navbar.mobile.menuTitle": "",
|
|
21661
21817
|
next: next$1,
|
|
21662
21818
|
"ogc.unreachable.unknown": "",
|
|
21663
21819
|
"organisation.filter.placeholder": "",
|
|
@@ -21681,8 +21837,13 @@ var nl = {
|
|
|
21681
21837
|
"record.action.duplicating": "",
|
|
21682
21838
|
"record.action.rollback": "",
|
|
21683
21839
|
"record.action.view": "",
|
|
21840
|
+
"record.card.metadata.contact": "",
|
|
21684
21841
|
"record.externalViewer.open": "",
|
|
21685
21842
|
"record.feature.limit": "",
|
|
21843
|
+
"record.kind.data": "",
|
|
21844
|
+
"record.kind.dataset": "",
|
|
21845
|
+
"record.kind.reuse": "",
|
|
21846
|
+
"record.kind.service": "",
|
|
21686
21847
|
"record.metadata.about": "",
|
|
21687
21848
|
"record.metadata.api": "",
|
|
21688
21849
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -21716,6 +21877,7 @@ var nl = {
|
|
|
21716
21877
|
"record.metadata.api.form.zoneTitle": "",
|
|
21717
21878
|
"record.metadata.api.form.zoneTooltip": "",
|
|
21718
21879
|
"record.metadata.api.gpfdl": "",
|
|
21880
|
+
"record.metadata.capabilities": "",
|
|
21719
21881
|
"record.metadata.catalog": "",
|
|
21720
21882
|
"record.metadata.contact": "",
|
|
21721
21883
|
"record.metadata.creation": "",
|
|
@@ -21752,11 +21914,12 @@ var nl = {
|
|
|
21752
21914
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21753
21915
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21754
21916
|
"record.metadata.related": "",
|
|
21917
|
+
"record.metadata.related.contents": "",
|
|
21918
|
+
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21755
21919
|
"record.metadata.sheet": "",
|
|
21756
21920
|
"record.metadata.status": "",
|
|
21757
21921
|
"record.metadata.status.notPublished": "",
|
|
21758
21922
|
"record.metadata.status.published": "",
|
|
21759
|
-
"record.metadata.technical": "",
|
|
21760
21923
|
"record.metadata.temporalExtent": "",
|
|
21761
21924
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21762
21925
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21793,6 +21956,7 @@ var nl = {
|
|
|
21793
21956
|
"results.sortBy.popularity": "",
|
|
21794
21957
|
"results.sortBy.qualityScore": "",
|
|
21795
21958
|
"results.sortBy.relevancy": "",
|
|
21959
|
+
"reuse.metadata.access": "",
|
|
21796
21960
|
"search.autocomplete.error": "",
|
|
21797
21961
|
"search.error.couldNotReachApi": "",
|
|
21798
21962
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21842,6 +22006,26 @@ var nl = {
|
|
|
21842
22006
|
"search.filters.useSpatialFilter": "",
|
|
21843
22007
|
"search.filters.useSpatialFilterHelp": "",
|
|
21844
22008
|
"search.filters.user": "",
|
|
22009
|
+
"service.metadata.capabilities": "",
|
|
22010
|
+
"service.metadata.capabilities.abstract": "",
|
|
22011
|
+
"service.metadata.capabilities.attribution": "",
|
|
22012
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22013
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22014
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22015
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22016
|
+
"service.metadata.capabilities.keywords": "",
|
|
22017
|
+
"service.metadata.capabilities.name": "",
|
|
22018
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22019
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22020
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22021
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22022
|
+
"service.metadata.capabilities.title": "",
|
|
22023
|
+
"service.metadata.filter": "",
|
|
22024
|
+
"service.metadata.filter.noLayers": "",
|
|
22025
|
+
"service.metadata.other": "",
|
|
22026
|
+
"service.metadata.question": "",
|
|
22027
|
+
"service.metadata.search": "",
|
|
22028
|
+
"service.metadata.spatialExtent": "",
|
|
21845
22029
|
"share.tab.permalink": "",
|
|
21846
22030
|
"share.tab.webComponent": "",
|
|
21847
22031
|
"table.loading.data": "",
|
|
@@ -21874,6 +22058,7 @@ var records = "";
|
|
|
21874
22058
|
var pt = {
|
|
21875
22059
|
"": "",
|
|
21876
22060
|
"Add Layer As": "",
|
|
22061
|
+
"Enter to search": "",
|
|
21877
22062
|
"button.login": "",
|
|
21878
22063
|
"catalog.figures.datasets": "conjuntos de dados",
|
|
21879
22064
|
"catalog.figures.organizations": "organizações",
|
|
@@ -21935,15 +22120,16 @@ var pt = {
|
|
|
21935
22120
|
"datahub.news.contact.title": "",
|
|
21936
22121
|
"datahub.news.feed": "",
|
|
21937
22122
|
"datahub.news.figures": "",
|
|
21938
|
-
"datahub.record.addToFavorites": "",
|
|
21939
22123
|
"datahub.search.back": "",
|
|
21940
22124
|
"datahub.search.filter.all": "",
|
|
21941
22125
|
"datahub.search.filter.generatedByAPI": "",
|
|
21942
22126
|
"datahub.search.filter.generatedByWfs": "",
|
|
21943
22127
|
"datahub.search.filter.others": "",
|
|
22128
|
+
"dataset.error.forbidden": "",
|
|
21944
22129
|
"dataset.error.http": "",
|
|
21945
22130
|
"dataset.error.network": "",
|
|
21946
22131
|
"dataset.error.parse": "",
|
|
22132
|
+
"dataset.error.restrictedAccess": "",
|
|
21947
22133
|
"dataset.error.unknown": "",
|
|
21948
22134
|
"dataset.error.unsupportedType": "",
|
|
21949
22135
|
"domain.contact.role.author": "",
|
|
@@ -22104,6 +22290,7 @@ var pt = {
|
|
|
22104
22290
|
"editor.record.loadError.body": "",
|
|
22105
22291
|
"editor.record.loadError.closeMessage": "",
|
|
22106
22292
|
"editor.record.loadError.title": "",
|
|
22293
|
+
"editor.record.lock.format": "",
|
|
22107
22294
|
"editor.record.lock.reason": "",
|
|
22108
22295
|
"editor.record.onlineResource.protocol.other": "",
|
|
22109
22296
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22163,7 +22350,6 @@ var pt = {
|
|
|
22163
22350
|
"input.image.dropFileLabel": "",
|
|
22164
22351
|
"input.image.selectFileLabel": "",
|
|
22165
22352
|
"input.image.uploadErrorLabel": "",
|
|
22166
|
-
"input.image.uploadErrorRetry": "",
|
|
22167
22353
|
"input.image.uploadProgressCancel": "",
|
|
22168
22354
|
"input.image.uploadProgressLabel": "",
|
|
22169
22355
|
"language.ca": "Catalão",
|
|
@@ -22203,6 +22389,7 @@ var pt = {
|
|
|
22203
22389
|
"map.wms.urlInput.hint": "",
|
|
22204
22390
|
"multiselect.filter.placeholder": "",
|
|
22205
22391
|
"nav.back": "",
|
|
22392
|
+
"navbar.mobile.menuTitle": "",
|
|
22206
22393
|
next: next,
|
|
22207
22394
|
"ogc.unreachable.unknown": "",
|
|
22208
22395
|
"organisation.filter.placeholder": "",
|
|
@@ -22226,8 +22413,13 @@ var pt = {
|
|
|
22226
22413
|
"record.action.duplicating": "",
|
|
22227
22414
|
"record.action.rollback": "",
|
|
22228
22415
|
"record.action.view": "",
|
|
22416
|
+
"record.card.metadata.contact": "",
|
|
22229
22417
|
"record.externalViewer.open": "",
|
|
22230
22418
|
"record.feature.limit": "",
|
|
22419
|
+
"record.kind.data": "",
|
|
22420
|
+
"record.kind.dataset": "",
|
|
22421
|
+
"record.kind.reuse": "",
|
|
22422
|
+
"record.kind.service": "",
|
|
22231
22423
|
"record.metadata.about": "",
|
|
22232
22424
|
"record.metadata.api": "",
|
|
22233
22425
|
"record.metadata.api.form.closeButton": "",
|
|
@@ -22261,6 +22453,7 @@ var pt = {
|
|
|
22261
22453
|
"record.metadata.api.form.zoneTitle": "",
|
|
22262
22454
|
"record.metadata.api.form.zoneTooltip": "",
|
|
22263
22455
|
"record.metadata.api.gpfdl": "",
|
|
22456
|
+
"record.metadata.capabilities": "",
|
|
22264
22457
|
"record.metadata.catalog": "",
|
|
22265
22458
|
"record.metadata.contact": "",
|
|
22266
22459
|
"record.metadata.creation": "",
|
|
@@ -22297,11 +22490,12 @@ var pt = {
|
|
|
22297
22490
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22298
22491
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22299
22492
|
"record.metadata.related": "",
|
|
22493
|
+
"record.metadata.related.contents": "",
|
|
22494
|
+
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22300
22495
|
"record.metadata.sheet": "",
|
|
22301
22496
|
"record.metadata.status": "",
|
|
22302
22497
|
"record.metadata.status.notPublished": "",
|
|
22303
22498
|
"record.metadata.status.published": "",
|
|
22304
|
-
"record.metadata.technical": "",
|
|
22305
22499
|
"record.metadata.temporalExtent": "",
|
|
22306
22500
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22307
22501
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22338,6 +22532,7 @@ var pt = {
|
|
|
22338
22532
|
"results.sortBy.popularity": "",
|
|
22339
22533
|
"results.sortBy.qualityScore": "",
|
|
22340
22534
|
"results.sortBy.relevancy": "",
|
|
22535
|
+
"reuse.metadata.access": "",
|
|
22341
22536
|
"search.autocomplete.error": "",
|
|
22342
22537
|
"search.error.couldNotReachApi": "",
|
|
22343
22538
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22387,6 +22582,26 @@ var pt = {
|
|
|
22387
22582
|
"search.filters.useSpatialFilter": "",
|
|
22388
22583
|
"search.filters.useSpatialFilterHelp": "",
|
|
22389
22584
|
"search.filters.user": "",
|
|
22585
|
+
"service.metadata.capabilities": "",
|
|
22586
|
+
"service.metadata.capabilities.abstract": "",
|
|
22587
|
+
"service.metadata.capabilities.attribution": "",
|
|
22588
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22589
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22590
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22591
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22592
|
+
"service.metadata.capabilities.keywords": "",
|
|
22593
|
+
"service.metadata.capabilities.name": "",
|
|
22594
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22595
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22596
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22597
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22598
|
+
"service.metadata.capabilities.title": "",
|
|
22599
|
+
"service.metadata.filter": "",
|
|
22600
|
+
"service.metadata.filter.noLayers": "",
|
|
22601
|
+
"service.metadata.other": "",
|
|
22602
|
+
"service.metadata.question": "",
|
|
22603
|
+
"service.metadata.search": "",
|
|
22604
|
+
"service.metadata.spatialExtent": "",
|
|
22390
22605
|
"share.tab.permalink": "",
|
|
22391
22606
|
"share.tab.webComponent": "",
|
|
22392
22607
|
"table.loading.data": "",
|
|
@@ -22690,6 +22905,10 @@ class Gn4FieldMapper {
|
|
|
22690
22905
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
22691
22906
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
22692
22907
|
const description = selectFallback(selectTranslatedField(sourceLink, 'descriptionObject', this.lang3), selectField(sourceLink, 'description'));
|
|
22908
|
+
const descriptionLink = selectField(sourceLink, 'descriptionObject');
|
|
22909
|
+
const accessRestricted = descriptionLink &&
|
|
22910
|
+
'link' in descriptionLink &&
|
|
22911
|
+
descriptionLink.link.toString().includes('#MD_RestrictionCode_restricted');
|
|
22693
22912
|
// no url: fail early
|
|
22694
22913
|
if (url === null) {
|
|
22695
22914
|
// TODO: collect errors at the record level?
|
|
@@ -22712,6 +22931,7 @@ class Gn4FieldMapper {
|
|
|
22712
22931
|
type,
|
|
22713
22932
|
url: url,
|
|
22714
22933
|
accessServiceProtocol,
|
|
22934
|
+
accessRestricted: accessRestricted,
|
|
22715
22935
|
};
|
|
22716
22936
|
case 'link':
|
|
22717
22937
|
return {
|
|
@@ -22730,8 +22950,8 @@ class Gn4FieldMapper {
|
|
|
22730
22950
|
return {
|
|
22731
22951
|
...distribution,
|
|
22732
22952
|
type,
|
|
22733
|
-
|
|
22734
|
-
|
|
22953
|
+
url: url,
|
|
22954
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22735
22955
|
};
|
|
22736
22956
|
}
|
|
22737
22957
|
};
|
|
@@ -23127,14 +23347,6 @@ class ElasticsearchService {
|
|
|
23127
23347
|
}
|
|
23128
23348
|
mustNotFilters() {
|
|
23129
23349
|
return [
|
|
23130
|
-
{
|
|
23131
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23132
|
-
'service',
|
|
23133
|
-
'map',
|
|
23134
|
-
'map/static',
|
|
23135
|
-
'mapDigital',
|
|
23136
|
-
]),
|
|
23137
|
-
},
|
|
23138
23350
|
{
|
|
23139
23351
|
query_string: {
|
|
23140
23352
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23233,7 +23445,7 @@ class ElasticsearchService {
|
|
|
23233
23445
|
must_not: this.mustNotFilters(),
|
|
23234
23446
|
},
|
|
23235
23447
|
},
|
|
23236
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23448
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23237
23449
|
from: 0,
|
|
23238
23450
|
size: 20,
|
|
23239
23451
|
};
|
|
@@ -23450,18 +23662,25 @@ class Gn4Repository {
|
|
|
23450
23662
|
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
23451
23663
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23452
23664
|
}
|
|
23665
|
+
mapEmbeddedFeatureCatalog(featureTypes) {
|
|
23666
|
+
return {
|
|
23667
|
+
featureTypes: featureTypes.map((featureType) => ({
|
|
23668
|
+
name: featureType.typeName || '',
|
|
23669
|
+
definition: featureType.definition || '',
|
|
23670
|
+
attributes: Array.isArray(featureType.attributeTable)
|
|
23671
|
+
? featureType.attributeTable.map((attr) => ({
|
|
23672
|
+
name: attr.name,
|
|
23673
|
+
title: attr.definition,
|
|
23674
|
+
}))
|
|
23675
|
+
: [],
|
|
23676
|
+
})),
|
|
23677
|
+
};
|
|
23678
|
+
}
|
|
23453
23679
|
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23454
23680
|
) {
|
|
23455
|
-
if (record.extras &&
|
|
23456
|
-
record.extras['featureTypes']
|
|
23457
|
-
record.extras['featureTypes']
|
|
23458
|
-
Array.isArray(record.extras['featureTypes'][0].attributeTable)) {
|
|
23459
|
-
return of({
|
|
23460
|
-
attributes: record.extras['featureTypes'][0]?.attributeTable?.map((attr) => ({
|
|
23461
|
-
name: attr.name,
|
|
23462
|
-
title: attr.definition,
|
|
23463
|
-
})),
|
|
23464
|
-
});
|
|
23681
|
+
if (record.extras?.['featureTypes'] &&
|
|
23682
|
+
Array.isArray(record.extras['featureTypes'])) {
|
|
23683
|
+
return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']));
|
|
23465
23684
|
}
|
|
23466
23685
|
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
23467
23686
|
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
@@ -24752,7 +24971,7 @@ const FORMATS = {
|
|
|
24752
24971
|
csv: {
|
|
24753
24972
|
extensions: ['csv'],
|
|
24754
24973
|
priority: 1,
|
|
24755
|
-
color: '#
|
|
24974
|
+
color: '#F6A924',
|
|
24756
24975
|
mimeTypes: ['text/csv', 'application/csv'],
|
|
24757
24976
|
},
|
|
24758
24977
|
excel: {
|
|
@@ -24764,7 +24983,7 @@ const FORMATS = {
|
|
|
24764
24983
|
'openxmlformats-officedocument',
|
|
24765
24984
|
],
|
|
24766
24985
|
priority: 2,
|
|
24767
|
-
color: '#
|
|
24986
|
+
color: '#FFDE10',
|
|
24768
24987
|
mimeTypes: [
|
|
24769
24988
|
'application/vnd.ms-excel',
|
|
24770
24989
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
@@ -24773,31 +24992,31 @@ const FORMATS = {
|
|
|
24773
24992
|
geojson: {
|
|
24774
24993
|
extensions: ['geojson'],
|
|
24775
24994
|
priority: 3,
|
|
24776
|
-
color: '#
|
|
24995
|
+
color: '#293C6F',
|
|
24777
24996
|
mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
|
|
24778
24997
|
},
|
|
24779
24998
|
json: {
|
|
24780
24999
|
extensions: ['json'],
|
|
24781
25000
|
priority: 3,
|
|
24782
|
-
color: '#
|
|
25001
|
+
color: '#84D0F0',
|
|
24783
25002
|
mimeTypes: ['application/json'],
|
|
24784
25003
|
},
|
|
24785
25004
|
shp: {
|
|
24786
25005
|
extensions: ['shp', 'shape', 'zipped-shapefile'],
|
|
24787
25006
|
priority: 4,
|
|
24788
|
-
color: '#
|
|
25007
|
+
color: '#009036',
|
|
24789
25008
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
24790
25009
|
},
|
|
24791
25010
|
gml: {
|
|
24792
25011
|
extensions: ['gml'],
|
|
24793
25012
|
priority: 5,
|
|
24794
|
-
color: '#
|
|
25013
|
+
color: '#E75113',
|
|
24795
25014
|
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
24796
25015
|
},
|
|
24797
25016
|
kml: {
|
|
24798
25017
|
extensions: ['kml', 'kmz'],
|
|
24799
25018
|
priority: 6,
|
|
24800
|
-
color: '#
|
|
25019
|
+
color: '#F4B5D0',
|
|
24801
25020
|
mimeTypes: [
|
|
24802
25021
|
'application/vnd.google-earth.kml+xml',
|
|
24803
25022
|
'application/vnd.google-earth.kmz',
|
|
@@ -24806,55 +25025,55 @@ const FORMATS = {
|
|
|
24806
25025
|
gpkg: {
|
|
24807
25026
|
extensions: ['gpkg', 'geopackage'],
|
|
24808
25027
|
priority: 7,
|
|
24809
|
-
color: '#
|
|
25028
|
+
color: '#7D5D9F',
|
|
24810
25029
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
24811
25030
|
},
|
|
24812
25031
|
zip: {
|
|
24813
25032
|
extensions: ['zip', 'tar.gz'],
|
|
24814
25033
|
priority: 8,
|
|
24815
|
-
color: '#
|
|
25034
|
+
color: '#B0CB52',
|
|
24816
25035
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
24817
25036
|
},
|
|
24818
25037
|
pdf: {
|
|
24819
25038
|
extensions: ['pdf'],
|
|
24820
25039
|
priority: 9,
|
|
24821
|
-
color: '#
|
|
25040
|
+
color: '#49579E',
|
|
24822
25041
|
mimeTypes: ['application/pdf'],
|
|
24823
25042
|
},
|
|
24824
25043
|
jpg: {
|
|
24825
25044
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
24826
25045
|
priority: 9,
|
|
24827
|
-
color: '#
|
|
25046
|
+
color: '#C4A98F',
|
|
24828
25047
|
mimeTypes: ['image/jpg'],
|
|
24829
25048
|
},
|
|
24830
25049
|
svg: {
|
|
24831
25050
|
extensions: ['svg'],
|
|
24832
25051
|
priority: 10,
|
|
24833
|
-
color: '#
|
|
25052
|
+
color: '#EB6D82',
|
|
24834
25053
|
mimeTypes: ['image/svg+xml'],
|
|
24835
25054
|
},
|
|
24836
25055
|
dxf: {
|
|
24837
25056
|
extensions: ['dxf'],
|
|
24838
25057
|
priority: 11,
|
|
24839
|
-
color: '#
|
|
25058
|
+
color: '#DCCD00',
|
|
24840
25059
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
24841
25060
|
},
|
|
24842
25061
|
html: {
|
|
24843
25062
|
extensions: ['html', 'htm'],
|
|
24844
25063
|
priority: 12,
|
|
24845
|
-
color: '#
|
|
25064
|
+
color: '#C0C9B6',
|
|
24846
25065
|
mimeTypes: ['text/html'],
|
|
24847
25066
|
},
|
|
24848
25067
|
fgb: {
|
|
24849
25068
|
extensions: ['fgb', 'flatgeobuf'],
|
|
24850
25069
|
priority: 13,
|
|
24851
|
-
color: '#
|
|
25070
|
+
color: '#A8111C',
|
|
24852
25071
|
mimeTypes: ['application/flatgeobuf'],
|
|
24853
25072
|
},
|
|
24854
25073
|
jsonfg: {
|
|
24855
25074
|
extensions: ['jsonfg', 'jsonfgc'],
|
|
24856
25075
|
priority: 14,
|
|
24857
|
-
color: '#
|
|
25076
|
+
color: '#009EE0',
|
|
24858
25077
|
mimeTypes: [
|
|
24859
25078
|
'application/vnd.ogc.fg+json',
|
|
24860
25079
|
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
@@ -24925,9 +25144,11 @@ function mimeTypeToFormat(mimeType) {
|
|
|
24925
25144
|
return null;
|
|
24926
25145
|
}
|
|
24927
25146
|
function checkFileFormat(link, format) {
|
|
24928
|
-
return (('name' in link &&
|
|
25147
|
+
return (('name' in link &&
|
|
25148
|
+
new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
|
|
24929
25149
|
('url' in link &&
|
|
24930
|
-
new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
|
|
25150
|
+
new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
|
|
25151
|
+
('name' in link && link.name.toLowerCase().includes(format)));
|
|
24931
25152
|
}
|
|
24932
25153
|
function getBadgeColor(linkFormat) {
|
|
24933
25154
|
for (const format in FORMATS) {
|
|
@@ -24962,7 +25183,7 @@ function getLinkLabel(link) {
|
|
|
24962
25183
|
default:
|
|
24963
25184
|
format = getFileFormat(link);
|
|
24964
25185
|
}
|
|
24965
|
-
const label = link.description || link.name;
|
|
25186
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
24966
25187
|
return format ? `${label} (${format})` : label;
|
|
24967
25188
|
}
|
|
24968
25189
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -24973,14 +25194,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
24973
25194
|
}
|
|
24974
25195
|
case 'wfs': {
|
|
24975
25196
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
24976
|
-
|
|
25197
|
+
const featureTypes = await endpointWfs.getFeatureTypes();
|
|
25198
|
+
const layers = await Promise.all(featureTypes.map(async (collection) => {
|
|
25199
|
+
return await endpointWfs.getFeatureTypeFull(collection.name);
|
|
25200
|
+
}));
|
|
25201
|
+
return layers;
|
|
24977
25202
|
}
|
|
24978
25203
|
case 'wms': {
|
|
24979
25204
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
24980
|
-
|
|
25205
|
+
const layers = (await endpointWms
|
|
24981
25206
|
.getLayers()
|
|
24982
25207
|
.flatMap(wmsLayerFlatten)
|
|
24983
|
-
.filter((l) => l.name)
|
|
25208
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25209
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25210
|
+
});
|
|
25211
|
+
return layers;
|
|
24984
25212
|
}
|
|
24985
25213
|
case 'wmts': {
|
|
24986
25214
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25017,6 +25245,7 @@ var LinkUsage;
|
|
|
25017
25245
|
class LinkClassifierService {
|
|
25018
25246
|
getUsagesForLink(link) {
|
|
25019
25247
|
switch (link.type) {
|
|
25248
|
+
case 'endpoint':
|
|
25020
25249
|
case 'service': {
|
|
25021
25250
|
switch (link.accessServiceProtocol) {
|
|
25022
25251
|
case 'esriRest':
|
|
@@ -25065,6 +25294,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25065
25294
|
}]
|
|
25066
25295
|
}] });
|
|
25067
25296
|
|
|
25297
|
+
var name = "geonetwork-ui";
|
|
25298
|
+
var version = "2.6.0-dev.025a2f85d";
|
|
25299
|
+
var engines = {
|
|
25300
|
+
node: ">=20"
|
|
25301
|
+
};
|
|
25302
|
+
var main = "./index.ts";
|
|
25303
|
+
var type = "module";
|
|
25304
|
+
var exports = {
|
|
25305
|
+
"./tailwind.base.config.js": "./tailwind.base.config.js",
|
|
25306
|
+
"./style.css": "./style.css"
|
|
25307
|
+
};
|
|
25308
|
+
var repository = {
|
|
25309
|
+
url: "https://github.com/geonetwork/geonetwork-ui"
|
|
25310
|
+
};
|
|
25311
|
+
var peerDependencies = {
|
|
25312
|
+
"@angular/animations": "17.x || 18.x || 19.x",
|
|
25313
|
+
"@angular/cdk": "17.x || 18.x || 19.x",
|
|
25314
|
+
"@angular/common": "17.x || 18.x || 19.x",
|
|
25315
|
+
"@angular/compiler": "17.x || 18.x || 19.x",
|
|
25316
|
+
"@angular/core": "17.x || 18.x || 19.x",
|
|
25317
|
+
"@angular/forms": "17.x || 18.x || 19.x",
|
|
25318
|
+
"@angular/material": "17.x || 18.x || 19.x",
|
|
25319
|
+
"@angular/material-moment-adapter": "17.x || 18.x || 19.x",
|
|
25320
|
+
"@angular/platform-browser": "17.x || 18.x || 19.x",
|
|
25321
|
+
"@angular/platform-browser-dynamic": "17.x || 18.x || 19.x",
|
|
25322
|
+
"@angular/router": "17.x || 18.x || 19.x",
|
|
25323
|
+
"@ngrx/component": "17.x || 18.x || 19.x",
|
|
25324
|
+
"@ngrx/effects": "17.x || 18.x || 19.x",
|
|
25325
|
+
"@ngrx/router-store": "17.x || 18.x || 19.x",
|
|
25326
|
+
"@ngrx/store": "17.x || 18.x || 19.x",
|
|
25327
|
+
"@ngrx/store-devtools": "17.x || 18.x || 19.x",
|
|
25328
|
+
"@ngrx/operators": "18.x",
|
|
25329
|
+
"@ngx-translate/core": "15.x",
|
|
25330
|
+
"@ngx-translate/http-loader": "16.x",
|
|
25331
|
+
rxjs: "7.x",
|
|
25332
|
+
"zone.js": "*",
|
|
25333
|
+
tailwindcss: "3.x"
|
|
25334
|
+
};
|
|
25335
|
+
var dependencies = {
|
|
25336
|
+
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
|
25337
|
+
"@camptocamp/ogc-client": "1.1.1-dev.3e2d3cc",
|
|
25338
|
+
"@geospatial-sdk/core": "0.0.5-dev.31",
|
|
25339
|
+
"@geospatial-sdk/geocoding": "0.0.5-dev.31",
|
|
25340
|
+
"@geospatial-sdk/legend": "0.0.5-dev.31",
|
|
25341
|
+
"@geospatial-sdk/openlayers": "0.0.5-dev.31",
|
|
25342
|
+
"@ltd/j-toml": "~1.35.2",
|
|
25343
|
+
"@messageformat/core": "^3.0.1",
|
|
25344
|
+
"@ng-icons/core": "29.10.0",
|
|
25345
|
+
"@ng-icons/iconoir": "29.10.0",
|
|
25346
|
+
"@ng-icons/material-icons": "29.10.0",
|
|
25347
|
+
"@ng-icons/tabler-icons": "29.10.0",
|
|
25348
|
+
"@nx/angular": "20.2.2",
|
|
25349
|
+
"@rgrove/parse-xml": "4.2.0",
|
|
25350
|
+
alasql: "4.6.0",
|
|
25351
|
+
axios: "1.7.9",
|
|
25352
|
+
basiclightbox: "^5.0.4",
|
|
25353
|
+
"chart.js": "4.4.7",
|
|
25354
|
+
"chroma-js": "3.1.2",
|
|
25355
|
+
"date-fns": "4.1.0",
|
|
25356
|
+
"document-register-element": "^1.14.10",
|
|
25357
|
+
"duration-relativetimeformat": "^2.0.4",
|
|
25358
|
+
"embla-carousel": "8.5.1",
|
|
25359
|
+
express: "^4.21.1",
|
|
25360
|
+
"geojson-validation": "^1.0.2",
|
|
25361
|
+
marked: "15.0.4",
|
|
25362
|
+
moment: "2.30.1",
|
|
25363
|
+
"ng-table-virtual-scroll": "1.6.1",
|
|
25364
|
+
"ngx-chips": "3.0.0",
|
|
25365
|
+
"ngx-dropzone": "3.1.0",
|
|
25366
|
+
"ngx-translate-messageformat-compiler": "7.0.0",
|
|
25367
|
+
ol: "^8.2.0",
|
|
25368
|
+
papaparse: "5.4.1",
|
|
25369
|
+
pg: "^8.9.0",
|
|
25370
|
+
proj4: "^2.9.2",
|
|
25371
|
+
rdflib: "^2.2.35",
|
|
25372
|
+
"reflect-metadata": "^0.1.13",
|
|
25373
|
+
semver: "7.6.3",
|
|
25374
|
+
"tippy.js": "6.3.7",
|
|
25375
|
+
tslib: "^2.3.0",
|
|
25376
|
+
typeorm: "^0.3.14",
|
|
25377
|
+
"whatwg-fetch": "^3.6.2",
|
|
25378
|
+
xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
|
|
25379
|
+
};
|
|
25380
|
+
var packageJson = {
|
|
25381
|
+
name: name,
|
|
25382
|
+
version: version,
|
|
25383
|
+
engines: engines,
|
|
25384
|
+
main: main,
|
|
25385
|
+
type: type,
|
|
25386
|
+
exports: exports,
|
|
25387
|
+
repository: repository,
|
|
25388
|
+
peerDependencies: peerDependencies,
|
|
25389
|
+
dependencies: dependencies
|
|
25390
|
+
};
|
|
25391
|
+
|
|
25392
|
+
const GEONETWORK_UI_VERSION = packageJson.version;
|
|
25393
|
+
const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
|
|
25394
|
+
? 'main'
|
|
25395
|
+
: `v${packageJson.version}`;
|
|
25396
|
+
|
|
25068
25397
|
const minApiVersion = '4.2.2';
|
|
25069
25398
|
class Gn4PlatformService {
|
|
25070
25399
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25258,12 +25587,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25258
25587
|
type: Injectable
|
|
25259
25588
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25260
25589
|
|
|
25590
|
+
class RecordsRepositoryInterface {
|
|
25591
|
+
}
|
|
25592
|
+
|
|
25261
25593
|
function provideGn4() {
|
|
25262
25594
|
return [
|
|
25263
25595
|
{
|
|
25264
25596
|
provide: PlatformServiceInterface,
|
|
25265
25597
|
useClass: Gn4PlatformService,
|
|
25266
25598
|
},
|
|
25599
|
+
{
|
|
25600
|
+
provide: RecordsRepositoryInterface,
|
|
25601
|
+
useClass: Gn4Repository,
|
|
25602
|
+
},
|
|
25267
25603
|
Gn4PlatformMapper,
|
|
25268
25604
|
];
|
|
25269
25605
|
}
|
|
@@ -25339,7 +25675,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25339
25675
|
|
|
25340
25676
|
class AnchorLinkDirective {
|
|
25341
25677
|
get elementClass() {
|
|
25342
|
-
|
|
25678
|
+
if (this.disabled) {
|
|
25679
|
+
return this.disabledClass;
|
|
25680
|
+
}
|
|
25681
|
+
if (this.inView) {
|
|
25682
|
+
return `${this.inViewClass} ${this.enabledClass}`;
|
|
25683
|
+
}
|
|
25684
|
+
else {
|
|
25685
|
+
return `${this.outOfViewClass} ${this.enabledClass}`;
|
|
25686
|
+
}
|
|
25343
25687
|
}
|
|
25344
25688
|
constructor(changeDetector) {
|
|
25345
25689
|
this.changeDetector = changeDetector;
|
|
@@ -25347,6 +25691,8 @@ class AnchorLinkDirective {
|
|
|
25347
25691
|
this.observer = new MutationObserver(() => {
|
|
25348
25692
|
this.refreshDisabledState();
|
|
25349
25693
|
});
|
|
25694
|
+
this.inView = false;
|
|
25695
|
+
this.initialized = false;
|
|
25350
25696
|
}
|
|
25351
25697
|
ngOnInit() {
|
|
25352
25698
|
this.observer.observe(document.body, {
|
|
@@ -25355,8 +25701,32 @@ class AnchorLinkDirective {
|
|
|
25355
25701
|
});
|
|
25356
25702
|
this.refreshDisabledState();
|
|
25357
25703
|
}
|
|
25704
|
+
ngAfterViewChecked() {
|
|
25705
|
+
if (!this.initialized && !this.disabled) {
|
|
25706
|
+
const target = document.getElementById(this.targetId);
|
|
25707
|
+
if (target) {
|
|
25708
|
+
this.initializeIntersectionObserver(target);
|
|
25709
|
+
this.initialized = true;
|
|
25710
|
+
}
|
|
25711
|
+
}
|
|
25712
|
+
}
|
|
25713
|
+
initializeIntersectionObserver(target) {
|
|
25714
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
25715
|
+
entries.forEach((entry) => {
|
|
25716
|
+
this.inView = entry.isIntersecting;
|
|
25717
|
+
this.changeDetector.detectChanges();
|
|
25718
|
+
});
|
|
25719
|
+
}, {
|
|
25720
|
+
root: null,
|
|
25721
|
+
rootMargin: '-30% 0% -60% 0%',
|
|
25722
|
+
});
|
|
25723
|
+
this.intersectionObserver.observe(target);
|
|
25724
|
+
}
|
|
25358
25725
|
ngOnDestroy() {
|
|
25359
25726
|
this.observer.disconnect();
|
|
25727
|
+
if (this.intersectionObserver) {
|
|
25728
|
+
this.intersectionObserver.disconnect();
|
|
25729
|
+
}
|
|
25360
25730
|
}
|
|
25361
25731
|
refreshDisabledState() {
|
|
25362
25732
|
const targetNotPresent = !document.getElementById(this.targetId);
|
|
@@ -25375,7 +25745,7 @@ class AnchorLinkDirective {
|
|
|
25375
25745
|
});
|
|
25376
25746
|
}
|
|
25377
25747
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25378
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnchorLinkDirective, selector: "[gnUiAnchorLink]", inputs: { targetId: ["gnUiAnchorLink", "targetId"], disabledClass: ["gnUiAnchorLinkDisabledClass", "disabledClass"], enabledClass: ["gnUiAnchorLinkEnabledClass", "enabledClass"] }, host: { listeners: { "click": "scrollToTarget()" }, properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
|
|
25748
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnchorLinkDirective, selector: "[gnUiAnchorLink]", inputs: { targetId: ["gnUiAnchorLink", "targetId"], disabledClass: ["gnUiAnchorLinkDisabledClass", "disabledClass"], enabledClass: ["gnUiAnchorLinkEnabledClass", "enabledClass"], inViewClass: ["gnUiAnchorLinkInViewClass", "inViewClass"], outOfViewClass: ["gnUiAnchorLinkOutOfViewClass", "outOfViewClass"] }, host: { listeners: { "click": "scrollToTarget()" }, properties: { "class": "this.elementClass" } }, ngImport: i0 }); }
|
|
25379
25749
|
}
|
|
25380
25750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, decorators: [{
|
|
25381
25751
|
type: Directive,
|
|
@@ -25391,6 +25761,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25391
25761
|
}], enabledClass: [{
|
|
25392
25762
|
type: Input,
|
|
25393
25763
|
args: ['gnUiAnchorLinkEnabledClass']
|
|
25764
|
+
}], inViewClass: [{
|
|
25765
|
+
type: Input,
|
|
25766
|
+
args: ['gnUiAnchorLinkInViewClass']
|
|
25767
|
+
}], outOfViewClass: [{
|
|
25768
|
+
type: Input,
|
|
25769
|
+
args: ['gnUiAnchorLinkOutOfViewClass']
|
|
25394
25770
|
}], elementClass: [{
|
|
25395
25771
|
type: HostBinding,
|
|
25396
25772
|
args: ['class']
|
|
@@ -25480,11 +25856,11 @@ class CarouselComponent {
|
|
|
25480
25856
|
.on('select', this.refreshSteps);
|
|
25481
25857
|
}
|
|
25482
25858
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25483
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host
|
|
25859
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25484
25860
|
}
|
|
25485
25861
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
25486
25862
|
type: Component,
|
|
25487
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host
|
|
25863
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative;display:block}\n"] }]
|
|
25488
25864
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselOverflowContainer: [{
|
|
25489
25865
|
type: ViewChild,
|
|
25490
25866
|
args: ['carouselOverflowContainer']
|
|
@@ -25655,6 +26031,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25655
26031
|
type: Output
|
|
25656
26032
|
}] } });
|
|
25657
26033
|
|
|
26034
|
+
marker('editor.record.lock.reason');
|
|
26035
|
+
marker('editor.record.lock.format');
|
|
25658
26036
|
class InteractiveTableComponent {
|
|
25659
26037
|
constructor() {
|
|
25660
26038
|
this.items = [];
|
|
@@ -25672,15 +26050,24 @@ class InteractiveTableComponent {
|
|
|
25672
26050
|
.join(' '),
|
|
25673
26051
|
};
|
|
25674
26052
|
}
|
|
26053
|
+
getItemTitle(item) {
|
|
26054
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26055
|
+
return 'editor.record.lock.reason';
|
|
26056
|
+
}
|
|
26057
|
+
else if (item.kind !== 'dataset') {
|
|
26058
|
+
return 'editor.record.lock.format';
|
|
26059
|
+
}
|
|
26060
|
+
return '';
|
|
26061
|
+
}
|
|
25675
26062
|
handleRowClick(item) {
|
|
25676
26063
|
this.itemClick.emit(item);
|
|
25677
26064
|
}
|
|
25678
26065
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25679
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26066
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25680
26067
|
}
|
|
25681
26068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25682
26069
|
type: Component,
|
|
25683
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26070
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
25684
26071
|
}], propDecorators: { columns: [{
|
|
25685
26072
|
type: ContentChildren,
|
|
25686
26073
|
args: [InteractiveTableColumnComponent]
|
|
@@ -25924,11 +26311,11 @@ class ProgressBarComponent {
|
|
|
25924
26311
|
}
|
|
25925
26312
|
}
|
|
25926
26313
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25927
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[
|
|
26314
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"], dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] }); }
|
|
25928
26315
|
}
|
|
25929
26316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
25930
26317
|
type: Component,
|
|
25931
|
-
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[
|
|
26318
|
+
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} text-xs font-medium mr-2\n text-opacity-100 !text-slate-800\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
|
|
25932
26319
|
}], propDecorators: { value: [{
|
|
25933
26320
|
type: Input
|
|
25934
26321
|
}], type: [{
|
|
@@ -27322,19 +27709,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27322
27709
|
type: Input
|
|
27323
27710
|
}] } });
|
|
27324
27711
|
|
|
27325
|
-
class NavigationButtonComponent {
|
|
27326
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NavigationButtonComponent, isStandalone: true, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <ng-icon [name]=\"icon\" class=\"align-middle w-[18px]\"></ng-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27328
|
-
}
|
|
27329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
27330
|
-
type: Component,
|
|
27331
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIcon], standalone: true, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <ng-icon [name]=\"icon\" class=\"align-middle w-[18px]\"></ng-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
27332
|
-
}], propDecorators: { label: [{
|
|
27333
|
-
type: Input
|
|
27334
|
-
}], icon: [{
|
|
27335
|
-
type: Input
|
|
27336
|
-
}] } });
|
|
27337
|
-
|
|
27338
27712
|
class SearchInputComponent {
|
|
27339
27713
|
constructor() {
|
|
27340
27714
|
this.value = '';
|
|
@@ -27393,11 +27767,11 @@ class StarToggleComponent {
|
|
|
27393
27767
|
event.preventDefault();
|
|
27394
27768
|
}
|
|
27395
27769
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27396
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"
|
|
27770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27397
27771
|
}
|
|
27398
27772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27399
27773
|
type: Component,
|
|
27400
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"
|
|
27774
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
27401
27775
|
}], propDecorators: { toggled: [{
|
|
27402
27776
|
type: Input
|
|
27403
27777
|
}], disabled: [{
|
|
@@ -28444,7 +28818,7 @@ class MetadataQualityComponent {
|
|
|
28444
28818
|
size: '1.2em',
|
|
28445
28819
|
strokeWidth: '1.5px',
|
|
28446
28820
|
}),
|
|
28447
|
-
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"
|
|
28821
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n smaller ? 'leading-[8px] min-w-[120px] m-h-[120px]' : 'min-w-[200px]'\n \"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28448
28822
|
}
|
|
28449
28823
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
28450
28824
|
type: Component,
|
|
@@ -28463,7 +28837,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28463
28837
|
size: '1.2em',
|
|
28464
28838
|
strokeWidth: '1.5px',
|
|
28465
28839
|
}),
|
|
28466
|
-
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"
|
|
28840
|
+
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n smaller ? 'leading-[8px] min-w-[120px] m-h-[120px]' : 'min-w-[200px]'\n \"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
28467
28841
|
}], propDecorators: { metadata: [{
|
|
28468
28842
|
type: Input
|
|
28469
28843
|
}], smaller: [{
|
|
@@ -28640,9 +29014,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28640
29014
|
|
|
28641
29015
|
class ApiCardComponent {
|
|
28642
29016
|
constructor() {
|
|
29017
|
+
this.sizeClassMap = {
|
|
29018
|
+
L: 'gn-ui-card-l py-2 px-5 flex-row',
|
|
29019
|
+
M: 'gn-ui-card-m py-2 px-5 flex-row',
|
|
29020
|
+
S: 'gn-ui-card-s p-4 flex-col',
|
|
29021
|
+
XS: 'gn-ui-card-xs py-2 px-5 flex-row',
|
|
29022
|
+
};
|
|
29023
|
+
this.cardClass = '';
|
|
28643
29024
|
this.currentlyActive = false;
|
|
28644
29025
|
this.openRecordApiForm = new EventEmitter();
|
|
28645
29026
|
}
|
|
29027
|
+
set size(value) {
|
|
29028
|
+
this._size = value;
|
|
29029
|
+
this.cardClass = this.sizeClassMap[value];
|
|
29030
|
+
}
|
|
29031
|
+
get size() {
|
|
29032
|
+
return this._size;
|
|
29033
|
+
}
|
|
29034
|
+
get generatedText() {
|
|
29035
|
+
return this.link.accessServiceProtocol === 'wfs'
|
|
29036
|
+
? 'datahub.search.filter.generatedByWfs'
|
|
29037
|
+
: 'datahub.search.filter.generatedByAPI';
|
|
29038
|
+
}
|
|
28646
29039
|
ngOnInit() {
|
|
28647
29040
|
this.displayApiFormButton =
|
|
28648
29041
|
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
@@ -28660,9 +29053,9 @@ class ApiCardComponent {
|
|
|
28660
29053
|
}
|
|
28661
29054
|
}
|
|
28662
29055
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28663
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex
|
|
29056
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { 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: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28664
29057
|
provideIcons({
|
|
28665
|
-
|
|
29058
|
+
iconoirSettings,
|
|
28666
29059
|
}),
|
|
28667
29060
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28668
29061
|
}
|
|
@@ -28676,13 +29069,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28676
29069
|
NgIcon,
|
|
28677
29070
|
], viewProviders: [
|
|
28678
29071
|
provideIcons({
|
|
28679
|
-
|
|
29072
|
+
iconoirSettings,
|
|
28680
29073
|
}),
|
|
28681
|
-
], template: "<div\n class=\"group flex
|
|
29074
|
+
], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
|
|
28682
29075
|
}], propDecorators: { link: [{
|
|
28683
29076
|
type: Input
|
|
28684
29077
|
}], currentLink: [{
|
|
28685
29078
|
type: Input
|
|
29079
|
+
}], size: [{
|
|
29080
|
+
type: Input
|
|
28686
29081
|
}], openRecordApiForm: [{
|
|
28687
29082
|
type: Output
|
|
28688
29083
|
}] } });
|
|
@@ -28743,15 +29138,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28743
29138
|
|
|
28744
29139
|
class DownloadItemComponent {
|
|
28745
29140
|
constructor() {
|
|
29141
|
+
this.sizeClassMap = {
|
|
29142
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
29143
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
29144
|
+
S: 'gn-ui-card-s p-4',
|
|
29145
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
29146
|
+
};
|
|
29147
|
+
this.cardClass = '';
|
|
28746
29148
|
this.exportUrl = new EventEmitter();
|
|
28747
29149
|
}
|
|
29150
|
+
set size(value) {
|
|
29151
|
+
this._size = value;
|
|
29152
|
+
this.cardClass = this.sizeClassMap[value];
|
|
29153
|
+
}
|
|
29154
|
+
get size() {
|
|
29155
|
+
return this._size;
|
|
29156
|
+
}
|
|
28748
29157
|
openUrl() {
|
|
28749
29158
|
this.exportUrl.emit(this.link.url.toString());
|
|
28750
29159
|
}
|
|
28751
29160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28752
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex justify-between card-shadow
|
|
29161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi", size: "size" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\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: 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: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28753
29162
|
provideIcons({
|
|
28754
|
-
|
|
29163
|
+
iconoirDownload,
|
|
28755
29164
|
}),
|
|
28756
29165
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28757
29166
|
}
|
|
@@ -28759,9 +29168,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28759
29168
|
type: Component,
|
|
28760
29169
|
args: [{ selector: 'gn-ui-download-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, NgIcon], standalone: true, viewProviders: [
|
|
28761
29170
|
provideIcons({
|
|
28762
|
-
|
|
29171
|
+
iconoirDownload,
|
|
28763
29172
|
}),
|
|
28764
|
-
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex justify-between card-shadow
|
|
29173
|
+
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
28765
29174
|
}], propDecorators: { link: [{
|
|
28766
29175
|
type: Input
|
|
28767
29176
|
}], color: [{
|
|
@@ -28770,6 +29179,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28770
29179
|
type: Input
|
|
28771
29180
|
}], isFromApi: [{
|
|
28772
29181
|
type: Input
|
|
29182
|
+
}], size: [{
|
|
29183
|
+
type: Input
|
|
28773
29184
|
}], exportUrl: [{
|
|
28774
29185
|
type: Output
|
|
28775
29186
|
}] } });
|
|
@@ -28860,7 +29271,7 @@ class DownloadsListComponent {
|
|
|
28860
29271
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
28861
29272
|
}
|
|
28862
29273
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28863
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between
|
|
29274
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div\n class=\"font-title text-xl text-title font-medium mr-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </div>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"L\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28864
29275
|
}
|
|
28865
29276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
28866
29277
|
type: Component,
|
|
@@ -28869,7 +29280,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28869
29280
|
ButtonComponent,
|
|
28870
29281
|
DownloadItemComponent,
|
|
28871
29282
|
TranslateModule,
|
|
28872
|
-
], template: "<div\n class=\"flex flex-wrap justify-between
|
|
29283
|
+
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div\n class=\"font-title text-xl text-title font-medium mr-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </div>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"L\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
28873
29284
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }], propDecorators: { links: [{
|
|
28874
29285
|
type: Input
|
|
28875
29286
|
}] } });
|
|
@@ -29153,7 +29564,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29153
29564
|
|
|
29154
29565
|
class LinkCardComponent {
|
|
29155
29566
|
constructor() {
|
|
29156
|
-
this.
|
|
29567
|
+
this.sizeClassMap = {
|
|
29568
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
29569
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
29570
|
+
S: 'gn-ui-card-s p-4',
|
|
29571
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
29572
|
+
};
|
|
29573
|
+
this.cardClass = '';
|
|
29574
|
+
}
|
|
29575
|
+
set size(value) {
|
|
29576
|
+
this._size = value;
|
|
29577
|
+
this.cardClass = this.sizeClassMap[value];
|
|
29578
|
+
}
|
|
29579
|
+
get size() {
|
|
29580
|
+
return this._size;
|
|
29157
29581
|
}
|
|
29158
29582
|
get title() {
|
|
29159
29583
|
if (this.link.name && this.link.description) {
|
|
@@ -29161,25 +29585,31 @@ class LinkCardComponent {
|
|
|
29161
29585
|
}
|
|
29162
29586
|
return this.link.name || this.link.description || '';
|
|
29163
29587
|
}
|
|
29588
|
+
getLinkFormat(link) {
|
|
29589
|
+
return getFileFormat(link);
|
|
29590
|
+
}
|
|
29591
|
+
getLinkColor(link) {
|
|
29592
|
+
return getBadgeColor(getFileFormat(link));
|
|
29593
|
+
}
|
|
29164
29594
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link",
|
|
29595
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", size: "size" }, providers: [
|
|
29166
29596
|
provideIcons({
|
|
29167
29597
|
matOpenInNew,
|
|
29168
29598
|
}),
|
|
29169
29599
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29170
|
-
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29600
|
+
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\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: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29171
29601
|
}
|
|
29172
29602
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
29173
29603
|
type: Component,
|
|
29174
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent], providers: [
|
|
29604
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [
|
|
29175
29605
|
provideIcons({
|
|
29176
29606
|
matOpenInNew,
|
|
29177
29607
|
}),
|
|
29178
29608
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29179
|
-
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29609
|
+
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
29180
29610
|
}], propDecorators: { link: [{
|
|
29181
29611
|
type: Input
|
|
29182
|
-
}],
|
|
29612
|
+
}], size: [{
|
|
29183
29613
|
type: Input
|
|
29184
29614
|
}] } });
|
|
29185
29615
|
|
|
@@ -29221,11 +29651,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29221
29651
|
|
|
29222
29652
|
class MetadataCatalogComponent {
|
|
29223
29653
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-
|
|
29654
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-900 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29225
29655
|
}
|
|
29226
29656
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, decorators: [{
|
|
29227
29657
|
type: Component,
|
|
29228
|
-
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div>\n <p class=\"text-gray-
|
|
29658
|
+
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div>\n <p class=\"text-gray-900 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n" }]
|
|
29229
29659
|
}], propDecorators: { sourceLabel: [{
|
|
29230
29660
|
type: Input
|
|
29231
29661
|
}] } });
|
|
@@ -29253,7 +29683,7 @@ class MetadataContactComponent {
|
|
|
29253
29683
|
this.organizationClick.emit(this.shownOrganization);
|
|
29254
29684
|
}
|
|
29255
29685
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29256
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29686
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
29257
29687
|
provideIcons({
|
|
29258
29688
|
matOpenInNew,
|
|
29259
29689
|
matCallOutline,
|
|
@@ -29273,7 +29703,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29273
29703
|
matPersonOutline,
|
|
29274
29704
|
matLocationOnOutline,
|
|
29275
29705
|
}),
|
|
29276
|
-
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29706
|
+
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
29277
29707
|
}], propDecorators: { metadata: [{
|
|
29278
29708
|
type: Input
|
|
29279
29709
|
}], organizationClick: [{
|
|
@@ -29358,6 +29788,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29358
29788
|
}]
|
|
29359
29789
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29360
29790
|
|
|
29791
|
+
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
29792
|
+
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
29793
|
+
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
29794
|
+
factory: () => ({}),
|
|
29795
|
+
});
|
|
29796
|
+
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
29797
|
+
factory: () => ({
|
|
29798
|
+
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
29799
|
+
stroke: { color: '#ffcc33', width: 2 },
|
|
29800
|
+
}),
|
|
29801
|
+
});
|
|
29802
|
+
|
|
29803
|
+
const DEFAULT_BASEMAP_LAYER = {
|
|
29804
|
+
type: 'xyz',
|
|
29805
|
+
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
29806
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
29807
|
+
};
|
|
29808
|
+
const DEFAULT_VIEW = {
|
|
29809
|
+
center: [0, 15],
|
|
29810
|
+
zoom: 2,
|
|
29811
|
+
};
|
|
29812
|
+
class MapContainerComponent {
|
|
29813
|
+
get featuresClick() {
|
|
29814
|
+
if (!this._featuresClick) {
|
|
29815
|
+
this.openlayersMap.then((olMap) => {
|
|
29816
|
+
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
29817
|
+
});
|
|
29818
|
+
this._featuresClick = new EventEmitter();
|
|
29819
|
+
}
|
|
29820
|
+
return this._featuresClick;
|
|
29821
|
+
}
|
|
29822
|
+
get featuresHover() {
|
|
29823
|
+
if (!this._featuresHover) {
|
|
29824
|
+
this.openlayersMap.then((olMap) => {
|
|
29825
|
+
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
29826
|
+
});
|
|
29827
|
+
this._featuresHover = new EventEmitter();
|
|
29828
|
+
}
|
|
29829
|
+
return this._featuresHover;
|
|
29830
|
+
}
|
|
29831
|
+
get mapClick() {
|
|
29832
|
+
if (!this._mapClick) {
|
|
29833
|
+
this.openlayersMap.then((olMap) => {
|
|
29834
|
+
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
29835
|
+
});
|
|
29836
|
+
this._mapClick = new EventEmitter();
|
|
29837
|
+
}
|
|
29838
|
+
return this._mapClick;
|
|
29839
|
+
}
|
|
29840
|
+
get sourceLoadError() {
|
|
29841
|
+
if (!this._sourceLoadError) {
|
|
29842
|
+
this.openlayersMap.then((olMap) => {
|
|
29843
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
29844
|
+
});
|
|
29845
|
+
this._sourceLoadError = new EventEmitter();
|
|
29846
|
+
}
|
|
29847
|
+
return this._sourceLoadError;
|
|
29848
|
+
}
|
|
29849
|
+
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
29850
|
+
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
29851
|
+
this.basemapLayers = basemapLayers;
|
|
29852
|
+
this.mapViewConstraints = mapViewConstraints;
|
|
29853
|
+
this.openlayersMap = new Promise((resolve) => {
|
|
29854
|
+
this.olMapResolver = resolve;
|
|
29855
|
+
});
|
|
29856
|
+
}
|
|
29857
|
+
async ngAfterViewInit() {
|
|
29858
|
+
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
29859
|
+
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
29860
|
+
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
29861
|
+
: of(false)));
|
|
29862
|
+
this.olMapResolver(this.olMap);
|
|
29863
|
+
}
|
|
29864
|
+
async ngOnChanges(changes) {
|
|
29865
|
+
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
29866
|
+
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
29867
|
+
await applyContextDiffToMap(this.olMap, diff);
|
|
29868
|
+
}
|
|
29869
|
+
}
|
|
29870
|
+
// This will apply basemap layers & view constraints
|
|
29871
|
+
processContext(context) {
|
|
29872
|
+
const processed = context
|
|
29873
|
+
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
29874
|
+
: { layers: [], view: DEFAULT_VIEW };
|
|
29875
|
+
if (this.basemapLayers.length) {
|
|
29876
|
+
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
29877
|
+
}
|
|
29878
|
+
if (!this.doNotUseDefaultBasemap) {
|
|
29879
|
+
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
29880
|
+
}
|
|
29881
|
+
if (this.mapViewConstraints.maxZoom) {
|
|
29882
|
+
processed.view = {
|
|
29883
|
+
maxZoom: this.mapViewConstraints.maxZoom,
|
|
29884
|
+
...processed.view,
|
|
29885
|
+
};
|
|
29886
|
+
}
|
|
29887
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
29888
|
+
processed.view = {
|
|
29889
|
+
maxExtent: this.mapViewConstraints.maxExtent,
|
|
29890
|
+
...processed.view,
|
|
29891
|
+
};
|
|
29892
|
+
}
|
|
29893
|
+
if (processed.view &&
|
|
29894
|
+
!('zoom' in processed.view) &&
|
|
29895
|
+
!('center' in processed.view)) {
|
|
29896
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
29897
|
+
processed.view = {
|
|
29898
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
29899
|
+
...processed.view,
|
|
29900
|
+
};
|
|
29901
|
+
}
|
|
29902
|
+
else {
|
|
29903
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
29904
|
+
}
|
|
29905
|
+
}
|
|
29906
|
+
return processed;
|
|
29907
|
+
}
|
|
29908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29909
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
29910
|
+
provideIcons({ matSwipeOutline }),
|
|
29911
|
+
provideNgIconsConfig({
|
|
29912
|
+
size: '1.5em',
|
|
29913
|
+
}),
|
|
29914
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29915
|
+
}
|
|
29916
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
29917
|
+
type: Component,
|
|
29918
|
+
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
29919
|
+
provideIcons({ matSwipeOutline }),
|
|
29920
|
+
provideNgIconsConfig({
|
|
29921
|
+
size: '1.5em',
|
|
29922
|
+
}),
|
|
29923
|
+
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
29924
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
29925
|
+
type: Inject,
|
|
29926
|
+
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
29927
|
+
}] }, { type: undefined, decorators: [{
|
|
29928
|
+
type: Inject,
|
|
29929
|
+
args: [BASEMAP_LAYERS]
|
|
29930
|
+
}] }, { type: undefined, decorators: [{
|
|
29931
|
+
type: Inject,
|
|
29932
|
+
args: [MAP_VIEW_CONSTRAINTS]
|
|
29933
|
+
}] }], propDecorators: { context: [{
|
|
29934
|
+
type: Input
|
|
29935
|
+
}], featuresClick: [{
|
|
29936
|
+
type: Output
|
|
29937
|
+
}], featuresHover: [{
|
|
29938
|
+
type: Output
|
|
29939
|
+
}], mapClick: [{
|
|
29940
|
+
type: Output
|
|
29941
|
+
}], sourceLoadError: [{
|
|
29942
|
+
type: Output
|
|
29943
|
+
}], container: [{
|
|
29944
|
+
type: ViewChild,
|
|
29945
|
+
args: ['map']
|
|
29946
|
+
}] } });
|
|
29947
|
+
|
|
29948
|
+
const geometryKeys = ['geometry', 'the_geom'];
|
|
29949
|
+
class FeatureDetailComponent {
|
|
29950
|
+
get properties() {
|
|
29951
|
+
if (!this.feature)
|
|
29952
|
+
return [];
|
|
29953
|
+
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
29954
|
+
}
|
|
29955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29956
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29957
|
+
}
|
|
29958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
29959
|
+
type: Component,
|
|
29960
|
+
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
29961
|
+
}], propDecorators: { feature: [{
|
|
29962
|
+
type: Input
|
|
29963
|
+
}] } });
|
|
29964
|
+
|
|
29965
|
+
class MapLegendComponent {
|
|
29966
|
+
constructor() {
|
|
29967
|
+
this.legendStatusChange = new EventEmitter();
|
|
29968
|
+
}
|
|
29969
|
+
async ngOnChanges(changes) {
|
|
29970
|
+
if ('context' in changes) {
|
|
29971
|
+
const mapContext = changes['context'].currentValue;
|
|
29972
|
+
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
29973
|
+
const mapContextLayer = mapContext.layers[0];
|
|
29974
|
+
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
29975
|
+
if (this.legendHTML) {
|
|
29976
|
+
this.legendStatusChange.emit(true);
|
|
29977
|
+
}
|
|
29978
|
+
}
|
|
29979
|
+
else {
|
|
29980
|
+
this.legendHTML = false;
|
|
29981
|
+
this.legendStatusChange.emit(false);
|
|
29982
|
+
}
|
|
29983
|
+
}
|
|
29984
|
+
}
|
|
29985
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29986
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
29987
|
+
}
|
|
29988
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
29989
|
+
type: Component,
|
|
29990
|
+
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
29991
|
+
}], propDecorators: { context: [{
|
|
29992
|
+
type: Input
|
|
29993
|
+
}], legendStatusChange: [{
|
|
29994
|
+
type: Output
|
|
29995
|
+
}] } });
|
|
29996
|
+
|
|
29997
|
+
function prioritizePageScroll(interactions) {
|
|
29998
|
+
interactions.clear();
|
|
29999
|
+
interactions.extend(defaults({
|
|
30000
|
+
// remove rotate interactions
|
|
30001
|
+
altShiftDragRotate: false,
|
|
30002
|
+
pinchRotate: false,
|
|
30003
|
+
// replace drag and zoom interactions
|
|
30004
|
+
dragPan: false,
|
|
30005
|
+
mouseWheelZoom: false,
|
|
30006
|
+
})
|
|
30007
|
+
.extend([
|
|
30008
|
+
new DragPan({
|
|
30009
|
+
condition: dragPanCondition,
|
|
30010
|
+
}),
|
|
30011
|
+
new MouseWheelZoom({
|
|
30012
|
+
condition: mouseWheelZoomCondition,
|
|
30013
|
+
}),
|
|
30014
|
+
])
|
|
30015
|
+
.getArray());
|
|
30016
|
+
}
|
|
30017
|
+
function dragPanCondition(event) {
|
|
30018
|
+
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
30019
|
+
if (!dragPanCondition) {
|
|
30020
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30021
|
+
}
|
|
30022
|
+
// combine the condition with the default DragPan conditions
|
|
30023
|
+
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
30024
|
+
}
|
|
30025
|
+
function mouseWheelZoomCondition(event) {
|
|
30026
|
+
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
30027
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30028
|
+
}
|
|
30029
|
+
return platformModifierKeyOnly(event);
|
|
30030
|
+
}
|
|
30031
|
+
|
|
30032
|
+
class SpatialExtentComponent {
|
|
30033
|
+
constructor() {
|
|
30034
|
+
this.spatialExtents$ = new BehaviorSubject([]);
|
|
30035
|
+
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
30036
|
+
if (extents.length === 0) {
|
|
30037
|
+
return null; // null extent means default view
|
|
30038
|
+
}
|
|
30039
|
+
const featureCollection = {
|
|
30040
|
+
type: 'FeatureCollection',
|
|
30041
|
+
features: [],
|
|
30042
|
+
};
|
|
30043
|
+
extents.forEach((extent) => {
|
|
30044
|
+
if (extent.geometry) {
|
|
30045
|
+
featureCollection.features.push({
|
|
30046
|
+
type: 'Feature',
|
|
30047
|
+
properties: {},
|
|
30048
|
+
geometry: extent.geometry,
|
|
30049
|
+
});
|
|
30050
|
+
}
|
|
30051
|
+
else if (extent.bbox?.length >= 0) {
|
|
30052
|
+
featureCollection.features.push({
|
|
30053
|
+
type: 'Feature',
|
|
30054
|
+
properties: {},
|
|
30055
|
+
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
30056
|
+
});
|
|
30057
|
+
}
|
|
30058
|
+
});
|
|
30059
|
+
const layer = {
|
|
30060
|
+
type: 'geojson',
|
|
30061
|
+
data: featureCollection,
|
|
30062
|
+
label: 'Spatial extents',
|
|
30063
|
+
style: {
|
|
30064
|
+
'stroke-color': 'black',
|
|
30065
|
+
'stroke-width': 2,
|
|
30066
|
+
},
|
|
30067
|
+
};
|
|
30068
|
+
const view = await createViewFromLayer(layer);
|
|
30069
|
+
return {
|
|
30070
|
+
view,
|
|
30071
|
+
layers: [layer],
|
|
30072
|
+
};
|
|
30073
|
+
}));
|
|
30074
|
+
this.error = '';
|
|
30075
|
+
}
|
|
30076
|
+
set spatialExtents(value) {
|
|
30077
|
+
this.spatialExtents$.next(value);
|
|
30078
|
+
}
|
|
30079
|
+
bboxCoordsToGeometry(bbox) {
|
|
30080
|
+
const geometry = new Polygon([
|
|
30081
|
+
[
|
|
30082
|
+
[bbox[0], bbox[1]],
|
|
30083
|
+
[bbox[0], bbox[3]],
|
|
30084
|
+
[bbox[2], bbox[3]],
|
|
30085
|
+
[bbox[2], bbox[1]],
|
|
30086
|
+
[bbox[0], bbox[1]],
|
|
30087
|
+
],
|
|
30088
|
+
]);
|
|
30089
|
+
return new GeoJSON().writeGeometryObject(geometry);
|
|
30090
|
+
}
|
|
30091
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30092
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }] }); }
|
|
30093
|
+
}
|
|
30094
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, decorators: [{
|
|
30095
|
+
type: Component,
|
|
30096
|
+
args: [{ selector: 'gn-ui-spatial-extent', standalone: true, imports: [CommonModule, MapContainerComponent], template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n" }]
|
|
30097
|
+
}], propDecorators: { spatialExtents: [{
|
|
30098
|
+
type: Input
|
|
30099
|
+
}] } });
|
|
30100
|
+
|
|
29361
30101
|
class MetadataInfoComponent {
|
|
29362
30102
|
constructor(dateService) {
|
|
29363
30103
|
this.dateService = dateService;
|
|
@@ -29410,7 +30150,7 @@ class MetadataInfoComponent {
|
|
|
29410
30150
|
}
|
|
29411
30151
|
}
|
|
29412
30152
|
get temporalExtent() {
|
|
29413
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30153
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29414
30154
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29415
30155
|
}
|
|
29416
30156
|
get shownOrganization() {
|
|
@@ -29432,7 +30172,7 @@ class MetadataInfoComponent {
|
|
|
29432
30172
|
return this.dateService.formatDateTime(date);
|
|
29433
30173
|
}
|
|
29434
30174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29435
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }], viewProviders: [
|
|
30175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
29436
30176
|
provideIcons({
|
|
29437
30177
|
matOpenInNew,
|
|
29438
30178
|
matMailOutline: matMailOutline$1,
|
|
@@ -29453,12 +30193,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29453
30193
|
CopyTextButtonComponent,
|
|
29454
30194
|
NgIcon,
|
|
29455
30195
|
GnUiLinkifyDirective,
|
|
30196
|
+
MapContainerComponent,
|
|
30197
|
+
SpatialExtentComponent,
|
|
29456
30198
|
], viewProviders: [
|
|
29457
30199
|
provideIcons({
|
|
29458
30200
|
matOpenInNew,
|
|
29459
30201
|
matMailOutline: matMailOutline$1,
|
|
29460
30202
|
}),
|
|
29461
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"] }]
|
|
30203
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
29462
30204
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29463
30205
|
type: Input
|
|
29464
30206
|
}], incomplete: [{
|
|
@@ -29626,7 +30368,7 @@ class RecordApiFormComponent {
|
|
|
29626
30368
|
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
29627
30369
|
limit: limit !== '-1' ? Number(limit) : -1,
|
|
29628
30370
|
offset: offset !== '' ? Number(offset) : undefined,
|
|
29629
|
-
outputCrs: format
|
|
30371
|
+
outputCrs: format.toLowerCase().indexOf('json') > -1 ? 'EPSG:4326' : undefined,
|
|
29630
30372
|
};
|
|
29631
30373
|
if (this.endpoint instanceof WfsEndpoint) {
|
|
29632
30374
|
delete options.limit;
|
|
@@ -29634,6 +30376,7 @@ class RecordApiFormComponent {
|
|
|
29634
30376
|
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
29635
30377
|
}
|
|
29636
30378
|
else {
|
|
30379
|
+
delete options.outputCrs;
|
|
29637
30380
|
return await this.endpoint.getCollectionItemsUrl(this.apiFeatureType, options);
|
|
29638
30381
|
}
|
|
29639
30382
|
}
|
|
@@ -29829,6 +30572,302 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29829
30572
|
type: Input
|
|
29830
30573
|
}] } });
|
|
29831
30574
|
|
|
30575
|
+
marker('record.kind.data');
|
|
30576
|
+
marker('record.kind.reuse');
|
|
30577
|
+
marker('record.kind.service');
|
|
30578
|
+
class InternalLinkCardComponent {
|
|
30579
|
+
set size(value) {
|
|
30580
|
+
this._size = value;
|
|
30581
|
+
this.cardClass = this.sizeClassMap[value] || '';
|
|
30582
|
+
this.thumbnailContainerClass = this.thumbnailSizeClassMap[value] || 'hidden';
|
|
30583
|
+
}
|
|
30584
|
+
get size() {
|
|
30585
|
+
return this._size;
|
|
30586
|
+
}
|
|
30587
|
+
constructor(elementRef) {
|
|
30588
|
+
this.elementRef = elementRef;
|
|
30589
|
+
this.linkHref = null;
|
|
30590
|
+
this.mdSelect = new EventEmitter();
|
|
30591
|
+
this.subscription = new Subscription();
|
|
30592
|
+
this.cardClass = '';
|
|
30593
|
+
this.thumbnailContainerClass = '';
|
|
30594
|
+
this._size = 'M';
|
|
30595
|
+
this.sizeClassMap = {
|
|
30596
|
+
L: 'min-h-[190px] md:w-[992px] py-3 px-3 flex items-start gap-5',
|
|
30597
|
+
M: 'min-h-[140px] md:w-[570px] py-3 px-3 flex items-start gap-4',
|
|
30598
|
+
S: 'min-h-[220px] md:w-[370px] py-3 px-3 flex gap-4',
|
|
30599
|
+
XS: 'min-h-[108px] md:w-[570px] py-3 px-3 flex gap-4',
|
|
30600
|
+
};
|
|
30601
|
+
this.thumbnailSizeClassMap = {
|
|
30602
|
+
L: 'w-[190px] h-[180px] rounded-lg overflow-hidden shrink-0',
|
|
30603
|
+
M: 'w-[110px] h-[140px] rounded-lg overflow-hidden shrink-0',
|
|
30604
|
+
S: 'hidden',
|
|
30605
|
+
XS: 'hidden',
|
|
30606
|
+
};
|
|
30607
|
+
this.titleClassMap = {
|
|
30608
|
+
L: 'text-xl line-clamp-2',
|
|
30609
|
+
M: 'text-base line-clamp-2',
|
|
30610
|
+
S: 'text-base line-clamp-3',
|
|
30611
|
+
XS: 'text-base mt-3 line-clamp-2',
|
|
30612
|
+
};
|
|
30613
|
+
}
|
|
30614
|
+
ngOnInit() {
|
|
30615
|
+
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
30616
|
+
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe((event) => {
|
|
30617
|
+
event.preventDefault();
|
|
30618
|
+
propagateToDocumentOnly(event);
|
|
30619
|
+
this.mdSelect.emit(this.record);
|
|
30620
|
+
}));
|
|
30621
|
+
}
|
|
30622
|
+
get organization() {
|
|
30623
|
+
return this.record.ownerOrganization;
|
|
30624
|
+
}
|
|
30625
|
+
get contacts() {
|
|
30626
|
+
return ((this.record.kind === 'dataset'
|
|
30627
|
+
? this.record.contactsForResource
|
|
30628
|
+
: this.record.contacts) || []);
|
|
30629
|
+
}
|
|
30630
|
+
getTitleClass() {
|
|
30631
|
+
return (this.titleClassMap[this._size] +
|
|
30632
|
+
' ' +
|
|
30633
|
+
(this.record.ownerOrganization?.name ? '' : 'mt-3') || '');
|
|
30634
|
+
}
|
|
30635
|
+
openExternalUrl(event, url) {
|
|
30636
|
+
event.stopPropagation();
|
|
30637
|
+
window.open(url, '_blank');
|
|
30638
|
+
}
|
|
30639
|
+
openMailto(event, email) {
|
|
30640
|
+
event.stopPropagation();
|
|
30641
|
+
window.open(`mailto:${email}`, '_blank');
|
|
30642
|
+
}
|
|
30643
|
+
copyToClipboard(event, text) {
|
|
30644
|
+
event.stopPropagation();
|
|
30645
|
+
navigator.clipboard.writeText(text);
|
|
30646
|
+
}
|
|
30647
|
+
get shouldShowThumbnail() {
|
|
30648
|
+
return this.size === 'L' || this.size === 'M';
|
|
30649
|
+
}
|
|
30650
|
+
getKindInfo() {
|
|
30651
|
+
if (!this.record?.kind)
|
|
30652
|
+
return { text: '', icon: '' };
|
|
30653
|
+
switch (this.record.kind.toLowerCase()) {
|
|
30654
|
+
case 'dataset':
|
|
30655
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30656
|
+
case 'reuse':
|
|
30657
|
+
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30658
|
+
case 'service':
|
|
30659
|
+
return { text: 'record.kind.service', icon: 'matCode' };
|
|
30660
|
+
default:
|
|
30661
|
+
return { text: '', icon: '' };
|
|
30662
|
+
}
|
|
30663
|
+
}
|
|
30664
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30665
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InternalLinkCardComponent, isStandalone: true, selector: "gn-ui-internal-link-card", inputs: { record: "record", metadataQualityDisplay: "metadataQualityDisplay", favoriteTemplate: "favoriteTemplate", linkHref: "linkHref", isGeodata: "isGeodata", size: "size" }, outputs: { mdSelect: "mdSelect" }, providers: [
|
|
30666
|
+
provideIcons({
|
|
30667
|
+
matLocationSearchingOutline,
|
|
30668
|
+
matCode,
|
|
30669
|
+
iconoirDatabase,
|
|
30670
|
+
iconoirMap,
|
|
30671
|
+
iconoirInternet,
|
|
30672
|
+
matEmailOutline,
|
|
30673
|
+
matPhoneOutline,
|
|
30674
|
+
matLocationOnOutline,
|
|
30675
|
+
}),
|
|
30676
|
+
provideNgIconsConfig({
|
|
30677
|
+
size: '1.2em',
|
|
30678
|
+
}),
|
|
30679
|
+
], ngImport: i0, template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }] }); }
|
|
30680
|
+
}
|
|
30681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
30682
|
+
type: Component,
|
|
30683
|
+
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
30684
|
+
NgClass,
|
|
30685
|
+
NgIf,
|
|
30686
|
+
ThumbnailComponent,
|
|
30687
|
+
MetadataQualityComponent,
|
|
30688
|
+
NgTemplateOutlet,
|
|
30689
|
+
NgIconComponent,
|
|
30690
|
+
TranslateModule,
|
|
30691
|
+
MarkdownParserComponent,
|
|
30692
|
+
], providers: [
|
|
30693
|
+
provideIcons({
|
|
30694
|
+
matLocationSearchingOutline,
|
|
30695
|
+
matCode,
|
|
30696
|
+
iconoirDatabase,
|
|
30697
|
+
iconoirMap,
|
|
30698
|
+
iconoirInternet,
|
|
30699
|
+
matEmailOutline,
|
|
30700
|
+
matPhoneOutline,
|
|
30701
|
+
matLocationOnOutline,
|
|
30702
|
+
}),
|
|
30703
|
+
provideNgIconsConfig({
|
|
30704
|
+
size: '1.2em',
|
|
30705
|
+
}),
|
|
30706
|
+
], template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
30707
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
30708
|
+
type: Input
|
|
30709
|
+
}], metadataQualityDisplay: [{
|
|
30710
|
+
type: Input
|
|
30711
|
+
}], favoriteTemplate: [{
|
|
30712
|
+
type: Input
|
|
30713
|
+
}], linkHref: [{
|
|
30714
|
+
type: Input
|
|
30715
|
+
}], isGeodata: [{
|
|
30716
|
+
type: Input
|
|
30717
|
+
}], size: [{
|
|
30718
|
+
type: Input
|
|
30719
|
+
}], mdSelect: [{
|
|
30720
|
+
type: Output
|
|
30721
|
+
}] } });
|
|
30722
|
+
|
|
30723
|
+
marker(`service.metadata.search`);
|
|
30724
|
+
marker(`service.metadata.capabilities.title`);
|
|
30725
|
+
marker(`service.metadata.capabilities.abstract`);
|
|
30726
|
+
marker(`service.metadata.capabilities.name`);
|
|
30727
|
+
marker(`service.metadata.capabilities.defaultCrs`);
|
|
30728
|
+
marker(`service.metadata.capabilities.availableCrs`);
|
|
30729
|
+
marker(`service.metadata.capabilities.otherCrs`);
|
|
30730
|
+
marker(`service.metadata.capabilities.objectCount`);
|
|
30731
|
+
marker(`service.metadata.capabilities.geometryName`);
|
|
30732
|
+
marker(`service.metadata.capabilities.geometryType`);
|
|
30733
|
+
marker(`service.metadata.capabilities.keywords`);
|
|
30734
|
+
marker(`service.metadata.capabilities.outputFormats`);
|
|
30735
|
+
marker(`service.metadata.capabilities.resourceLinks`);
|
|
30736
|
+
marker(`service.metadata.capabilities.attribution`);
|
|
30737
|
+
class ServiceCapabilitiesComponent {
|
|
30738
|
+
constructor(cdr, translateService) {
|
|
30739
|
+
this.cdr = cdr;
|
|
30740
|
+
this.translateService = translateService;
|
|
30741
|
+
this.apiLinks = [];
|
|
30742
|
+
this.availableLayers = [];
|
|
30743
|
+
this.filteredLayers = [];
|
|
30744
|
+
this.selectedLayer = null;
|
|
30745
|
+
this.layerInformation = [];
|
|
30746
|
+
this.searchQuery = '';
|
|
30747
|
+
this.loading = false;
|
|
30748
|
+
this.capabilitiesKeys = [
|
|
30749
|
+
'title',
|
|
30750
|
+
'abstract',
|
|
30751
|
+
'name',
|
|
30752
|
+
'defaultCrs',
|
|
30753
|
+
'availableCrs',
|
|
30754
|
+
'otherCrs',
|
|
30755
|
+
'objectCount',
|
|
30756
|
+
'geometryName',
|
|
30757
|
+
'geometryType',
|
|
30758
|
+
'keywords',
|
|
30759
|
+
'outputFormats',
|
|
30760
|
+
'resourceLinks',
|
|
30761
|
+
'attribution',
|
|
30762
|
+
];
|
|
30763
|
+
}
|
|
30764
|
+
ngOnInit() {
|
|
30765
|
+
this.loadLayers();
|
|
30766
|
+
}
|
|
30767
|
+
onSearchChange(event) {
|
|
30768
|
+
const input = event.target;
|
|
30769
|
+
this.searchQuery = input.value;
|
|
30770
|
+
if (!input.value) {
|
|
30771
|
+
this.searchActive = false;
|
|
30772
|
+
this.filteredLayers = this.availableLayers;
|
|
30773
|
+
}
|
|
30774
|
+
}
|
|
30775
|
+
onSearchEnter(event) {
|
|
30776
|
+
if (event.key === 'Enter') {
|
|
30777
|
+
this.searchActive = true;
|
|
30778
|
+
this.searchLayers();
|
|
30779
|
+
}
|
|
30780
|
+
}
|
|
30781
|
+
async loadLayers() {
|
|
30782
|
+
if (this.apiLinks.length > 0 &&
|
|
30783
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
30784
|
+
this.loading = true;
|
|
30785
|
+
this.availableLayers = await getLayers(this.apiLinks[0].url.href, this.apiLinks[0].accessServiceProtocol);
|
|
30786
|
+
this.loading = false;
|
|
30787
|
+
this.cdr.detectChanges();
|
|
30788
|
+
this.filteredLayers = this.availableLayers;
|
|
30789
|
+
}
|
|
30790
|
+
else {
|
|
30791
|
+
this.availableLayers = [];
|
|
30792
|
+
}
|
|
30793
|
+
}
|
|
30794
|
+
selectLayer(layer) {
|
|
30795
|
+
if (layer === this.selectedLayer) {
|
|
30796
|
+
this.selectedLayer = null;
|
|
30797
|
+
this.layerInformation = [];
|
|
30798
|
+
return;
|
|
30799
|
+
}
|
|
30800
|
+
this.selectedLayer = layer;
|
|
30801
|
+
const filteredInfo = [];
|
|
30802
|
+
Object.keys(layer).map((key) => {
|
|
30803
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
30804
|
+
const displayName = this.translateService.instant(`service.metadata.capabilities.${key}`);
|
|
30805
|
+
if (key in layer && layer[key]?.length) {
|
|
30806
|
+
filteredInfo.push({ displayName, value: layer[key] });
|
|
30807
|
+
}
|
|
30808
|
+
}
|
|
30809
|
+
});
|
|
30810
|
+
this.layerInformation = filteredInfo;
|
|
30811
|
+
}
|
|
30812
|
+
isList(value) {
|
|
30813
|
+
return Array.isArray(value);
|
|
30814
|
+
}
|
|
30815
|
+
getExtraInputClass() {
|
|
30816
|
+
if (this.searchActive) {
|
|
30817
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary';
|
|
30818
|
+
}
|
|
30819
|
+
return 'h-14 border rounded-lg';
|
|
30820
|
+
}
|
|
30821
|
+
searchLayers() {
|
|
30822
|
+
this.searchActive = true;
|
|
30823
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
30824
|
+
const query = this.searchQuery.toLowerCase();
|
|
30825
|
+
if (layer.title) {
|
|
30826
|
+
return (layer.title.toLowerCase().includes(query) ||
|
|
30827
|
+
layer.abstract?.toLowerCase().includes(query));
|
|
30828
|
+
}
|
|
30829
|
+
else {
|
|
30830
|
+
return layer.name.toLowerCase().includes(query);
|
|
30831
|
+
}
|
|
30832
|
+
});
|
|
30833
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
30834
|
+
this.selectedLayer = null;
|
|
30835
|
+
this.layerInformation = [];
|
|
30836
|
+
}
|
|
30837
|
+
}
|
|
30838
|
+
getExtraClass(layerItem) {
|
|
30839
|
+
return layerItem.title === this.selectedLayer?.title
|
|
30840
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
30841
|
+
: `h-8 rounded-lg`;
|
|
30842
|
+
}
|
|
30843
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
30845
|
+
provideIcons({
|
|
30846
|
+
iconoirSearch,
|
|
30847
|
+
matInfoOutline,
|
|
30848
|
+
}),
|
|
30849
|
+
] }); }
|
|
30850
|
+
}
|
|
30851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, decorators: [{
|
|
30852
|
+
type: Component,
|
|
30853
|
+
args: [{ selector: 'gn-ui-service-capabilities', standalone: true, imports: [
|
|
30854
|
+
CommonModule,
|
|
30855
|
+
TranslateModule,
|
|
30856
|
+
ButtonComponent,
|
|
30857
|
+
TextInputComponent,
|
|
30858
|
+
NgIcon,
|
|
30859
|
+
PopoverComponent,
|
|
30860
|
+
SpinningLoaderComponent,
|
|
30861
|
+
], viewProviders: [
|
|
30862
|
+
provideIcons({
|
|
30863
|
+
iconoirSearch,
|
|
30864
|
+
matInfoOutline,
|
|
30865
|
+
}),
|
|
30866
|
+
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 512px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
30867
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { apiLinks: [{
|
|
30868
|
+
type: Input
|
|
30869
|
+
}] } });
|
|
30870
|
+
|
|
29832
30871
|
class UiElementsModule {
|
|
29833
30872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
29834
30873
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -29847,12 +30886,16 @@ class UiElementsModule {
|
|
|
29847
30886
|
MaxLinesComponent,
|
|
29848
30887
|
TextInputComponent,
|
|
29849
30888
|
ImageInputComponent,
|
|
29850
|
-
ApplicationBannerComponent
|
|
30889
|
+
ApplicationBannerComponent,
|
|
30890
|
+
InternalLinkCardComponent,
|
|
30891
|
+
ServiceCapabilitiesComponent], exports: [ThumbnailComponent,
|
|
29851
30892
|
AvatarComponent,
|
|
29852
30893
|
UserPreviewComponent,
|
|
29853
30894
|
MarkdownParserComponent,
|
|
29854
30895
|
ImageInputComponent,
|
|
29855
|
-
ApplicationBannerComponent
|
|
30896
|
+
ApplicationBannerComponent,
|
|
30897
|
+
InternalLinkCardComponent,
|
|
30898
|
+
ServiceCapabilitiesComponent] }); }
|
|
29856
30899
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
29857
30900
|
provideNgIconsConfig({
|
|
29858
30901
|
size: '1.5em',
|
|
@@ -29872,7 +30915,9 @@ class UiElementsModule {
|
|
|
29872
30915
|
MaxLinesComponent,
|
|
29873
30916
|
TextInputComponent,
|
|
29874
30917
|
ImageInputComponent,
|
|
29875
|
-
ApplicationBannerComponent
|
|
30918
|
+
ApplicationBannerComponent,
|
|
30919
|
+
InternalLinkCardComponent,
|
|
30920
|
+
ServiceCapabilitiesComponent] }); }
|
|
29876
30921
|
}
|
|
29877
30922
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
29878
30923
|
type: NgModule,
|
|
@@ -29897,6 +30942,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29897
30942
|
TextInputComponent,
|
|
29898
30943
|
ImageInputComponent,
|
|
29899
30944
|
ApplicationBannerComponent,
|
|
30945
|
+
InternalLinkCardComponent,
|
|
30946
|
+
ServiceCapabilitiesComponent,
|
|
29900
30947
|
],
|
|
29901
30948
|
providers: [
|
|
29902
30949
|
provideNgIconsConfig({
|
|
@@ -29911,6 +30958,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29911
30958
|
MarkdownParserComponent,
|
|
29912
30959
|
ImageInputComponent,
|
|
29913
30960
|
ApplicationBannerComponent,
|
|
30961
|
+
InternalLinkCardComponent,
|
|
30962
|
+
ServiceCapabilitiesComponent,
|
|
29914
30963
|
],
|
|
29915
30964
|
}]
|
|
29916
30965
|
}] });
|
|
@@ -30251,8 +31300,9 @@ class ResultsTableComponent {
|
|
|
30251
31300
|
return getBadgeColor(format);
|
|
30252
31301
|
}
|
|
30253
31302
|
handleRecordClick(item) {
|
|
30254
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31303
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30255
31304
|
this.recordClick.emit(item);
|
|
31305
|
+
}
|
|
30256
31306
|
}
|
|
30257
31307
|
handleDuplicate(item) {
|
|
30258
31308
|
this.duplicateRecord.emit(item);
|
|
@@ -30289,7 +31339,7 @@ class ResultsTableComponent {
|
|
|
30289
31339
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30290
31340
|
}
|
|
30291
31341
|
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 }); }
|
|
30292
|
-
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'
|
|
31342
|
+
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) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\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]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\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"] }] }); }
|
|
30293
31343
|
}
|
|
30294
31344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30295
31345
|
type: Component,
|
|
@@ -30303,7 +31353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30303
31353
|
ActionMenuComponent,
|
|
30304
31354
|
NgIconComponent,
|
|
30305
31355
|
CdkOverlayOrigin,
|
|
30306
|
-
], 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'
|
|
31356
|
+
], 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) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\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]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\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" }]
|
|
30307
31357
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30308
31358
|
type: Input
|
|
30309
31359
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31334,9 +32384,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31334
32384
|
type: Injectable
|
|
31335
32385
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31336
32386
|
|
|
31337
|
-
class RecordsRepositoryInterface {
|
|
31338
|
-
}
|
|
31339
|
-
|
|
31340
32387
|
class FuzzySearchComponent {
|
|
31341
32388
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31342
32389
|
this.searchFacade = searchFacade;
|
|
@@ -31475,7 +32522,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31475
32522
|
}] }] });
|
|
31476
32523
|
|
|
31477
32524
|
// expects the replacement key ${uuid}
|
|
31478
|
-
const
|
|
32525
|
+
const RECORD_DATASET_URL_TOKEN = new InjectionToken('record-dataset-url-token');
|
|
32526
|
+
const RECORD_SERVICE_URL_TOKEN = new InjectionToken('record-service-url-token');
|
|
32527
|
+
const RECORD_REUSE_URL_TOKEN = new InjectionToken('record-reuse-url-token');
|
|
31479
32528
|
|
|
31480
32529
|
class FavoriteStarComponent {
|
|
31481
32530
|
set record(value) {
|
|
@@ -31502,9 +32551,10 @@ class FavoriteStarComponent {
|
|
|
31502
32551
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
31503
32552
|
this.loading = false;
|
|
31504
32553
|
this.loginUrl = this.authService.loginUrl;
|
|
31505
|
-
this.loginMessage$ = this.translateService.
|
|
32554
|
+
this.loginMessage$ = this.translateService.onLangChange.pipe(startWith(null), // make sure to wait for translations to be loaded with and without language change
|
|
32555
|
+
switchMap$1(() => this.translateService.get('favorite.not.authenticated.tooltip', {
|
|
31506
32556
|
link: this.loginUrl,
|
|
31507
|
-
});
|
|
32557
|
+
})));
|
|
31508
32558
|
}
|
|
31509
32559
|
ngAfterViewInit() {
|
|
31510
32560
|
this.subscription = this.isAnonymous$
|
|
@@ -31560,11 +32610,11 @@ class FavoriteStarComponent {
|
|
|
31560
32610
|
});
|
|
31561
32611
|
}
|
|
31562
32612
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31563
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n
|
|
32613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\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: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31564
32614
|
}
|
|
31565
32615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31566
32616
|
type: Component,
|
|
31567
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n
|
|
32617
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent, TranslateModule], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n" }]
|
|
31568
32618
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31569
32619
|
type: Input
|
|
31570
32620
|
}], record: [{
|
|
@@ -31575,10 +32625,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31575
32625
|
}] } });
|
|
31576
32626
|
|
|
31577
32627
|
class ResultsListContainerComponent {
|
|
31578
|
-
constructor(facade, resultsLayoutConfig,
|
|
32628
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31579
32629
|
this.facade = facade;
|
|
31580
32630
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31581
|
-
this.
|
|
32631
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32632
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32633
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31582
32634
|
this.showMore = 'auto';
|
|
31583
32635
|
this.mdSelect = new EventEmitter();
|
|
31584
32636
|
this.errorTypes = ErrorType;
|
|
@@ -31610,16 +32662,24 @@ class ResultsListContainerComponent {
|
|
|
31610
32662
|
this.facade.scroll();
|
|
31611
32663
|
}
|
|
31612
32664
|
getRecordUrl(metadata) {
|
|
31613
|
-
|
|
32665
|
+
const tokenMap = {
|
|
32666
|
+
dataset: this.recordDatasetUrlTemplate,
|
|
32667
|
+
service: this.recordServiceUrlTemplate,
|
|
32668
|
+
reuse: this.recordReuseUrlTemplate,
|
|
32669
|
+
};
|
|
32670
|
+
if (!this.recordDatasetUrlTemplate &&
|
|
32671
|
+
!this.recordServiceUrlTemplate &&
|
|
32672
|
+
!this.recordReuseUrlTemplate)
|
|
31614
32673
|
return null;
|
|
31615
|
-
|
|
32674
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32675
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31616
32676
|
}
|
|
31617
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token:
|
|
31618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32677
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN }, { token: RECORD_REUSE_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32678
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
31619
32679
|
}
|
|
31620
32680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31621
32681
|
type: Component,
|
|
31622
|
-
args: [{ selector: 'gn-ui-results-list-container', template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n" }]
|
|
32682
|
+
args: [{ selector: 'gn-ui-results-list-container', template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"] }]
|
|
31623
32683
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31624
32684
|
type: Inject,
|
|
31625
32685
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31627,7 +32687,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31627
32687
|
type: Optional
|
|
31628
32688
|
}, {
|
|
31629
32689
|
type: Inject,
|
|
31630
|
-
args: [
|
|
32690
|
+
args: [RECORD_DATASET_URL_TOKEN]
|
|
32691
|
+
}] }, { type: undefined, decorators: [{
|
|
32692
|
+
type: Inject,
|
|
32693
|
+
args: [RECORD_SERVICE_URL_TOKEN]
|
|
32694
|
+
}] }, { type: undefined, decorators: [{
|
|
32695
|
+
type: Inject,
|
|
32696
|
+
args: [RECORD_REUSE_URL_TOKEN]
|
|
31631
32697
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31632
32698
|
type: Input
|
|
31633
32699
|
}], layout: [{
|
|
@@ -32379,12 +33445,7 @@ class FeatureSearchModule {
|
|
|
32379
33445
|
FacetsModule,
|
|
32380
33446
|
SearchStateContainerDirective,
|
|
32381
33447
|
FilterDropdownComponent] }); }
|
|
32382
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32383
|
-
{
|
|
32384
|
-
provide: RecordsRepositoryInterface,
|
|
32385
|
-
useClass: Gn4Repository,
|
|
32386
|
-
},
|
|
32387
|
-
], imports: [CommonModule,
|
|
33448
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32388
33449
|
TranslateModule.forChild(),
|
|
32389
33450
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32390
33451
|
initialState,
|
|
@@ -32446,12 +33507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32446
33507
|
SearchStateContainerDirective,
|
|
32447
33508
|
FilterDropdownComponent,
|
|
32448
33509
|
],
|
|
32449
|
-
providers: [
|
|
32450
|
-
{
|
|
32451
|
-
provide: RecordsRepositoryInterface,
|
|
32452
|
-
useClass: Gn4Repository,
|
|
32453
|
-
},
|
|
32454
|
-
],
|
|
32455
33510
|
}]
|
|
32456
33511
|
}] });
|
|
32457
33512
|
|
|
@@ -32939,232 +33994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32939
33994
|
}]
|
|
32940
33995
|
}] });
|
|
32941
33996
|
|
|
32942
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
32943
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
32944
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
32945
|
-
factory: () => ({}),
|
|
32946
|
-
});
|
|
32947
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
32948
|
-
factory: () => ({
|
|
32949
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
32950
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
32951
|
-
}),
|
|
32952
|
-
});
|
|
32953
|
-
|
|
32954
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
32955
|
-
type: 'xyz',
|
|
32956
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
32957
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
32958
|
-
};
|
|
32959
|
-
const DEFAULT_VIEW = {
|
|
32960
|
-
center: [0, 15],
|
|
32961
|
-
zoom: 2,
|
|
32962
|
-
};
|
|
32963
|
-
class MapContainerComponent {
|
|
32964
|
-
get featuresClick() {
|
|
32965
|
-
if (!this._featuresClick) {
|
|
32966
|
-
this.openlayersMap.then((olMap) => {
|
|
32967
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
32968
|
-
});
|
|
32969
|
-
this._featuresClick = new EventEmitter();
|
|
32970
|
-
}
|
|
32971
|
-
return this._featuresClick;
|
|
32972
|
-
}
|
|
32973
|
-
get featuresHover() {
|
|
32974
|
-
if (!this._featuresHover) {
|
|
32975
|
-
this.openlayersMap.then((olMap) => {
|
|
32976
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
32977
|
-
});
|
|
32978
|
-
this._featuresHover = new EventEmitter();
|
|
32979
|
-
}
|
|
32980
|
-
return this._featuresHover;
|
|
32981
|
-
}
|
|
32982
|
-
get mapClick() {
|
|
32983
|
-
if (!this._mapClick) {
|
|
32984
|
-
this.openlayersMap.then((olMap) => {
|
|
32985
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
32986
|
-
});
|
|
32987
|
-
this._mapClick = new EventEmitter();
|
|
32988
|
-
}
|
|
32989
|
-
return this._mapClick;
|
|
32990
|
-
}
|
|
32991
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
32992
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
32993
|
-
this.basemapLayers = basemapLayers;
|
|
32994
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
32995
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
32996
|
-
this.olMapResolver = resolve;
|
|
32997
|
-
});
|
|
32998
|
-
}
|
|
32999
|
-
async ngAfterViewInit() {
|
|
33000
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33001
|
-
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
33002
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33003
|
-
: of(false)));
|
|
33004
|
-
this.olMapResolver(this.olMap);
|
|
33005
|
-
}
|
|
33006
|
-
async ngOnChanges(changes) {
|
|
33007
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33008
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33009
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33010
|
-
}
|
|
33011
|
-
}
|
|
33012
|
-
// This will apply basemap layers & view constraints
|
|
33013
|
-
processContext(context) {
|
|
33014
|
-
const processed = context
|
|
33015
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33016
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33017
|
-
if (this.basemapLayers.length) {
|
|
33018
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33019
|
-
}
|
|
33020
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33021
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33022
|
-
}
|
|
33023
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33024
|
-
processed.view = {
|
|
33025
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33026
|
-
...processed.view,
|
|
33027
|
-
};
|
|
33028
|
-
}
|
|
33029
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33030
|
-
processed.view = {
|
|
33031
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33032
|
-
...processed.view,
|
|
33033
|
-
};
|
|
33034
|
-
}
|
|
33035
|
-
if (processed.view &&
|
|
33036
|
-
!('zoom' in processed.view) &&
|
|
33037
|
-
!('center' in processed.view)) {
|
|
33038
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33039
|
-
processed.view = {
|
|
33040
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33041
|
-
...processed.view,
|
|
33042
|
-
};
|
|
33043
|
-
}
|
|
33044
|
-
else {
|
|
33045
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33046
|
-
}
|
|
33047
|
-
}
|
|
33048
|
-
return processed;
|
|
33049
|
-
}
|
|
33050
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33051
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick" }, providers: [
|
|
33052
|
-
provideIcons({ matSwipeOutline }),
|
|
33053
|
-
provideNgIconsConfig({
|
|
33054
|
-
size: '1.5em',
|
|
33055
|
-
}),
|
|
33056
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33057
|
-
}
|
|
33058
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33059
|
-
type: Component,
|
|
33060
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33061
|
-
provideIcons({ matSwipeOutline }),
|
|
33062
|
-
provideNgIconsConfig({
|
|
33063
|
-
size: '1.5em',
|
|
33064
|
-
}),
|
|
33065
|
-
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
33066
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33067
|
-
type: Inject,
|
|
33068
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33069
|
-
}] }, { type: undefined, decorators: [{
|
|
33070
|
-
type: Inject,
|
|
33071
|
-
args: [BASEMAP_LAYERS]
|
|
33072
|
-
}] }, { type: undefined, decorators: [{
|
|
33073
|
-
type: Inject,
|
|
33074
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33075
|
-
}] }], propDecorators: { context: [{
|
|
33076
|
-
type: Input
|
|
33077
|
-
}], featuresClick: [{
|
|
33078
|
-
type: Output
|
|
33079
|
-
}], featuresHover: [{
|
|
33080
|
-
type: Output
|
|
33081
|
-
}], mapClick: [{
|
|
33082
|
-
type: Output
|
|
33083
|
-
}], container: [{
|
|
33084
|
-
type: ViewChild,
|
|
33085
|
-
args: ['map']
|
|
33086
|
-
}] } });
|
|
33087
|
-
|
|
33088
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33089
|
-
class FeatureDetailComponent {
|
|
33090
|
-
get properties() {
|
|
33091
|
-
if (!this.feature)
|
|
33092
|
-
return [];
|
|
33093
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33094
|
-
}
|
|
33095
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33096
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33097
|
-
}
|
|
33098
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33099
|
-
type: Component,
|
|
33100
|
-
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
33101
|
-
}], propDecorators: { feature: [{
|
|
33102
|
-
type: Input
|
|
33103
|
-
}] } });
|
|
33104
|
-
|
|
33105
|
-
class MapLegendComponent {
|
|
33106
|
-
constructor() {
|
|
33107
|
-
this.legendStatusChange = new EventEmitter();
|
|
33108
|
-
}
|
|
33109
|
-
async ngOnChanges(changes) {
|
|
33110
|
-
if ('context' in changes) {
|
|
33111
|
-
const mapContext = changes['context'].currentValue;
|
|
33112
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33113
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33114
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33115
|
-
if (this.legendHTML) {
|
|
33116
|
-
this.legendStatusChange.emit(true);
|
|
33117
|
-
}
|
|
33118
|
-
}
|
|
33119
|
-
}
|
|
33120
|
-
}
|
|
33121
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33122
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
33123
|
-
}
|
|
33124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33125
|
-
type: Component,
|
|
33126
|
-
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
33127
|
-
}], propDecorators: { context: [{
|
|
33128
|
-
type: Input
|
|
33129
|
-
}], legendStatusChange: [{
|
|
33130
|
-
type: Output
|
|
33131
|
-
}] } });
|
|
33132
|
-
|
|
33133
|
-
function prioritizePageScroll(interactions) {
|
|
33134
|
-
interactions.clear();
|
|
33135
|
-
interactions.extend(defaults({
|
|
33136
|
-
// remove rotate interactions
|
|
33137
|
-
altShiftDragRotate: false,
|
|
33138
|
-
pinchRotate: false,
|
|
33139
|
-
// replace drag and zoom interactions
|
|
33140
|
-
dragPan: false,
|
|
33141
|
-
mouseWheelZoom: false,
|
|
33142
|
-
})
|
|
33143
|
-
.extend([
|
|
33144
|
-
new DragPan({
|
|
33145
|
-
condition: dragPanCondition,
|
|
33146
|
-
}),
|
|
33147
|
-
new MouseWheelZoom({
|
|
33148
|
-
condition: mouseWheelZoomCondition,
|
|
33149
|
-
}),
|
|
33150
|
-
])
|
|
33151
|
-
.getArray());
|
|
33152
|
-
}
|
|
33153
|
-
function dragPanCondition(event) {
|
|
33154
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33155
|
-
if (!dragPanCondition) {
|
|
33156
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33157
|
-
}
|
|
33158
|
-
// combine the condition with the default DragPan conditions
|
|
33159
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33160
|
-
}
|
|
33161
|
-
function mouseWheelZoomCondition(event) {
|
|
33162
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33163
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33164
|
-
}
|
|
33165
|
-
return platformModifierKeyOnly(event);
|
|
33166
|
-
}
|
|
33167
|
-
|
|
33168
33997
|
class MapStateContainerComponent {
|
|
33169
33998
|
constructor(mapFacade) {
|
|
33170
33999
|
this.mapFacade = mapFacade;
|
|
@@ -33178,7 +34007,7 @@ class MapStateContainerComponent {
|
|
|
33178
34007
|
this.mapFacade.selectFeatures(features);
|
|
33179
34008
|
}
|
|
33180
34009
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStateContainerComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStateContainerComponent, isStandalone: true, selector: "gn-ui-map-state-container", ngImport: i0, template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34010
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStateContainerComponent, isStandalone: true, selector: "gn-ui-map-state-container", ngImport: i0, template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33182
34011
|
}
|
|
33183
34012
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStateContainerComponent, decorators: [{
|
|
33184
34013
|
type: Component,
|
|
@@ -33194,7 +34023,7 @@ class MapUtilsService {
|
|
|
33194
34023
|
return null;
|
|
33195
34024
|
}
|
|
33196
34025
|
// extend all the spatial extents into an including bbox
|
|
33197
|
-
|
|
34026
|
+
return record.spatialExtents.reduce((prev, curr) => {
|
|
33198
34027
|
if ('bbox' in curr)
|
|
33199
34028
|
return extend(prev, curr.bbox);
|
|
33200
34029
|
else if ('geometry' in curr) {
|
|
@@ -33203,7 +34032,6 @@ class MapUtilsService {
|
|
|
33203
34032
|
}
|
|
33204
34033
|
return prev;
|
|
33205
34034
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
33206
|
-
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
33207
34035
|
}
|
|
33208
34036
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33209
34037
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
@@ -34921,6 +35749,9 @@ ${body}`
|
|
|
34921
35749
|
: `${code}`;
|
|
34922
35750
|
return new FetchError('http', info, code);
|
|
34923
35751
|
}
|
|
35752
|
+
static forbidden(code) {
|
|
35753
|
+
return new FetchError('forbidden', '', code);
|
|
35754
|
+
}
|
|
34924
35755
|
static corsOrNetwork(message) {
|
|
34925
35756
|
return new FetchError('network', message, 0);
|
|
34926
35757
|
}
|
|
@@ -35520,6 +36351,33 @@ class GmlReader extends BaseFileReader {
|
|
|
35520
36351
|
}
|
|
35521
36352
|
}
|
|
35522
36353
|
|
|
36354
|
+
async function getWfsEndpoint(wfsUrl) {
|
|
36355
|
+
try {
|
|
36356
|
+
return await new WfsEndpoint(wfsUrl).isReady();
|
|
36357
|
+
}
|
|
36358
|
+
catch (e) {
|
|
36359
|
+
if (e instanceof Error &&
|
|
36360
|
+
'isCrossOriginRelated' in e &&
|
|
36361
|
+
'httpStatus' in e) {
|
|
36362
|
+
const error = e;
|
|
36363
|
+
if (error.isCrossOriginRelated === true) {
|
|
36364
|
+
throw new Error(`wfs.unreachable.cors`);
|
|
36365
|
+
}
|
|
36366
|
+
if (error.httpStatus === 401 || error.httpStatus === 403) {
|
|
36367
|
+
throw FetchError.forbidden(error.httpStatus);
|
|
36368
|
+
}
|
|
36369
|
+
else if (error.httpStatus === 400 || error.httpStatus > 403) {
|
|
36370
|
+
throw FetchError.http(error.httpStatus);
|
|
36371
|
+
}
|
|
36372
|
+
else {
|
|
36373
|
+
throw FetchError.unknownType();
|
|
36374
|
+
}
|
|
36375
|
+
}
|
|
36376
|
+
else {
|
|
36377
|
+
throw FetchError.unknownType();
|
|
36378
|
+
}
|
|
36379
|
+
}
|
|
36380
|
+
}
|
|
35523
36381
|
class WfsReader extends BaseCacheReader {
|
|
35524
36382
|
constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
|
|
35525
36383
|
super(url, cacheActive);
|
|
@@ -35548,7 +36406,7 @@ class WfsReader extends BaseCacheReader {
|
|
|
35548
36406
|
}));
|
|
35549
36407
|
}
|
|
35550
36408
|
static async createReader(wfsUrlEndpoint, featureTypeName) {
|
|
35551
|
-
const wfsEndpoint = await
|
|
36409
|
+
const wfsEndpoint = await getWfsEndpoint(wfsUrlEndpoint);
|
|
35552
36410
|
const featureTypes = wfsEndpoint.getFeatureTypes();
|
|
35553
36411
|
const featureType = wfsEndpoint.getFeatureTypeSummary(featureTypes.length === 1 && !featureTypeName
|
|
35554
36412
|
? featureTypes[0].name
|
|
@@ -35647,7 +36505,11 @@ async function openDataset(url, typeHint, options, cacheActive) {
|
|
|
35647
36505
|
return reader;
|
|
35648
36506
|
}
|
|
35649
36507
|
catch (e) {
|
|
35650
|
-
|
|
36508
|
+
//WfsReader may already raise a FetchError
|
|
36509
|
+
if (e instanceof FetchError)
|
|
36510
|
+
throw e;
|
|
36511
|
+
else
|
|
36512
|
+
throw FetchError.parsingFailed(e.message);
|
|
35651
36513
|
}
|
|
35652
36514
|
}
|
|
35653
36515
|
/**
|
|
@@ -35677,6 +36539,7 @@ function readDatasetHeaders(url) {
|
|
|
35677
36539
|
|
|
35678
36540
|
marker('wfs.unreachable.cors');
|
|
35679
36541
|
marker('wfs.unreachable.http');
|
|
36542
|
+
marker('dataset.error.forbidden');
|
|
35680
36543
|
marker('wfs.unreachable.unknown');
|
|
35681
36544
|
marker('wfs.featuretype.notfound');
|
|
35682
36545
|
marker('wfs.geojsongml.notsupported');
|
|
@@ -36446,6 +37309,10 @@ class ChartViewComponent {
|
|
|
36446
37309
|
this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
|
|
36447
37310
|
this.error = null;
|
|
36448
37311
|
this.loading = true;
|
|
37312
|
+
if (link.accessRestricted) {
|
|
37313
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37314
|
+
return EMPTY;
|
|
37315
|
+
}
|
|
36449
37316
|
return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
|
|
36450
37317
|
this.handleError(error);
|
|
36451
37318
|
return EMPTY;
|
|
@@ -36515,7 +37382,7 @@ class ChartViewComponent {
|
|
|
36515
37382
|
this.changeDetector.detectChanges();
|
|
36516
37383
|
}
|
|
36517
37384
|
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 }); }
|
|
36518
|
-
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 }); }
|
|
37385
|
+
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 *ngIf=\"!error\"\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 }); }
|
|
36519
37386
|
}
|
|
36520
37387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
36521
37388
|
type: Component,
|
|
@@ -36526,7 +37393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36526
37393
|
ChartComponent,
|
|
36527
37394
|
LoadingMaskComponent,
|
|
36528
37395
|
PopupAlertComponent,
|
|
36529
|
-
], 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" }]
|
|
37396
|
+
], 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 *ngIf=\"!error\"\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" }]
|
|
36530
37397
|
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36531
37398
|
type: Input
|
|
36532
37399
|
}], link: [{
|
|
@@ -36680,7 +37547,7 @@ class GeoTableViewComponent {
|
|
|
36680
37547
|
this.subscription.unsubscribe();
|
|
36681
37548
|
}
|
|
36682
37549
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36683
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37550
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36684
37551
|
}
|
|
36685
37552
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
|
|
36686
37553
|
type: Component,
|
|
@@ -36710,6 +37577,10 @@ class TableViewComponent {
|
|
|
36710
37577
|
this.error = null;
|
|
36711
37578
|
if (!link)
|
|
36712
37579
|
return of(undefined);
|
|
37580
|
+
if (link.accessRestricted) {
|
|
37581
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
37582
|
+
return of([]);
|
|
37583
|
+
}
|
|
36713
37584
|
this.loading = true;
|
|
36714
37585
|
return this.getDatasetReader(link).pipe(catchError((error) => {
|
|
36715
37586
|
this.handleError(error);
|
|
@@ -36743,7 +37614,7 @@ class TableViewComponent {
|
|
|
36743
37614
|
this.loading = false;
|
|
36744
37615
|
}
|
|
36745
37616
|
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 }); }
|
|
36746
|
-
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 <
|
|
37617
|
+
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 <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\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 </ng-content>\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 }); }
|
|
36747
37618
|
}
|
|
36748
37619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
36749
37620
|
type: Component,
|
|
@@ -36753,7 +37624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36753
37624
|
LoadingMaskComponent,
|
|
36754
37625
|
PopupAlertComponent,
|
|
36755
37626
|
TranslateModule,
|
|
36756
|
-
], 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 <
|
|
37627
|
+
], 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 <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\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 </ng-content>\n </div>\n</div>\n" }]
|
|
36757
37628
|
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36758
37629
|
type: Input
|
|
36759
37630
|
}], link: [{
|
|
@@ -36787,15 +37658,13 @@ class MdViewFacade {
|
|
|
36787
37658
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
36788
37659
|
this.related$ = this.store.pipe(select(getRelated));
|
|
36789
37660
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
36790
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
36791
|
-
? record.onlineResources
|
|
36792
|
-
: []));
|
|
37661
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
36793
37662
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
36794
37663
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
36795
37664
|
// Put links to IGN Géoplateforme first
|
|
36796
37665
|
.sort((dd1, dd2) => {
|
|
36797
|
-
return dd2
|
|
36798
|
-
'GPFDL'
|
|
37666
|
+
return dd2
|
|
37667
|
+
.accessServiceProtocol === 'GPFDL'
|
|
36799
37668
|
? 1
|
|
36800
37669
|
: undefined; // do not change the sorting otherwise
|
|
36801
37670
|
})));
|
|
@@ -36866,15 +37735,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36866
37735
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
36867
37736
|
|
|
36868
37737
|
class MdViewEffects {
|
|
36869
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
37738
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
36870
37739
|
this.actions$ = actions$;
|
|
36871
37740
|
this.recordsRepository = recordsRepository;
|
|
36872
37741
|
this.platformServiceInterface = platformServiceInterface;
|
|
37742
|
+
this.router = router;
|
|
36873
37743
|
/*
|
|
36874
37744
|
Metadata effects
|
|
36875
37745
|
*/
|
|
36876
37746
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
36877
|
-
if (record === null) {
|
|
37747
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
36878
37748
|
return loadFullMetadataFailure({ notFound: true });
|
|
36879
37749
|
}
|
|
36880
37750
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -36909,12 +37779,12 @@ class MdViewEffects {
|
|
|
36909
37779
|
}));
|
|
36910
37780
|
})))));
|
|
36911
37781
|
}
|
|
36912
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37782
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36913
37783
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
36914
37784
|
}
|
|
36915
37785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
36916
37786
|
type: Injectable
|
|
36917
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
37787
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
36918
37788
|
|
|
36919
37789
|
class CatalogTitleComponent {
|
|
36920
37790
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -36971,11 +37841,11 @@ class LanguageSwitcherComponent {
|
|
|
36971
37841
|
this.translate.use(value);
|
|
36972
37842
|
}
|
|
36973
37843
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36974
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }] }); }
|
|
37844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }] }); }
|
|
36975
37845
|
}
|
|
36976
37846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
36977
37847
|
type: Component,
|
|
36978
|
-
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
37848
|
+
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
36979
37849
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
36980
37850
|
type: Optional
|
|
36981
37851
|
}, {
|
|
@@ -37397,17 +38267,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37397
38267
|
}]
|
|
37398
38268
|
}] });
|
|
37399
38269
|
|
|
37400
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37401
|
-
|
|
37402
38270
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37403
38271
|
class DataViewPermalinkComponent {
|
|
37404
38272
|
set viewType(value) {
|
|
37405
38273
|
this.viewType$.next(value);
|
|
37406
38274
|
}
|
|
37407
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38275
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37408
38276
|
this.config = config;
|
|
37409
38277
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37410
|
-
this.version = version;
|
|
37411
38278
|
this.facade = facade;
|
|
37412
38279
|
this.viewType$ = new BehaviorSubject('map');
|
|
37413
38280
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37416,7 +38283,7 @@ class DataViewPermalinkComponent {
|
|
|
37416
38283
|
this.facade.metadata$,
|
|
37417
38284
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37418
38285
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37419
|
-
url.searchParams.set('v', `${
|
|
38286
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37420
38287
|
if (viewType === 'chart') {
|
|
37421
38288
|
if (config) {
|
|
37422
38289
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37447,7 +38314,7 @@ class DataViewPermalinkComponent {
|
|
|
37447
38314
|
return url.toString();
|
|
37448
38315
|
}));
|
|
37449
38316
|
}
|
|
37450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token:
|
|
38317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37451
38318
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\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: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37452
38319
|
}
|
|
37453
38320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37461,9 +38328,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37461
38328
|
}, {
|
|
37462
38329
|
type: Inject,
|
|
37463
38330
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37464
|
-
}] }, { type: undefined, decorators: [{
|
|
37465
|
-
type: Inject,
|
|
37466
|
-
args: [GN_UI_VERSION]
|
|
37467
38331
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37468
38332
|
type: Input
|
|
37469
38333
|
}] } });
|
|
@@ -37542,16 +38406,15 @@ class DataViewWebComponentComponent {
|
|
|
37542
38406
|
set viewType(value) {
|
|
37543
38407
|
this.viewType$.next(value);
|
|
37544
38408
|
}
|
|
37545
|
-
constructor(config,
|
|
38409
|
+
constructor(config, facade) {
|
|
37546
38410
|
this.config = config;
|
|
37547
|
-
this.version = version;
|
|
37548
38411
|
this.facade = facade;
|
|
37549
38412
|
this.viewType$ = new BehaviorSubject('map');
|
|
37550
38413
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37551
38414
|
if (viewType === 'chart') {
|
|
37552
38415
|
if (config) {
|
|
37553
38416
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37554
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38417
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37555
38418
|
<gn-dataset-view-chart
|
|
37556
38419
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37557
38420
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37570,7 +38433,7 @@ class DataViewWebComponentComponent {
|
|
|
37570
38433
|
return '';
|
|
37571
38434
|
}
|
|
37572
38435
|
else if (viewType === 'table') {
|
|
37573
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38436
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37574
38437
|
<gn-dataset-view-table
|
|
37575
38438
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37576
38439
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37583,7 +38446,7 @@ class DataViewWebComponentComponent {
|
|
|
37583
38446
|
></gn-dataset-view-table>`;
|
|
37584
38447
|
}
|
|
37585
38448
|
else {
|
|
37586
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38449
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37587
38450
|
<gn-dataset-view-map
|
|
37588
38451
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37589
38452
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37597,7 +38460,7 @@ class DataViewWebComponentComponent {
|
|
|
37597
38460
|
}
|
|
37598
38461
|
}));
|
|
37599
38462
|
}
|
|
37600
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token:
|
|
38463
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37601
38464
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37602
38465
|
}
|
|
37603
38466
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37606,9 +38469,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37606
38469
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37607
38470
|
type: Inject,
|
|
37608
38471
|
args: [Configuration]
|
|
37609
|
-
}] }, { type: undefined, decorators: [{
|
|
37610
|
-
type: Inject,
|
|
37611
|
-
args: [GN_UI_VERSION]
|
|
37612
38472
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37613
38473
|
type: Input
|
|
37614
38474
|
}] } });
|
|
@@ -37704,6 +38564,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37704
38564
|
|
|
37705
38565
|
marker('map.dropdown.placeholder');
|
|
37706
38566
|
marker('wfs.feature.limit');
|
|
38567
|
+
marker('dataset.error.restrictedAccess');
|
|
37707
38568
|
class MapViewComponent {
|
|
37708
38569
|
set exceedsLimit(value) {
|
|
37709
38570
|
this.excludeWfs$.next(value);
|
|
@@ -37713,15 +38574,13 @@ class MapViewComponent {
|
|
|
37713
38574
|
}
|
|
37714
38575
|
onLegendStatusChange(status) {
|
|
37715
38576
|
this.legendExists = status;
|
|
37716
|
-
if (!status) {
|
|
37717
|
-
this.showLegend = false;
|
|
37718
|
-
}
|
|
37719
38577
|
}
|
|
37720
|
-
constructor(mdViewFacade, mapUtils, dataService, changeRef) {
|
|
38578
|
+
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
37721
38579
|
this.mdViewFacade = mdViewFacade;
|
|
37722
38580
|
this.mapUtils = mapUtils;
|
|
37723
38581
|
this.dataService = dataService;
|
|
37724
38582
|
this.changeRef = changeRef;
|
|
38583
|
+
this.translateService = translateService;
|
|
37725
38584
|
this.displaySource = true;
|
|
37726
38585
|
this.excludeWfs$ = new BehaviorSubject(false);
|
|
37727
38586
|
this.hidePreview = false;
|
|
@@ -37757,9 +38616,12 @@ class MapViewComponent {
|
|
|
37757
38616
|
this.hidePreview = false;
|
|
37758
38617
|
this.loading = true;
|
|
37759
38618
|
this.error = null;
|
|
38619
|
+
if (link.accessRestricted) {
|
|
38620
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
38621
|
+
return of([]);
|
|
38622
|
+
}
|
|
37760
38623
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
37761
|
-
this.
|
|
37762
|
-
console.warn(e.stack || e.message);
|
|
38624
|
+
this.handleError(e);
|
|
37763
38625
|
return of([]);
|
|
37764
38626
|
}), finalize(() => (this.loading = false)));
|
|
37765
38627
|
}));
|
|
@@ -37796,6 +38658,16 @@ class MapViewComponent {
|
|
|
37796
38658
|
}
|
|
37797
38659
|
this.changeRef.detectChanges();
|
|
37798
38660
|
}
|
|
38661
|
+
onSourceLoadError(error) {
|
|
38662
|
+
if (error.httpStatus === 403 || error.httpStatus === 401) {
|
|
38663
|
+
this.error = this.translateService.instant(`dataset.error.forbidden`);
|
|
38664
|
+
}
|
|
38665
|
+
else {
|
|
38666
|
+
this.error = this.translateService.instant(`dataset.error.http`, {
|
|
38667
|
+
info: error.httpStatus,
|
|
38668
|
+
});
|
|
38669
|
+
}
|
|
38670
|
+
}
|
|
37799
38671
|
resetSelection() {
|
|
37800
38672
|
if (this.selection) {
|
|
37801
38673
|
// FIXME: restore styling of selected feature
|
|
@@ -37835,8 +38707,26 @@ class MapViewComponent {
|
|
|
37835
38707
|
selectLinkToDisplay(link) {
|
|
37836
38708
|
this.selectedLinkIndex$.next(link);
|
|
37837
38709
|
}
|
|
37838
|
-
|
|
37839
|
-
|
|
38710
|
+
handleError(error) {
|
|
38711
|
+
if (error instanceof FetchError) {
|
|
38712
|
+
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
38713
|
+
info: error.info,
|
|
38714
|
+
});
|
|
38715
|
+
console.warn(error.message);
|
|
38716
|
+
}
|
|
38717
|
+
else if (error instanceof Error) {
|
|
38718
|
+
this.error = this.translateService.instant(error.message);
|
|
38719
|
+
console.warn(error.stack || error);
|
|
38720
|
+
}
|
|
38721
|
+
else {
|
|
38722
|
+
this.error = this.translateService.instant(error);
|
|
38723
|
+
console.warn(error);
|
|
38724
|
+
}
|
|
38725
|
+
this.loading = false;
|
|
38726
|
+
this.changeRef.detectChanges();
|
|
38727
|
+
}
|
|
38728
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38729
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.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 </ng-template>\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: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { 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"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37840
38730
|
}
|
|
37841
38731
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
37842
38732
|
type: Component,
|
|
@@ -37852,8 +38742,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37852
38742
|
ExternalViewerButtonComponent,
|
|
37853
38743
|
ButtonComponent,
|
|
37854
38744
|
MapLegendComponent,
|
|
37855
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.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 </ng-template>\n</div>\n" }]
|
|
37856
|
-
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }], propDecorators: { exceedsLimit: [{
|
|
38745
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.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 </ng-template>\n</div>\n" }]
|
|
38746
|
+
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
37857
38747
|
type: Input
|
|
37858
38748
|
}], displaySource: [{
|
|
37859
38749
|
type: Input
|
|
@@ -38079,7 +38969,7 @@ class RecordMetaComponent {
|
|
|
38079
38969
|
this.meta.removeTag('property="og:url"');
|
|
38080
38970
|
this.meta.removeTag('property="og:title"');
|
|
38081
38971
|
}
|
|
38082
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$
|
|
38972
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$e.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38083
38973
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38084
38974
|
}
|
|
38085
38975
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38090,7 +38980,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38090
38980
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38091
38981
|
standalone: true,
|
|
38092
38982
|
}]
|
|
38093
|
-
}], ctorParameters: () => [{ type: i1$
|
|
38983
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38094
38984
|
type: Input
|
|
38095
38985
|
}] } });
|
|
38096
38986
|
|
|
@@ -39138,7 +40028,7 @@ class ImportRecordComponent {
|
|
|
39138
40028
|
},
|
|
39139
40029
|
});
|
|
39140
40030
|
}
|
|
39141
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$
|
|
40031
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$d.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39142
40032
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
|
|
39143
40033
|
provideIcons({
|
|
39144
40034
|
iconoirImport,
|
|
@@ -39169,7 +40059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39169
40059
|
size: '1.5em',
|
|
39170
40060
|
}),
|
|
39171
40061
|
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\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 <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
39172
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40062
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39173
40063
|
type: Output
|
|
39174
40064
|
}] } });
|
|
39175
40065
|
|
|
@@ -39533,75 +40423,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39533
40423
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39534
40424
|
}] });
|
|
39535
40425
|
|
|
39536
|
-
class FormFieldMapContainerComponent {
|
|
39537
|
-
constructor() {
|
|
39538
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39539
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39540
|
-
if (extents.length === 0) {
|
|
39541
|
-
return null; // null extent means default view
|
|
39542
|
-
}
|
|
39543
|
-
const featureCollection = {
|
|
39544
|
-
type: 'FeatureCollection',
|
|
39545
|
-
features: [],
|
|
39546
|
-
};
|
|
39547
|
-
extents.forEach((extent) => {
|
|
39548
|
-
if (extent.geometry) {
|
|
39549
|
-
featureCollection.features.push({
|
|
39550
|
-
type: 'Feature',
|
|
39551
|
-
properties: {},
|
|
39552
|
-
geometry: extent.geometry,
|
|
39553
|
-
});
|
|
39554
|
-
}
|
|
39555
|
-
else if (extent.bbox?.length >= 0) {
|
|
39556
|
-
featureCollection.features.push({
|
|
39557
|
-
type: 'Feature',
|
|
39558
|
-
properties: {},
|
|
39559
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39560
|
-
});
|
|
39561
|
-
}
|
|
39562
|
-
});
|
|
39563
|
-
const layer = {
|
|
39564
|
-
type: 'geojson',
|
|
39565
|
-
data: featureCollection,
|
|
39566
|
-
label: 'Spatial extents',
|
|
39567
|
-
style: {
|
|
39568
|
-
'stroke-color': 'black',
|
|
39569
|
-
'stroke-width': 2,
|
|
39570
|
-
},
|
|
39571
|
-
};
|
|
39572
|
-
const view = await createViewFromLayer(layer);
|
|
39573
|
-
return {
|
|
39574
|
-
view,
|
|
39575
|
-
layers: [layer],
|
|
39576
|
-
};
|
|
39577
|
-
}));
|
|
39578
|
-
this.error = '';
|
|
39579
|
-
}
|
|
39580
|
-
set spatialExtents(value) {
|
|
39581
|
-
this.spatialExtents$.next(value);
|
|
39582
|
-
}
|
|
39583
|
-
bboxCoordsToGeometry(bbox) {
|
|
39584
|
-
const geometry = new Polygon([
|
|
39585
|
-
[
|
|
39586
|
-
[bbox[0], bbox[1]],
|
|
39587
|
-
[bbox[0], bbox[3]],
|
|
39588
|
-
[bbox[2], bbox[3]],
|
|
39589
|
-
[bbox[2], bbox[1]],
|
|
39590
|
-
[bbox[0], bbox[1]],
|
|
39591
|
-
],
|
|
39592
|
-
]);
|
|
39593
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
39594
|
-
}
|
|
39595
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39596
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldMapContainerComponent, isStandalone: true, selector: "gn-ui-form-field-map-container", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39597
|
-
}
|
|
39598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39599
|
-
type: Component,
|
|
39600
|
-
args: [{ selector: 'gn-ui-form-field-map-container', standalone: true, imports: [CommonModule, MapContainerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n" }]
|
|
39601
|
-
}], propDecorators: { spatialExtents: [{
|
|
39602
|
-
type: Input
|
|
39603
|
-
}] } });
|
|
39604
|
-
|
|
39605
40426
|
/**
|
|
39606
40427
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
39607
40428
|
* and place keywords.
|
|
@@ -39698,16 +40519,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
39698
40519
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
39699
40520
|
}
|
|
39700
40521
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, deps: [{ token: PlatformServiceInterface }, { token: EditorFacade }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39701
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-
|
|
40522
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39702
40523
|
}
|
|
39703
40524
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
39704
40525
|
type: Component,
|
|
39705
40526
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
39706
40527
|
CommonModule,
|
|
39707
40528
|
GenericKeywordsComponent,
|
|
39708
|
-
FormFieldMapContainerComponent,
|
|
39709
40529
|
TranslateModule,
|
|
39710
|
-
|
|
40530
|
+
SpatialExtentComponent,
|
|
40531
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n" }]
|
|
39711
40532
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
39712
40533
|
|
|
39713
40534
|
class ContactCardComponent {
|
|
@@ -39965,9 +40786,8 @@ class OnlineResourceCardComponent {
|
|
|
39965
40786
|
get subtitle() {
|
|
39966
40787
|
switch (this.onlineResource.type) {
|
|
39967
40788
|
case 'service':
|
|
39968
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
39969
40789
|
case 'endpoint':
|
|
39970
|
-
return `${this.onlineResource.
|
|
40790
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
39971
40791
|
case 'link':
|
|
39972
40792
|
case 'download':
|
|
39973
40793
|
return this.getFormat(this.onlineResource);
|
|
@@ -41124,6 +41944,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41124
41944
|
const ROUTER_STATE_KEY = 'router';
|
|
41125
41945
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41126
41946
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
41947
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
41948
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41127
41949
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41128
41950
|
var ROUTE_PARAMS;
|
|
41129
41951
|
(function (ROUTE_PARAMS) {
|
|
@@ -41156,6 +41978,14 @@ class RouterService {
|
|
|
41156
41978
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41157
41979
|
component: this.routerConfig.recordRouteComponent,
|
|
41158
41980
|
},
|
|
41981
|
+
{
|
|
41982
|
+
path: `${ROUTER_ROUTE_SERVICE}/:metadataUuid`,
|
|
41983
|
+
component: this.routerConfig.recordRouteComponent,
|
|
41984
|
+
},
|
|
41985
|
+
{
|
|
41986
|
+
path: `${ROUTER_ROUTE_REUSE}/:metadataUuid`,
|
|
41987
|
+
component: this.routerConfig.recordRouteComponent,
|
|
41988
|
+
},
|
|
41159
41989
|
{
|
|
41160
41990
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41161
41991
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41168,7 +41998,7 @@ class RouterService {
|
|
|
41168
41998
|
getOrganizationPageRoute() {
|
|
41169
41999
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41170
42000
|
}
|
|
41171
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
42001
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41172
42002
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41173
42003
|
}
|
|
41174
42004
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41179,7 +42009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41179
42009
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41180
42010
|
type: Inject,
|
|
41181
42011
|
args: [ROUTER_CONFIG]
|
|
41182
|
-
}] }, { type: i1$
|
|
42012
|
+
}] }, { type: i1$d.Router }] });
|
|
41183
42013
|
|
|
41184
42014
|
const goAction = createAction('[Router] Go', props());
|
|
41185
42015
|
const backAction = createAction('[Router] Back');
|
|
@@ -41251,13 +42081,19 @@ class RouterFacade {
|
|
|
41251
42081
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41252
42082
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41253
42083
|
this.searchParams$ = this.currentRoute$.pipe(filter((route) => !!route), filter((route) => route.url[0]?.path.startsWith(ROUTER_ROUTE_SEARCH)), map$1((route) => route.queryParams), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), map$1(expandQueryParams));
|
|
42084
|
+
this.routeMap = {
|
|
42085
|
+
dataset: ROUTER_ROUTE_DATASET,
|
|
42086
|
+
service: ROUTER_ROUTE_SERVICE,
|
|
42087
|
+
reuse: ROUTER_ROUTE_REUSE,
|
|
42088
|
+
};
|
|
41254
42089
|
}
|
|
41255
42090
|
goToMetadata(metadata) {
|
|
42091
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41256
42092
|
this.pathParams$
|
|
41257
42093
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41258
42094
|
.subscribe(() => {
|
|
41259
42095
|
this.go({
|
|
41260
|
-
path: `${
|
|
42096
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41261
42097
|
});
|
|
41262
42098
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41263
42099
|
});
|
|
@@ -41484,12 +42320,12 @@ class RouterEffects {
|
|
|
41484
42320
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41485
42321
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41486
42322
|
}
|
|
41487
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$
|
|
42323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41488
42324
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41489
42325
|
}
|
|
41490
42326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41491
42327
|
type: Injectable
|
|
41492
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$
|
|
42328
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
41493
42329
|
type: Inject,
|
|
41494
42330
|
args: [ROUTER_CONFIG]
|
|
41495
42331
|
}] }, { type: FieldsService }] });
|
|
@@ -41549,5 +42385,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41549
42385
|
* Generated bundle index. Do not edit.
|
|
41550
42386
|
*/
|
|
41551
42387
|
|
|
41552
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
42388
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41553
42389
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|