geonetwork-ui 2.6.0-dev.582b4530a → 2.6.0-dev.70b25ba3b
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/index.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -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.provider.mjs +7 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- 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/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/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/index.mjs +2 -2
- 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 +13 -19
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
- 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 +3 -3
- package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +51 -0
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.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/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 +2 -2
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
- package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +7 -2
- package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
- package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
- 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/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +11 -3
- package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
- 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 +13 -6
- package/esm2022/translations/de.json +31 -5
- package/esm2022/translations/en.json +32 -6
- package/esm2022/translations/es.json +31 -5
- package/esm2022/translations/fr.json +32 -6
- package/esm2022/translations/it.json +31 -5
- package/esm2022/translations/nl.json +31 -5
- package/esm2022/translations/pt.json +31 -5
- package/fesm2022/geonetwork-ui.mjs +1342 -566
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +1 -0
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
- package/libs/api/metadata-converter/src/lib/common/resource-types.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.provider.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.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/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/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/index.d.ts +1 -1
- package/libs/feature/search/src/index.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 +4 -2
- 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-hits/results-hits.container.component.d.ts +21 -0
- package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
- 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/feature/search/src/lib/utils/service/fields.d.ts +21 -0
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.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/download-item/download-item.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +11 -0
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
- 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/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 +1 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
- package/libs/ui/inputs/src/lib/ui-inputs.module.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/block-list/block-list.component.d.ts +9 -2
- package/libs/ui/layout/src/lib/block-list/block-list.component.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/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/index.d.ts +1 -0
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
- package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +21 -19
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/fixtures.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 +14 -7
- 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/index.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
- 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 +2 -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.provider.ts +6 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -2
- 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/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/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/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/index.ts +1 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
- 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 +9 -10
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
- package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
- 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/feature/search/src/lib/utils/service/fields.service.ts +4 -5
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
- 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 +4 -4
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +9 -0
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +51 -0
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
- 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/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 +1 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
- 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/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
- 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/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
- package/src/libs/ui/map/src/index.ts +1 -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/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
- package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +24 -0
- package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
- 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/search/src/lib/ui-search.module.ts +5 -0
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- 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 +30 -12
- package/tailwind.base.config.js +3 -0
- package/tailwind.base.css +19 -26
- package/translations/de.json +31 -5
- package/translations/en.json +32 -6
- package/translations/es.json +31 -5
- package/translations/fr.json +32 -6
- package/translations/it.json +31 -5
- package/translations/nl.json +31 -5
- package/translations/pt.json +31 -5
- package/translations/sk.json +31 -5
- 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/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
- 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/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
- package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.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/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
- package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
- 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 → search/src/lib/results-hits/results-hits.container.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,
|
|
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, startWith as startWith$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$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, 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,
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, 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, matArrowBackIos, matArrowForwardIos, 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, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline,
|
|
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,11 +78,6 @@ 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, SourceLoadErrorType, 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
82
|
import * as TOML from '@ltd/j-toml';
|
|
82
83
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
@@ -96,9 +97,8 @@ import * as i4 from '@angular/material/paginator';
|
|
|
96
97
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
97
98
|
import { LetDirective } from '@ngrx/component';
|
|
98
99
|
import axios from 'axios';
|
|
99
|
-
import * as i1$
|
|
100
|
+
import * as i1$e from '@angular/platform-browser';
|
|
100
101
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
101
|
-
import { Polygon } from 'ol/geom';
|
|
102
102
|
import * as i4$1 from '@angular/material/radio';
|
|
103
103
|
import { MatRadioModule } from '@angular/material/radio';
|
|
104
104
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -929,21 +929,23 @@ const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObje
|
|
|
929
929
|
return { ...mapperObject, [langEntry[1]]: langEntry[0] };
|
|
930
930
|
}, {});
|
|
931
931
|
|
|
932
|
+
const PossibleResourceTypes = {
|
|
933
|
+
application: 'reuse',
|
|
934
|
+
dataset: 'dataset',
|
|
935
|
+
interactiveMap: 'reuse',
|
|
936
|
+
map: 'reuse',
|
|
937
|
+
'map/static': 'reuse', // old index field
|
|
938
|
+
'map/interactive': 'reuse', // old index field
|
|
939
|
+
'map-interactive': 'reuse', // new index field since Oct 10, 2024
|
|
940
|
+
'map-static': 'reuse', // new index field
|
|
941
|
+
mapDigital: 'reuse',
|
|
942
|
+
series: 'dataset',
|
|
943
|
+
service: 'service',
|
|
944
|
+
staticMap: 'reuse',
|
|
945
|
+
};
|
|
946
|
+
const PossibleResourceTypesDefinition = Object.entries(PossibleResourceTypes).reduce((acc, [key, val]) => ((acc[val] ??= []).push(key), acc), {});
|
|
932
947
|
function getResourceType(type) {
|
|
933
|
-
|
|
934
|
-
application: 'reuse',
|
|
935
|
-
dataset: 'dataset',
|
|
936
|
-
map: 'reuse',
|
|
937
|
-
'map/static': 'reuse', // old index field
|
|
938
|
-
'map/interactive': 'reuse', // old index field
|
|
939
|
-
'map-interactive': 'reuse', // new index field since Oct 10, 2024
|
|
940
|
-
'map-static': 'reuse', // new index field
|
|
941
|
-
mapDigital: 'reuse',
|
|
942
|
-
interactiveMap: 'reuse',
|
|
943
|
-
staticMap: 'reuse',
|
|
944
|
-
service: 'service',
|
|
945
|
-
};
|
|
946
|
-
return (possibleResourceTypes[type] ||
|
|
948
|
+
return (PossibleResourceTypes[type] ||
|
|
947
949
|
'dataset');
|
|
948
950
|
}
|
|
949
951
|
function getReuseType(type) {
|
|
@@ -1351,8 +1353,8 @@ function extractServiceOnlineResources() {
|
|
|
1351
1353
|
else {
|
|
1352
1354
|
return {
|
|
1353
1355
|
type: 'endpoint',
|
|
1354
|
-
|
|
1355
|
-
protocol,
|
|
1356
|
+
url: url,
|
|
1357
|
+
accessServiceProtocol: protocol,
|
|
1356
1358
|
...(description && { description }),
|
|
1357
1359
|
translations,
|
|
1358
1360
|
};
|
|
@@ -1851,7 +1853,7 @@ function writeLineage$1(record, rootEl) {
|
|
|
1851
1853
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
1852
1854
|
}
|
|
1853
1855
|
function getServiceEndpointProtocol(endpoint) {
|
|
1854
|
-
switch (endpoint.
|
|
1856
|
+
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
1855
1857
|
case 'wfs':
|
|
1856
1858
|
return 'OGC:WFS';
|
|
1857
1859
|
case 'wms':
|
|
@@ -1859,13 +1861,13 @@ function getServiceEndpointProtocol(endpoint) {
|
|
|
1859
1861
|
case 'wps':
|
|
1860
1862
|
return 'OGC:WPS';
|
|
1861
1863
|
default:
|
|
1862
|
-
return endpoint.
|
|
1864
|
+
return endpoint.accessServiceProtocol;
|
|
1863
1865
|
}
|
|
1864
1866
|
}
|
|
1865
1867
|
function createOnlineResource(onlineResource) {
|
|
1866
1868
|
let linkageUrl, functionCode, protocol;
|
|
1867
1869
|
if (onlineResource.type === 'endpoint') {
|
|
1868
|
-
linkageUrl = onlineResource.
|
|
1870
|
+
linkageUrl = onlineResource.url.toString();
|
|
1869
1871
|
protocol = getServiceEndpointProtocol(onlineResource);
|
|
1870
1872
|
functionCode = 'download';
|
|
1871
1873
|
}
|
|
@@ -18652,7 +18654,7 @@ var de = {
|
|
|
18652
18654
|
"datafeeder.month.september": "September",
|
|
18653
18655
|
"datafeeder.wizardSummarize.createdAt": "Erstellt am",
|
|
18654
18656
|
"datafeeder.wizardSummarize.scale": "Maßstab",
|
|
18655
|
-
"datahub.header.datasets": "
|
|
18657
|
+
"datahub.header.datasets": "Katalog",
|
|
18656
18658
|
"datahub.header.lastRecords": "Die neuesten",
|
|
18657
18659
|
"datahub.header.myfavorites": "Meine Favoriten",
|
|
18658
18660
|
"datahub.header.news": "Startseite",
|
|
@@ -18664,7 +18666,6 @@ var de = {
|
|
|
18664
18666
|
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
18665
18667
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
18666
18668
|
"datahub.news.figures": "Indikatoren",
|
|
18667
|
-
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
18668
18669
|
"datahub.search.back": "Zurück",
|
|
18669
18670
|
"datahub.search.filter.all": "Alle",
|
|
18670
18671
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
@@ -18835,6 +18836,7 @@ var de = {
|
|
|
18835
18836
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18836
18837
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18837
18838
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18839
|
+
"editor.record.lock.format": "",
|
|
18838
18840
|
"editor.record.lock.reason": "",
|
|
18839
18841
|
"editor.record.onlineResource.protocol.other": "",
|
|
18840
18842
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18894,7 +18896,6 @@ var de = {
|
|
|
18894
18896
|
"input.image.dropFileLabel": "",
|
|
18895
18897
|
"input.image.selectFileLabel": "",
|
|
18896
18898
|
"input.image.uploadErrorLabel": "",
|
|
18897
|
-
"input.image.uploadErrorRetry": "",
|
|
18898
18899
|
"input.image.uploadProgressCancel": "",
|
|
18899
18900
|
"input.image.uploadProgressLabel": "",
|
|
18900
18901
|
"language.ca": "Katalanisch",
|
|
@@ -18934,6 +18935,7 @@ var de = {
|
|
|
18934
18935
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18935
18936
|
"multiselect.filter.placeholder": "Suche",
|
|
18936
18937
|
"nav.back": "Zurück",
|
|
18938
|
+
"navbar.mobile.menuTitle": "Schnellzugriff",
|
|
18937
18939
|
next: next$6,
|
|
18938
18940
|
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
18939
18941
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
@@ -18960,6 +18962,7 @@ var de = {
|
|
|
18960
18962
|
"record.card.metadata.contact": "",
|
|
18961
18963
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18962
18964
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18965
|
+
"record.kind.data": "",
|
|
18963
18966
|
"record.kind.dataset": "",
|
|
18964
18967
|
"record.kind.reuse": "",
|
|
18965
18968
|
"record.kind.service": "",
|
|
@@ -18996,6 +18999,7 @@ var de = {
|
|
|
18996
18999
|
"record.metadata.api.form.zoneTitle": "",
|
|
18997
19000
|
"record.metadata.api.form.zoneTooltip": "",
|
|
18998
19001
|
"record.metadata.api.gpfdl": "",
|
|
19002
|
+
"record.metadata.capabilities": "",
|
|
18999
19003
|
"record.metadata.catalog": "Katalog",
|
|
19000
19004
|
"record.metadata.contact": "Kontakt",
|
|
19001
19005
|
"record.metadata.creation": "Erstellungsdatum",
|
|
@@ -19032,13 +19036,12 @@ var de = {
|
|
|
19032
19036
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19033
19037
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19034
19038
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19035
|
-
"record.metadata.related.contents": "
|
|
19039
|
+
"record.metadata.related.contents": "",
|
|
19036
19040
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19037
19041
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19038
19042
|
"record.metadata.status": "Status",
|
|
19039
19043
|
"record.metadata.status.notPublished": "",
|
|
19040
19044
|
"record.metadata.status.published": "",
|
|
19041
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19042
19045
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19043
19046
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19044
19047
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19067,6 +19070,10 @@ var de = {
|
|
|
19067
19070
|
"results.layout.selectOne": "Layout auswählen",
|
|
19068
19071
|
"results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
|
|
19069
19072
|
"results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
|
|
19073
|
+
"search.filters.recordKind.all": "Alle",
|
|
19074
|
+
"search.filters.recordKind.dataset": "Datensätze",
|
|
19075
|
+
"search.filters.recordKind.reuse": "Wiederverwendungen",
|
|
19076
|
+
"search.filters.recordKind.service": "Dienste",
|
|
19070
19077
|
"results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
|
|
19071
19078
|
"results.records.hits.selected": "{ amount } ausgewählt",
|
|
19072
19079
|
"results.showMore": "Mehr Ergebnisse anzeigen...",
|
|
@@ -19075,6 +19082,7 @@ var de = {
|
|
|
19075
19082
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19076
19083
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19077
19084
|
"results.sortBy.relevancy": "Relevanz",
|
|
19085
|
+
"reuse.metadata.access": "",
|
|
19078
19086
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19079
19087
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19080
19088
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19124,6 +19132,26 @@ var de = {
|
|
|
19124
19132
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19125
19133
|
"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.",
|
|
19126
19134
|
"search.filters.user": "Editor",
|
|
19135
|
+
"service.metadata.capabilities": "",
|
|
19136
|
+
"service.metadata.capabilities.abstract": "",
|
|
19137
|
+
"service.metadata.capabilities.attribution": "",
|
|
19138
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
19139
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
19140
|
+
"service.metadata.capabilities.geometryName": "",
|
|
19141
|
+
"service.metadata.capabilities.geometryType": "",
|
|
19142
|
+
"service.metadata.capabilities.keywords": "",
|
|
19143
|
+
"service.metadata.capabilities.name": "",
|
|
19144
|
+
"service.metadata.capabilities.objectCount": "",
|
|
19145
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
19146
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
19147
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
19148
|
+
"service.metadata.capabilities.title": "",
|
|
19149
|
+
"service.metadata.filter": "",
|
|
19150
|
+
"service.metadata.filter.noLayers": "",
|
|
19151
|
+
"service.metadata.other": "",
|
|
19152
|
+
"service.metadata.question": "",
|
|
19153
|
+
"service.metadata.search": "",
|
|
19154
|
+
"service.metadata.spatialExtent": "",
|
|
19127
19155
|
"share.tab.permalink": "Teilen",
|
|
19128
19156
|
"share.tab.webComponent": "Integrieren",
|
|
19129
19157
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19206,7 +19234,7 @@ var en = {
|
|
|
19206
19234
|
"datafeeder.month.september": "September",
|
|
19207
19235
|
"datafeeder.wizardSummarize.createdAt": "Created at",
|
|
19208
19236
|
"datafeeder.wizardSummarize.scale": "Scale",
|
|
19209
|
-
"datahub.header.datasets": "
|
|
19237
|
+
"datahub.header.datasets": "Catalog",
|
|
19210
19238
|
"datahub.header.lastRecords": "The latest",
|
|
19211
19239
|
"datahub.header.myfavorites": "My favorites",
|
|
19212
19240
|
"datahub.header.news": "Home",
|
|
@@ -19218,7 +19246,6 @@ var en = {
|
|
|
19218
19246
|
"datahub.news.contact.title": "A specific need?",
|
|
19219
19247
|
"datahub.news.feed": "News feed",
|
|
19220
19248
|
"datahub.news.figures": "Indicators",
|
|
19221
|
-
"datahub.record.addToFavorites": "Add to favorites",
|
|
19222
19249
|
"datahub.search.back": "Back",
|
|
19223
19250
|
"datahub.search.filter.all": "All",
|
|
19224
19251
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
@@ -19389,6 +19416,7 @@ var en = {
|
|
|
19389
19416
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19390
19417
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19391
19418
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19419
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19392
19420
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19393
19421
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19394
19422
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19448,7 +19476,6 @@ var en = {
|
|
|
19448
19476
|
"input.image.dropFileLabel": "or drop it here",
|
|
19449
19477
|
"input.image.selectFileLabel": "Select an image",
|
|
19450
19478
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19451
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19452
19479
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19453
19480
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19454
19481
|
"language.ca": "Catalan",
|
|
@@ -19488,6 +19515,7 @@ var en = {
|
|
|
19488
19515
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19489
19516
|
"multiselect.filter.placeholder": "Search",
|
|
19490
19517
|
"nav.back": "Back",
|
|
19518
|
+
"navbar.mobile.menuTitle": "Quick access",
|
|
19491
19519
|
next: next$5,
|
|
19492
19520
|
"ogc.unreachable.unknown": "The service could not be reached",
|
|
19493
19521
|
"organisation.filter.placeholder": "Filter results",
|
|
@@ -19514,7 +19542,8 @@ var en = {
|
|
|
19514
19542
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19515
19543
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19516
19544
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19517
|
-
"record.kind.
|
|
19545
|
+
"record.kind.data": "Data",
|
|
19546
|
+
"record.kind.dataset": "Dataset",
|
|
19518
19547
|
"record.kind.reuse": "Reuse",
|
|
19519
19548
|
"record.kind.service": "Service",
|
|
19520
19549
|
"record.metadata.about": "Description",
|
|
@@ -19550,6 +19579,7 @@ var en = {
|
|
|
19550
19579
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19551
19580
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19552
19581
|
"record.metadata.api.gpfdl": "Data download",
|
|
19582
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19553
19583
|
"record.metadata.catalog": "Catalog",
|
|
19554
19584
|
"record.metadata.contact": "Contact",
|
|
19555
19585
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19586,13 +19616,12 @@ var en = {
|
|
|
19586
19616
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19587
19617
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19588
19618
|
"record.metadata.related": "Related datasets",
|
|
19589
|
-
"record.metadata.related.contents": "Related
|
|
19619
|
+
"record.metadata.related.contents": "Related content",
|
|
19590
19620
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19591
19621
|
"record.metadata.sheet": "Original metadata",
|
|
19592
19622
|
"record.metadata.status": "Status",
|
|
19593
19623
|
"record.metadata.status.notPublished": "Not published",
|
|
19594
19624
|
"record.metadata.status.published": "Published",
|
|
19595
|
-
"record.metadata.technical": "Technical information",
|
|
19596
19625
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19597
19626
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19598
19627
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19621,6 +19650,10 @@ var en = {
|
|
|
19621
19650
|
"results.layout.selectOne": "Results layout",
|
|
19622
19651
|
"results.records.hits.displayedOn": "{displayed, plural, =0{No dataset.} one{1 } other{{displayed} }} {hits, plural, other{displayed on {hits} total.}}",
|
|
19623
19652
|
"results.records.hits.empty.help.html": "Suggestions: <ul class='list-disc list-inside'><li>Try other words</li><li>Specify fewer words</li></ul>",
|
|
19653
|
+
"search.filters.recordKind.all": "All",
|
|
19654
|
+
"search.filters.recordKind.dataset": "Datasets",
|
|
19655
|
+
"search.filters.recordKind.reuse": "Reuses",
|
|
19656
|
+
"search.filters.recordKind.service": "Services",
|
|
19624
19657
|
"results.records.hits.found": "{hits, plural, =0{No datasets match the specified search.} one{1 dataset found.} other{{hits} datasets found.}}",
|
|
19625
19658
|
"results.records.hits.selected": "{ amount } selected",
|
|
19626
19659
|
"results.showMore": "Show more results...",
|
|
@@ -19629,6 +19662,7 @@ var en = {
|
|
|
19629
19662
|
"results.sortBy.popularity": "Popularity",
|
|
19630
19663
|
"results.sortBy.qualityScore": "Quality score",
|
|
19631
19664
|
"results.sortBy.relevancy": "Relevancy",
|
|
19665
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19632
19666
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19633
19667
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19634
19668
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19678,6 +19712,26 @@ var en = {
|
|
|
19678
19712
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19679
19713
|
"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.",
|
|
19680
19714
|
"search.filters.user": "Editor",
|
|
19715
|
+
"service.metadata.capabilities": "Technical information",
|
|
19716
|
+
"service.metadata.capabilities.abstract": "Abstract",
|
|
19717
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
19718
|
+
"service.metadata.capabilities.availableCrs": "Available CRS",
|
|
19719
|
+
"service.metadata.capabilities.defaultCrs": "Default CRS",
|
|
19720
|
+
"service.metadata.capabilities.geometryName": "Geometry name",
|
|
19721
|
+
"service.metadata.capabilities.geometryType": "Geometry type",
|
|
19722
|
+
"service.metadata.capabilities.keywords": "Keywords",
|
|
19723
|
+
"service.metadata.capabilities.name": "Name",
|
|
19724
|
+
"service.metadata.capabilities.objectCount": "Object count",
|
|
19725
|
+
"service.metadata.capabilities.otherCrs": "Other CRS",
|
|
19726
|
+
"service.metadata.capabilities.outputFormats": "Output formats",
|
|
19727
|
+
"service.metadata.capabilities.resourceLinks": "Resource links",
|
|
19728
|
+
"service.metadata.capabilities.title": "Title",
|
|
19729
|
+
"service.metadata.filter": "Layers will be filtered by title and abstract",
|
|
19730
|
+
"service.metadata.filter.noLayers": "No layer matches your search",
|
|
19731
|
+
"service.metadata.other": "Other information",
|
|
19732
|
+
"service.metadata.question": "Ask a question",
|
|
19733
|
+
"service.metadata.search": "Search through the layer list",
|
|
19734
|
+
"service.metadata.spatialExtent": "Spatial extent",
|
|
19681
19735
|
"share.tab.permalink": "Share",
|
|
19682
19736
|
"share.tab.webComponent": "Integrate",
|
|
19683
19737
|
"table.loading.data": "Loading data...",
|
|
@@ -19760,7 +19814,7 @@ var es = {
|
|
|
19760
19814
|
"datafeeder.month.september": "",
|
|
19761
19815
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
19762
19816
|
"datafeeder.wizardSummarize.scale": "",
|
|
19763
|
-
"datahub.header.datasets": "",
|
|
19817
|
+
"datahub.header.datasets": "Catálogo",
|
|
19764
19818
|
"datahub.header.lastRecords": "",
|
|
19765
19819
|
"datahub.header.myfavorites": "",
|
|
19766
19820
|
"datahub.header.news": "",
|
|
@@ -19772,7 +19826,6 @@ var es = {
|
|
|
19772
19826
|
"datahub.news.contact.title": "",
|
|
19773
19827
|
"datahub.news.feed": "",
|
|
19774
19828
|
"datahub.news.figures": "",
|
|
19775
|
-
"datahub.record.addToFavorites": "",
|
|
19776
19829
|
"datahub.search.back": "",
|
|
19777
19830
|
"datahub.search.filter.all": "",
|
|
19778
19831
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -19943,6 +19996,7 @@ var es = {
|
|
|
19943
19996
|
"editor.record.loadError.body": "",
|
|
19944
19997
|
"editor.record.loadError.closeMessage": "",
|
|
19945
19998
|
"editor.record.loadError.title": "",
|
|
19999
|
+
"editor.record.lock.format": "",
|
|
19946
20000
|
"editor.record.lock.reason": "",
|
|
19947
20001
|
"editor.record.onlineResource.protocol.other": "",
|
|
19948
20002
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -20002,7 +20056,6 @@ var es = {
|
|
|
20002
20056
|
"input.image.dropFileLabel": "",
|
|
20003
20057
|
"input.image.selectFileLabel": "",
|
|
20004
20058
|
"input.image.uploadErrorLabel": "",
|
|
20005
|
-
"input.image.uploadErrorRetry": "",
|
|
20006
20059
|
"input.image.uploadProgressCancel": "",
|
|
20007
20060
|
"input.image.uploadProgressLabel": "",
|
|
20008
20061
|
"language.ca": "Catalán",
|
|
@@ -20042,6 +20095,7 @@ var es = {
|
|
|
20042
20095
|
"map.wms.urlInput.hint": "",
|
|
20043
20096
|
"multiselect.filter.placeholder": "",
|
|
20044
20097
|
"nav.back": "",
|
|
20098
|
+
"navbar.mobile.menuTitle": "Acceso rápido",
|
|
20045
20099
|
next: next$4,
|
|
20046
20100
|
"ogc.unreachable.unknown": "",
|
|
20047
20101
|
"organisation.filter.placeholder": "",
|
|
@@ -20068,6 +20122,7 @@ var es = {
|
|
|
20068
20122
|
"record.card.metadata.contact": "",
|
|
20069
20123
|
"record.externalViewer.open": "",
|
|
20070
20124
|
"record.feature.limit": "",
|
|
20125
|
+
"record.kind.data": "",
|
|
20071
20126
|
"record.kind.dataset": "",
|
|
20072
20127
|
"record.kind.reuse": "",
|
|
20073
20128
|
"record.kind.service": "",
|
|
@@ -20104,6 +20159,7 @@ var es = {
|
|
|
20104
20159
|
"record.metadata.api.form.zoneTitle": "",
|
|
20105
20160
|
"record.metadata.api.form.zoneTooltip": "",
|
|
20106
20161
|
"record.metadata.api.gpfdl": "",
|
|
20162
|
+
"record.metadata.capabilities": "",
|
|
20107
20163
|
"record.metadata.catalog": "",
|
|
20108
20164
|
"record.metadata.contact": "",
|
|
20109
20165
|
"record.metadata.creation": "",
|
|
@@ -20140,13 +20196,12 @@ var es = {
|
|
|
20140
20196
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20141
20197
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20142
20198
|
"record.metadata.related": "",
|
|
20143
|
-
"record.metadata.related.contents": "
|
|
20199
|
+
"record.metadata.related.contents": "",
|
|
20144
20200
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20145
20201
|
"record.metadata.sheet": "",
|
|
20146
20202
|
"record.metadata.status": "",
|
|
20147
20203
|
"record.metadata.status.notPublished": "",
|
|
20148
20204
|
"record.metadata.status.published": "",
|
|
20149
|
-
"record.metadata.technical": "",
|
|
20150
20205
|
"record.metadata.temporalExtent": "",
|
|
20151
20206
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20152
20207
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20175,6 +20230,10 @@ var es = {
|
|
|
20175
20230
|
"results.layout.selectOne": "",
|
|
20176
20231
|
"results.records.hits.displayedOn": "",
|
|
20177
20232
|
"results.records.hits.empty.help.html": "",
|
|
20233
|
+
"search.filters.recordKind.all": "Todos",
|
|
20234
|
+
"search.filters.recordKind.dataset": "",
|
|
20235
|
+
"search.filters.recordKind.reuse": "",
|
|
20236
|
+
"search.filters.recordKind.service": "",
|
|
20178
20237
|
"results.records.hits.found": "",
|
|
20179
20238
|
"results.records.hits.selected": "",
|
|
20180
20239
|
"results.showMore": "",
|
|
@@ -20183,6 +20242,7 @@ var es = {
|
|
|
20183
20242
|
"results.sortBy.popularity": "",
|
|
20184
20243
|
"results.sortBy.qualityScore": "",
|
|
20185
20244
|
"results.sortBy.relevancy": "",
|
|
20245
|
+
"reuse.metadata.access": "",
|
|
20186
20246
|
"search.autocomplete.error": "",
|
|
20187
20247
|
"search.error.couldNotReachApi": "",
|
|
20188
20248
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20232,6 +20292,26 @@ var es = {
|
|
|
20232
20292
|
"search.filters.useSpatialFilter": "",
|
|
20233
20293
|
"search.filters.useSpatialFilterHelp": "",
|
|
20234
20294
|
"search.filters.user": "",
|
|
20295
|
+
"service.metadata.capabilities": "",
|
|
20296
|
+
"service.metadata.capabilities.abstract": "",
|
|
20297
|
+
"service.metadata.capabilities.attribution": "",
|
|
20298
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
20299
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
20300
|
+
"service.metadata.capabilities.geometryName": "",
|
|
20301
|
+
"service.metadata.capabilities.geometryType": "",
|
|
20302
|
+
"service.metadata.capabilities.keywords": "",
|
|
20303
|
+
"service.metadata.capabilities.name": "",
|
|
20304
|
+
"service.metadata.capabilities.objectCount": "",
|
|
20305
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
20306
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
20307
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
20308
|
+
"service.metadata.capabilities.title": "",
|
|
20309
|
+
"service.metadata.filter": "",
|
|
20310
|
+
"service.metadata.filter.noLayers": "",
|
|
20311
|
+
"service.metadata.other": "",
|
|
20312
|
+
"service.metadata.question": "",
|
|
20313
|
+
"service.metadata.search": "",
|
|
20314
|
+
"service.metadata.spatialExtent": "",
|
|
20235
20315
|
"share.tab.permalink": "",
|
|
20236
20316
|
"share.tab.webComponent": "",
|
|
20237
20317
|
"table.loading.data": "",
|
|
@@ -20314,7 +20394,7 @@ var fr = {
|
|
|
20314
20394
|
"datafeeder.month.september": "Septembre",
|
|
20315
20395
|
"datafeeder.wizardSummarize.createdAt": "Créée le",
|
|
20316
20396
|
"datafeeder.wizardSummarize.scale": "Échelle",
|
|
20317
|
-
"datahub.header.datasets": "
|
|
20397
|
+
"datahub.header.datasets": "Catalogue",
|
|
20318
20398
|
"datahub.header.lastRecords": "Les plus récentes",
|
|
20319
20399
|
"datahub.header.myfavorites": "Mes favoris",
|
|
20320
20400
|
"datahub.header.news": "Accueil",
|
|
@@ -20326,7 +20406,6 @@ var fr = {
|
|
|
20326
20406
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
20327
20407
|
"datahub.news.feed": "Fil d'activité",
|
|
20328
20408
|
"datahub.news.figures": "Quelques chiffres",
|
|
20329
|
-
"datahub.record.addToFavorites": "Ajouter aux favoris",
|
|
20330
20409
|
"datahub.search.back": "Retour",
|
|
20331
20410
|
"datahub.search.filter.all": "Tous",
|
|
20332
20411
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
@@ -20497,6 +20576,7 @@ var fr = {
|
|
|
20497
20576
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20498
20577
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20499
20578
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20579
|
+
"editor.record.lock.format": "Les jeux de données de type 'service' et 'reuse' ne sont pas éditables",
|
|
20500
20580
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20501
20581
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20502
20582
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20556,7 +20636,6 @@ var fr = {
|
|
|
20556
20636
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20557
20637
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20558
20638
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20559
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20560
20639
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20561
20640
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20562
20641
|
"language.ca": "Catalan",
|
|
@@ -20596,6 +20675,7 @@ var fr = {
|
|
|
20596
20675
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20597
20676
|
"multiselect.filter.placeholder": "Rechercher",
|
|
20598
20677
|
"nav.back": "Retour",
|
|
20678
|
+
"navbar.mobile.menuTitle": "Navigation rapide",
|
|
20599
20679
|
next: next$3,
|
|
20600
20680
|
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
20601
20681
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
@@ -20622,10 +20702,11 @@ var fr = {
|
|
|
20622
20702
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20623
20703
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20624
20704
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20705
|
+
"record.kind.data": "Donnée",
|
|
20625
20706
|
"record.kind.dataset": "Donnée",
|
|
20626
20707
|
"record.kind.reuse": "Réutilisation",
|
|
20627
20708
|
"record.kind.service": "Service",
|
|
20628
|
-
"record.metadata.about": "
|
|
20709
|
+
"record.metadata.about": "A propos",
|
|
20629
20710
|
"record.metadata.api": "API",
|
|
20630
20711
|
"record.metadata.api.form.closeButton": "Fermer",
|
|
20631
20712
|
"record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
|
|
@@ -20658,6 +20739,7 @@ var fr = {
|
|
|
20658
20739
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
20659
20740
|
"record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
|
|
20660
20741
|
"record.metadata.api.gpfdl": "Téléchargement",
|
|
20742
|
+
"record.metadata.capabilities": "Capacités du service",
|
|
20661
20743
|
"record.metadata.catalog": "Catalogue",
|
|
20662
20744
|
"record.metadata.contact": "Contact",
|
|
20663
20745
|
"record.metadata.creation": "Date de création",
|
|
@@ -20694,13 +20776,12 @@ var fr = {
|
|
|
20694
20776
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20695
20777
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20696
20778
|
"record.metadata.related": "Voir aussi",
|
|
20697
|
-
"record.metadata.related.contents": "
|
|
20779
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20698
20780
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20699
20781
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20700
20782
|
"record.metadata.status": "Statut",
|
|
20701
20783
|
"record.metadata.status.notPublished": "Non publié",
|
|
20702
20784
|
"record.metadata.status.published": "Publié",
|
|
20703
|
-
"record.metadata.technical": "Informations techniques",
|
|
20704
20785
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20705
20786
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20706
20787
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20729,6 +20810,10 @@ var fr = {
|
|
|
20729
20810
|
"results.layout.selectOne": "Affichage des résultats",
|
|
20730
20811
|
"results.records.hits.displayedOn": "{displayed, plural, =0{Aucun jeu de données} one{1 affiché} other{{displayed} affichés}} {hits, plural, other{sur {hits} au total.}}",
|
|
20731
20812
|
"results.records.hits.empty.help.html": "Suggestions : <ul class='list-disc list-inside'><li>Essayez d'autres mots-clés</li><li>Cherchez moins de mots</li></ul>",
|
|
20813
|
+
"search.filters.recordKind.all": "Tous",
|
|
20814
|
+
"search.filters.recordKind.dataset": "Jeux de données",
|
|
20815
|
+
"search.filters.recordKind.reuse": "Réutilisations",
|
|
20816
|
+
"search.filters.recordKind.service": "Services",
|
|
20732
20817
|
"results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 jeu de données trouvé.} other{{hits} jeux de données.}}",
|
|
20733
20818
|
"results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
|
|
20734
20819
|
"results.showMore": "Plus de résultats...",
|
|
@@ -20737,6 +20822,7 @@ var fr = {
|
|
|
20737
20822
|
"results.sortBy.popularity": "Popularité",
|
|
20738
20823
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20739
20824
|
"results.sortBy.relevancy": "Pertinence",
|
|
20825
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20740
20826
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20741
20827
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20742
20828
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20786,6 +20872,26 @@ var fr = {
|
|
|
20786
20872
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20787
20873
|
"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.",
|
|
20788
20874
|
"search.filters.user": "Éditeur",
|
|
20875
|
+
"service.metadata.capabilities": "Informations techniques",
|
|
20876
|
+
"service.metadata.capabilities.abstract": "Description",
|
|
20877
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
20878
|
+
"service.metadata.capabilities.availableCrs": "CRS disponibles",
|
|
20879
|
+
"service.metadata.capabilities.defaultCrs": "CRS par défaut",
|
|
20880
|
+
"service.metadata.capabilities.geometryName": "Nom de la géométrie",
|
|
20881
|
+
"service.metadata.capabilities.geometryType": "Type de géométrie",
|
|
20882
|
+
"service.metadata.capabilities.keywords": "Mots-clés",
|
|
20883
|
+
"service.metadata.capabilities.name": "Nom",
|
|
20884
|
+
"service.metadata.capabilities.objectCount": "Nombre d'objets",
|
|
20885
|
+
"service.metadata.capabilities.otherCrs": "Autres CRS",
|
|
20886
|
+
"service.metadata.capabilities.outputFormats": "Formats de sortie",
|
|
20887
|
+
"service.metadata.capabilities.resourceLinks": "Liens vers les ressources",
|
|
20888
|
+
"service.metadata.capabilities.title": "Titre",
|
|
20889
|
+
"service.metadata.filter": "Les couches seront filtrées par titre et description",
|
|
20890
|
+
"service.metadata.filter.noLayers": "Aucune couche ne correspond à votre recherche",
|
|
20891
|
+
"service.metadata.other": "Autres informations",
|
|
20892
|
+
"service.metadata.question": "Poser une question",
|
|
20893
|
+
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
20894
|
+
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
20789
20895
|
"share.tab.permalink": "Partager",
|
|
20790
20896
|
"share.tab.webComponent": "Intégrer",
|
|
20791
20897
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20868,7 +20974,7 @@ var it = {
|
|
|
20868
20974
|
"datafeeder.month.september": "Settembre",
|
|
20869
20975
|
"datafeeder.wizardSummarize.createdAt": "Creato il",
|
|
20870
20976
|
"datafeeder.wizardSummarize.scale": "Scala",
|
|
20871
|
-
"datahub.header.datasets": "
|
|
20977
|
+
"datahub.header.datasets": "Catalogo",
|
|
20872
20978
|
"datahub.header.lastRecords": "Ultimi",
|
|
20873
20979
|
"datahub.header.myfavorites": "Miei preferiti",
|
|
20874
20980
|
"datahub.header.news": "Home",
|
|
@@ -20880,7 +20986,6 @@ var it = {
|
|
|
20880
20986
|
"datahub.news.contact.title": "Ha un bisogno specifico?",
|
|
20881
20987
|
"datahub.news.feed": "Feed di attività",
|
|
20882
20988
|
"datahub.news.figures": "Alcune figure",
|
|
20883
|
-
"datahub.record.addToFavorites": "Aggiungere a miei preferiti",
|
|
20884
20989
|
"datahub.search.back": "Ritorna",
|
|
20885
20990
|
"datahub.search.filter.all": "Tutti",
|
|
20886
20991
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
@@ -21051,6 +21156,7 @@ var it = {
|
|
|
21051
21156
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21052
21157
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21053
21158
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21159
|
+
"editor.record.lock.format": "",
|
|
21054
21160
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21055
21161
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21056
21162
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21110,7 +21216,6 @@ var it = {
|
|
|
21110
21216
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21111
21217
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21112
21218
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21113
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21114
21219
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21115
21220
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21116
21221
|
"language.ca": "Catalano",
|
|
@@ -21150,6 +21255,7 @@ var it = {
|
|
|
21150
21255
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21151
21256
|
"multiselect.filter.placeholder": "Cerca",
|
|
21152
21257
|
"nav.back": "Indietro",
|
|
21258
|
+
"navbar.mobile.menuTitle": "",
|
|
21153
21259
|
next: next$2,
|
|
21154
21260
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21155
21261
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21176,6 +21282,7 @@ var it = {
|
|
|
21176
21282
|
"record.card.metadata.contact": "",
|
|
21177
21283
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21178
21284
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21285
|
+
"record.kind.data": "",
|
|
21179
21286
|
"record.kind.dataset": "",
|
|
21180
21287
|
"record.kind.reuse": "",
|
|
21181
21288
|
"record.kind.service": "",
|
|
@@ -21212,6 +21319,7 @@ var it = {
|
|
|
21212
21319
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21213
21320
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21214
21321
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21322
|
+
"record.metadata.capabilities": "",
|
|
21215
21323
|
"record.metadata.catalog": "Catalogo",
|
|
21216
21324
|
"record.metadata.contact": "Contatto",
|
|
21217
21325
|
"record.metadata.creation": "Data di creazione",
|
|
@@ -21248,13 +21356,12 @@ var it = {
|
|
|
21248
21356
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21249
21357
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21250
21358
|
"record.metadata.related": "Vedi anche",
|
|
21251
|
-
"record.metadata.related.contents": "
|
|
21359
|
+
"record.metadata.related.contents": "",
|
|
21252
21360
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21253
21361
|
"record.metadata.sheet": "Origine del metadata",
|
|
21254
21362
|
"record.metadata.status": "Stato",
|
|
21255
21363
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21256
21364
|
"record.metadata.status.published": "Pubblicato",
|
|
21257
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21258
21365
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21259
21366
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21260
21367
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21283,6 +21390,10 @@ var it = {
|
|
|
21283
21390
|
"results.layout.selectOne": "Mostra risultati",
|
|
21284
21391
|
"results.records.hits.displayedOn": "{displayed, plural, =0{Nessun record} one{1 record visualizzato} other{{displayed} records visualizzati}} {hits, plural, other{su {hits} in totale.}}",
|
|
21285
21392
|
"results.records.hits.empty.help.html": "Suggerimenti: <ul class='list-disc list-inside'><li>Prova con altre parole chiave</li><li>Cerca con meno parole</li></ul>",
|
|
21393
|
+
"search.filters.recordKind.all": "Tutti",
|
|
21394
|
+
"search.filters.recordKind.dataset": "Dataset",
|
|
21395
|
+
"search.filters.recordKind.reuse": "Riutilizzi",
|
|
21396
|
+
"search.filters.recordKind.service": "Servizi",
|
|
21286
21397
|
"results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
|
|
21287
21398
|
"results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
|
|
21288
21399
|
"results.showMore": "Altri risultati...",
|
|
@@ -21291,6 +21402,7 @@ var it = {
|
|
|
21291
21402
|
"results.sortBy.popularity": "Popolarità",
|
|
21292
21403
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21293
21404
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21405
|
+
"reuse.metadata.access": "",
|
|
21294
21406
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21295
21407
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21296
21408
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21340,6 +21452,26 @@ var it = {
|
|
|
21340
21452
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21341
21453
|
"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.",
|
|
21342
21454
|
"search.filters.user": "Editore",
|
|
21455
|
+
"service.metadata.capabilities": "Informazioni tecniche",
|
|
21456
|
+
"service.metadata.capabilities.abstract": "",
|
|
21457
|
+
"service.metadata.capabilities.attribution": "",
|
|
21458
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
21459
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
21460
|
+
"service.metadata.capabilities.geometryName": "",
|
|
21461
|
+
"service.metadata.capabilities.geometryType": "",
|
|
21462
|
+
"service.metadata.capabilities.keywords": "",
|
|
21463
|
+
"service.metadata.capabilities.name": "",
|
|
21464
|
+
"service.metadata.capabilities.objectCount": "",
|
|
21465
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
21466
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
21467
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
21468
|
+
"service.metadata.capabilities.title": "",
|
|
21469
|
+
"service.metadata.filter": "",
|
|
21470
|
+
"service.metadata.filter.noLayers": "",
|
|
21471
|
+
"service.metadata.other": "",
|
|
21472
|
+
"service.metadata.question": "",
|
|
21473
|
+
"service.metadata.search": "",
|
|
21474
|
+
"service.metadata.spatialExtent": "",
|
|
21343
21475
|
"share.tab.permalink": "Condividere",
|
|
21344
21476
|
"share.tab.webComponent": "Incorporare",
|
|
21345
21477
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21422,7 +21554,7 @@ var nl = {
|
|
|
21422
21554
|
"datafeeder.month.september": "",
|
|
21423
21555
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
21424
21556
|
"datafeeder.wizardSummarize.scale": "",
|
|
21425
|
-
"datahub.header.datasets": "",
|
|
21557
|
+
"datahub.header.datasets": "Catalog",
|
|
21426
21558
|
"datahub.header.lastRecords": "",
|
|
21427
21559
|
"datahub.header.myfavorites": "",
|
|
21428
21560
|
"datahub.header.news": "",
|
|
@@ -21434,7 +21566,6 @@ var nl = {
|
|
|
21434
21566
|
"datahub.news.contact.title": "",
|
|
21435
21567
|
"datahub.news.feed": "",
|
|
21436
21568
|
"datahub.news.figures": "",
|
|
21437
|
-
"datahub.record.addToFavorites": "",
|
|
21438
21569
|
"datahub.search.back": "",
|
|
21439
21570
|
"datahub.search.filter.all": "",
|
|
21440
21571
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -21605,6 +21736,7 @@ var nl = {
|
|
|
21605
21736
|
"editor.record.loadError.body": "",
|
|
21606
21737
|
"editor.record.loadError.closeMessage": "",
|
|
21607
21738
|
"editor.record.loadError.title": "",
|
|
21739
|
+
"editor.record.lock.format": "",
|
|
21608
21740
|
"editor.record.lock.reason": "",
|
|
21609
21741
|
"editor.record.onlineResource.protocol.other": "",
|
|
21610
21742
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21664,7 +21796,6 @@ var nl = {
|
|
|
21664
21796
|
"input.image.dropFileLabel": "",
|
|
21665
21797
|
"input.image.selectFileLabel": "",
|
|
21666
21798
|
"input.image.uploadErrorLabel": "",
|
|
21667
|
-
"input.image.uploadErrorRetry": "",
|
|
21668
21799
|
"input.image.uploadProgressCancel": "",
|
|
21669
21800
|
"input.image.uploadProgressLabel": "",
|
|
21670
21801
|
"language.ca": "Catalaans",
|
|
@@ -21704,6 +21835,7 @@ var nl = {
|
|
|
21704
21835
|
"map.wms.urlInput.hint": "",
|
|
21705
21836
|
"multiselect.filter.placeholder": "",
|
|
21706
21837
|
"nav.back": "",
|
|
21838
|
+
"navbar.mobile.menuTitle": "",
|
|
21707
21839
|
next: next$1,
|
|
21708
21840
|
"ogc.unreachable.unknown": "",
|
|
21709
21841
|
"organisation.filter.placeholder": "",
|
|
@@ -21730,6 +21862,7 @@ var nl = {
|
|
|
21730
21862
|
"record.card.metadata.contact": "",
|
|
21731
21863
|
"record.externalViewer.open": "",
|
|
21732
21864
|
"record.feature.limit": "",
|
|
21865
|
+
"record.kind.data": "",
|
|
21733
21866
|
"record.kind.dataset": "",
|
|
21734
21867
|
"record.kind.reuse": "",
|
|
21735
21868
|
"record.kind.service": "",
|
|
@@ -21766,6 +21899,7 @@ var nl = {
|
|
|
21766
21899
|
"record.metadata.api.form.zoneTitle": "",
|
|
21767
21900
|
"record.metadata.api.form.zoneTooltip": "",
|
|
21768
21901
|
"record.metadata.api.gpfdl": "",
|
|
21902
|
+
"record.metadata.capabilities": "",
|
|
21769
21903
|
"record.metadata.catalog": "",
|
|
21770
21904
|
"record.metadata.contact": "",
|
|
21771
21905
|
"record.metadata.creation": "",
|
|
@@ -21802,13 +21936,12 @@ var nl = {
|
|
|
21802
21936
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21803
21937
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21804
21938
|
"record.metadata.related": "",
|
|
21805
|
-
"record.metadata.related.contents": "
|
|
21939
|
+
"record.metadata.related.contents": "",
|
|
21806
21940
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21807
21941
|
"record.metadata.sheet": "",
|
|
21808
21942
|
"record.metadata.status": "",
|
|
21809
21943
|
"record.metadata.status.notPublished": "",
|
|
21810
21944
|
"record.metadata.status.published": "",
|
|
21811
|
-
"record.metadata.technical": "",
|
|
21812
21945
|
"record.metadata.temporalExtent": "",
|
|
21813
21946
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21814
21947
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21837,6 +21970,10 @@ var nl = {
|
|
|
21837
21970
|
"results.layout.selectOne": "",
|
|
21838
21971
|
"results.records.hits.displayedOn": "",
|
|
21839
21972
|
"results.records.hits.empty.help.html": "",
|
|
21973
|
+
"search.filters.recordKind.all": "Alles",
|
|
21974
|
+
"search.filters.recordKind.dataset": "",
|
|
21975
|
+
"search.filters.recordKind.reuse": "",
|
|
21976
|
+
"search.filters.recordKind.service": "",
|
|
21840
21977
|
"results.records.hits.found": "",
|
|
21841
21978
|
"results.records.hits.selected": "",
|
|
21842
21979
|
"results.showMore": "",
|
|
@@ -21845,6 +21982,7 @@ var nl = {
|
|
|
21845
21982
|
"results.sortBy.popularity": "",
|
|
21846
21983
|
"results.sortBy.qualityScore": "",
|
|
21847
21984
|
"results.sortBy.relevancy": "",
|
|
21985
|
+
"reuse.metadata.access": "",
|
|
21848
21986
|
"search.autocomplete.error": "",
|
|
21849
21987
|
"search.error.couldNotReachApi": "",
|
|
21850
21988
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21894,6 +22032,26 @@ var nl = {
|
|
|
21894
22032
|
"search.filters.useSpatialFilter": "",
|
|
21895
22033
|
"search.filters.useSpatialFilterHelp": "",
|
|
21896
22034
|
"search.filters.user": "",
|
|
22035
|
+
"service.metadata.capabilities": "",
|
|
22036
|
+
"service.metadata.capabilities.abstract": "",
|
|
22037
|
+
"service.metadata.capabilities.attribution": "",
|
|
22038
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22039
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22040
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22041
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22042
|
+
"service.metadata.capabilities.keywords": "",
|
|
22043
|
+
"service.metadata.capabilities.name": "",
|
|
22044
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22045
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22046
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22047
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22048
|
+
"service.metadata.capabilities.title": "",
|
|
22049
|
+
"service.metadata.filter": "",
|
|
22050
|
+
"service.metadata.filter.noLayers": "",
|
|
22051
|
+
"service.metadata.other": "",
|
|
22052
|
+
"service.metadata.question": "",
|
|
22053
|
+
"service.metadata.search": "",
|
|
22054
|
+
"service.metadata.spatialExtent": "",
|
|
21897
22055
|
"share.tab.permalink": "",
|
|
21898
22056
|
"share.tab.webComponent": "",
|
|
21899
22057
|
"table.loading.data": "",
|
|
@@ -21976,7 +22134,7 @@ var pt = {
|
|
|
21976
22134
|
"datafeeder.month.september": "",
|
|
21977
22135
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
21978
22136
|
"datafeeder.wizardSummarize.scale": "",
|
|
21979
|
-
"datahub.header.datasets": "",
|
|
22137
|
+
"datahub.header.datasets": "Catálogo",
|
|
21980
22138
|
"datahub.header.lastRecords": "",
|
|
21981
22139
|
"datahub.header.myfavorites": "",
|
|
21982
22140
|
"datahub.header.news": "",
|
|
@@ -21988,7 +22146,6 @@ var pt = {
|
|
|
21988
22146
|
"datahub.news.contact.title": "",
|
|
21989
22147
|
"datahub.news.feed": "",
|
|
21990
22148
|
"datahub.news.figures": "",
|
|
21991
|
-
"datahub.record.addToFavorites": "",
|
|
21992
22149
|
"datahub.search.back": "",
|
|
21993
22150
|
"datahub.search.filter.all": "",
|
|
21994
22151
|
"datahub.search.filter.generatedByAPI": "",
|
|
@@ -22159,6 +22316,7 @@ var pt = {
|
|
|
22159
22316
|
"editor.record.loadError.body": "",
|
|
22160
22317
|
"editor.record.loadError.closeMessage": "",
|
|
22161
22318
|
"editor.record.loadError.title": "",
|
|
22319
|
+
"editor.record.lock.format": "",
|
|
22162
22320
|
"editor.record.lock.reason": "",
|
|
22163
22321
|
"editor.record.onlineResource.protocol.other": "",
|
|
22164
22322
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22218,7 +22376,6 @@ var pt = {
|
|
|
22218
22376
|
"input.image.dropFileLabel": "",
|
|
22219
22377
|
"input.image.selectFileLabel": "",
|
|
22220
22378
|
"input.image.uploadErrorLabel": "",
|
|
22221
|
-
"input.image.uploadErrorRetry": "",
|
|
22222
22379
|
"input.image.uploadProgressCancel": "",
|
|
22223
22380
|
"input.image.uploadProgressLabel": "",
|
|
22224
22381
|
"language.ca": "Catalão",
|
|
@@ -22258,6 +22415,7 @@ var pt = {
|
|
|
22258
22415
|
"map.wms.urlInput.hint": "",
|
|
22259
22416
|
"multiselect.filter.placeholder": "",
|
|
22260
22417
|
"nav.back": "",
|
|
22418
|
+
"navbar.mobile.menuTitle": "",
|
|
22261
22419
|
next: next,
|
|
22262
22420
|
"ogc.unreachable.unknown": "",
|
|
22263
22421
|
"organisation.filter.placeholder": "",
|
|
@@ -22284,6 +22442,7 @@ var pt = {
|
|
|
22284
22442
|
"record.card.metadata.contact": "",
|
|
22285
22443
|
"record.externalViewer.open": "",
|
|
22286
22444
|
"record.feature.limit": "",
|
|
22445
|
+
"record.kind.data": "",
|
|
22287
22446
|
"record.kind.dataset": "",
|
|
22288
22447
|
"record.kind.reuse": "",
|
|
22289
22448
|
"record.kind.service": "",
|
|
@@ -22320,6 +22479,7 @@ var pt = {
|
|
|
22320
22479
|
"record.metadata.api.form.zoneTitle": "",
|
|
22321
22480
|
"record.metadata.api.form.zoneTooltip": "",
|
|
22322
22481
|
"record.metadata.api.gpfdl": "",
|
|
22482
|
+
"record.metadata.capabilities": "",
|
|
22323
22483
|
"record.metadata.catalog": "",
|
|
22324
22484
|
"record.metadata.contact": "",
|
|
22325
22485
|
"record.metadata.creation": "",
|
|
@@ -22356,13 +22516,12 @@ var pt = {
|
|
|
22356
22516
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22357
22517
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22358
22518
|
"record.metadata.related": "",
|
|
22359
|
-
"record.metadata.related.contents": "
|
|
22519
|
+
"record.metadata.related.contents": "",
|
|
22360
22520
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22361
22521
|
"record.metadata.sheet": "",
|
|
22362
22522
|
"record.metadata.status": "",
|
|
22363
22523
|
"record.metadata.status.notPublished": "",
|
|
22364
22524
|
"record.metadata.status.published": "",
|
|
22365
|
-
"record.metadata.technical": "",
|
|
22366
22525
|
"record.metadata.temporalExtent": "",
|
|
22367
22526
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22368
22527
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22391,6 +22550,10 @@ var pt = {
|
|
|
22391
22550
|
"results.layout.selectOne": "",
|
|
22392
22551
|
"results.records.hits.displayedOn": "",
|
|
22393
22552
|
"results.records.hits.empty.help.html": "",
|
|
22553
|
+
"search.filters.recordKind.all": "Todos",
|
|
22554
|
+
"search.filters.recordKind.dataset": "",
|
|
22555
|
+
"search.filters.recordKind.reuse": "",
|
|
22556
|
+
"search.filters.recordKind.service": "",
|
|
22394
22557
|
"results.records.hits.found": "",
|
|
22395
22558
|
"results.records.hits.selected": "",
|
|
22396
22559
|
"results.showMore": "",
|
|
@@ -22399,6 +22562,7 @@ var pt = {
|
|
|
22399
22562
|
"results.sortBy.popularity": "",
|
|
22400
22563
|
"results.sortBy.qualityScore": "",
|
|
22401
22564
|
"results.sortBy.relevancy": "",
|
|
22565
|
+
"reuse.metadata.access": "",
|
|
22402
22566
|
"search.autocomplete.error": "",
|
|
22403
22567
|
"search.error.couldNotReachApi": "",
|
|
22404
22568
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22448,6 +22612,26 @@ var pt = {
|
|
|
22448
22612
|
"search.filters.useSpatialFilter": "",
|
|
22449
22613
|
"search.filters.useSpatialFilterHelp": "",
|
|
22450
22614
|
"search.filters.user": "",
|
|
22615
|
+
"service.metadata.capabilities": "",
|
|
22616
|
+
"service.metadata.capabilities.abstract": "",
|
|
22617
|
+
"service.metadata.capabilities.attribution": "",
|
|
22618
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22619
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22620
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22621
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22622
|
+
"service.metadata.capabilities.keywords": "",
|
|
22623
|
+
"service.metadata.capabilities.name": "",
|
|
22624
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22625
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22626
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22627
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22628
|
+
"service.metadata.capabilities.title": "",
|
|
22629
|
+
"service.metadata.filter": "",
|
|
22630
|
+
"service.metadata.filter.noLayers": "",
|
|
22631
|
+
"service.metadata.other": "",
|
|
22632
|
+
"service.metadata.question": "",
|
|
22633
|
+
"service.metadata.search": "",
|
|
22634
|
+
"service.metadata.spatialExtent": "",
|
|
22451
22635
|
"share.tab.permalink": "",
|
|
22452
22636
|
"share.tab.webComponent": "",
|
|
22453
22637
|
"table.loading.data": "",
|
|
@@ -22796,8 +22980,8 @@ class Gn4FieldMapper {
|
|
|
22796
22980
|
return {
|
|
22797
22981
|
...distribution,
|
|
22798
22982
|
type,
|
|
22799
|
-
|
|
22800
|
-
|
|
22983
|
+
url: url,
|
|
22984
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22801
22985
|
};
|
|
22802
22986
|
}
|
|
22803
22987
|
};
|
|
@@ -23193,14 +23377,6 @@ class ElasticsearchService {
|
|
|
23193
23377
|
}
|
|
23194
23378
|
mustNotFilters() {
|
|
23195
23379
|
return [
|
|
23196
|
-
{
|
|
23197
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23198
|
-
'service',
|
|
23199
|
-
'map',
|
|
23200
|
-
'map/static',
|
|
23201
|
-
'mapDigital',
|
|
23202
|
-
]),
|
|
23203
|
-
},
|
|
23204
23380
|
{
|
|
23205
23381
|
query_string: {
|
|
23206
23382
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23299,7 +23475,7 @@ class ElasticsearchService {
|
|
|
23299
23475
|
must_not: this.mustNotFilters(),
|
|
23300
23476
|
},
|
|
23301
23477
|
},
|
|
23302
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23478
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23303
23479
|
from: 0,
|
|
23304
23480
|
size: 20,
|
|
23305
23481
|
};
|
|
@@ -25037,7 +25213,7 @@ function getLinkLabel(link) {
|
|
|
25037
25213
|
default:
|
|
25038
25214
|
format = getFileFormat(link);
|
|
25039
25215
|
}
|
|
25040
|
-
const label = link.description || link.name;
|
|
25216
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
25041
25217
|
return format ? `${label} (${format})` : label;
|
|
25042
25218
|
}
|
|
25043
25219
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -25048,14 +25224,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
25048
25224
|
}
|
|
25049
25225
|
case 'wfs': {
|
|
25050
25226
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
25051
|
-
|
|
25227
|
+
const featureTypes = await endpointWfs.getFeatureTypes();
|
|
25228
|
+
const layers = await Promise.all(featureTypes.map(async (collection) => {
|
|
25229
|
+
return await endpointWfs.getFeatureTypeFull(collection.name);
|
|
25230
|
+
}));
|
|
25231
|
+
return layers;
|
|
25052
25232
|
}
|
|
25053
25233
|
case 'wms': {
|
|
25054
25234
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
25055
|
-
|
|
25235
|
+
const layers = (await endpointWms
|
|
25056
25236
|
.getLayers()
|
|
25057
25237
|
.flatMap(wmsLayerFlatten)
|
|
25058
|
-
.filter((l) => l.name)
|
|
25238
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25239
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25240
|
+
});
|
|
25241
|
+
return layers;
|
|
25059
25242
|
}
|
|
25060
25243
|
case 'wmts': {
|
|
25061
25244
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25092,6 +25275,7 @@ var LinkUsage;
|
|
|
25092
25275
|
class LinkClassifierService {
|
|
25093
25276
|
getUsagesForLink(link) {
|
|
25094
25277
|
switch (link.type) {
|
|
25278
|
+
case 'endpoint':
|
|
25095
25279
|
case 'service': {
|
|
25096
25280
|
switch (link.accessServiceProtocol) {
|
|
25097
25281
|
case 'esriRest':
|
|
@@ -25140,6 +25324,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25140
25324
|
}]
|
|
25141
25325
|
}] });
|
|
25142
25326
|
|
|
25327
|
+
var name = "geonetwork-ui";
|
|
25328
|
+
var version = "2.6.0-dev.70b25ba3b";
|
|
25329
|
+
var engines = {
|
|
25330
|
+
node: ">=20"
|
|
25331
|
+
};
|
|
25332
|
+
var main = "./index.ts";
|
|
25333
|
+
var type = "module";
|
|
25334
|
+
var exports = {
|
|
25335
|
+
"./tailwind.base.config.js": "./tailwind.base.config.js",
|
|
25336
|
+
"./style.css": "./style.css"
|
|
25337
|
+
};
|
|
25338
|
+
var repository = {
|
|
25339
|
+
url: "https://github.com/geonetwork/geonetwork-ui"
|
|
25340
|
+
};
|
|
25341
|
+
var peerDependencies = {
|
|
25342
|
+
"@angular/animations": "17.x || 18.x || 19.x",
|
|
25343
|
+
"@angular/cdk": "17.x || 18.x || 19.x",
|
|
25344
|
+
"@angular/common": "17.x || 18.x || 19.x",
|
|
25345
|
+
"@angular/compiler": "17.x || 18.x || 19.x",
|
|
25346
|
+
"@angular/core": "17.x || 18.x || 19.x",
|
|
25347
|
+
"@angular/forms": "17.x || 18.x || 19.x",
|
|
25348
|
+
"@angular/material": "17.x || 18.x || 19.x",
|
|
25349
|
+
"@angular/material-moment-adapter": "17.x || 18.x || 19.x",
|
|
25350
|
+
"@angular/platform-browser": "17.x || 18.x || 19.x",
|
|
25351
|
+
"@angular/platform-browser-dynamic": "17.x || 18.x || 19.x",
|
|
25352
|
+
"@angular/router": "17.x || 18.x || 19.x",
|
|
25353
|
+
"@ngrx/component": "17.x || 18.x || 19.x",
|
|
25354
|
+
"@ngrx/effects": "17.x || 18.x || 19.x",
|
|
25355
|
+
"@ngrx/router-store": "17.x || 18.x || 19.x",
|
|
25356
|
+
"@ngrx/store": "17.x || 18.x || 19.x",
|
|
25357
|
+
"@ngrx/store-devtools": "17.x || 18.x || 19.x",
|
|
25358
|
+
"@ngrx/operators": "18.x",
|
|
25359
|
+
"@ngx-translate/core": "15.x",
|
|
25360
|
+
"@ngx-translate/http-loader": "16.x",
|
|
25361
|
+
rxjs: "7.x",
|
|
25362
|
+
"zone.js": "*",
|
|
25363
|
+
tailwindcss: "3.x"
|
|
25364
|
+
};
|
|
25365
|
+
var dependencies = {
|
|
25366
|
+
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
|
25367
|
+
"@camptocamp/ogc-client": "1.1.1-dev.3e2d3cc",
|
|
25368
|
+
"@geospatial-sdk/core": "0.0.5-dev.31",
|
|
25369
|
+
"@geospatial-sdk/geocoding": "0.0.5-dev.31",
|
|
25370
|
+
"@geospatial-sdk/legend": "0.0.5-dev.31",
|
|
25371
|
+
"@geospatial-sdk/openlayers": "0.0.5-dev.31",
|
|
25372
|
+
"@ltd/j-toml": "~1.35.2",
|
|
25373
|
+
"@messageformat/core": "^3.0.1",
|
|
25374
|
+
"@ng-icons/core": "29.10.0",
|
|
25375
|
+
"@ng-icons/iconoir": "29.10.0",
|
|
25376
|
+
"@ng-icons/material-icons": "29.10.0",
|
|
25377
|
+
"@ng-icons/tabler-icons": "29.10.0",
|
|
25378
|
+
"@nx/angular": "20.2.2",
|
|
25379
|
+
"@rgrove/parse-xml": "4.2.0",
|
|
25380
|
+
alasql: "4.6.0",
|
|
25381
|
+
axios: "1.7.9",
|
|
25382
|
+
basiclightbox: "^5.0.4",
|
|
25383
|
+
"chart.js": "4.4.7",
|
|
25384
|
+
"chroma-js": "3.1.2",
|
|
25385
|
+
"date-fns": "4.1.0",
|
|
25386
|
+
"document-register-element": "^1.14.10",
|
|
25387
|
+
"duration-relativetimeformat": "^2.0.4",
|
|
25388
|
+
"embla-carousel": "8.5.1",
|
|
25389
|
+
express: "^4.21.1",
|
|
25390
|
+
"geojson-validation": "^1.0.2",
|
|
25391
|
+
marked: "15.0.4",
|
|
25392
|
+
moment: "2.30.1",
|
|
25393
|
+
"ng-table-virtual-scroll": "1.6.1",
|
|
25394
|
+
"ngx-chips": "3.0.0",
|
|
25395
|
+
"ngx-dropzone": "3.1.0",
|
|
25396
|
+
"ngx-translate-messageformat-compiler": "7.0.0",
|
|
25397
|
+
ol: "^8.2.0",
|
|
25398
|
+
papaparse: "5.4.1",
|
|
25399
|
+
pg: "^8.9.0",
|
|
25400
|
+
proj4: "^2.9.2",
|
|
25401
|
+
rdflib: "^2.2.35",
|
|
25402
|
+
"reflect-metadata": "^0.1.13",
|
|
25403
|
+
semver: "7.6.3",
|
|
25404
|
+
"tippy.js": "6.3.7",
|
|
25405
|
+
tslib: "^2.3.0",
|
|
25406
|
+
typeorm: "^0.3.14",
|
|
25407
|
+
"whatwg-fetch": "^3.6.2",
|
|
25408
|
+
xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
|
|
25409
|
+
};
|
|
25410
|
+
var packageJson = {
|
|
25411
|
+
name: name,
|
|
25412
|
+
version: version,
|
|
25413
|
+
engines: engines,
|
|
25414
|
+
main: main,
|
|
25415
|
+
type: type,
|
|
25416
|
+
exports: exports,
|
|
25417
|
+
repository: repository,
|
|
25418
|
+
peerDependencies: peerDependencies,
|
|
25419
|
+
dependencies: dependencies
|
|
25420
|
+
};
|
|
25421
|
+
|
|
25422
|
+
const GEONETWORK_UI_VERSION = packageJson.version;
|
|
25423
|
+
const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
|
|
25424
|
+
? 'main'
|
|
25425
|
+
: `v${packageJson.version}`;
|
|
25426
|
+
|
|
25143
25427
|
const minApiVersion = '4.2.2';
|
|
25144
25428
|
class Gn4PlatformService {
|
|
25145
25429
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25333,12 +25617,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25333
25617
|
type: Injectable
|
|
25334
25618
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25335
25619
|
|
|
25620
|
+
class RecordsRepositoryInterface {
|
|
25621
|
+
}
|
|
25622
|
+
|
|
25336
25623
|
function provideGn4() {
|
|
25337
25624
|
return [
|
|
25338
25625
|
{
|
|
25339
25626
|
provide: PlatformServiceInterface,
|
|
25340
25627
|
useClass: Gn4PlatformService,
|
|
25341
25628
|
},
|
|
25629
|
+
{
|
|
25630
|
+
provide: RecordsRepositoryInterface,
|
|
25631
|
+
useClass: Gn4Repository,
|
|
25632
|
+
},
|
|
25342
25633
|
Gn4PlatformMapper,
|
|
25343
25634
|
];
|
|
25344
25635
|
}
|
|
@@ -25414,7 +25705,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25414
25705
|
|
|
25415
25706
|
class AnchorLinkDirective {
|
|
25416
25707
|
get elementClass() {
|
|
25417
|
-
|
|
25708
|
+
if (this.disabled) {
|
|
25709
|
+
return this.disabledClass;
|
|
25710
|
+
}
|
|
25711
|
+
if (this.inView) {
|
|
25712
|
+
return `${this.inViewClass} ${this.enabledClass}`;
|
|
25713
|
+
}
|
|
25714
|
+
else {
|
|
25715
|
+
return `${this.outOfViewClass} ${this.enabledClass}`;
|
|
25716
|
+
}
|
|
25418
25717
|
}
|
|
25419
25718
|
constructor(changeDetector) {
|
|
25420
25719
|
this.changeDetector = changeDetector;
|
|
@@ -25422,6 +25721,8 @@ class AnchorLinkDirective {
|
|
|
25422
25721
|
this.observer = new MutationObserver(() => {
|
|
25423
25722
|
this.refreshDisabledState();
|
|
25424
25723
|
});
|
|
25724
|
+
this.inView = false;
|
|
25725
|
+
this.initialized = false;
|
|
25425
25726
|
}
|
|
25426
25727
|
ngOnInit() {
|
|
25427
25728
|
this.observer.observe(document.body, {
|
|
@@ -25430,8 +25731,32 @@ class AnchorLinkDirective {
|
|
|
25430
25731
|
});
|
|
25431
25732
|
this.refreshDisabledState();
|
|
25432
25733
|
}
|
|
25734
|
+
ngAfterViewChecked() {
|
|
25735
|
+
if (!this.initialized && !this.disabled) {
|
|
25736
|
+
const target = document.getElementById(this.targetId);
|
|
25737
|
+
if (target) {
|
|
25738
|
+
this.initializeIntersectionObserver(target);
|
|
25739
|
+
this.initialized = true;
|
|
25740
|
+
}
|
|
25741
|
+
}
|
|
25742
|
+
}
|
|
25743
|
+
initializeIntersectionObserver(target) {
|
|
25744
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
25745
|
+
entries.forEach((entry) => {
|
|
25746
|
+
this.inView = entry.isIntersecting;
|
|
25747
|
+
this.changeDetector.detectChanges();
|
|
25748
|
+
});
|
|
25749
|
+
}, {
|
|
25750
|
+
root: null,
|
|
25751
|
+
rootMargin: '-30% 0% -60% 0%',
|
|
25752
|
+
});
|
|
25753
|
+
this.intersectionObserver.observe(target);
|
|
25754
|
+
}
|
|
25433
25755
|
ngOnDestroy() {
|
|
25434
25756
|
this.observer.disconnect();
|
|
25757
|
+
if (this.intersectionObserver) {
|
|
25758
|
+
this.intersectionObserver.disconnect();
|
|
25759
|
+
}
|
|
25435
25760
|
}
|
|
25436
25761
|
refreshDisabledState() {
|
|
25437
25762
|
const targetNotPresent = !document.getElementById(this.targetId);
|
|
@@ -25450,7 +25775,7 @@ class AnchorLinkDirective {
|
|
|
25450
25775
|
});
|
|
25451
25776
|
}
|
|
25452
25777
|
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 }); }
|
|
25453
|
-
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 }); }
|
|
25778
|
+
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 }); }
|
|
25454
25779
|
}
|
|
25455
25780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorLinkDirective, decorators: [{
|
|
25456
25781
|
type: Directive,
|
|
@@ -25466,6 +25791,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25466
25791
|
}], enabledClass: [{
|
|
25467
25792
|
type: Input,
|
|
25468
25793
|
args: ['gnUiAnchorLinkEnabledClass']
|
|
25794
|
+
}], inViewClass: [{
|
|
25795
|
+
type: Input,
|
|
25796
|
+
args: ['gnUiAnchorLinkInViewClass']
|
|
25797
|
+
}], outOfViewClass: [{
|
|
25798
|
+
type: Input,
|
|
25799
|
+
args: ['gnUiAnchorLinkOutOfViewClass']
|
|
25469
25800
|
}], elementClass: [{
|
|
25470
25801
|
type: HostBinding,
|
|
25471
25802
|
args: ['class']
|
|
@@ -25555,11 +25886,11 @@ class CarouselComponent {
|
|
|
25555
25886
|
.on('select', this.refreshSteps);
|
|
25556
25887
|
}
|
|
25557
25888
|
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 }); }
|
|
25558
|
-
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
|
|
25889
|
+
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 block\">\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}\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 }); }
|
|
25559
25890
|
}
|
|
25560
25891
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
25561
25892
|
type: Component,
|
|
25562
|
-
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
|
|
25893
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full block\">\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}\n"] }]
|
|
25563
25894
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselOverflowContainer: [{
|
|
25564
25895
|
type: ViewChild,
|
|
25565
25896
|
args: ['carouselOverflowContainer']
|
|
@@ -25730,6 +26061,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25730
26061
|
type: Output
|
|
25731
26062
|
}] } });
|
|
25732
26063
|
|
|
26064
|
+
marker('editor.record.lock.reason');
|
|
26065
|
+
marker('editor.record.lock.format');
|
|
25733
26066
|
class InteractiveTableComponent {
|
|
25734
26067
|
constructor() {
|
|
25735
26068
|
this.items = [];
|
|
@@ -25747,15 +26080,24 @@ class InteractiveTableComponent {
|
|
|
25747
26080
|
.join(' '),
|
|
25748
26081
|
};
|
|
25749
26082
|
}
|
|
26083
|
+
getItemTitle(item) {
|
|
26084
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26085
|
+
return 'editor.record.lock.reason';
|
|
26086
|
+
}
|
|
26087
|
+
else if (item.kind !== 'dataset') {
|
|
26088
|
+
return 'editor.record.lock.format';
|
|
26089
|
+
}
|
|
26090
|
+
return '';
|
|
26091
|
+
}
|
|
25750
26092
|
handleRowClick(item) {
|
|
25751
26093
|
this.itemClick.emit(item);
|
|
25752
26094
|
}
|
|
25753
26095
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25754
|
-
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]=\"
|
|
26096
|
+
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 }); }
|
|
25755
26097
|
}
|
|
25756
26098
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25757
26099
|
type: Component,
|
|
25758
|
-
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]=\"
|
|
26100
|
+
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"] }]
|
|
25759
26101
|
}], propDecorators: { columns: [{
|
|
25760
26102
|
type: ContentChildren,
|
|
25761
26103
|
args: [InteractiveTableColumnComponent]
|
|
@@ -25856,14 +26198,16 @@ class BlockListComponent {
|
|
|
25856
26198
|
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
25857
26199
|
}
|
|
25858
26200
|
get currentPage() {
|
|
25859
|
-
return this.currentPage_ + 1;
|
|
26201
|
+
return this.currentPage_ + 1;
|
|
25860
26202
|
}
|
|
25861
26203
|
constructor(changeDetector) {
|
|
25862
26204
|
this.changeDetector = changeDetector;
|
|
25863
|
-
this.pageSize =
|
|
26205
|
+
this.pageSize = 4;
|
|
25864
26206
|
this.containerClass = '';
|
|
25865
26207
|
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
25866
26208
|
this.minHeight = 0;
|
|
26209
|
+
this.listChanges = new EventEmitter();
|
|
26210
|
+
this.subComponentSize = 'M';
|
|
25867
26211
|
this.currentPage_ = 0;
|
|
25868
26212
|
this.refreshBlocksVisibility = () => {
|
|
25869
26213
|
this.blocks.forEach((block, index) => {
|
|
@@ -25876,13 +26220,48 @@ class BlockListComponent {
|
|
|
25876
26220
|
};
|
|
25877
26221
|
}
|
|
25878
26222
|
ngAfterViewInit() {
|
|
25879
|
-
this.blocks.changes.subscribe(
|
|
26223
|
+
this.blocks.changes.subscribe(() => {
|
|
26224
|
+
this.updateSizes();
|
|
26225
|
+
this.refreshBlocksVisibility();
|
|
26226
|
+
this.goToPage(1);
|
|
26227
|
+
this.changeDetector.detectChanges();
|
|
26228
|
+
this.listChanges.emit(this);
|
|
26229
|
+
});
|
|
26230
|
+
this.updateSizes();
|
|
25880
26231
|
this.refreshBlocksVisibility();
|
|
25881
26232
|
// we store the first height as the min-height of the list container
|
|
25882
26233
|
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
25883
26234
|
this.changeDetector.detectChanges();
|
|
26235
|
+
this.listChanges.emit(this);
|
|
26236
|
+
}
|
|
26237
|
+
updateSizes() {
|
|
26238
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
26239
|
+
this.pageSize = this.computePageSize();
|
|
26240
|
+
}
|
|
26241
|
+
computeSubComponentSize() {
|
|
26242
|
+
if (!this.blocks)
|
|
26243
|
+
return 'M';
|
|
26244
|
+
const subComponentsCount = this.blocks.length;
|
|
26245
|
+
if (subComponentsCount <= 3)
|
|
26246
|
+
return 'L';
|
|
26247
|
+
if (subComponentsCount <= 12)
|
|
26248
|
+
return 'M';
|
|
26249
|
+
if (subComponentsCount <= 18)
|
|
26250
|
+
return 'S';
|
|
26251
|
+
return 'XS';
|
|
26252
|
+
}
|
|
26253
|
+
computePageSize() {
|
|
26254
|
+
switch (this.subComponentSize) {
|
|
26255
|
+
case 'L':
|
|
26256
|
+
return 3;
|
|
26257
|
+
case 'S':
|
|
26258
|
+
return 6;
|
|
26259
|
+
case 'XS':
|
|
26260
|
+
return 8;
|
|
26261
|
+
default:
|
|
26262
|
+
return 4;
|
|
26263
|
+
}
|
|
25884
26264
|
}
|
|
25885
|
-
// pageIndex is 1-based
|
|
25886
26265
|
goToPage(pageIndex) {
|
|
25887
26266
|
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
25888
26267
|
this.changeDetector.detectChanges();
|
|
@@ -25899,14 +26278,12 @@ class BlockListComponent {
|
|
|
25899
26278
|
this.goToPage(this.currentPage + 1);
|
|
25900
26279
|
}
|
|
25901
26280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: {
|
|
26281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, outputs: { listChanges: "listChanges" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25903
26282
|
}
|
|
25904
26283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
25905
26284
|
type: Component,
|
|
25906
|
-
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"
|
|
25907
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: {
|
|
25908
|
-
type: Input
|
|
25909
|
-
}], containerClass: [{
|
|
26285
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"] }]
|
|
26286
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
25910
26287
|
type: Input
|
|
25911
26288
|
}], paginationContainerClass: [{
|
|
25912
26289
|
type: Input
|
|
@@ -25916,6 +26293,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25916
26293
|
}], blockContainer: [{
|
|
25917
26294
|
type: ViewChild,
|
|
25918
26295
|
args: ['blockContainer']
|
|
26296
|
+
}], listChanges: [{
|
|
26297
|
+
type: Output
|
|
25919
26298
|
}] } });
|
|
25920
26299
|
|
|
25921
26300
|
class ColorScaleComponent {
|
|
@@ -25999,11 +26378,11 @@ class ProgressBarComponent {
|
|
|
25999
26378
|
}
|
|
26000
26379
|
}
|
|
26001
26380
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26002
|
-
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 }}
|
|
26381
|
+
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 }} font-medium mr-2\n text-opacity-100 !text-slate-800\"\n data-cy=\"progressPercentage\"\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]" }] }); }
|
|
26003
26382
|
}
|
|
26004
26383
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
26005
26384
|
type: Component,
|
|
26006
|
-
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 }}
|
|
26385
|
+
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 }} font-medium mr-2\n text-opacity-100 !text-slate-800\"\n data-cy=\"progressPercentage\"\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"] }]
|
|
26007
26386
|
}], propDecorators: { value: [{
|
|
26008
26387
|
type: Input
|
|
26009
26388
|
}], type: [{
|
|
@@ -26885,11 +27264,11 @@ class DropdownMultiselectComponent {
|
|
|
26885
27264
|
this.setFocus();
|
|
26886
27265
|
}
|
|
26887
27266
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$9.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26888
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27267
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26889
27268
|
}
|
|
26890
27269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
26891
27270
|
type: Component,
|
|
26892
|
-
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
27271
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
26893
27272
|
}], ctorParameters: () => [{ type: i1$9.ScrollStrategyOptions }], propDecorators: { title: [{
|
|
26894
27273
|
type: Input
|
|
26895
27274
|
}], choices: [{
|
|
@@ -27397,17 +27776,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27397
27776
|
type: Input
|
|
27398
27777
|
}] } });
|
|
27399
27778
|
|
|
27400
|
-
class
|
|
27401
|
-
|
|
27402
|
-
|
|
27779
|
+
class InlineFilterComponent {
|
|
27780
|
+
constructor() {
|
|
27781
|
+
this.selected = [];
|
|
27782
|
+
this.selectValues = new EventEmitter();
|
|
27783
|
+
}
|
|
27784
|
+
isSelected(choice) {
|
|
27785
|
+
return (this.selected.indexOf(choice.value) > -1 ||
|
|
27786
|
+
(this.selected.length === 0 && choice.value === 'all'));
|
|
27787
|
+
}
|
|
27788
|
+
select(choice, selected) {
|
|
27789
|
+
if (choice.value === 'all' && selected) {
|
|
27790
|
+
this.selected = [choice.value];
|
|
27791
|
+
}
|
|
27792
|
+
else {
|
|
27793
|
+
this.selected = selected
|
|
27794
|
+
? [...this.selected.filter((v) => v !== choice.value), choice.value]
|
|
27795
|
+
: this.selected.filter((v) => v !== choice.value);
|
|
27796
|
+
// If any value selected, unselect all
|
|
27797
|
+
this.selected = this.selected.filter((v) => v !== 'all');
|
|
27798
|
+
}
|
|
27799
|
+
this.selectValues.emit(this.selected);
|
|
27800
|
+
}
|
|
27801
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InlineFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27802
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: { choices: "choices", selected: "selected" }, outputs: { selectValues: "selectValues" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ul class=\"flex flex-wrap list-none gap-2\">\n <li *ngFor=\"let choice of choices\">\n <label\n class=\"\"\n [ngClass]=\"{\n selected: isSelected(choice),\n }\"\n >\n <input\n class=\"hidden\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n [attr.data-cy]=\"'inlineFilter-' + choice.value\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: choice }\"\n >\n </ng-container>\n </label>\n </li>\n</ul>\n", dependencies: [{ 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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
27403
27803
|
}
|
|
27404
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
27804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InlineFilterComponent, decorators: [{
|
|
27405
27805
|
type: Component,
|
|
27406
|
-
args: [{ selector: 'gn-ui-
|
|
27407
|
-
}], propDecorators: {
|
|
27806
|
+
args: [{ selector: 'gn-ui-inline-filter', template: "<ul class=\"flex flex-wrap list-none gap-2\">\n <li *ngFor=\"let choice of choices\">\n <label\n class=\"\"\n [ngClass]=\"{\n selected: isSelected(choice),\n }\"\n >\n <input\n class=\"hidden\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n [attr.data-cy]=\"'inlineFilter-' + choice.value\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: choice }\"\n >\n </ng-container>\n </label>\n </li>\n</ul>\n" }]
|
|
27807
|
+
}], propDecorators: { choices: [{
|
|
27408
27808
|
type: Input
|
|
27409
|
-
}],
|
|
27809
|
+
}], selected: [{
|
|
27410
27810
|
type: Input
|
|
27811
|
+
}], selectValues: [{
|
|
27812
|
+
type: Output
|
|
27813
|
+
}], itemTemplate: [{
|
|
27814
|
+
type: ContentChild,
|
|
27815
|
+
args: [TemplateRef]
|
|
27411
27816
|
}] } });
|
|
27412
27817
|
|
|
27413
27818
|
class SearchInputComponent {
|
|
@@ -27468,11 +27873,11 @@ class StarToggleComponent {
|
|
|
27468
27873
|
event.preventDefault();
|
|
27469
27874
|
}
|
|
27470
27875
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27471
|
-
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=\"
|
|
27876
|
+
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 }); }
|
|
27472
27877
|
}
|
|
27473
27878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27474
27879
|
type: Component,
|
|
27475
|
-
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=\"
|
|
27880
|
+
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"] }]
|
|
27476
27881
|
}], propDecorators: { toggled: [{
|
|
27477
27882
|
type: Input
|
|
27478
27883
|
}], disabled: [{
|
|
@@ -27646,7 +28051,8 @@ class UiInputsModule {
|
|
|
27646
28051
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, declarations: [DragAndDropFileInputComponent,
|
|
27647
28052
|
DropdownMultiselectComponent,
|
|
27648
28053
|
ViewportIntersectorComponent,
|
|
27649
|
-
CheckboxComponent
|
|
28054
|
+
CheckboxComponent,
|
|
28055
|
+
InlineFilterComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
27650
28056
|
FormsModule,
|
|
27651
28057
|
ReactiveFormsModule,
|
|
27652
28058
|
TagInputModule,
|
|
@@ -27677,6 +28083,7 @@ class UiInputsModule {
|
|
|
27677
28083
|
CheckboxComponent,
|
|
27678
28084
|
DateRangePickerComponent,
|
|
27679
28085
|
EditableLabelDirective,
|
|
28086
|
+
InlineFilterComponent,
|
|
27680
28087
|
BadgeComponent] }); }
|
|
27681
28088
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, providers: [
|
|
27682
28089
|
provideIcons({
|
|
@@ -27718,6 +28125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27718
28125
|
DropdownMultiselectComponent,
|
|
27719
28126
|
ViewportIntersectorComponent,
|
|
27720
28127
|
CheckboxComponent,
|
|
28128
|
+
InlineFilterComponent,
|
|
27721
28129
|
],
|
|
27722
28130
|
imports: [
|
|
27723
28131
|
CommonModule,
|
|
@@ -27766,6 +28174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27766
28174
|
CheckboxComponent,
|
|
27767
28175
|
DateRangePickerComponent,
|
|
27768
28176
|
EditableLabelDirective,
|
|
28177
|
+
InlineFilterComponent,
|
|
27769
28178
|
BadgeComponent,
|
|
27770
28179
|
],
|
|
27771
28180
|
}]
|
|
@@ -27911,20 +28320,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27911
28320
|
class PreviousNextButtonsComponent {
|
|
27912
28321
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27913
28322
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent" }, providers: [
|
|
27914
|
-
provideIcons({
|
|
28323
|
+
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
27915
28324
|
provideNgIconsConfig({
|
|
27916
28325
|
size: '0.875em',
|
|
27917
28326
|
}),
|
|
27918
|
-
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-
|
|
28327
|
+
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
27919
28328
|
}
|
|
27920
28329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
27921
28330
|
type: Component,
|
|
27922
28331
|
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [ButtonComponent, NgIconComponent], providers: [
|
|
27923
|
-
provideIcons({
|
|
28332
|
+
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
27924
28333
|
provideNgIconsConfig({
|
|
27925
28334
|
size: '0.875em',
|
|
27926
28335
|
}),
|
|
27927
|
-
], template: "<div class=\"flex flex-row gap-x-
|
|
28336
|
+
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
27928
28337
|
}], propDecorators: { listComponent: [{
|
|
27929
28338
|
type: Input
|
|
27930
28339
|
}] } });
|
|
@@ -28580,17 +28989,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28580
28989
|
|
|
28581
28990
|
class ResultsHitsNumberComponent {
|
|
28582
28991
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28583
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: { hits: "hits", loading: "loading" }, ngImport: i0, template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\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: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28992
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: { hits: "hits", loading: "loading" }, ngImport: i0, template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span data-cy=\"resultsHitsFound\" translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\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: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28584
28993
|
}
|
|
28585
28994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsNumberComponent, decorators: [{
|
|
28586
28995
|
type: Component,
|
|
28587
|
-
args: [{ selector: 'gn-ui-results-hits-number', template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n" }]
|
|
28996
|
+
args: [{ selector: 'gn-ui-results-hits-number', template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span data-cy=\"resultsHitsFound\" translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n" }]
|
|
28588
28997
|
}], propDecorators: { hits: [{
|
|
28589
28998
|
type: Input
|
|
28590
28999
|
}], loading: [{
|
|
28591
29000
|
type: Input
|
|
28592
29001
|
}] } });
|
|
28593
29002
|
|
|
29003
|
+
var KindConfig;
|
|
29004
|
+
(function (KindConfig) {
|
|
29005
|
+
KindConfig["all"] = "iconoirAppleWallet";
|
|
29006
|
+
KindConfig["dataset"] = "iconoirAppleShortcuts";
|
|
29007
|
+
KindConfig["service"] = "iconoirCode";
|
|
29008
|
+
KindConfig["reuse"] = "iconoirCreditCard";
|
|
29009
|
+
})(KindConfig || (KindConfig = {}));
|
|
29010
|
+
class KindBadgeComponent {
|
|
29011
|
+
constructor() {
|
|
29012
|
+
this.hasProjectedContent = false;
|
|
29013
|
+
}
|
|
29014
|
+
get iconKind() {
|
|
29015
|
+
return KindConfig[this.kind] || KindConfig.dataset;
|
|
29016
|
+
}
|
|
29017
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29018
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KindBadgeComponent, isStandalone: true, selector: "gn-ui-kind-badge", inputs: { contentTemplate: "contentTemplate", kind: "kind" }, ngImport: i0, template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"], dependencies: [{ kind: "ngmodule", type: NgIconsModule }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], viewProviders: [
|
|
29019
|
+
provideIcons({
|
|
29020
|
+
iconoirAppleWallet,
|
|
29021
|
+
iconoirAppleShortcuts,
|
|
29022
|
+
iconoirCode,
|
|
29023
|
+
iconoirCreditCard,
|
|
29024
|
+
}),
|
|
29025
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29026
|
+
}
|
|
29027
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, decorators: [{
|
|
29028
|
+
type: Component,
|
|
29029
|
+
args: [{ selector: 'gn-ui-kind-badge', viewProviders: [
|
|
29030
|
+
provideIcons({
|
|
29031
|
+
iconoirAppleWallet,
|
|
29032
|
+
iconoirAppleShortcuts,
|
|
29033
|
+
iconoirCode,
|
|
29034
|
+
iconoirCreditCard,
|
|
29035
|
+
}),
|
|
29036
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIconsModule, CommonModule, BadgeComponent, TranslateModule], template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"] }]
|
|
29037
|
+
}], propDecorators: { contentTemplate: [{
|
|
29038
|
+
type: Input
|
|
29039
|
+
}], kind: [{
|
|
29040
|
+
type: Input
|
|
29041
|
+
}] } });
|
|
29042
|
+
|
|
29043
|
+
class ResultsHitsSearchKindComponent {
|
|
29044
|
+
constructor() {
|
|
29045
|
+
this.selected = [];
|
|
29046
|
+
this.choices = [];
|
|
29047
|
+
this.selectionChanged = new EventEmitter();
|
|
29048
|
+
this.availableChoices = [];
|
|
29049
|
+
}
|
|
29050
|
+
ngOnChanges(changes) {
|
|
29051
|
+
if (changes.choices && changes.choices.currentValue) {
|
|
29052
|
+
this.availableChoices = this.buildFilterChoices(this.choices);
|
|
29053
|
+
}
|
|
29054
|
+
}
|
|
29055
|
+
buildFilterChoices(availableValues) {
|
|
29056
|
+
return [
|
|
29057
|
+
...[
|
|
29058
|
+
{
|
|
29059
|
+
label: 'all',
|
|
29060
|
+
value: 'all',
|
|
29061
|
+
},
|
|
29062
|
+
],
|
|
29063
|
+
...availableValues,
|
|
29064
|
+
];
|
|
29065
|
+
}
|
|
29066
|
+
onSelectedValues(values) {
|
|
29067
|
+
const selectedValues = values.includes('all') ? [] : values;
|
|
29068
|
+
this.selectionChanged.emit(selectedValues);
|
|
29069
|
+
}
|
|
29070
|
+
isSelectedChoice(choiceValue) {
|
|
29071
|
+
return this.selected.includes(choiceValue);
|
|
29072
|
+
}
|
|
29073
|
+
isAllChoice(choiceValue) {
|
|
29074
|
+
return this.selected.length === 0 && choiceValue === 'all';
|
|
29075
|
+
}
|
|
29076
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29077
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ 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: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["contentTemplate", "kind"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29078
|
+
}
|
|
29079
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, decorators: [{
|
|
29080
|
+
type: Component,
|
|
29081
|
+
args: [{ selector: 'gn-ui-results-hits-search-kind', template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
|
|
29082
|
+
}], propDecorators: { selected: [{
|
|
29083
|
+
type: Input
|
|
29084
|
+
}], choices: [{
|
|
29085
|
+
type: Input
|
|
29086
|
+
}], selectionChanged: [{
|
|
29087
|
+
type: Output
|
|
29088
|
+
}] } });
|
|
29089
|
+
|
|
28594
29090
|
marker('record.was.created.time');
|
|
28595
29091
|
class RecordPreviewFeedComponent extends RecordPreviewComponent {
|
|
28596
29092
|
constructor(elementRef, translate) {
|
|
@@ -28754,7 +29250,7 @@ class ApiCardComponent {
|
|
|
28754
29250
|
}
|
|
28755
29251
|
}
|
|
28756
29252
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28757
|
-
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: [
|
|
29253
|
+
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 card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\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 class=\"flex-1 min-w-0\">\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: [
|
|
28758
29254
|
provideIcons({
|
|
28759
29255
|
iconoirSettings,
|
|
28760
29256
|
}),
|
|
@@ -28772,7 +29268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28772
29268
|
provideIcons({
|
|
28773
29269
|
iconoirSettings,
|
|
28774
29270
|
}),
|
|
28775
|
-
], 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" }]
|
|
29271
|
+
], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\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 class=\"flex-1 min-w-0\">\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" }]
|
|
28776
29272
|
}], propDecorators: { link: [{
|
|
28777
29273
|
type: Input
|
|
28778
29274
|
}], currentLink: [{
|
|
@@ -28859,7 +29355,7 @@ class DownloadItemComponent {
|
|
|
28859
29355
|
this.exportUrl.emit(this.link.url.toString());
|
|
28860
29356
|
}
|
|
28861
29357
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28862
|
-
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
|
|
29358
|
+
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 w-full\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col flex-1 justify-between min-w-0\">\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 min-w-0\">\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 whitespace-nowrap\"\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\n class=\"flex min-w-[32px] flex-shrink-0\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\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: [
|
|
28863
29359
|
provideIcons({
|
|
28864
29360
|
iconoirDownload,
|
|
28865
29361
|
}),
|
|
@@ -28871,7 +29367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28871
29367
|
provideIcons({
|
|
28872
29368
|
iconoirDownload,
|
|
28873
29369
|
}),
|
|
28874
|
-
], 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
|
|
29370
|
+
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden w-full\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col flex-1 justify-between min-w-0\">\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 min-w-0\">\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 whitespace-nowrap\"\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\n class=\"flex min-w-[32px] flex-shrink-0\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\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" }]
|
|
28875
29371
|
}], propDecorators: { link: [{
|
|
28876
29372
|
type: Input
|
|
28877
29373
|
}], color: [{
|
|
@@ -28890,10 +29386,18 @@ marker('datahub.search.filter.all');
|
|
|
28890
29386
|
marker('datahub.search.filter.others');
|
|
28891
29387
|
const FILTER_FORMATS = ['all', 'csv', 'excel', 'json', 'shp', 'others'];
|
|
28892
29388
|
class DownloadsListComponent {
|
|
28893
|
-
constructor(translateService) {
|
|
29389
|
+
constructor(translateService, changeDetector) {
|
|
28894
29390
|
this.translateService = translateService;
|
|
29391
|
+
this.changeDetector = changeDetector;
|
|
28895
29392
|
this.activeFilterFormats = ['all'];
|
|
28896
29393
|
}
|
|
29394
|
+
get linksCount() {
|
|
29395
|
+
return this.filteredLinks?.length || 0;
|
|
29396
|
+
}
|
|
29397
|
+
updateList($event) {
|
|
29398
|
+
this._list = $event;
|
|
29399
|
+
this.changeDetector.detectChanges();
|
|
29400
|
+
}
|
|
28897
29401
|
removeDuplicateFormats(links) {
|
|
28898
29402
|
const preferredLinks = new Map();
|
|
28899
29403
|
links.forEach((link) => {
|
|
@@ -28971,18 +29475,20 @@ class DownloadsListComponent {
|
|
|
28971
29475
|
(link.accessServiceProtocol === 'wfs' ||
|
|
28972
29476
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
28973
29477
|
}
|
|
28974
|
-
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 }); }
|
|
28975
|
-
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
|
|
29478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29479
|
+
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 class=\"flex flex-row items-center gap-x-4\">\n <div>\n <span\n class=\"font-title text-xl text-title font-medium text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </span>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n class=\"md:block hidden\"\n *ngIf=\"_list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\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\n<ng-container>\n <gn-ui-block-list\n class=\"md:block hidden\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5 md:hidden block\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"M\"\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: BlockListComponent, selector: "gn-ui-block-list", inputs: ["containerClass", "paginationContainerClass"], outputs: ["listChanges"] }, { 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"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28976
29480
|
}
|
|
28977
29481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
28978
29482
|
type: Component,
|
|
28979
29483
|
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
28980
29484
|
CommonModule,
|
|
28981
29485
|
ButtonComponent,
|
|
29486
|
+
BlockListComponent,
|
|
28982
29487
|
DownloadItemComponent,
|
|
28983
29488
|
TranslateModule,
|
|
28984
|
-
|
|
28985
|
-
}]
|
|
29489
|
+
PreviousNextButtonsComponent,
|
|
29490
|
+
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <span\n class=\"font-title text-xl text-title font-medium text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </span>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n class=\"md:block hidden\"\n *ngIf=\"_list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\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\n<ng-container>\n <gn-ui-block-list\n class=\"md:block hidden\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5 md:hidden block\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
29491
|
+
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { links: [{
|
|
28986
29492
|
type: Input
|
|
28987
29493
|
}] } });
|
|
28988
29494
|
|
|
@@ -29298,7 +29804,7 @@ class LinkCardComponent {
|
|
|
29298
29804
|
matOpenInNew,
|
|
29299
29805
|
}),
|
|
29300
29806
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29301
|
-
], 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
|
|
29807
|
+
], 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 flex-1 min-w-0\">\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\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\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 }); }
|
|
29302
29808
|
}
|
|
29303
29809
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
29304
29810
|
type: Component,
|
|
@@ -29307,7 +29813,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29307
29813
|
matOpenInNew,
|
|
29308
29814
|
}),
|
|
29309
29815
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29310
|
-
], 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
|
|
29816
|
+
], 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 flex-1 min-w-0\">\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\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\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" }]
|
|
29311
29817
|
}], propDecorators: { link: [{
|
|
29312
29818
|
type: Input
|
|
29313
29819
|
}], size: [{
|
|
@@ -29384,7 +29890,7 @@ class MetadataContactComponent {
|
|
|
29384
29890
|
this.organizationClick.emit(this.shownOrganization);
|
|
29385
29891
|
}
|
|
29386
29892
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29387
|
-
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
|
|
29893
|
+
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: [
|
|
29388
29894
|
provideIcons({
|
|
29389
29895
|
matOpenInNew,
|
|
29390
29896
|
matCallOutline,
|
|
@@ -29404,7 +29910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29404
29910
|
matPersonOutline,
|
|
29405
29911
|
matLocationOnOutline,
|
|
29406
29912
|
}),
|
|
29407
|
-
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29913
|
+
], 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" }]
|
|
29408
29914
|
}], propDecorators: { metadata: [{
|
|
29409
29915
|
type: Input
|
|
29410
29916
|
}], organizationClick: [{
|
|
@@ -29489,6 +29995,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29489
29995
|
}]
|
|
29490
29996
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29491
29997
|
|
|
29998
|
+
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
29999
|
+
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
30000
|
+
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
30001
|
+
factory: () => ({}),
|
|
30002
|
+
});
|
|
30003
|
+
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
30004
|
+
factory: () => ({
|
|
30005
|
+
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
30006
|
+
stroke: { color: '#ffcc33', width: 2 },
|
|
30007
|
+
}),
|
|
30008
|
+
});
|
|
30009
|
+
|
|
30010
|
+
const DEFAULT_BASEMAP_LAYER = {
|
|
30011
|
+
type: 'xyz',
|
|
30012
|
+
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
30013
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
30014
|
+
};
|
|
30015
|
+
const DEFAULT_VIEW = {
|
|
30016
|
+
center: [0, 15],
|
|
30017
|
+
zoom: 2,
|
|
30018
|
+
};
|
|
30019
|
+
class MapContainerComponent {
|
|
30020
|
+
get featuresClick() {
|
|
30021
|
+
if (!this._featuresClick) {
|
|
30022
|
+
this.openlayersMap.then((olMap) => {
|
|
30023
|
+
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
30024
|
+
});
|
|
30025
|
+
this._featuresClick = new EventEmitter();
|
|
30026
|
+
}
|
|
30027
|
+
return this._featuresClick;
|
|
30028
|
+
}
|
|
30029
|
+
get featuresHover() {
|
|
30030
|
+
if (!this._featuresHover) {
|
|
30031
|
+
this.openlayersMap.then((olMap) => {
|
|
30032
|
+
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
30033
|
+
});
|
|
30034
|
+
this._featuresHover = new EventEmitter();
|
|
30035
|
+
}
|
|
30036
|
+
return this._featuresHover;
|
|
30037
|
+
}
|
|
30038
|
+
get mapClick() {
|
|
30039
|
+
if (!this._mapClick) {
|
|
30040
|
+
this.openlayersMap.then((olMap) => {
|
|
30041
|
+
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
30042
|
+
});
|
|
30043
|
+
this._mapClick = new EventEmitter();
|
|
30044
|
+
}
|
|
30045
|
+
return this._mapClick;
|
|
30046
|
+
}
|
|
30047
|
+
get sourceLoadError() {
|
|
30048
|
+
if (!this._sourceLoadError) {
|
|
30049
|
+
this.openlayersMap.then((olMap) => {
|
|
30050
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
30051
|
+
});
|
|
30052
|
+
this._sourceLoadError = new EventEmitter();
|
|
30053
|
+
}
|
|
30054
|
+
return this._sourceLoadError;
|
|
30055
|
+
}
|
|
30056
|
+
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
30057
|
+
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
30058
|
+
this.basemapLayers = basemapLayers;
|
|
30059
|
+
this.mapViewConstraints = mapViewConstraints;
|
|
30060
|
+
this.openlayersMap = new Promise((resolve) => {
|
|
30061
|
+
this.olMapResolver = resolve;
|
|
30062
|
+
});
|
|
30063
|
+
}
|
|
30064
|
+
async ngAfterViewInit() {
|
|
30065
|
+
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
30066
|
+
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
|
|
30067
|
+
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
30068
|
+
: of(false)));
|
|
30069
|
+
this.olMapResolver(this.olMap);
|
|
30070
|
+
}
|
|
30071
|
+
async ngOnChanges(changes) {
|
|
30072
|
+
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
30073
|
+
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
30074
|
+
await applyContextDiffToMap(this.olMap, diff);
|
|
30075
|
+
}
|
|
30076
|
+
}
|
|
30077
|
+
// This will apply basemap layers & view constraints
|
|
30078
|
+
processContext(context) {
|
|
30079
|
+
const processed = context
|
|
30080
|
+
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
30081
|
+
: { layers: [], view: DEFAULT_VIEW };
|
|
30082
|
+
if (this.basemapLayers.length) {
|
|
30083
|
+
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
30084
|
+
}
|
|
30085
|
+
if (!this.doNotUseDefaultBasemap) {
|
|
30086
|
+
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
30087
|
+
}
|
|
30088
|
+
if (this.mapViewConstraints.maxZoom) {
|
|
30089
|
+
processed.view = {
|
|
30090
|
+
maxZoom: this.mapViewConstraints.maxZoom,
|
|
30091
|
+
...processed.view,
|
|
30092
|
+
};
|
|
30093
|
+
}
|
|
30094
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
30095
|
+
processed.view = {
|
|
30096
|
+
maxExtent: this.mapViewConstraints.maxExtent,
|
|
30097
|
+
...processed.view,
|
|
30098
|
+
};
|
|
30099
|
+
}
|
|
30100
|
+
if (processed.view &&
|
|
30101
|
+
!('zoom' in processed.view) &&
|
|
30102
|
+
!('center' in processed.view)) {
|
|
30103
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
30104
|
+
processed.view = {
|
|
30105
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
30106
|
+
...processed.view,
|
|
30107
|
+
};
|
|
30108
|
+
}
|
|
30109
|
+
else {
|
|
30110
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
30111
|
+
}
|
|
30112
|
+
}
|
|
30113
|
+
return processed;
|
|
30114
|
+
}
|
|
30115
|
+
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 }); }
|
|
30116
|
+
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: [
|
|
30117
|
+
provideIcons({ matSwipeOutline }),
|
|
30118
|
+
provideNgIconsConfig({
|
|
30119
|
+
size: '1.5em',
|
|
30120
|
+
}),
|
|
30121
|
+
], 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 }); }
|
|
30122
|
+
}
|
|
30123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
30124
|
+
type: Component,
|
|
30125
|
+
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
30126
|
+
provideIcons({ matSwipeOutline }),
|
|
30127
|
+
provideNgIconsConfig({
|
|
30128
|
+
size: '1.5em',
|
|
30129
|
+
}),
|
|
30130
|
+
], 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" }]
|
|
30131
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
30132
|
+
type: Inject,
|
|
30133
|
+
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
30134
|
+
}] }, { type: undefined, decorators: [{
|
|
30135
|
+
type: Inject,
|
|
30136
|
+
args: [BASEMAP_LAYERS]
|
|
30137
|
+
}] }, { type: undefined, decorators: [{
|
|
30138
|
+
type: Inject,
|
|
30139
|
+
args: [MAP_VIEW_CONSTRAINTS]
|
|
30140
|
+
}] }], propDecorators: { context: [{
|
|
30141
|
+
type: Input
|
|
30142
|
+
}], featuresClick: [{
|
|
30143
|
+
type: Output
|
|
30144
|
+
}], featuresHover: [{
|
|
30145
|
+
type: Output
|
|
30146
|
+
}], mapClick: [{
|
|
30147
|
+
type: Output
|
|
30148
|
+
}], sourceLoadError: [{
|
|
30149
|
+
type: Output
|
|
30150
|
+
}], container: [{
|
|
30151
|
+
type: ViewChild,
|
|
30152
|
+
args: ['map']
|
|
30153
|
+
}] } });
|
|
30154
|
+
|
|
30155
|
+
const geometryKeys = ['geometry', 'the_geom'];
|
|
30156
|
+
class FeatureDetailComponent {
|
|
30157
|
+
get properties() {
|
|
30158
|
+
if (!this.feature)
|
|
30159
|
+
return [];
|
|
30160
|
+
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
30161
|
+
}
|
|
30162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30163
|
+
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 }); }
|
|
30164
|
+
}
|
|
30165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
30166
|
+
type: Component,
|
|
30167
|
+
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"] }]
|
|
30168
|
+
}], propDecorators: { feature: [{
|
|
30169
|
+
type: Input
|
|
30170
|
+
}] } });
|
|
30171
|
+
|
|
30172
|
+
class MapLegendComponent {
|
|
30173
|
+
constructor() {
|
|
30174
|
+
this.legendStatusChange = new EventEmitter();
|
|
30175
|
+
}
|
|
30176
|
+
async ngOnChanges(changes) {
|
|
30177
|
+
if ('context' in changes) {
|
|
30178
|
+
const mapContext = changes['context'].currentValue;
|
|
30179
|
+
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
30180
|
+
const mapContextLayer = mapContext.layers[0];
|
|
30181
|
+
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
30182
|
+
if (this.legendHTML) {
|
|
30183
|
+
this.legendStatusChange.emit(true);
|
|
30184
|
+
}
|
|
30185
|
+
}
|
|
30186
|
+
else {
|
|
30187
|
+
this.legendHTML = false;
|
|
30188
|
+
this.legendStatusChange.emit(false);
|
|
30189
|
+
}
|
|
30190
|
+
}
|
|
30191
|
+
}
|
|
30192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30193
|
+
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 }); }
|
|
30194
|
+
}
|
|
30195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
30196
|
+
type: Component,
|
|
30197
|
+
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"] }]
|
|
30198
|
+
}], propDecorators: { context: [{
|
|
30199
|
+
type: Input
|
|
30200
|
+
}], legendStatusChange: [{
|
|
30201
|
+
type: Output
|
|
30202
|
+
}] } });
|
|
30203
|
+
|
|
30204
|
+
function prioritizePageScroll(interactions) {
|
|
30205
|
+
interactions.clear();
|
|
30206
|
+
interactions.extend(defaults({
|
|
30207
|
+
// remove rotate interactions
|
|
30208
|
+
altShiftDragRotate: false,
|
|
30209
|
+
pinchRotate: false,
|
|
30210
|
+
// replace drag and zoom interactions
|
|
30211
|
+
dragPan: false,
|
|
30212
|
+
mouseWheelZoom: false,
|
|
30213
|
+
})
|
|
30214
|
+
.extend([
|
|
30215
|
+
new DragPan({
|
|
30216
|
+
condition: dragPanCondition,
|
|
30217
|
+
}),
|
|
30218
|
+
new MouseWheelZoom({
|
|
30219
|
+
condition: mouseWheelZoomCondition,
|
|
30220
|
+
}),
|
|
30221
|
+
])
|
|
30222
|
+
.getArray());
|
|
30223
|
+
}
|
|
30224
|
+
function dragPanCondition(event) {
|
|
30225
|
+
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
30226
|
+
if (!dragPanCondition) {
|
|
30227
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30228
|
+
}
|
|
30229
|
+
// combine the condition with the default DragPan conditions
|
|
30230
|
+
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
30231
|
+
}
|
|
30232
|
+
function mouseWheelZoomCondition(event) {
|
|
30233
|
+
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
30234
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30235
|
+
}
|
|
30236
|
+
return platformModifierKeyOnly(event);
|
|
30237
|
+
}
|
|
30238
|
+
|
|
30239
|
+
class SpatialExtentComponent {
|
|
30240
|
+
constructor() {
|
|
30241
|
+
this.spatialExtents$ = new BehaviorSubject([]);
|
|
30242
|
+
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
30243
|
+
if (extents.length === 0) {
|
|
30244
|
+
return null; // null extent means default view
|
|
30245
|
+
}
|
|
30246
|
+
const featureCollection = {
|
|
30247
|
+
type: 'FeatureCollection',
|
|
30248
|
+
features: [],
|
|
30249
|
+
};
|
|
30250
|
+
extents.forEach((extent) => {
|
|
30251
|
+
if (extent.geometry) {
|
|
30252
|
+
featureCollection.features.push({
|
|
30253
|
+
type: 'Feature',
|
|
30254
|
+
properties: {},
|
|
30255
|
+
geometry: extent.geometry,
|
|
30256
|
+
});
|
|
30257
|
+
}
|
|
30258
|
+
else if (extent.bbox?.length >= 0) {
|
|
30259
|
+
featureCollection.features.push({
|
|
30260
|
+
type: 'Feature',
|
|
30261
|
+
properties: {},
|
|
30262
|
+
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
30263
|
+
});
|
|
30264
|
+
}
|
|
30265
|
+
});
|
|
30266
|
+
const layer = {
|
|
30267
|
+
type: 'geojson',
|
|
30268
|
+
data: featureCollection,
|
|
30269
|
+
label: 'Spatial extents',
|
|
30270
|
+
style: {
|
|
30271
|
+
'stroke-color': 'black',
|
|
30272
|
+
'stroke-width': 2,
|
|
30273
|
+
},
|
|
30274
|
+
};
|
|
30275
|
+
const view = await createViewFromLayer(layer);
|
|
30276
|
+
return {
|
|
30277
|
+
view,
|
|
30278
|
+
layers: [layer],
|
|
30279
|
+
};
|
|
30280
|
+
}));
|
|
30281
|
+
this.error = '';
|
|
30282
|
+
}
|
|
30283
|
+
set spatialExtents(value) {
|
|
30284
|
+
this.spatialExtents$.next(value);
|
|
30285
|
+
}
|
|
30286
|
+
bboxCoordsToGeometry(bbox) {
|
|
30287
|
+
const geometry = new Polygon([
|
|
30288
|
+
[
|
|
30289
|
+
[bbox[0], bbox[1]],
|
|
30290
|
+
[bbox[0], bbox[3]],
|
|
30291
|
+
[bbox[2], bbox[3]],
|
|
30292
|
+
[bbox[2], bbox[1]],
|
|
30293
|
+
[bbox[0], bbox[1]],
|
|
30294
|
+
],
|
|
30295
|
+
]);
|
|
30296
|
+
return new GeoJSON().writeGeometryObject(geometry);
|
|
30297
|
+
}
|
|
30298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30299
|
+
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"] }] }); }
|
|
30300
|
+
}
|
|
30301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, decorators: [{
|
|
30302
|
+
type: Component,
|
|
30303
|
+
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" }]
|
|
30304
|
+
}], propDecorators: { spatialExtents: [{
|
|
30305
|
+
type: Input
|
|
30306
|
+
}] } });
|
|
30307
|
+
|
|
29492
30308
|
class MetadataInfoComponent {
|
|
29493
30309
|
constructor(dateService) {
|
|
29494
30310
|
this.dateService = dateService;
|
|
@@ -29541,7 +30357,7 @@ class MetadataInfoComponent {
|
|
|
29541
30357
|
}
|
|
29542
30358
|
}
|
|
29543
30359
|
get temporalExtent() {
|
|
29544
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30360
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29545
30361
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29546
30362
|
}
|
|
29547
30363
|
get shownOrganization() {
|
|
@@ -29563,7 +30379,7 @@ class MetadataInfoComponent {
|
|
|
29563
30379
|
return this.dateService.formatDateTime(date);
|
|
29564
30380
|
}
|
|
29565
30381
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29566
|
-
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: [
|
|
30382
|
+
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: [
|
|
29567
30383
|
provideIcons({
|
|
29568
30384
|
matOpenInNew,
|
|
29569
30385
|
matMailOutline: matMailOutline$1,
|
|
@@ -29584,12 +30400,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29584
30400
|
CopyTextButtonComponent,
|
|
29585
30401
|
NgIcon,
|
|
29586
30402
|
GnUiLinkifyDirective,
|
|
30403
|
+
MapContainerComponent,
|
|
30404
|
+
SpatialExtentComponent,
|
|
29587
30405
|
], viewProviders: [
|
|
29588
30406
|
provideIcons({
|
|
29589
30407
|
matOpenInNew,
|
|
29590
30408
|
matMailOutline: matMailOutline$1,
|
|
29591
30409
|
}),
|
|
29592
|
-
], 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"] }]
|
|
30410
|
+
], 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"] }]
|
|
29593
30411
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29594
30412
|
type: Input
|
|
29595
30413
|
}], incomplete: [{
|
|
@@ -29961,7 +30779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29961
30779
|
type: Input
|
|
29962
30780
|
}] } });
|
|
29963
30781
|
|
|
29964
|
-
marker('record.kind.
|
|
30782
|
+
marker('record.kind.data');
|
|
29965
30783
|
marker('record.kind.reuse');
|
|
29966
30784
|
marker('record.kind.service');
|
|
29967
30785
|
class InternalLinkCardComponent {
|
|
@@ -30041,7 +30859,7 @@ class InternalLinkCardComponent {
|
|
|
30041
30859
|
return { text: '', icon: '' };
|
|
30042
30860
|
switch (this.record.kind.toLowerCase()) {
|
|
30043
30861
|
case 'dataset':
|
|
30044
|
-
return { text: 'record.kind.
|
|
30862
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30045
30863
|
case 'reuse':
|
|
30046
30864
|
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30047
30865
|
case 'service':
|
|
@@ -30109,6 +30927,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30109
30927
|
type: Output
|
|
30110
30928
|
}] } });
|
|
30111
30929
|
|
|
30930
|
+
marker(`service.metadata.search`);
|
|
30931
|
+
marker(`service.metadata.capabilities.title`);
|
|
30932
|
+
marker(`service.metadata.capabilities.abstract`);
|
|
30933
|
+
marker(`service.metadata.capabilities.name`);
|
|
30934
|
+
marker(`service.metadata.capabilities.defaultCrs`);
|
|
30935
|
+
marker(`service.metadata.capabilities.availableCrs`);
|
|
30936
|
+
marker(`service.metadata.capabilities.otherCrs`);
|
|
30937
|
+
marker(`service.metadata.capabilities.objectCount`);
|
|
30938
|
+
marker(`service.metadata.capabilities.geometryName`);
|
|
30939
|
+
marker(`service.metadata.capabilities.geometryType`);
|
|
30940
|
+
marker(`service.metadata.capabilities.keywords`);
|
|
30941
|
+
marker(`service.metadata.capabilities.outputFormats`);
|
|
30942
|
+
marker(`service.metadata.capabilities.resourceLinks`);
|
|
30943
|
+
marker(`service.metadata.capabilities.attribution`);
|
|
30944
|
+
class ServiceCapabilitiesComponent {
|
|
30945
|
+
constructor(cdr, translateService) {
|
|
30946
|
+
this.cdr = cdr;
|
|
30947
|
+
this.translateService = translateService;
|
|
30948
|
+
this.apiLinks = [];
|
|
30949
|
+
this.availableLayers = [];
|
|
30950
|
+
this.filteredLayers = [];
|
|
30951
|
+
this.selectedLayer = null;
|
|
30952
|
+
this.layerInformation = [];
|
|
30953
|
+
this.searchQuery = '';
|
|
30954
|
+
this.loading = false;
|
|
30955
|
+
this.capabilitiesKeys = [
|
|
30956
|
+
'title',
|
|
30957
|
+
'abstract',
|
|
30958
|
+
'name',
|
|
30959
|
+
'defaultCrs',
|
|
30960
|
+
'availableCrs',
|
|
30961
|
+
'otherCrs',
|
|
30962
|
+
'objectCount',
|
|
30963
|
+
'geometryName',
|
|
30964
|
+
'geometryType',
|
|
30965
|
+
'keywords',
|
|
30966
|
+
'outputFormats',
|
|
30967
|
+
'resourceLinks',
|
|
30968
|
+
'attribution',
|
|
30969
|
+
];
|
|
30970
|
+
}
|
|
30971
|
+
ngOnInit() {
|
|
30972
|
+
this.loadLayers();
|
|
30973
|
+
}
|
|
30974
|
+
onSearchChange(event) {
|
|
30975
|
+
const input = event.target;
|
|
30976
|
+
this.searchQuery = input.value;
|
|
30977
|
+
if (!input.value) {
|
|
30978
|
+
this.searchActive = false;
|
|
30979
|
+
this.filteredLayers = this.availableLayers;
|
|
30980
|
+
}
|
|
30981
|
+
}
|
|
30982
|
+
onSearchEnter(event) {
|
|
30983
|
+
if (event.key === 'Enter') {
|
|
30984
|
+
this.searchActive = true;
|
|
30985
|
+
this.searchLayers();
|
|
30986
|
+
}
|
|
30987
|
+
}
|
|
30988
|
+
async loadLayers() {
|
|
30989
|
+
if (this.apiLinks.length > 0 &&
|
|
30990
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
30991
|
+
this.loading = true;
|
|
30992
|
+
this.availableLayers = await getLayers(this.apiLinks[0].url.href, this.apiLinks[0].accessServiceProtocol);
|
|
30993
|
+
this.loading = false;
|
|
30994
|
+
this.cdr.detectChanges();
|
|
30995
|
+
this.filteredLayers = this.availableLayers;
|
|
30996
|
+
}
|
|
30997
|
+
else {
|
|
30998
|
+
this.availableLayers = [];
|
|
30999
|
+
}
|
|
31000
|
+
}
|
|
31001
|
+
selectLayer(layer) {
|
|
31002
|
+
if (layer === this.selectedLayer) {
|
|
31003
|
+
this.selectedLayer = null;
|
|
31004
|
+
this.layerInformation = [];
|
|
31005
|
+
return;
|
|
31006
|
+
}
|
|
31007
|
+
this.selectedLayer = layer;
|
|
31008
|
+
const filteredInfo = [];
|
|
31009
|
+
Object.keys(layer).map((key) => {
|
|
31010
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
31011
|
+
const displayName = this.translateService.instant(`service.metadata.capabilities.${key}`);
|
|
31012
|
+
if (key in layer && layer[key]?.length) {
|
|
31013
|
+
filteredInfo.push({ displayName, value: layer[key] });
|
|
31014
|
+
}
|
|
31015
|
+
}
|
|
31016
|
+
});
|
|
31017
|
+
this.layerInformation = filteredInfo;
|
|
31018
|
+
}
|
|
31019
|
+
isList(value) {
|
|
31020
|
+
return Array.isArray(value);
|
|
31021
|
+
}
|
|
31022
|
+
getExtraInputClass() {
|
|
31023
|
+
if (this.searchActive) {
|
|
31024
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary';
|
|
31025
|
+
}
|
|
31026
|
+
return 'h-14 border rounded-lg';
|
|
31027
|
+
}
|
|
31028
|
+
searchLayers() {
|
|
31029
|
+
this.searchActive = true;
|
|
31030
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
31031
|
+
const query = this.searchQuery.toLowerCase();
|
|
31032
|
+
if (layer.title) {
|
|
31033
|
+
return (layer.title.toLowerCase().includes(query) ||
|
|
31034
|
+
layer.abstract?.toLowerCase().includes(query));
|
|
31035
|
+
}
|
|
31036
|
+
else {
|
|
31037
|
+
return layer.name.toLowerCase().includes(query);
|
|
31038
|
+
}
|
|
31039
|
+
});
|
|
31040
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
31041
|
+
this.selectedLayer = null;
|
|
31042
|
+
this.layerInformation = [];
|
|
31043
|
+
}
|
|
31044
|
+
}
|
|
31045
|
+
getExtraClass(layerItem) {
|
|
31046
|
+
return layerItem.title === this.selectedLayer?.title
|
|
31047
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
31048
|
+
: `h-8 rounded-lg`;
|
|
31049
|
+
}
|
|
31050
|
+
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 }); }
|
|
31051
|
+
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: [
|
|
31052
|
+
provideIcons({
|
|
31053
|
+
iconoirSearch,
|
|
31054
|
+
matInfoOutline,
|
|
31055
|
+
}),
|
|
31056
|
+
] }); }
|
|
31057
|
+
}
|
|
31058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, decorators: [{
|
|
31059
|
+
type: Component,
|
|
31060
|
+
args: [{ selector: 'gn-ui-service-capabilities', standalone: true, imports: [
|
|
31061
|
+
CommonModule,
|
|
31062
|
+
TranslateModule,
|
|
31063
|
+
ButtonComponent,
|
|
31064
|
+
TextInputComponent,
|
|
31065
|
+
NgIcon,
|
|
31066
|
+
PopoverComponent,
|
|
31067
|
+
SpinningLoaderComponent,
|
|
31068
|
+
], viewProviders: [
|
|
31069
|
+
provideIcons({
|
|
31070
|
+
iconoirSearch,
|
|
31071
|
+
matInfoOutline,
|
|
31072
|
+
}),
|
|
31073
|
+
], 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" }]
|
|
31074
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { apiLinks: [{
|
|
31075
|
+
type: Input
|
|
31076
|
+
}] } });
|
|
31077
|
+
|
|
30112
31078
|
class UiElementsModule {
|
|
30113
31079
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30114
31080
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -30128,13 +31094,17 @@ class UiElementsModule {
|
|
|
30128
31094
|
TextInputComponent,
|
|
30129
31095
|
ImageInputComponent,
|
|
30130
31096
|
ApplicationBannerComponent,
|
|
30131
|
-
InternalLinkCardComponent
|
|
31097
|
+
InternalLinkCardComponent,
|
|
31098
|
+
ServiceCapabilitiesComponent,
|
|
31099
|
+
KindBadgeComponent], exports: [ThumbnailComponent,
|
|
30132
31100
|
AvatarComponent,
|
|
30133
31101
|
UserPreviewComponent,
|
|
30134
31102
|
MarkdownParserComponent,
|
|
30135
31103
|
ImageInputComponent,
|
|
30136
31104
|
ApplicationBannerComponent,
|
|
30137
|
-
InternalLinkCardComponent
|
|
31105
|
+
InternalLinkCardComponent,
|
|
31106
|
+
ServiceCapabilitiesComponent,
|
|
31107
|
+
KindBadgeComponent] }); }
|
|
30138
31108
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
30139
31109
|
provideNgIconsConfig({
|
|
30140
31110
|
size: '1.5em',
|
|
@@ -30155,7 +31125,9 @@ class UiElementsModule {
|
|
|
30155
31125
|
TextInputComponent,
|
|
30156
31126
|
ImageInputComponent,
|
|
30157
31127
|
ApplicationBannerComponent,
|
|
30158
|
-
InternalLinkCardComponent
|
|
31128
|
+
InternalLinkCardComponent,
|
|
31129
|
+
ServiceCapabilitiesComponent,
|
|
31130
|
+
KindBadgeComponent] }); }
|
|
30159
31131
|
}
|
|
30160
31132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
30161
31133
|
type: NgModule,
|
|
@@ -30181,6 +31153,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30181
31153
|
ImageInputComponent,
|
|
30182
31154
|
ApplicationBannerComponent,
|
|
30183
31155
|
InternalLinkCardComponent,
|
|
31156
|
+
ServiceCapabilitiesComponent,
|
|
31157
|
+
KindBadgeComponent,
|
|
30184
31158
|
],
|
|
30185
31159
|
providers: [
|
|
30186
31160
|
provideNgIconsConfig({
|
|
@@ -30196,6 +31170,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30196
31170
|
ImageInputComponent,
|
|
30197
31171
|
ApplicationBannerComponent,
|
|
30198
31172
|
InternalLinkCardComponent,
|
|
31173
|
+
ServiceCapabilitiesComponent,
|
|
31174
|
+
KindBadgeComponent,
|
|
30199
31175
|
],
|
|
30200
31176
|
}]
|
|
30201
31177
|
}] });
|
|
@@ -30277,6 +31253,7 @@ class UiSearchModule {
|
|
|
30277
31253
|
RecordMetricComponent,
|
|
30278
31254
|
ResultsListComponent,
|
|
30279
31255
|
ResultsHitsNumberComponent,
|
|
31256
|
+
ResultsHitsSearchKindComponent,
|
|
30280
31257
|
ResultsListItemComponent,
|
|
30281
31258
|
RecordPreviewFeedComponent,
|
|
30282
31259
|
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
@@ -30290,7 +31267,8 @@ class UiSearchModule {
|
|
|
30290
31267
|
UiElementsModule,
|
|
30291
31268
|
MatCheckboxModule,
|
|
30292
31269
|
RouterLink,
|
|
30293
|
-
InteractiveTableComponent, i2$2.NgIconsModule,
|
|
31270
|
+
InteractiveTableComponent, i2$2.NgIconsModule, KindBadgeComponent,
|
|
31271
|
+
MetadataQualityComponent], exports: [RecordPreviewListComponent,
|
|
30294
31272
|
RecordPreviewCardComponent,
|
|
30295
31273
|
RecordPreviewTextComponent,
|
|
30296
31274
|
RecordPreviewTitleComponent,
|
|
@@ -30299,6 +31277,7 @@ class UiSearchModule {
|
|
|
30299
31277
|
FacetsModule$1,
|
|
30300
31278
|
RecordPreviewComponent,
|
|
30301
31279
|
ResultsHitsNumberComponent,
|
|
31280
|
+
ResultsHitsSearchKindComponent,
|
|
30302
31281
|
RecordPreviewFeedComponent,
|
|
30303
31282
|
RecordPreviewRowComponent] }); }
|
|
30304
31283
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, providers: [
|
|
@@ -30326,6 +31305,7 @@ class UiSearchModule {
|
|
|
30326
31305
|
matFace,
|
|
30327
31306
|
matHomeWorkOutline,
|
|
30328
31307
|
}),
|
|
31308
|
+
KindBadgeComponent,
|
|
30329
31309
|
MetadataQualityComponent, FacetsModule$1] }); }
|
|
30330
31310
|
}
|
|
30331
31311
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
@@ -30340,6 +31320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30340
31320
|
RecordMetricComponent,
|
|
30341
31321
|
ResultsListComponent,
|
|
30342
31322
|
ResultsHitsNumberComponent,
|
|
31323
|
+
ResultsHitsSearchKindComponent,
|
|
30343
31324
|
ResultsListItemComponent,
|
|
30344
31325
|
RecordPreviewFeedComponent,
|
|
30345
31326
|
RecordPreviewRowComponent,
|
|
@@ -30366,6 +31347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30366
31347
|
matFace,
|
|
30367
31348
|
matHomeWorkOutline,
|
|
30368
31349
|
}),
|
|
31350
|
+
KindBadgeComponent,
|
|
30369
31351
|
MetadataQualityComponent,
|
|
30370
31352
|
],
|
|
30371
31353
|
exports: [
|
|
@@ -30378,6 +31360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30378
31360
|
FacetsModule$1,
|
|
30379
31361
|
RecordPreviewComponent,
|
|
30380
31362
|
ResultsHitsNumberComponent,
|
|
31363
|
+
ResultsHitsSearchKindComponent,
|
|
30381
31364
|
RecordPreviewFeedComponent,
|
|
30382
31365
|
RecordPreviewRowComponent,
|
|
30383
31366
|
],
|
|
@@ -30536,8 +31519,9 @@ class ResultsTableComponent {
|
|
|
30536
31519
|
return getBadgeColor(format);
|
|
30537
31520
|
}
|
|
30538
31521
|
handleRecordClick(item) {
|
|
30539
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31522
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30540
31523
|
this.recordClick.emit(item);
|
|
31524
|
+
}
|
|
30541
31525
|
}
|
|
30542
31526
|
handleDuplicate(item) {
|
|
30543
31527
|
this.duplicateRecord.emit(item);
|
|
@@ -30574,7 +31558,7 @@ class ResultsTableComponent {
|
|
|
30574
31558
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30575
31559
|
}
|
|
30576
31560
|
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 }); }
|
|
30577
|
-
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'
|
|
31561
|
+
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"] }] }); }
|
|
30578
31562
|
}
|
|
30579
31563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30580
31564
|
type: Component,
|
|
@@ -30588,7 +31572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30588
31572
|
ActionMenuComponent,
|
|
30589
31573
|
NgIconComponent,
|
|
30590
31574
|
CdkOverlayOrigin,
|
|
30591
|
-
], 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'
|
|
31575
|
+
], 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" }]
|
|
30592
31576
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30593
31577
|
type: Input
|
|
30594
31578
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31619,9 +32603,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31619
32603
|
type: Injectable
|
|
31620
32604
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31621
32605
|
|
|
31622
|
-
class RecordsRepositoryInterface {
|
|
31623
|
-
}
|
|
31624
|
-
|
|
31625
32606
|
class FuzzySearchComponent {
|
|
31626
32607
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31627
32608
|
this.searchFacade = searchFacade;
|
|
@@ -31760,7 +32741,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31760
32741
|
}] }] });
|
|
31761
32742
|
|
|
31762
32743
|
// expects the replacement key ${uuid}
|
|
31763
|
-
const
|
|
32744
|
+
const RECORD_DATASET_URL_TOKEN = new InjectionToken('record-dataset-url-token');
|
|
32745
|
+
const RECORD_SERVICE_URL_TOKEN = new InjectionToken('record-service-url-token');
|
|
32746
|
+
const RECORD_REUSE_URL_TOKEN = new InjectionToken('record-reuse-url-token');
|
|
31764
32747
|
|
|
31765
32748
|
class FavoriteStarComponent {
|
|
31766
32749
|
set record(value) {
|
|
@@ -31787,9 +32770,10 @@ class FavoriteStarComponent {
|
|
|
31787
32770
|
this.isAnonymous$ = this.platformService.isAnonymous();
|
|
31788
32771
|
this.loading = false;
|
|
31789
32772
|
this.loginUrl = this.authService.loginUrl;
|
|
31790
|
-
this.loginMessage$ = this.translateService.
|
|
32773
|
+
this.loginMessage$ = this.translateService.onLangChange.pipe(startWith(null), // make sure to wait for translations to be loaded with and without language change
|
|
32774
|
+
switchMap$1(() => this.translateService.get('favorite.not.authenticated.tooltip', {
|
|
31791
32775
|
link: this.loginUrl,
|
|
31792
|
-
});
|
|
32776
|
+
})));
|
|
31793
32777
|
}
|
|
31794
32778
|
ngAfterViewInit() {
|
|
31795
32779
|
this.subscription = this.isAnonymous$
|
|
@@ -31845,11 +32829,11 @@ class FavoriteStarComponent {
|
|
|
31845
32829
|
});
|
|
31846
32830
|
}
|
|
31847
32831
|
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 }); }
|
|
31848
|
-
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
|
|
32832
|
+
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 }); }
|
|
31849
32833
|
}
|
|
31850
32834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31851
32835
|
type: Component,
|
|
31852
|
-
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 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
|
|
32836
|
+
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" }]
|
|
31853
32837
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31854
32838
|
type: Input
|
|
31855
32839
|
}], record: [{
|
|
@@ -31860,10 +32844,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31860
32844
|
}] } });
|
|
31861
32845
|
|
|
31862
32846
|
class ResultsListContainerComponent {
|
|
31863
|
-
constructor(facade, resultsLayoutConfig,
|
|
32847
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31864
32848
|
this.facade = facade;
|
|
31865
32849
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31866
|
-
this.
|
|
32850
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32851
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32852
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31867
32853
|
this.showMore = 'auto';
|
|
31868
32854
|
this.mdSelect = new EventEmitter();
|
|
31869
32855
|
this.errorTypes = ErrorType;
|
|
@@ -31895,16 +32881,24 @@ class ResultsListContainerComponent {
|
|
|
31895
32881
|
this.facade.scroll();
|
|
31896
32882
|
}
|
|
31897
32883
|
getRecordUrl(metadata) {
|
|
31898
|
-
|
|
32884
|
+
const tokenMap = {
|
|
32885
|
+
dataset: this.recordDatasetUrlTemplate,
|
|
32886
|
+
service: this.recordServiceUrlTemplate,
|
|
32887
|
+
reuse: this.recordReuseUrlTemplate,
|
|
32888
|
+
};
|
|
32889
|
+
if (!this.recordDatasetUrlTemplate &&
|
|
32890
|
+
!this.recordServiceUrlTemplate &&
|
|
32891
|
+
!this.recordReuseUrlTemplate)
|
|
31899
32892
|
return null;
|
|
31900
|
-
|
|
32893
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32894
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31901
32895
|
}
|
|
31902
|
-
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:
|
|
31903
|
-
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" }] }); }
|
|
32896
|
+
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 }); }
|
|
32897
|
+
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" }] }); }
|
|
31904
32898
|
}
|
|
31905
32899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31906
32900
|
type: Component,
|
|
31907
|
-
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" }]
|
|
32901
|
+
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"] }]
|
|
31908
32902
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31909
32903
|
type: Inject,
|
|
31910
32904
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31912,7 +32906,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31912
32906
|
type: Optional
|
|
31913
32907
|
}, {
|
|
31914
32908
|
type: Inject,
|
|
31915
|
-
args: [
|
|
32909
|
+
args: [RECORD_DATASET_URL_TOKEN]
|
|
32910
|
+
}] }, { type: undefined, decorators: [{
|
|
32911
|
+
type: Inject,
|
|
32912
|
+
args: [RECORD_SERVICE_URL_TOKEN]
|
|
32913
|
+
}] }, { type: undefined, decorators: [{
|
|
32914
|
+
type: Inject,
|
|
32915
|
+
args: [RECORD_REUSE_URL_TOKEN]
|
|
31916
32916
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31917
32917
|
type: Input
|
|
31918
32918
|
}], layout: [{
|
|
@@ -32110,41 +33110,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32110
33110
|
args: [FILTER_GEOMETRY]
|
|
32111
33111
|
}] }] });
|
|
32112
33112
|
|
|
32113
|
-
class ResultsHitsContainerComponent {
|
|
32114
|
-
constructor(facade) {
|
|
32115
|
-
this.facade = facade;
|
|
32116
|
-
}
|
|
32117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, deps: [{ token: SearchFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsContainerComponent, selector: "gn-ui-results-hits", ngImport: i0, template: "<gn-ui-results-hits-number\n [loading]=\"facade.isLoading$ | async\"\n [hits]=\"facade.resultsHits$ | async\"\n></gn-ui-results-hits-number>\n", dependencies: [{ kind: "component", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: ["hits", "loading"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32119
|
-
}
|
|
32120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, decorators: [{
|
|
32121
|
-
type: Component,
|
|
32122
|
-
args: [{ selector: 'gn-ui-results-hits', template: "<gn-ui-results-hits-number\n [loading]=\"facade.isLoading$ | async\"\n [hits]=\"facade.resultsHits$ | async\"\n></gn-ui-results-hits-number>\n" }]
|
|
32123
|
-
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
32124
|
-
|
|
32125
|
-
class SearchStateContainerDirective {
|
|
32126
|
-
constructor(facade) {
|
|
32127
|
-
this.facade = facade;
|
|
32128
|
-
}
|
|
32129
|
-
ngOnInit() {
|
|
32130
|
-
this.facade.init(this.searchId);
|
|
32131
|
-
}
|
|
32132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, deps: [{ token: SearchFacade, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
32133
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SearchStateContainerDirective, selector: "[gnUiSearchStateContainer]", inputs: { searchId: ["gnUiSearchStateContainer", "searchId"] }, providers: [SearchFacade, SearchService], ngImport: i0 }); }
|
|
32134
|
-
}
|
|
32135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, decorators: [{
|
|
32136
|
-
type: Directive,
|
|
32137
|
-
args: [{
|
|
32138
|
-
selector: '[gnUiSearchStateContainer]',
|
|
32139
|
-
providers: [SearchFacade, SearchService],
|
|
32140
|
-
}]
|
|
32141
|
-
}], ctorParameters: () => [{ type: SearchFacade, decorators: [{
|
|
32142
|
-
type: Host
|
|
32143
|
-
}] }], propDecorators: { searchId: [{
|
|
32144
|
-
type: Input,
|
|
32145
|
-
args: ['gnUiSearchStateContainer']
|
|
32146
|
-
}] } });
|
|
32147
|
-
|
|
32148
33113
|
class AbstractSearchField {
|
|
32149
33114
|
}
|
|
32150
33115
|
class SimpleSearchField {
|
|
@@ -32175,6 +33140,7 @@ class SimpleSearchField {
|
|
|
32175
33140
|
const bucketPromises = buckets.map(async (bucket) => ({
|
|
32176
33141
|
label: `${await this.getBucketLabel(bucket)} (${bucket.count})`,
|
|
32177
33142
|
value: bucket.term.toString(),
|
|
33143
|
+
count: bucket.count,
|
|
32178
33144
|
}));
|
|
32179
33145
|
return Promise.all(bucketPromises);
|
|
32180
33146
|
}));
|
|
@@ -32500,6 +33466,73 @@ class AvailableServicesField extends SimpleSearchField {
|
|
|
32500
33466
|
return of(values);
|
|
32501
33467
|
}
|
|
32502
33468
|
}
|
|
33469
|
+
/**
|
|
33470
|
+
* This class is meant to be used with the legacy filter on `resourceType` (now deprecated, the use of `recordKind` field is recommended).
|
|
33471
|
+
* Since creating filters on the same ES field is not possible, in order to make the resource type filter still working,
|
|
33472
|
+
* we create an ES on the fly: `resourceTypeLegacy` that references the `resourceType` under the hood.
|
|
33473
|
+
* @deprecated Use `recordKind` field instead.
|
|
33474
|
+
*/
|
|
33475
|
+
class ResourceTypeLegacyField extends TranslatedSearchField {
|
|
33476
|
+
constructor(injector) {
|
|
33477
|
+
super('resourceTypeLegacy', injector, 'asc');
|
|
33478
|
+
// Ask ES to create a field on the fly: 'resourceTypeLegacy' that is in fact, 'resourceType'
|
|
33479
|
+
this.esService.registerRuntimeField('resourceTypeLegacy', `for (resourceType in doc.resourceType) { emit(resourceType) }`);
|
|
33480
|
+
}
|
|
33481
|
+
}
|
|
33482
|
+
class RecordKindField extends SimpleSearchField {
|
|
33483
|
+
constructor(injector) {
|
|
33484
|
+
super('resourceType', injector, 'asc');
|
|
33485
|
+
this.TYPE_MAPPING = {
|
|
33486
|
+
dataset: ['dataset', 'series', 'featureCatalog'],
|
|
33487
|
+
service: ['service'],
|
|
33488
|
+
reuse: Object.entries(PossibleResourceTypes)
|
|
33489
|
+
.filter(([_, v]) => v === 'reuse')
|
|
33490
|
+
.map(([k]) => k), // = ['application', 'map', 'staticMap', 'interactiveMap', ...]
|
|
33491
|
+
};
|
|
33492
|
+
}
|
|
33493
|
+
getAvailableValues() {
|
|
33494
|
+
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), map$1((buckets) => {
|
|
33495
|
+
const counts = buckets.reduce((acc, { term, count }) => {
|
|
33496
|
+
const value = term.toString();
|
|
33497
|
+
const key = this.TYPE_MAPPING.reuse.includes(value)
|
|
33498
|
+
? 'reuse'
|
|
33499
|
+
: this.TYPE_MAPPING.dataset.includes(value)
|
|
33500
|
+
? 'dataset'
|
|
33501
|
+
: value;
|
|
33502
|
+
acc[key] = (acc[key] || 0) + count;
|
|
33503
|
+
return acc;
|
|
33504
|
+
}, {});
|
|
33505
|
+
return Object.keys(this.TYPE_MAPPING).map((type) => ({
|
|
33506
|
+
label: type,
|
|
33507
|
+
value: type,
|
|
33508
|
+
count: counts[type] ?? 0,
|
|
33509
|
+
}));
|
|
33510
|
+
}));
|
|
33511
|
+
}
|
|
33512
|
+
getFiltersForValues(values) {
|
|
33513
|
+
const filters = {
|
|
33514
|
+
[this.esFieldName]: values.reduce((acc, value) => {
|
|
33515
|
+
if (value === '')
|
|
33516
|
+
return { ...acc, [value]: true };
|
|
33517
|
+
const keysToAdd = this.TYPE_MAPPING[value] || [value];
|
|
33518
|
+
keysToAdd.forEach((key) => (acc[key] = true));
|
|
33519
|
+
return acc;
|
|
33520
|
+
}, {}),
|
|
33521
|
+
};
|
|
33522
|
+
return of(filters);
|
|
33523
|
+
}
|
|
33524
|
+
getValuesForFilter(filters) {
|
|
33525
|
+
const filter = filters[this.esFieldName];
|
|
33526
|
+
if (!filter)
|
|
33527
|
+
return of([]);
|
|
33528
|
+
const activeValues = Object.keys(filter).filter((v) => filter[v]);
|
|
33529
|
+
const activeTypes = Object.keys(this.TYPE_MAPPING).filter((type) => this.TYPE_MAPPING[type].every((t) => activeValues.includes(t)));
|
|
33530
|
+
// Allow unknown values eg. 'type=somethingnotexist' (for UI to select none)
|
|
33531
|
+
const allTypes = [].concat(...Object.values(this.TYPE_MAPPING));
|
|
33532
|
+
const unknownValues = activeValues.filter((value) => !allTypes.includes(value));
|
|
33533
|
+
return of([...activeTypes, ...unknownValues]);
|
|
33534
|
+
}
|
|
33535
|
+
}
|
|
32503
33536
|
|
|
32504
33537
|
marker('search.filters.format');
|
|
32505
33538
|
marker('search.filters.inspireKeyword');
|
|
@@ -32526,7 +33559,8 @@ class FieldsService {
|
|
|
32526
33559
|
this.fields = {
|
|
32527
33560
|
organization: new OrganizationSearchField(this.injector),
|
|
32528
33561
|
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
32529
|
-
resourceType: new
|
|
33562
|
+
resourceType: new ResourceTypeLegacyField(this.injector), // Deprecated, use `recordKind` instead
|
|
33563
|
+
recordKind: new RecordKindField(this.injector),
|
|
32530
33564
|
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
32531
33565
|
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
32532
33566
|
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
@@ -32584,6 +33618,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32584
33618
|
}]
|
|
32585
33619
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
32586
33620
|
|
|
33621
|
+
marker('search.filters.recordKind.all');
|
|
33622
|
+
marker('search.filters.recordKind.dataset');
|
|
33623
|
+
marker('search.filters.recordKind.service');
|
|
33624
|
+
marker('search.filters.recordKind.reuse');
|
|
33625
|
+
class ResultsHitsContainerComponent {
|
|
33626
|
+
constructor(searchFacade, searchService, fieldsService) {
|
|
33627
|
+
this.searchFacade = searchFacade;
|
|
33628
|
+
this.searchService = searchService;
|
|
33629
|
+
this.fieldsService = fieldsService;
|
|
33630
|
+
this.fieldName = 'recordKind';
|
|
33631
|
+
}
|
|
33632
|
+
ngOnInit() {
|
|
33633
|
+
this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$2((fieldValues) => fieldValues[this.fieldName]), filter$1((selected) => !!selected), startWith$1([]), catchError$1(() => of([])));
|
|
33634
|
+
this.filterChoices$ = (this.fieldsService.getAvailableValues(this.fieldName));
|
|
33635
|
+
}
|
|
33636
|
+
onSelectionChanged(values) {
|
|
33637
|
+
this.fieldsService
|
|
33638
|
+
.buildFiltersFromFieldValues({ [this.fieldName]: values })
|
|
33639
|
+
.subscribe((filters) => this.searchService.updateFilters(filters));
|
|
33640
|
+
}
|
|
33641
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33642
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsContainerComponent, selector: "gn-ui-results-hits", ngImport: i0, template: "<div\n class=\"flex flex-col gap-3 sm:flex-row justify-between\"\n [ngClass]=\"{\n 'sm:items-center': (searchFacade.resultsHits$ | async) !== 0,\n }\"\n>\n <gn-ui-results-hits-number\n [loading]=\"searchFacade.isLoading$ | async\"\n [hits]=\"searchFacade.resultsHits$ | async\"\n ></gn-ui-results-hits-number>\n <gn-ui-results-hits-search-kind\n (selectionChanged)=\"onSelectionChanged($event)\"\n [choices]=\"filterChoices$ | async\"\n [selected]=\"selected$ | async\"\n ></gn-ui-results-hits-search-kind>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: ["hits", "loading"] }, { kind: "component", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: ["selected", "choices"], outputs: ["selectionChanged"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
33643
|
+
}
|
|
33644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, decorators: [{
|
|
33645
|
+
type: Component,
|
|
33646
|
+
args: [{ selector: 'gn-ui-results-hits', template: "<div\n class=\"flex flex-col gap-3 sm:flex-row justify-between\"\n [ngClass]=\"{\n 'sm:items-center': (searchFacade.resultsHits$ | async) !== 0,\n }\"\n>\n <gn-ui-results-hits-number\n [loading]=\"searchFacade.isLoading$ | async\"\n [hits]=\"searchFacade.resultsHits$ | async\"\n ></gn-ui-results-hits-number>\n <gn-ui-results-hits-search-kind\n (selectionChanged)=\"onSelectionChanged($event)\"\n [choices]=\"filterChoices$ | async\"\n [selected]=\"selected$ | async\"\n ></gn-ui-results-hits-search-kind>\n</div>\n" }]
|
|
33647
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: FieldsService }] });
|
|
33648
|
+
|
|
33649
|
+
class SearchStateContainerDirective {
|
|
33650
|
+
constructor(facade) {
|
|
33651
|
+
this.facade = facade;
|
|
33652
|
+
}
|
|
33653
|
+
ngOnInit() {
|
|
33654
|
+
this.facade.init(this.searchId);
|
|
33655
|
+
}
|
|
33656
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, deps: [{ token: SearchFacade, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
33657
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SearchStateContainerDirective, selector: "[gnUiSearchStateContainer]", inputs: { searchId: ["gnUiSearchStateContainer", "searchId"] }, providers: [SearchFacade, SearchService], ngImport: i0 }); }
|
|
33658
|
+
}
|
|
33659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, decorators: [{
|
|
33660
|
+
type: Directive,
|
|
33661
|
+
args: [{
|
|
33662
|
+
selector: '[gnUiSearchStateContainer]',
|
|
33663
|
+
providers: [SearchFacade, SearchService],
|
|
33664
|
+
}]
|
|
33665
|
+
}], ctorParameters: () => [{ type: SearchFacade, decorators: [{
|
|
33666
|
+
type: Host
|
|
33667
|
+
}] }], propDecorators: { searchId: [{
|
|
33668
|
+
type: Input,
|
|
33669
|
+
args: ['gnUiSearchStateContainer']
|
|
33670
|
+
}] } });
|
|
33671
|
+
|
|
32587
33672
|
class FilterDropdownComponent {
|
|
32588
33673
|
onSelectedValues(values) {
|
|
32589
33674
|
this.fieldsService
|
|
@@ -32655,7 +33740,9 @@ class FeatureSearchModule {
|
|
|
32655
33740
|
SpinningLoaderComponent,
|
|
32656
33741
|
ErrorComponent,
|
|
32657
33742
|
FavoriteStarComponent,
|
|
32658
|
-
DateRangeDropdownComponent
|
|
33743
|
+
DateRangeDropdownComponent,
|
|
33744
|
+
NgIconsModule,
|
|
33745
|
+
KindBadgeComponent], exports: [SortByComponent,
|
|
32659
33746
|
ResultsLayoutComponent,
|
|
32660
33747
|
FuzzySearchComponent,
|
|
32661
33748
|
RecordsMetricsComponent,
|
|
@@ -32664,12 +33751,7 @@ class FeatureSearchModule {
|
|
|
32664
33751
|
FacetsModule,
|
|
32665
33752
|
SearchStateContainerDirective,
|
|
32666
33753
|
FilterDropdownComponent] }); }
|
|
32667
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32668
|
-
{
|
|
32669
|
-
provide: RecordsRepositoryInterface,
|
|
32670
|
-
useClass: Gn4Repository,
|
|
32671
|
-
},
|
|
32672
|
-
], imports: [CommonModule,
|
|
33754
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32673
33755
|
TranslateModule.forChild(),
|
|
32674
33756
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32675
33757
|
initialState,
|
|
@@ -32685,7 +33767,9 @@ class FeatureSearchModule {
|
|
|
32685
33767
|
AutocompleteComponent,
|
|
32686
33768
|
ErrorComponent,
|
|
32687
33769
|
FavoriteStarComponent,
|
|
32688
|
-
DateRangeDropdownComponent,
|
|
33770
|
+
DateRangeDropdownComponent,
|
|
33771
|
+
NgIconsModule,
|
|
33772
|
+
KindBadgeComponent, FacetsModule] }); }
|
|
32689
33773
|
}
|
|
32690
33774
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, decorators: [{
|
|
32691
33775
|
type: NgModule,
|
|
@@ -32719,6 +33803,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32719
33803
|
ErrorComponent,
|
|
32720
33804
|
FavoriteStarComponent,
|
|
32721
33805
|
DateRangeDropdownComponent,
|
|
33806
|
+
NgIconsModule,
|
|
33807
|
+
KindBadgeComponent,
|
|
32722
33808
|
],
|
|
32723
33809
|
exports: [
|
|
32724
33810
|
SortByComponent,
|
|
@@ -32731,12 +33817,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32731
33817
|
SearchStateContainerDirective,
|
|
32732
33818
|
FilterDropdownComponent,
|
|
32733
33819
|
],
|
|
32734
|
-
providers: [
|
|
32735
|
-
{
|
|
32736
|
-
provide: RecordsRepositoryInterface,
|
|
32737
|
-
useClass: Gn4Repository,
|
|
32738
|
-
},
|
|
32739
|
-
],
|
|
32740
33820
|
}]
|
|
32741
33821
|
}] });
|
|
32742
33822
|
|
|
@@ -33224,247 +34304,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33224
34304
|
}]
|
|
33225
34305
|
}] });
|
|
33226
34306
|
|
|
33227
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
33228
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
33229
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
33230
|
-
factory: () => ({}),
|
|
33231
|
-
});
|
|
33232
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
33233
|
-
factory: () => ({
|
|
33234
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
33235
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
33236
|
-
}),
|
|
33237
|
-
});
|
|
33238
|
-
|
|
33239
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
33240
|
-
type: 'xyz',
|
|
33241
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
33242
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
33243
|
-
};
|
|
33244
|
-
const DEFAULT_VIEW = {
|
|
33245
|
-
center: [0, 15],
|
|
33246
|
-
zoom: 2,
|
|
33247
|
-
};
|
|
33248
|
-
class MapContainerComponent {
|
|
33249
|
-
get featuresClick() {
|
|
33250
|
-
if (!this._featuresClick) {
|
|
33251
|
-
this.openlayersMap.then((olMap) => {
|
|
33252
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
33253
|
-
});
|
|
33254
|
-
this._featuresClick = new EventEmitter();
|
|
33255
|
-
}
|
|
33256
|
-
return this._featuresClick;
|
|
33257
|
-
}
|
|
33258
|
-
get featuresHover() {
|
|
33259
|
-
if (!this._featuresHover) {
|
|
33260
|
-
this.openlayersMap.then((olMap) => {
|
|
33261
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
33262
|
-
});
|
|
33263
|
-
this._featuresHover = new EventEmitter();
|
|
33264
|
-
}
|
|
33265
|
-
return this._featuresHover;
|
|
33266
|
-
}
|
|
33267
|
-
get mapClick() {
|
|
33268
|
-
if (!this._mapClick) {
|
|
33269
|
-
this.openlayersMap.then((olMap) => {
|
|
33270
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
33271
|
-
});
|
|
33272
|
-
this._mapClick = new EventEmitter();
|
|
33273
|
-
}
|
|
33274
|
-
return this._mapClick;
|
|
33275
|
-
}
|
|
33276
|
-
get sourceLoadError() {
|
|
33277
|
-
if (!this._sourceLoadError) {
|
|
33278
|
-
this.openlayersMap.then((olMap) => {
|
|
33279
|
-
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33280
|
-
});
|
|
33281
|
-
this._sourceLoadError = new EventEmitter();
|
|
33282
|
-
}
|
|
33283
|
-
return this._sourceLoadError;
|
|
33284
|
-
}
|
|
33285
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
33286
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
33287
|
-
this.basemapLayers = basemapLayers;
|
|
33288
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
33289
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
33290
|
-
this.olMapResolver = resolve;
|
|
33291
|
-
});
|
|
33292
|
-
}
|
|
33293
|
-
async ngAfterViewInit() {
|
|
33294
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33295
|
-
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
|
|
33296
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33297
|
-
: of(false)));
|
|
33298
|
-
this.olMapResolver(this.olMap);
|
|
33299
|
-
}
|
|
33300
|
-
async ngOnChanges(changes) {
|
|
33301
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33302
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33303
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33304
|
-
}
|
|
33305
|
-
}
|
|
33306
|
-
// This will apply basemap layers & view constraints
|
|
33307
|
-
processContext(context) {
|
|
33308
|
-
const processed = context
|
|
33309
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33310
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33311
|
-
if (this.basemapLayers.length) {
|
|
33312
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33313
|
-
}
|
|
33314
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33315
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33316
|
-
}
|
|
33317
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33318
|
-
processed.view = {
|
|
33319
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33320
|
-
...processed.view,
|
|
33321
|
-
};
|
|
33322
|
-
}
|
|
33323
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33324
|
-
processed.view = {
|
|
33325
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33326
|
-
...processed.view,
|
|
33327
|
-
};
|
|
33328
|
-
}
|
|
33329
|
-
if (processed.view &&
|
|
33330
|
-
!('zoom' in processed.view) &&
|
|
33331
|
-
!('center' in processed.view)) {
|
|
33332
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33333
|
-
processed.view = {
|
|
33334
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33335
|
-
...processed.view,
|
|
33336
|
-
};
|
|
33337
|
-
}
|
|
33338
|
-
else {
|
|
33339
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33340
|
-
}
|
|
33341
|
-
}
|
|
33342
|
-
return processed;
|
|
33343
|
-
}
|
|
33344
|
-
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 }); }
|
|
33345
|
-
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: [
|
|
33346
|
-
provideIcons({ matSwipeOutline }),
|
|
33347
|
-
provideNgIconsConfig({
|
|
33348
|
-
size: '1.5em',
|
|
33349
|
-
}),
|
|
33350
|
-
], 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 }); }
|
|
33351
|
-
}
|
|
33352
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33353
|
-
type: Component,
|
|
33354
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33355
|
-
provideIcons({ matSwipeOutline }),
|
|
33356
|
-
provideNgIconsConfig({
|
|
33357
|
-
size: '1.5em',
|
|
33358
|
-
}),
|
|
33359
|
-
], 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" }]
|
|
33360
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33361
|
-
type: Inject,
|
|
33362
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33363
|
-
}] }, { type: undefined, decorators: [{
|
|
33364
|
-
type: Inject,
|
|
33365
|
-
args: [BASEMAP_LAYERS]
|
|
33366
|
-
}] }, { type: undefined, decorators: [{
|
|
33367
|
-
type: Inject,
|
|
33368
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33369
|
-
}] }], propDecorators: { context: [{
|
|
33370
|
-
type: Input
|
|
33371
|
-
}], featuresClick: [{
|
|
33372
|
-
type: Output
|
|
33373
|
-
}], featuresHover: [{
|
|
33374
|
-
type: Output
|
|
33375
|
-
}], mapClick: [{
|
|
33376
|
-
type: Output
|
|
33377
|
-
}], sourceLoadError: [{
|
|
33378
|
-
type: Output
|
|
33379
|
-
}], container: [{
|
|
33380
|
-
type: ViewChild,
|
|
33381
|
-
args: ['map']
|
|
33382
|
-
}] } });
|
|
33383
|
-
|
|
33384
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33385
|
-
class FeatureDetailComponent {
|
|
33386
|
-
get properties() {
|
|
33387
|
-
if (!this.feature)
|
|
33388
|
-
return [];
|
|
33389
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33390
|
-
}
|
|
33391
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33392
|
-
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 }); }
|
|
33393
|
-
}
|
|
33394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33395
|
-
type: Component,
|
|
33396
|
-
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"] }]
|
|
33397
|
-
}], propDecorators: { feature: [{
|
|
33398
|
-
type: Input
|
|
33399
|
-
}] } });
|
|
33400
|
-
|
|
33401
|
-
class MapLegendComponent {
|
|
33402
|
-
constructor() {
|
|
33403
|
-
this.legendStatusChange = new EventEmitter();
|
|
33404
|
-
}
|
|
33405
|
-
async ngOnChanges(changes) {
|
|
33406
|
-
if ('context' in changes) {
|
|
33407
|
-
const mapContext = changes['context'].currentValue;
|
|
33408
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33409
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33410
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33411
|
-
if (this.legendHTML) {
|
|
33412
|
-
this.legendStatusChange.emit(true);
|
|
33413
|
-
}
|
|
33414
|
-
}
|
|
33415
|
-
else {
|
|
33416
|
-
this.legendHTML = false;
|
|
33417
|
-
this.legendStatusChange.emit(false);
|
|
33418
|
-
}
|
|
33419
|
-
}
|
|
33420
|
-
}
|
|
33421
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33422
|
-
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 }); }
|
|
33423
|
-
}
|
|
33424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33425
|
-
type: Component,
|
|
33426
|
-
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"] }]
|
|
33427
|
-
}], propDecorators: { context: [{
|
|
33428
|
-
type: Input
|
|
33429
|
-
}], legendStatusChange: [{
|
|
33430
|
-
type: Output
|
|
33431
|
-
}] } });
|
|
33432
|
-
|
|
33433
|
-
function prioritizePageScroll(interactions) {
|
|
33434
|
-
interactions.clear();
|
|
33435
|
-
interactions.extend(defaults({
|
|
33436
|
-
// remove rotate interactions
|
|
33437
|
-
altShiftDragRotate: false,
|
|
33438
|
-
pinchRotate: false,
|
|
33439
|
-
// replace drag and zoom interactions
|
|
33440
|
-
dragPan: false,
|
|
33441
|
-
mouseWheelZoom: false,
|
|
33442
|
-
})
|
|
33443
|
-
.extend([
|
|
33444
|
-
new DragPan({
|
|
33445
|
-
condition: dragPanCondition,
|
|
33446
|
-
}),
|
|
33447
|
-
new MouseWheelZoom({
|
|
33448
|
-
condition: mouseWheelZoomCondition,
|
|
33449
|
-
}),
|
|
33450
|
-
])
|
|
33451
|
-
.getArray());
|
|
33452
|
-
}
|
|
33453
|
-
function dragPanCondition(event) {
|
|
33454
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33455
|
-
if (!dragPanCondition) {
|
|
33456
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33457
|
-
}
|
|
33458
|
-
// combine the condition with the default DragPan conditions
|
|
33459
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33460
|
-
}
|
|
33461
|
-
function mouseWheelZoomCondition(event) {
|
|
33462
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33463
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33464
|
-
}
|
|
33465
|
-
return platformModifierKeyOnly(event);
|
|
33466
|
-
}
|
|
33467
|
-
|
|
33468
34307
|
class MapStateContainerComponent {
|
|
33469
34308
|
constructor(mapFacade) {
|
|
33470
34309
|
this.mapFacade = mapFacade;
|
|
@@ -34116,6 +34955,7 @@ function loadAppConfig() {
|
|
|
34116
34955
|
'metadata_language',
|
|
34117
34956
|
'login_url',
|
|
34118
34957
|
'logout_url',
|
|
34958
|
+
'settings_url',
|
|
34119
34959
|
'web_component_embedder_url',
|
|
34120
34960
|
'languages',
|
|
34121
34961
|
'contact_email',
|
|
@@ -34266,6 +35106,7 @@ proxy_path = "/proxy/?url="
|
|
|
34266
35106
|
metadata_language = "fre"
|
|
34267
35107
|
login_url = "/cas/login?service="
|
|
34268
35108
|
logout_url = "/geonetwork/signout"
|
|
35109
|
+
settings_url = "/geonetwork/settings"
|
|
34269
35110
|
web_component_embedder_url = "/datahub/wc-embedder.html"
|
|
34270
35111
|
|
|
34271
35112
|
[map]
|
|
@@ -37129,15 +37970,13 @@ class MdViewFacade {
|
|
|
37129
37970
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37130
37971
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37131
37972
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
37132
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
37133
|
-
? record.onlineResources
|
|
37134
|
-
: []));
|
|
37973
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
37135
37974
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
37136
37975
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
37137
37976
|
// Put links to IGN Géoplateforme first
|
|
37138
37977
|
.sort((dd1, dd2) => {
|
|
37139
|
-
return dd2
|
|
37140
|
-
'GPFDL'
|
|
37978
|
+
return dd2
|
|
37979
|
+
.accessServiceProtocol === 'GPFDL'
|
|
37141
37980
|
? 1
|
|
37142
37981
|
: undefined; // do not change the sorting otherwise
|
|
37143
37982
|
})));
|
|
@@ -37208,15 +38047,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37208
38047
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
37209
38048
|
|
|
37210
38049
|
class MdViewEffects {
|
|
37211
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
38050
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
37212
38051
|
this.actions$ = actions$;
|
|
37213
38052
|
this.recordsRepository = recordsRepository;
|
|
37214
38053
|
this.platformServiceInterface = platformServiceInterface;
|
|
38054
|
+
this.router = router;
|
|
37215
38055
|
/*
|
|
37216
38056
|
Metadata effects
|
|
37217
38057
|
*/
|
|
37218
38058
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
37219
|
-
if (record === null) {
|
|
38059
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
37220
38060
|
return loadFullMetadataFailure({ notFound: true });
|
|
37221
38061
|
}
|
|
37222
38062
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -37251,12 +38091,12 @@ class MdViewEffects {
|
|
|
37251
38091
|
}));
|
|
37252
38092
|
})))));
|
|
37253
38093
|
}
|
|
37254
|
-
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 }); }
|
|
38094
|
+
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 }); }
|
|
37255
38095
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
37256
38096
|
}
|
|
37257
38097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
37258
38098
|
type: Injectable
|
|
37259
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
38099
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
37260
38100
|
|
|
37261
38101
|
class CatalogTitleComponent {
|
|
37262
38102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37313,11 +38153,11 @@ class LanguageSwitcherComponent {
|
|
|
37313
38153
|
this.translate.use(value);
|
|
37314
38154
|
}
|
|
37315
38155
|
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 }); }
|
|
37316
|
-
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"] }] }); }
|
|
38156
|
+
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"] }] }); }
|
|
37317
38157
|
}
|
|
37318
38158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
37319
38159
|
type: Component,
|
|
37320
|
-
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" }]
|
|
38160
|
+
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" }]
|
|
37321
38161
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
37322
38162
|
type: Optional
|
|
37323
38163
|
}, {
|
|
@@ -37739,17 +38579,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37739
38579
|
}]
|
|
37740
38580
|
}] });
|
|
37741
38581
|
|
|
37742
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37743
|
-
|
|
37744
38582
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37745
38583
|
class DataViewPermalinkComponent {
|
|
37746
38584
|
set viewType(value) {
|
|
37747
38585
|
this.viewType$.next(value);
|
|
37748
38586
|
}
|
|
37749
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38587
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37750
38588
|
this.config = config;
|
|
37751
38589
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37752
|
-
this.version = version;
|
|
37753
38590
|
this.facade = facade;
|
|
37754
38591
|
this.viewType$ = new BehaviorSubject('map');
|
|
37755
38592
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37758,7 +38595,7 @@ class DataViewPermalinkComponent {
|
|
|
37758
38595
|
this.facade.metadata$,
|
|
37759
38596
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37760
38597
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37761
|
-
url.searchParams.set('v', `${
|
|
38598
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37762
38599
|
if (viewType === 'chart') {
|
|
37763
38600
|
if (config) {
|
|
37764
38601
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37789,7 +38626,7 @@ class DataViewPermalinkComponent {
|
|
|
37789
38626
|
return url.toString();
|
|
37790
38627
|
}));
|
|
37791
38628
|
}
|
|
37792
|
-
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:
|
|
38629
|
+
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 }); }
|
|
37793
38630
|
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 }); }
|
|
37794
38631
|
}
|
|
37795
38632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37803,9 +38640,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37803
38640
|
}, {
|
|
37804
38641
|
type: Inject,
|
|
37805
38642
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37806
|
-
}] }, { type: undefined, decorators: [{
|
|
37807
|
-
type: Inject,
|
|
37808
|
-
args: [GN_UI_VERSION]
|
|
37809
38643
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37810
38644
|
type: Input
|
|
37811
38645
|
}] } });
|
|
@@ -37884,16 +38718,15 @@ class DataViewWebComponentComponent {
|
|
|
37884
38718
|
set viewType(value) {
|
|
37885
38719
|
this.viewType$.next(value);
|
|
37886
38720
|
}
|
|
37887
|
-
constructor(config,
|
|
38721
|
+
constructor(config, facade) {
|
|
37888
38722
|
this.config = config;
|
|
37889
|
-
this.version = version;
|
|
37890
38723
|
this.facade = facade;
|
|
37891
38724
|
this.viewType$ = new BehaviorSubject('map');
|
|
37892
38725
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37893
38726
|
if (viewType === 'chart') {
|
|
37894
38727
|
if (config) {
|
|
37895
38728
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37896
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38729
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37897
38730
|
<gn-dataset-view-chart
|
|
37898
38731
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37899
38732
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37912,7 +38745,7 @@ class DataViewWebComponentComponent {
|
|
|
37912
38745
|
return '';
|
|
37913
38746
|
}
|
|
37914
38747
|
else if (viewType === 'table') {
|
|
37915
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38748
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37916
38749
|
<gn-dataset-view-table
|
|
37917
38750
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37918
38751
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37925,7 +38758,7 @@ class DataViewWebComponentComponent {
|
|
|
37925
38758
|
></gn-dataset-view-table>`;
|
|
37926
38759
|
}
|
|
37927
38760
|
else {
|
|
37928
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38761
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37929
38762
|
<gn-dataset-view-map
|
|
37930
38763
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37931
38764
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37939,7 +38772,7 @@ class DataViewWebComponentComponent {
|
|
|
37939
38772
|
}
|
|
37940
38773
|
}));
|
|
37941
38774
|
}
|
|
37942
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token:
|
|
38775
|
+
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 }); }
|
|
37943
38776
|
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 }); }
|
|
37944
38777
|
}
|
|
37945
38778
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37948,9 +38781,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37948
38781
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37949
38782
|
type: Inject,
|
|
37950
38783
|
args: [Configuration]
|
|
37951
|
-
}] }, { type: undefined, decorators: [{
|
|
37952
|
-
type: Inject,
|
|
37953
|
-
args: [GN_UI_VERSION]
|
|
37954
38784
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37955
38785
|
type: Input
|
|
37956
38786
|
}] } });
|
|
@@ -38451,7 +39281,7 @@ class RecordMetaComponent {
|
|
|
38451
39281
|
this.meta.removeTag('property="og:url"');
|
|
38452
39282
|
this.meta.removeTag('property="og:title"');
|
|
38453
39283
|
}
|
|
38454
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$
|
|
39284
|
+
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 }); }
|
|
38455
39285
|
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 }); }
|
|
38456
39286
|
}
|
|
38457
39287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38462,7 +39292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38462
39292
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38463
39293
|
standalone: true,
|
|
38464
39294
|
}]
|
|
38465
|
-
}], ctorParameters: () => [{ type: i1$
|
|
39295
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38466
39296
|
type: Input
|
|
38467
39297
|
}] } });
|
|
38468
39298
|
|
|
@@ -39510,7 +40340,7 @@ class ImportRecordComponent {
|
|
|
39510
40340
|
},
|
|
39511
40341
|
});
|
|
39512
40342
|
}
|
|
39513
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$
|
|
40343
|
+
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 }); }
|
|
39514
40344
|
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: [
|
|
39515
40345
|
provideIcons({
|
|
39516
40346
|
iconoirImport,
|
|
@@ -39541,7 +40371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39541
40371
|
size: '1.5em',
|
|
39542
40372
|
}),
|
|
39543
40373
|
], 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" }]
|
|
39544
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40374
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39545
40375
|
type: Output
|
|
39546
40376
|
}] } });
|
|
39547
40377
|
|
|
@@ -39905,75 +40735,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39905
40735
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39906
40736
|
}] });
|
|
39907
40737
|
|
|
39908
|
-
class FormFieldMapContainerComponent {
|
|
39909
|
-
constructor() {
|
|
39910
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39911
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39912
|
-
if (extents.length === 0) {
|
|
39913
|
-
return null; // null extent means default view
|
|
39914
|
-
}
|
|
39915
|
-
const featureCollection = {
|
|
39916
|
-
type: 'FeatureCollection',
|
|
39917
|
-
features: [],
|
|
39918
|
-
};
|
|
39919
|
-
extents.forEach((extent) => {
|
|
39920
|
-
if (extent.geometry) {
|
|
39921
|
-
featureCollection.features.push({
|
|
39922
|
-
type: 'Feature',
|
|
39923
|
-
properties: {},
|
|
39924
|
-
geometry: extent.geometry,
|
|
39925
|
-
});
|
|
39926
|
-
}
|
|
39927
|
-
else if (extent.bbox?.length >= 0) {
|
|
39928
|
-
featureCollection.features.push({
|
|
39929
|
-
type: 'Feature',
|
|
39930
|
-
properties: {},
|
|
39931
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39932
|
-
});
|
|
39933
|
-
}
|
|
39934
|
-
});
|
|
39935
|
-
const layer = {
|
|
39936
|
-
type: 'geojson',
|
|
39937
|
-
data: featureCollection,
|
|
39938
|
-
label: 'Spatial extents',
|
|
39939
|
-
style: {
|
|
39940
|
-
'stroke-color': 'black',
|
|
39941
|
-
'stroke-width': 2,
|
|
39942
|
-
},
|
|
39943
|
-
};
|
|
39944
|
-
const view = await createViewFromLayer(layer);
|
|
39945
|
-
return {
|
|
39946
|
-
view,
|
|
39947
|
-
layers: [layer],
|
|
39948
|
-
};
|
|
39949
|
-
}));
|
|
39950
|
-
this.error = '';
|
|
39951
|
-
}
|
|
39952
|
-
set spatialExtents(value) {
|
|
39953
|
-
this.spatialExtents$.next(value);
|
|
39954
|
-
}
|
|
39955
|
-
bboxCoordsToGeometry(bbox) {
|
|
39956
|
-
const geometry = new Polygon([
|
|
39957
|
-
[
|
|
39958
|
-
[bbox[0], bbox[1]],
|
|
39959
|
-
[bbox[0], bbox[3]],
|
|
39960
|
-
[bbox[2], bbox[3]],
|
|
39961
|
-
[bbox[2], bbox[1]],
|
|
39962
|
-
[bbox[0], bbox[1]],
|
|
39963
|
-
],
|
|
39964
|
-
]);
|
|
39965
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
39966
|
-
}
|
|
39967
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39968
|
-
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", "sourceLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39969
|
-
}
|
|
39970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39971
|
-
type: Component,
|
|
39972
|
-
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" }]
|
|
39973
|
-
}], propDecorators: { spatialExtents: [{
|
|
39974
|
-
type: Input
|
|
39975
|
-
}] } });
|
|
39976
|
-
|
|
39977
40738
|
/**
|
|
39978
40739
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
39979
40740
|
* and place keywords.
|
|
@@ -40070,16 +40831,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
40070
40831
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
40071
40832
|
}
|
|
40072
40833
|
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 }); }
|
|
40073
|
-
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-
|
|
40834
|
+
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 }); }
|
|
40074
40835
|
}
|
|
40075
40836
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
40076
40837
|
type: Component,
|
|
40077
40838
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40078
40839
|
CommonModule,
|
|
40079
40840
|
GenericKeywordsComponent,
|
|
40080
|
-
FormFieldMapContainerComponent,
|
|
40081
40841
|
TranslateModule,
|
|
40082
|
-
|
|
40842
|
+
SpatialExtentComponent,
|
|
40843
|
+
], 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" }]
|
|
40083
40844
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
40084
40845
|
|
|
40085
40846
|
class ContactCardComponent {
|
|
@@ -40337,9 +41098,8 @@ class OnlineResourceCardComponent {
|
|
|
40337
41098
|
get subtitle() {
|
|
40338
41099
|
switch (this.onlineResource.type) {
|
|
40339
41100
|
case 'service':
|
|
40340
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40341
41101
|
case 'endpoint':
|
|
40342
|
-
return `${this.onlineResource.
|
|
41102
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40343
41103
|
case 'link':
|
|
40344
41104
|
case 'download':
|
|
40345
41105
|
return this.getFormat(this.onlineResource);
|
|
@@ -41496,6 +42256,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41496
42256
|
const ROUTER_STATE_KEY = 'router';
|
|
41497
42257
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41498
42258
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
42259
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
42260
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41499
42261
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41500
42262
|
var ROUTE_PARAMS;
|
|
41501
42263
|
(function (ROUTE_PARAMS) {
|
|
@@ -41528,6 +42290,14 @@ class RouterService {
|
|
|
41528
42290
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41529
42291
|
component: this.routerConfig.recordRouteComponent,
|
|
41530
42292
|
},
|
|
42293
|
+
{
|
|
42294
|
+
path: `${ROUTER_ROUTE_SERVICE}/:metadataUuid`,
|
|
42295
|
+
component: this.routerConfig.recordRouteComponent,
|
|
42296
|
+
},
|
|
42297
|
+
{
|
|
42298
|
+
path: `${ROUTER_ROUTE_REUSE}/:metadataUuid`,
|
|
42299
|
+
component: this.routerConfig.recordRouteComponent,
|
|
42300
|
+
},
|
|
41531
42301
|
{
|
|
41532
42302
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41533
42303
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41540,7 +42310,7 @@ class RouterService {
|
|
|
41540
42310
|
getOrganizationPageRoute() {
|
|
41541
42311
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41542
42312
|
}
|
|
41543
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
42313
|
+
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 }); }
|
|
41544
42314
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41545
42315
|
}
|
|
41546
42316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41551,7 +42321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41551
42321
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41552
42322
|
type: Inject,
|
|
41553
42323
|
args: [ROUTER_CONFIG]
|
|
41554
|
-
}] }, { type: i1$
|
|
42324
|
+
}] }, { type: i1$d.Router }] });
|
|
41555
42325
|
|
|
41556
42326
|
const goAction = createAction('[Router] Go', props());
|
|
41557
42327
|
const backAction = createAction('[Router] Back');
|
|
@@ -41623,13 +42393,19 @@ class RouterFacade {
|
|
|
41623
42393
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41624
42394
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41625
42395
|
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));
|
|
42396
|
+
this.routeMap = {
|
|
42397
|
+
dataset: ROUTER_ROUTE_DATASET,
|
|
42398
|
+
service: ROUTER_ROUTE_SERVICE,
|
|
42399
|
+
reuse: ROUTER_ROUTE_REUSE,
|
|
42400
|
+
};
|
|
41626
42401
|
}
|
|
41627
42402
|
goToMetadata(metadata) {
|
|
42403
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41628
42404
|
this.pathParams$
|
|
41629
42405
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41630
42406
|
.subscribe(() => {
|
|
41631
42407
|
this.go({
|
|
41632
|
-
path: `${
|
|
42408
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41633
42409
|
});
|
|
41634
42410
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41635
42411
|
});
|
|
@@ -41856,12 +42632,12 @@ class RouterEffects {
|
|
|
41856
42632
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41857
42633
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41858
42634
|
}
|
|
41859
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$
|
|
42635
|
+
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 }); }
|
|
41860
42636
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41861
42637
|
}
|
|
41862
42638
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41863
42639
|
type: Injectable
|
|
41864
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$
|
|
42640
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
41865
42641
|
type: Inject,
|
|
41866
42642
|
args: [ROUTER_CONFIG]
|
|
41867
42643
|
}] }, { type: FieldsService }] });
|
|
@@ -41921,5 +42697,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41921
42697
|
* Generated bundle index. Do not edit.
|
|
41922
42698
|
*/
|
|
41923
42699
|
|
|
41924
|
-
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, 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, 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 };
|
|
42700
|
+
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, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, 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, PossibleResourceTypes, PossibleResourceTypesDefinition, 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, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, 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, getResourceType, getReuseType, 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, kindToCodeListValue, 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 };
|
|
41925
42701
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|