geonetwork-ui 2.2.0-dev.aecf1900 → 2.2.0-dev.b0f82edc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +28 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +96 -59
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +7 -4
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +25 -17
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +55 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
- package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
- package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
- package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
- package/esm2022/libs/feature/search/src/index.mjs +4 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
- package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +5 -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 +47 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +12 -7
- package/esm2022/libs/ui/layout/src/index.mjs +3 -1
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
- package/esm2022/libs/ui/search/src/index.mjs +1 -2
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
- package/esm2022/libs/util/i18n/src/index.mjs +1 -2
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
- package/esm2022/translations/de.json +35 -25
- package/esm2022/translations/en.json +36 -26
- package/esm2022/translations/es.json +30 -20
- package/esm2022/translations/fr.json +49 -39
- package/esm2022/translations/it.json +42 -32
- package/esm2022/translations/nl.json +31 -21
- package/esm2022/translations/pt.json +30 -20
- package/fesm2022/geonetwork-ui.mjs +1251 -837
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +7 -6
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +30 -17
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
- package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
- package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +13 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
- package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +3 -0
- 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 +3 -3
- 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 +0 -4
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
- package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
- package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
- 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/dataviz/src/lib/chart/chart.component.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -6
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -39
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/layout/src/index.d.ts +2 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
- package/libs/ui/search/src/index.d.ts +0 -1
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +0 -1
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
- package/package.json +4 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +63 -8
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +57 -9
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +229 -24
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +32 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +140 -74
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
- package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +30 -21
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +120 -63
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +177 -97
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
- package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +36 -21
- package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
- package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
- package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
- package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +8 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
- package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
- package/src/libs/feature/search/src/index.ts +3 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
- package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
- package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
- package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
- package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
- package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +3 -2
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -2
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.html +5 -1
- package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +157 -42
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -15
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +2 -2
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +5 -2
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
- package/src/libs/ui/search/src/index.ts +0 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
- package/src/libs/util/i18n/src/index.ts +0 -1
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
- package/tailwind.base.css +2 -2
- package/translations/de.json +35 -25
- package/translations/en.json +36 -26
- package/translations/es.json +30 -20
- package/translations/fr.json +49 -39
- package/translations/it.json +42 -32
- package/translations/nl.json +31 -21
- package/translations/pt.json +30 -20
- package/translations/sk.json +31 -21
- package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
- package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
- package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
- package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
- package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
- package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
- package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
- package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
- package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
- package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
- package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
- package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
- package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
- package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
- /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
- /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ElementRef, ViewChildren } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
|
-
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService
|
|
8
|
+
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap as switchMap$1, catchError, take,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, throttleTime, distinctUntilChanged, finalize, first, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, firstValueFrom, fromEvent, timer, from, Subscription, animationFrameScheduler, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
@@ -32,8 +32,8 @@ import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';
|
|
|
32
32
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
33
33
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
34
34
|
import WMTSCapabilities from 'ol/format/WMTSCapabilities';
|
|
35
|
-
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
36
35
|
import chroma from 'chroma-js';
|
|
36
|
+
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
37
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
38
38
|
import proj4 from 'proj4/dist/proj4';
|
|
39
39
|
import * as TOML from '@ltd/j-toml';
|
|
@@ -78,6 +78,8 @@ import * as i1$8 from '@ngrx/effects';
|
|
|
78
78
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
79
79
|
import tippy from 'tippy.js';
|
|
80
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
|
+
import { Polygon } from 'ol/geom';
|
|
82
|
+
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
81
83
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
82
84
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
83
85
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -585,6 +587,20 @@ function matchMimeType(format) {
|
|
|
585
587
|
return format || null;
|
|
586
588
|
}
|
|
587
589
|
|
|
590
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
591
|
+
if (!typeCode)
|
|
592
|
+
return 'other';
|
|
593
|
+
switch (typeCode) {
|
|
594
|
+
case 'theme':
|
|
595
|
+
case 'place':
|
|
596
|
+
case 'temporal':
|
|
597
|
+
case 'other':
|
|
598
|
+
return typeCode;
|
|
599
|
+
default:
|
|
600
|
+
return 'other';
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
588
604
|
function extractCharacterString() {
|
|
589
605
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
590
606
|
}
|
|
@@ -647,28 +663,32 @@ function extractStatus() {
|
|
|
647
663
|
return pipe(findChildElement('gmd:MD_ProgressCode'), readAttribute('codeListValue'), map(getStatusFromStatusCode));
|
|
648
664
|
}
|
|
649
665
|
// from gmd:resourceConstraints
|
|
650
|
-
function
|
|
651
|
-
|
|
652
|
-
|
|
666
|
+
function extractLegalConstraints() {
|
|
667
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') === -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
668
|
+
...(url && { url }),
|
|
653
669
|
text,
|
|
654
|
-
type: 'other',
|
|
655
670
|
})));
|
|
656
|
-
|
|
671
|
+
}
|
|
672
|
+
// from gmd:resourceConstraints
|
|
673
|
+
function extractSecurityConstraints() {
|
|
674
|
+
return pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
675
|
+
...(url && { url }),
|
|
657
676
|
text,
|
|
658
|
-
type: 'security',
|
|
659
677
|
})));
|
|
660
|
-
return pipe(combine(getOtherConstraints, getSecurityConstraints), flattenArray());
|
|
661
678
|
}
|
|
662
679
|
// from gmd:resourceConstraints
|
|
663
|
-
function
|
|
664
|
-
return pipe(
|
|
680
|
+
function extractOtherConstraints() {
|
|
681
|
+
return pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
682
|
+
...(url && { url }),
|
|
683
|
+
text,
|
|
684
|
+
})));
|
|
665
685
|
}
|
|
666
686
|
// from gmd:resourceConstraints
|
|
667
687
|
function extractLicenses() {
|
|
668
|
-
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(
|
|
688
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
669
689
|
...(url && { url }),
|
|
670
690
|
text,
|
|
671
|
-
})))
|
|
691
|
+
})));
|
|
672
692
|
}
|
|
673
693
|
// from gmd:MD_Distribution
|
|
674
694
|
function extractDatasetDistributions() {
|
|
@@ -812,6 +832,9 @@ function readOwnerOrganization(rootEl) {
|
|
|
812
832
|
function readRecordUpdated(rootEl) {
|
|
813
833
|
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
814
834
|
}
|
|
835
|
+
function readRecordPublished(rootEl) {
|
|
836
|
+
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
837
|
+
}
|
|
815
838
|
function readTitle(rootEl) {
|
|
816
839
|
return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
817
840
|
}
|
|
@@ -827,31 +850,55 @@ function readDatasetUpdated(rootEl) {
|
|
|
827
850
|
function readContacts(rootEl) {
|
|
828
851
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
829
852
|
}
|
|
830
|
-
|
|
831
|
-
|
|
853
|
+
// from gmd:thesaurusName
|
|
854
|
+
function readThesaurus(rootEl) {
|
|
855
|
+
if (!rootEl)
|
|
856
|
+
return null;
|
|
857
|
+
const findIdentifier = findNestedElement('gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code');
|
|
858
|
+
const id = pipe(findIdentifier, extractCharacterString())(rootEl);
|
|
859
|
+
const url = pipe(findIdentifier, extractUrl())(rootEl);
|
|
860
|
+
const name = pipe(findNestedElement('gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
861
|
+
return {
|
|
862
|
+
id,
|
|
863
|
+
...(name && { name }),
|
|
864
|
+
...(url && { url }),
|
|
865
|
+
};
|
|
832
866
|
}
|
|
833
|
-
|
|
834
|
-
|
|
867
|
+
// from gmd:MD_Keywords
|
|
868
|
+
function readKeywordGroup(rootEl) {
|
|
869
|
+
const type = pipe(findChildrenElement('gmd:MD_KeywordTypeCode'), mapArray(readAttribute('codeListValue')), map((values) => getKeywordTypeFromKeywordTypeCode(values[0])))(rootEl);
|
|
870
|
+
const thesaurus = pipe(findNestedElement('gmd:thesaurusName'), readThesaurus)(rootEl);
|
|
871
|
+
return pipe(findChildrenElement('gmd:keyword'), mapArray((el) => {
|
|
872
|
+
const label = extractCharacterString()(el);
|
|
873
|
+
return {
|
|
874
|
+
...(thesaurus ? { thesaurus } : {}),
|
|
875
|
+
label,
|
|
876
|
+
type,
|
|
877
|
+
};
|
|
878
|
+
}))(rootEl);
|
|
835
879
|
}
|
|
836
|
-
function
|
|
837
|
-
return
|
|
880
|
+
function readKeywords(rootEl) {
|
|
881
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
838
882
|
}
|
|
839
883
|
function readStatus(rootEl) {
|
|
840
884
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
841
885
|
}
|
|
842
886
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
843
|
-
function
|
|
844
|
-
return pipe(getConstraints, mapArray(
|
|
887
|
+
function readLegalConstraints(rootEl) {
|
|
888
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
845
889
|
}
|
|
846
|
-
function
|
|
847
|
-
return pipe(getConstraints, mapArray(
|
|
890
|
+
function readSecurityConstraints(rootEl) {
|
|
891
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
892
|
+
}
|
|
893
|
+
function readOtherConstraints(rootEl) {
|
|
894
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
848
895
|
}
|
|
849
896
|
function readLicenses(rootEl) {
|
|
850
897
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
851
898
|
}
|
|
852
899
|
// not used yet
|
|
853
900
|
function readIsoTopics(rootEl) {
|
|
854
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
901
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
855
902
|
}
|
|
856
903
|
function readSpatialRepresentation(rootEl) {
|
|
857
904
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1067,33 +1114,50 @@ function updateCitationDate(date, type) {
|
|
|
1067
1114
|
function appendCitationDate(date, type) {
|
|
1068
1115
|
return appendChildren(pipe(createElement('gmd:date'), createChild('gmd:CI_Date'), appendChildren(pipe(createElement('gmd:date'), writeDateTime(date)), pipe(createElement('gmd:dateType'), createChild('gmd:CI_DateTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'), addAttribute('codeListValue', type)))));
|
|
1069
1116
|
}
|
|
1070
|
-
function removeKeywords(
|
|
1071
|
-
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1117
|
+
function removeKeywords() {
|
|
1118
|
+
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')));
|
|
1119
|
+
}
|
|
1120
|
+
// returns a <gmd:thesaurusName> element
|
|
1121
|
+
function createThesaurus(thesaurus) {
|
|
1122
|
+
return pipe(createElement('gmd:thesaurusName'), createChild('gmd:CI_Citation'), appendChildren(pipe(createElement('gmd:title'), writeCharacterString(thesaurus.name || thesaurus.id)), pipe(createElement('gmd:identifier'), createChild('gmd:MD_Identifier'), appendChildren(pipe(createElement('gmd:code'), thesaurus.url
|
|
1123
|
+
? writeAnchor(thesaurus.url, thesaurus.id)
|
|
1124
|
+
: writeCharacterString(thesaurus.id))))));
|
|
1125
|
+
}
|
|
1126
|
+
function appendKeywords(keywords) {
|
|
1127
|
+
const keywordsByThesaurus = keywords.reduce((acc, keyword) => {
|
|
1128
|
+
const thesaurusId = keyword.thesaurus?.id;
|
|
1129
|
+
const type = keyword.type;
|
|
1130
|
+
let existingGroup = acc.find((group) => group[0].thesaurus
|
|
1131
|
+
? group[0].thesaurus.id === thesaurusId
|
|
1132
|
+
: group[0].type === type);
|
|
1133
|
+
if (!existingGroup) {
|
|
1134
|
+
existingGroup = [];
|
|
1135
|
+
acc.push(existingGroup);
|
|
1136
|
+
}
|
|
1137
|
+
existingGroup.push(keyword);
|
|
1138
|
+
return acc;
|
|
1139
|
+
}, []);
|
|
1140
|
+
return appendChildren(...keywordsByThesaurus.map((keywords) => pipe(createElement('gmd:descriptiveKeywords'), createChild('gmd:MD_Keywords'), appendChildren(pipe(createElement('gmd:type'), createChild('gmd:MD_KeywordTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_KeywordTypeCode'), addAttribute('codeListValue', keywords[0].type))), keywords[0].thesaurus
|
|
1141
|
+
? appendChildren(createThesaurus(keywords[0].thesaurus))
|
|
1142
|
+
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword.label)))))));
|
|
1143
|
+
}
|
|
1144
|
+
function createConstraint(constraint, type) {
|
|
1145
|
+
if (type === 'security') {
|
|
1088
1146
|
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_SecurityConstraints'), appendChildren(pipe(createElement('gmd:classification'), createChild('gmd:MD_ClassificationCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ClassificationCode'), addAttribute('codeListValue', 'restricted')), pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1089
1147
|
}
|
|
1090
|
-
|
|
1148
|
+
else if (type === 'legal') {
|
|
1149
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_LegalConstraints'), appendChildren(pipe(createElement('gmd:accessConstraints'), createChild('gmd:MD_RestrictionCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'), addAttribute('codeListValue', 'otherRestrictions')), pipe(createElement('gmd:otherConstraints'), writeCharacterString(constraint.text))));
|
|
1150
|
+
}
|
|
1151
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1091
1152
|
}
|
|
1092
|
-
function
|
|
1153
|
+
function removeOtherConstraints() {
|
|
1093
1154
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1094
1155
|
}
|
|
1095
|
-
function
|
|
1096
|
-
return pipe(
|
|
1156
|
+
function removeSecurityConstraints() {
|
|
1157
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1158
|
+
}
|
|
1159
|
+
function removeLegalConstraints() {
|
|
1160
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.every((code) => code !== 'license')))));
|
|
1097
1161
|
}
|
|
1098
1162
|
function removeLicenses() {
|
|
1099
1163
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.some((code) => code === 'license')))));
|
|
@@ -1192,19 +1256,22 @@ function writeContacts(record, rootEl) {
|
|
|
1192
1256
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1193
1257
|
}
|
|
1194
1258
|
function writeKeywords(record, rootEl) {
|
|
1195
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1196
1260
|
}
|
|
1197
|
-
function
|
|
1198
|
-
pipe(findOrCreateIdentification(),
|
|
1199
|
-
}
|
|
1200
|
-
function writeAccessConstraints(record, rootEl) {
|
|
1201
|
-
pipe(findOrCreateIdentification(), removeAccessConstraints(), appendChildren(...record.accessConstraints.map(createAccessConstraint)))(rootEl);
|
|
1261
|
+
function writeTopics(record, rootEl) {
|
|
1262
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:topicCategory'), appendChildren(...record.topics.map((topic) => pipe(createElement('gmd:topicCategory'), createChild('gmd:MD_TopicCategoryCode'), setTextContent(topic)))))(rootEl);
|
|
1202
1263
|
}
|
|
1203
1264
|
function writeLicenses(record, rootEl) {
|
|
1204
1265
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1205
1266
|
}
|
|
1206
|
-
function
|
|
1207
|
-
pipe(findOrCreateIdentification(),
|
|
1267
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1268
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1269
|
+
}
|
|
1270
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1271
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1272
|
+
}
|
|
1273
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1274
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1208
1275
|
}
|
|
1209
1276
|
function writeUpdateFrequency(record, rootEl) {
|
|
1210
1277
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1300,14 +1367,14 @@ function toModel(xml) {
|
|
|
1300
1367
|
const contacts = readContacts(rootEl);
|
|
1301
1368
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1302
1369
|
const recordCreated = recordUpdated;
|
|
1370
|
+
const recordPublished = readRecordPublished(rootEl);
|
|
1303
1371
|
const keywords = readKeywords(rootEl);
|
|
1304
|
-
const
|
|
1305
|
-
const
|
|
1306
|
-
const
|
|
1372
|
+
const topics = readIsoTopics(rootEl);
|
|
1373
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1374
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1375
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1307
1376
|
const licenses = readLicenses(rootEl);
|
|
1308
1377
|
const overviews = readOverviews(rootEl);
|
|
1309
|
-
// not used yet
|
|
1310
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1311
1378
|
if (kind === 'dataset') {
|
|
1312
1379
|
const status = readStatus(rootEl);
|
|
1313
1380
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1321,8 +1388,10 @@ function toModel(xml) {
|
|
|
1321
1388
|
return {
|
|
1322
1389
|
uniqueIdentifier,
|
|
1323
1390
|
kind,
|
|
1391
|
+
languages: [],
|
|
1324
1392
|
recordCreated,
|
|
1325
1393
|
recordUpdated,
|
|
1394
|
+
recordPublished,
|
|
1326
1395
|
status,
|
|
1327
1396
|
title,
|
|
1328
1397
|
abstract,
|
|
@@ -1330,10 +1399,11 @@ function toModel(xml) {
|
|
|
1330
1399
|
contacts,
|
|
1331
1400
|
contactsForResource: [],
|
|
1332
1401
|
keywords,
|
|
1333
|
-
|
|
1334
|
-
accessConstraints,
|
|
1335
|
-
useLimitations,
|
|
1402
|
+
topics,
|
|
1336
1403
|
licenses,
|
|
1404
|
+
legalConstraints,
|
|
1405
|
+
securityConstraints,
|
|
1406
|
+
otherConstraints,
|
|
1337
1407
|
...(datasetCreated && { datasetCreated }),
|
|
1338
1408
|
...(datasetUpdated && { datasetUpdated }),
|
|
1339
1409
|
lineage,
|
|
@@ -1350,17 +1420,20 @@ function toModel(xml) {
|
|
|
1350
1420
|
return {
|
|
1351
1421
|
uniqueIdentifier,
|
|
1352
1422
|
kind,
|
|
1423
|
+
languages: [],
|
|
1353
1424
|
recordCreated,
|
|
1354
1425
|
recordUpdated,
|
|
1426
|
+
recordPublished,
|
|
1355
1427
|
title,
|
|
1356
1428
|
abstract,
|
|
1357
1429
|
ownerOrganization,
|
|
1358
1430
|
contacts,
|
|
1359
1431
|
keywords,
|
|
1360
|
-
|
|
1361
|
-
accessConstraints,
|
|
1362
|
-
useLimitations,
|
|
1432
|
+
topics,
|
|
1363
1433
|
licenses,
|
|
1434
|
+
legalConstraints,
|
|
1435
|
+
securityConstraints,
|
|
1436
|
+
otherConstraints,
|
|
1364
1437
|
overviews,
|
|
1365
1438
|
onlineResources,
|
|
1366
1439
|
};
|
|
@@ -1385,10 +1458,12 @@ function toXml(record, originalXml) {
|
|
|
1385
1458
|
writeAbstract(record, rootEl);
|
|
1386
1459
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1387
1460
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1388
|
-
fieldChanged('
|
|
1389
|
-
fieldChanged('
|
|
1461
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1462
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1463
|
+
fieldChanged('securityConstraints') &&
|
|
1464
|
+
writeSecurityConstraints(record, rootEl);
|
|
1390
1465
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1391
|
-
fieldChanged('
|
|
1466
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1392
1467
|
if (record.kind === 'dataset') {
|
|
1393
1468
|
writeStatus(record, rootEl);
|
|
1394
1469
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1414,6 +1489,7 @@ const selectTranslatedValue = (source, lang3) => selectFallback(selectField(sour
|
|
|
1414
1489
|
const selectTranslatedField = (source, fieldName, lang3) => selectTranslatedValue(selectField(source, fieldName), lang3);
|
|
1415
1490
|
const toDate = (field) => new Date(field);
|
|
1416
1491
|
const getFirstValue = (field) => Array.isArray(field) ? field[0] : field;
|
|
1492
|
+
const getArrayItem = (field, index) => Array.isArray(field) && field[index] !== undefined ? field[index] : null;
|
|
1417
1493
|
const getAsArray = (field) => Array.isArray(field) ? field : field !== null ? [field] : [];
|
|
1418
1494
|
const getAsUrl = (field, location = window.location.toString()) => {
|
|
1419
1495
|
// an empty string is not a valid url, even though it could be considered an empty path to the root
|
|
@@ -1454,6 +1530,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1454
1530
|
...(phone && { phone }),
|
|
1455
1531
|
};
|
|
1456
1532
|
};
|
|
1533
|
+
const mapKeywords = (thesauri, language) => {
|
|
1534
|
+
const keywords = [];
|
|
1535
|
+
for (const thesaurusId in thesauri) {
|
|
1536
|
+
const rawThesaurus = thesauri[thesaurusId];
|
|
1537
|
+
let thesaurus = null;
|
|
1538
|
+
if (rawThesaurus.id) {
|
|
1539
|
+
const thesaurusSource = { ...rawThesaurus };
|
|
1540
|
+
const url = getAsUrl(selectField(thesaurusSource, 'link'));
|
|
1541
|
+
const name = selectField(thesaurusSource, 'title');
|
|
1542
|
+
thesaurus = {
|
|
1543
|
+
id: rawThesaurus.id,
|
|
1544
|
+
...(name && { name }),
|
|
1545
|
+
...(url && { url }),
|
|
1546
|
+
};
|
|
1547
|
+
}
|
|
1548
|
+
for (const keyword of rawThesaurus.keywords) {
|
|
1549
|
+
keywords.push({
|
|
1550
|
+
label: selectTranslatedValue(keyword, language),
|
|
1551
|
+
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
1552
|
+
...(thesaurus && { thesaurus }),
|
|
1553
|
+
});
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
return keywords;
|
|
1557
|
+
};
|
|
1457
1558
|
|
|
1458
1559
|
/**
|
|
1459
1560
|
* Custom HttpParameterCodec
|
|
@@ -16440,6 +16541,23 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
16440
16541
|
chi: 'zh',
|
|
16441
16542
|
slo: 'sk',
|
|
16442
16543
|
};
|
|
16544
|
+
const LANGUAGE_NAMES = {
|
|
16545
|
+
en: 'English',
|
|
16546
|
+
nl: 'Nederlands',
|
|
16547
|
+
fr: 'Français',
|
|
16548
|
+
de: 'Deutsch',
|
|
16549
|
+
ko: '한국어',
|
|
16550
|
+
es: 'Español',
|
|
16551
|
+
cs: 'Čeština',
|
|
16552
|
+
ca: 'Català',
|
|
16553
|
+
fi: 'Suomi',
|
|
16554
|
+
is: 'Íslenska',
|
|
16555
|
+
it: 'Italiano',
|
|
16556
|
+
pt: 'Português',
|
|
16557
|
+
ru: 'Русский',
|
|
16558
|
+
zh: '中文',
|
|
16559
|
+
sk: 'Slovenčina',
|
|
16560
|
+
};
|
|
16443
16561
|
// Caution: changing this can break language selection from third parties!
|
|
16444
16562
|
const LANGUAGE_STORAGE_KEY = 'geonetwork-ui-language';
|
|
16445
16563
|
const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
|
|
@@ -16540,133 +16658,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16540
16658
|
}]
|
|
16541
16659
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16542
16660
|
|
|
16543
|
-
// IMPORTANT:
|
|
16544
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/test-translate-loader.service.ts
|
|
16545
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16546
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16547
|
-
class TestTranslateLoader extends TranslateLoader {
|
|
16548
|
-
constructor(_translations = {}) {
|
|
16549
|
-
super();
|
|
16550
|
-
this._translations = _translations;
|
|
16551
|
-
}
|
|
16552
|
-
/**
|
|
16553
|
-
* Returns an {Observable} of translations for the specified language. If the
|
|
16554
|
-
* language is not recognized, an empty translations object will be returned.
|
|
16555
|
-
*
|
|
16556
|
-
* @param language the language for which the translations should be retrieved.
|
|
16557
|
-
* @returns the translations for the specified
|
|
16558
|
-
* language or an empty set of translations if the language is not recognized.
|
|
16559
|
-
*/
|
|
16560
|
-
getTranslation(language) {
|
|
16561
|
-
return of(this._translations[language] || {});
|
|
16562
|
-
}
|
|
16563
|
-
}
|
|
16564
|
-
|
|
16565
|
-
// IMPORTANT:
|
|
16566
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/testing.module.ts
|
|
16567
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16568
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16569
|
-
/**
|
|
16570
|
-
* The TranslateTestingModule provides the {TranslateModule} as well as a
|
|
16571
|
-
* {TranslateService} configured to return translations specific for the
|
|
16572
|
-
* test environment.
|
|
16573
|
-
*
|
|
16574
|
-
* @export
|
|
16575
|
-
*/
|
|
16576
|
-
class TranslateTestingModule {
|
|
16577
|
-
constructor() {
|
|
16578
|
-
this._translations = {};
|
|
16579
|
-
}
|
|
16580
|
-
static withTranslations(languageOrTranslations, translations) {
|
|
16581
|
-
const translateTestingModule = new TranslateTestingModule();
|
|
16582
|
-
if (typeof languageOrTranslations === 'string') {
|
|
16583
|
-
return translateTestingModule.withTranslations(languageOrTranslations, translations);
|
|
16584
|
-
}
|
|
16585
|
-
return translateTestingModule.withTranslations(languageOrTranslations);
|
|
16586
|
-
}
|
|
16587
|
-
get ngModule() {
|
|
16588
|
-
return TranslateTestingModule;
|
|
16589
|
-
}
|
|
16590
|
-
get providers() {
|
|
16591
|
-
const translateService = new TranslateService(null, new TestTranslateLoader(this._translations), this._compiler || new TranslateFakeCompiler(), new TranslateDefaultParser(), new FakeMissingTranslationHandler(), true, true, false, this._defaultLanguage);
|
|
16592
|
-
return [
|
|
16593
|
-
{
|
|
16594
|
-
provide: TranslateService,
|
|
16595
|
-
useValue: translateService,
|
|
16596
|
-
},
|
|
16597
|
-
];
|
|
16598
|
-
}
|
|
16599
|
-
withTranslations(languageOrTranslations, translations) {
|
|
16600
|
-
if (typeof languageOrTranslations === 'string' && translations) {
|
|
16601
|
-
this.addTranslations(languageOrTranslations, translations);
|
|
16602
|
-
this._defaultLanguage = languageOrTranslations;
|
|
16603
|
-
}
|
|
16604
|
-
else if (languageOrTranslations) {
|
|
16605
|
-
Object.keys(languageOrTranslations).forEach((language) => this.addTranslations(language, languageOrTranslations[language]));
|
|
16606
|
-
}
|
|
16607
|
-
return this;
|
|
16608
|
-
}
|
|
16609
|
-
/**
|
|
16610
|
-
* Updates the {TranslationTestingModule} to provide a {TranslateService} that will
|
|
16611
|
-
* use the provided {TranslateCompiler} to translate the test translations.
|
|
16612
|
-
*
|
|
16613
|
-
* @example
|
|
16614
|
-
*
|
|
16615
|
-
* TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
|
|
16616
|
-
* .withCompiler(new TranslateMessageFormatCompiler());
|
|
16617
|
-
*
|
|
16618
|
-
* @param compiler the compiler to use to compile the test translations.
|
|
16619
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16620
|
-
* @memberof TranslateTestingModule
|
|
16621
|
-
*/
|
|
16622
|
-
withCompiler(compiler) {
|
|
16623
|
-
this._compiler = compiler;
|
|
16624
|
-
return this;
|
|
16625
|
-
}
|
|
16626
|
-
/**
|
|
16627
|
-
* Updates the {TranslateTestingModule} to use the provided language as the default language.
|
|
16628
|
-
* By default, the default language will be set to the first language provided.
|
|
16629
|
-
*
|
|
16630
|
-
* @example
|
|
16631
|
-
*
|
|
16632
|
-
* TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
|
|
16633
|
-
* .withTranslations('en', ENGLISH_TRANSLATIONS)
|
|
16634
|
-
* .withDefaultLanguage('en');
|
|
16635
|
-
*
|
|
16636
|
-
* @param language the new default language for translations.
|
|
16637
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16638
|
-
* @memberof TranslateTestingModule
|
|
16639
|
-
*/
|
|
16640
|
-
withDefaultLanguage(language) {
|
|
16641
|
-
this._defaultLanguage = language || this._defaultLanguage;
|
|
16642
|
-
return this;
|
|
16643
|
-
}
|
|
16644
|
-
addTranslations(language, translations) {
|
|
16645
|
-
if (!this._defaultLanguage) {
|
|
16646
|
-
this._defaultLanguage = language;
|
|
16647
|
-
}
|
|
16648
|
-
if (this._translations[language]) {
|
|
16649
|
-
this._translations[language] = {
|
|
16650
|
-
...this._translations[language],
|
|
16651
|
-
...translations,
|
|
16652
|
-
};
|
|
16653
|
-
}
|
|
16654
|
-
else {
|
|
16655
|
-
this._translations[language] = translations;
|
|
16656
|
-
}
|
|
16657
|
-
}
|
|
16658
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16659
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule], exports: [TranslateModule] }); }
|
|
16660
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule, TranslateModule] }); }
|
|
16661
|
-
}
|
|
16662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, decorators: [{
|
|
16663
|
-
type: NgModule,
|
|
16664
|
-
args: [{
|
|
16665
|
-
imports: [TranslateModule],
|
|
16666
|
-
exports: [TranslateModule],
|
|
16667
|
-
}]
|
|
16668
|
-
}] });
|
|
16669
|
-
|
|
16670
16661
|
var dropFile$6 = "Datei ablegen";
|
|
16671
16662
|
var next$6 = "weiter";
|
|
16672
16663
|
var previous$6 = "zurück";
|
|
@@ -16689,20 +16680,21 @@ var de = {
|
|
|
16689
16680
|
"chart.type.line": "Liniendiagramm",
|
|
16690
16681
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16691
16682
|
"chart.type.pie": "Kreisdiagramm",
|
|
16683
|
+
"dashboard.createRecord": "Neuer Eintrag",
|
|
16692
16684
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16693
16685
|
"dashboard.records.all": "Katalog",
|
|
16694
16686
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16695
16687
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16696
16688
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
16697
16689
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16698
|
-
"dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
|
|
16699
|
-
"dashboard.records.noUser": "Keine Benutzer für diese Organisation",
|
|
16700
16690
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16701
16691
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16702
16692
|
"dashboard.records.userDetail": "Name",
|
|
16703
16693
|
"dashboard.records.userEmail": "E-Mail",
|
|
16704
16694
|
"dashboard.records.username": "Benutzername",
|
|
16705
16695
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16696
|
+
"dashboard.results.listMetadata": "Metadaten anzeigen",
|
|
16697
|
+
"dashboard.results.listResources": "Ressourcen anzeigen",
|
|
16706
16698
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16707
16699
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16708
16700
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16829,27 +16821,28 @@ var de = {
|
|
|
16829
16821
|
"facets.block.title.tag.default": "Stichwort",
|
|
16830
16822
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
16831
16823
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
|
|
16832
|
-
"language.ca": "
|
|
16833
|
-
"language.cs": "
|
|
16824
|
+
"language.ca": "Katalanisch",
|
|
16825
|
+
"language.cs": "Tschechisch",
|
|
16834
16826
|
"language.de": "Deutsch",
|
|
16835
|
-
"language.en": "
|
|
16836
|
-
"language.es": "
|
|
16837
|
-
"language.fi": "
|
|
16838
|
-
"language.fr": "
|
|
16839
|
-
"language.is": "
|
|
16840
|
-
"language.it": "
|
|
16841
|
-
"language.ko": "
|
|
16842
|
-
"language.nl": "
|
|
16843
|
-
"language.pt": "
|
|
16844
|
-
"language.ru": "
|
|
16845
|
-
"language.sk": "
|
|
16846
|
-
"language.zh": "
|
|
16827
|
+
"language.en": "Englisch",
|
|
16828
|
+
"language.es": "Spanisch",
|
|
16829
|
+
"language.fi": "Finnisch",
|
|
16830
|
+
"language.fr": "Französisch",
|
|
16831
|
+
"language.is": "Isländisch",
|
|
16832
|
+
"language.it": "Italienisch",
|
|
16833
|
+
"language.ko": "Koreanisch",
|
|
16834
|
+
"language.nl": "Niederländisch",
|
|
16835
|
+
"language.pt": "Portugiesisch",
|
|
16836
|
+
"language.ru": "Russisch",
|
|
16837
|
+
"language.sk": "Slowakisch",
|
|
16838
|
+
"language.zh": "Chinesisch",
|
|
16847
16839
|
"map.add.layer": "Eine Ebene hinzufügen",
|
|
16848
16840
|
"map.add.layer.catalog": "Aus dem Katalog",
|
|
16849
16841
|
"map.add.layer.file": "Aus einer Datei",
|
|
16850
16842
|
"map.add.layer.wfs": "Aus WFS",
|
|
16851
16843
|
"map.add.layer.wms": "Aus WMS",
|
|
16852
16844
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16845
|
+
"map.geocoding.placeholder": "Nach einem Ort suchen",
|
|
16853
16846
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16854
16847
|
"map.layer.add": "Hinzufügen",
|
|
16855
16848
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -16893,18 +16886,20 @@ var de = {
|
|
|
16893
16886
|
"record.metadata.author": "Autor",
|
|
16894
16887
|
"record.metadata.catalog": "Katalog",
|
|
16895
16888
|
"record.metadata.contact": "Kontakt",
|
|
16896
|
-
"record.metadata.
|
|
16897
|
-
"record.metadata.details": "
|
|
16889
|
+
"record.metadata.creation": "Erstellungsdatum",
|
|
16890
|
+
"record.metadata.details": "Über die Daten",
|
|
16898
16891
|
"record.metadata.download": "Downloads",
|
|
16899
16892
|
"record.metadata.formats": "Formate",
|
|
16900
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16901
16893
|
"record.metadata.keywords": "Stichworte",
|
|
16902
|
-
"record.metadata.
|
|
16894
|
+
"record.metadata.languages": "Sprachen",
|
|
16895
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
16903
16896
|
"record.metadata.links": "Links",
|
|
16904
16897
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16905
|
-
"record.metadata.
|
|
16906
|
-
"record.metadata.owner": "",
|
|
16898
|
+
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
16899
|
+
"record.metadata.owner": "Herkunftskatalog",
|
|
16907
16900
|
"record.metadata.preview": "Vorschau",
|
|
16901
|
+
"record.metadata.producer": "Datenproduzent",
|
|
16902
|
+
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
16908
16903
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16909
16904
|
"record.metadata.quality": "Metadatenqualität",
|
|
16910
16905
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
@@ -16926,12 +16921,17 @@ var de = {
|
|
|
16926
16921
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16927
16922
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16928
16923
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16929
|
-
"record.metadata.
|
|
16924
|
+
"record.metadata.status": "Status",
|
|
16925
|
+
"record.metadata.technical": "Technische Informationen",
|
|
16926
|
+
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
16927
|
+
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
16928
|
+
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
16929
|
+
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
16930
16930
|
"record.metadata.title": "Titel",
|
|
16931
|
+
"record.metadata.topics": "Kategorien",
|
|
16931
16932
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16932
16933
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16933
16934
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16934
|
-
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16935
16935
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
16936
16936
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
16937
16937
|
"record.more.details": "Weitere Details",
|
|
@@ -16963,6 +16963,7 @@ var de = {
|
|
|
16963
16963
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16964
16964
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16965
16965
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16966
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16966
16967
|
"search.filters.license": "Lizenz",
|
|
16967
16968
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16968
16969
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -16993,7 +16994,7 @@ var de = {
|
|
|
16993
16994
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16994
16995
|
"table.select.data": "Datenquelle",
|
|
16995
16996
|
"tooltip.html.copy": "HTML kopieren",
|
|
16996
|
-
"tooltip.id.copy": "",
|
|
16997
|
+
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
16997
16998
|
"tooltip.url.copy": "URL kopieren",
|
|
16998
16999
|
"tooltip.url.open": "URL öffnen",
|
|
16999
17000
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17027,20 +17028,21 @@ var en = {
|
|
|
17027
17028
|
"chart.type.line": "line chart",
|
|
17028
17029
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17029
17030
|
"chart.type.pie": "pie chart",
|
|
17031
|
+
"dashboard.createRecord": "New record",
|
|
17030
17032
|
"dashboard.labels.mySpace": "My space",
|
|
17031
|
-
"dashboard.records.all": "
|
|
17033
|
+
"dashboard.records.all": "Metadata records",
|
|
17032
17034
|
"dashboard.records.myDraft": "My drafts",
|
|
17033
17035
|
"dashboard.records.myLibrary": "My library",
|
|
17034
17036
|
"dashboard.records.myOrg": "Organization",
|
|
17035
17037
|
"dashboard.records.myRecords": "My Records",
|
|
17036
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17037
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17038
17038
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17039
17039
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17040
17040
|
"dashboard.records.userDetail": "Name",
|
|
17041
17041
|
"dashboard.records.userEmail": "Email",
|
|
17042
17042
|
"dashboard.records.username": "Username",
|
|
17043
17043
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
17044
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
17045
|
+
"dashboard.results.listResources": "Show resources",
|
|
17044
17046
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17045
17047
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17046
17048
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17167,27 +17169,28 @@ var en = {
|
|
|
17167
17169
|
"facets.block.title.tag.default": "Tag",
|
|
17168
17170
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
17169
17171
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
17170
|
-
"language.ca": "
|
|
17171
|
-
"language.cs": "
|
|
17172
|
-
"language.de": "
|
|
17172
|
+
"language.ca": "Catalan",
|
|
17173
|
+
"language.cs": "Czech",
|
|
17174
|
+
"language.de": "German",
|
|
17173
17175
|
"language.en": "English",
|
|
17174
|
-
"language.es": "
|
|
17175
|
-
"language.fi": "
|
|
17176
|
-
"language.fr": "
|
|
17177
|
-
"language.is": "
|
|
17178
|
-
"language.it": "
|
|
17179
|
-
"language.ko": "
|
|
17180
|
-
"language.nl": "
|
|
17181
|
-
"language.pt": "
|
|
17182
|
-
"language.ru": "
|
|
17183
|
-
"language.sk": "
|
|
17184
|
-
"language.zh": "
|
|
17176
|
+
"language.es": "Spanish",
|
|
17177
|
+
"language.fi": "Finnish",
|
|
17178
|
+
"language.fr": "French",
|
|
17179
|
+
"language.is": "Icelandic",
|
|
17180
|
+
"language.it": "Italian",
|
|
17181
|
+
"language.ko": "Korean",
|
|
17182
|
+
"language.nl": "Dutch",
|
|
17183
|
+
"language.pt": "Portuguese",
|
|
17184
|
+
"language.ru": "Russian",
|
|
17185
|
+
"language.sk": "Slovak",
|
|
17186
|
+
"language.zh": "Chinese",
|
|
17185
17187
|
"map.add.layer": "Add a layer",
|
|
17186
17188
|
"map.add.layer.catalog": "From the catalog",
|
|
17187
17189
|
"map.add.layer.file": "From a file",
|
|
17188
17190
|
"map.add.layer.wfs": "From WFS",
|
|
17189
17191
|
"map.add.layer.wms": "From WMS",
|
|
17190
17192
|
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
17193
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
17191
17194
|
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
17192
17195
|
"map.layer.add": "Add",
|
|
17193
17196
|
"map.layers.available": "Available Layers",
|
|
@@ -17231,18 +17234,20 @@ var en = {
|
|
|
17231
17234
|
"record.metadata.author": "Author",
|
|
17232
17235
|
"record.metadata.catalog": "Catalog",
|
|
17233
17236
|
"record.metadata.contact": "Contact",
|
|
17234
|
-
"record.metadata.
|
|
17235
|
-
"record.metadata.details": "
|
|
17237
|
+
"record.metadata.creation": "Date of creation",
|
|
17238
|
+
"record.metadata.details": "About the data",
|
|
17236
17239
|
"record.metadata.download": "Downloads",
|
|
17237
17240
|
"record.metadata.formats": "Formats",
|
|
17238
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17239
17241
|
"record.metadata.keywords": "Keywords",
|
|
17240
|
-
"record.metadata.
|
|
17242
|
+
"record.metadata.languages": "Languages",
|
|
17243
|
+
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
17241
17244
|
"record.metadata.links": "Links",
|
|
17242
17245
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17243
|
-
"record.metadata.
|
|
17246
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17244
17247
|
"record.metadata.owner": "Catalog of origin",
|
|
17245
17248
|
"record.metadata.preview": "Preview",
|
|
17249
|
+
"record.metadata.producer": "Data producer",
|
|
17250
|
+
"record.metadata.publication": "Date of publication",
|
|
17246
17251
|
"record.metadata.publications": "publications",
|
|
17247
17252
|
"record.metadata.quality": "Metadata Quality",
|
|
17248
17253
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
@@ -17264,14 +17269,19 @@ var en = {
|
|
|
17264
17269
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17265
17270
|
"record.metadata.related": "Related records",
|
|
17266
17271
|
"record.metadata.sheet": "Original metadata",
|
|
17267
|
-
"record.metadata.
|
|
17272
|
+
"record.metadata.status": "Status",
|
|
17273
|
+
"record.metadata.technical": "Technical information",
|
|
17274
|
+
"record.metadata.temporalExtent": "Temporal extent",
|
|
17275
|
+
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
17276
|
+
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
17277
|
+
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
17268
17278
|
"record.metadata.title": "Title",
|
|
17279
|
+
"record.metadata.topics": "Categories",
|
|
17269
17280
|
"record.metadata.type": "Geographical dataset",
|
|
17270
17281
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17271
17282
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17272
|
-
"record.metadata.
|
|
17273
|
-
"record.metadata.
|
|
17274
|
-
"record.metadata.usage": "Usage & constraints",
|
|
17283
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17284
|
+
"record.metadata.usage": "License and Conditions",
|
|
17275
17285
|
"record.more.details": "Read more",
|
|
17276
17286
|
"record.tab.chart": "Chart",
|
|
17277
17287
|
"record.tab.data": "Table",
|
|
@@ -17301,6 +17311,7 @@ var en = {
|
|
|
17301
17311
|
"search.filters.isSpatial": "Is spatial data",
|
|
17302
17312
|
"search.filters.isSpatial.no": "non spatial",
|
|
17303
17313
|
"search.filters.isSpatial.yes": "spatial",
|
|
17314
|
+
"search.filters.keyword": "Keyword",
|
|
17304
17315
|
"search.filters.license": "License",
|
|
17305
17316
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17306
17317
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17365,20 +17376,21 @@ var es = {
|
|
|
17365
17376
|
"chart.type.line": "gráfico de líneas",
|
|
17366
17377
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17367
17378
|
"chart.type.pie": "gráfico circular",
|
|
17379
|
+
"dashboard.createRecord": "",
|
|
17368
17380
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17369
17381
|
"dashboard.records.all": "Catálogo",
|
|
17370
17382
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17371
17383
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17372
17384
|
"dashboard.records.myOrg": "Organización",
|
|
17373
17385
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17374
|
-
"dashboard.records.noRecord": "",
|
|
17375
|
-
"dashboard.records.noUser": "",
|
|
17376
17386
|
"dashboard.records.publishedRecords": "",
|
|
17377
17387
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17378
17388
|
"dashboard.records.userDetail": "",
|
|
17379
17389
|
"dashboard.records.userEmail": "",
|
|
17380
17390
|
"dashboard.records.username": "",
|
|
17381
17391
|
"dashboard.records.users": "",
|
|
17392
|
+
"dashboard.results.listMetadata": "",
|
|
17393
|
+
"dashboard.results.listResources": "",
|
|
17382
17394
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17383
17395
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17384
17396
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17505,27 +17517,28 @@ var es = {
|
|
|
17505
17517
|
"facets.block.title.tag.default": "",
|
|
17506
17518
|
"facets.block.title.th_regions_tree.default": "",
|
|
17507
17519
|
"favorite.not.authenticated.tooltip": "",
|
|
17508
|
-
"language.ca": "
|
|
17509
|
-
"language.cs": "
|
|
17510
|
-
"language.de": "
|
|
17511
|
-
"language.en": "
|
|
17520
|
+
"language.ca": "Catalán",
|
|
17521
|
+
"language.cs": "Checo",
|
|
17522
|
+
"language.de": "Alemán",
|
|
17523
|
+
"language.en": "Inglés",
|
|
17512
17524
|
"language.es": "Español",
|
|
17513
|
-
"language.fi": "
|
|
17514
|
-
"language.fr": "
|
|
17515
|
-
"language.is": "
|
|
17525
|
+
"language.fi": "Finlandés",
|
|
17526
|
+
"language.fr": "Francés",
|
|
17527
|
+
"language.is": "Islandés",
|
|
17516
17528
|
"language.it": "Italiano",
|
|
17517
|
-
"language.ko": "
|
|
17518
|
-
"language.nl": "
|
|
17519
|
-
"language.pt": "
|
|
17520
|
-
"language.ru": "
|
|
17521
|
-
"language.sk": "
|
|
17522
|
-
"language.zh": "
|
|
17529
|
+
"language.ko": "Coreano",
|
|
17530
|
+
"language.nl": "Neerlandés",
|
|
17531
|
+
"language.pt": "Portugués",
|
|
17532
|
+
"language.ru": "Ruso",
|
|
17533
|
+
"language.sk": "Eslovaco",
|
|
17534
|
+
"language.zh": "Chino",
|
|
17523
17535
|
"map.add.layer": "",
|
|
17524
17536
|
"map.add.layer.catalog": "",
|
|
17525
17537
|
"map.add.layer.file": "",
|
|
17526
17538
|
"map.add.layer.wfs": "",
|
|
17527
17539
|
"map.add.layer.wms": "",
|
|
17528
17540
|
"map.addFromFile.placeholder": "",
|
|
17541
|
+
"map.geocoding.placeholder": "",
|
|
17529
17542
|
"map.help.addFromFile": "",
|
|
17530
17543
|
"map.layer.add": "",
|
|
17531
17544
|
"map.layers.available": "",
|
|
@@ -17569,18 +17582,20 @@ var es = {
|
|
|
17569
17582
|
"record.metadata.author": "",
|
|
17570
17583
|
"record.metadata.catalog": "",
|
|
17571
17584
|
"record.metadata.contact": "",
|
|
17572
|
-
"record.metadata.
|
|
17585
|
+
"record.metadata.creation": "",
|
|
17573
17586
|
"record.metadata.details": "",
|
|
17574
17587
|
"record.metadata.download": "",
|
|
17575
17588
|
"record.metadata.formats": "",
|
|
17576
|
-
"record.metadata.isOpenData": "",
|
|
17577
17589
|
"record.metadata.keywords": "",
|
|
17590
|
+
"record.metadata.languages": "",
|
|
17578
17591
|
"record.metadata.lastUpdate": "",
|
|
17579
17592
|
"record.metadata.links": "",
|
|
17580
17593
|
"record.metadata.noUsage": "",
|
|
17581
|
-
"record.metadata.
|
|
17594
|
+
"record.metadata.otherConstraints": "",
|
|
17582
17595
|
"record.metadata.owner": "",
|
|
17583
17596
|
"record.metadata.preview": "",
|
|
17597
|
+
"record.metadata.producer": "",
|
|
17598
|
+
"record.metadata.publication": "",
|
|
17584
17599
|
"record.metadata.publications": "",
|
|
17585
17600
|
"record.metadata.quality": "",
|
|
17586
17601
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -17602,12 +17617,17 @@ var es = {
|
|
|
17602
17617
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17603
17618
|
"record.metadata.related": "",
|
|
17604
17619
|
"record.metadata.sheet": "",
|
|
17605
|
-
"record.metadata.
|
|
17620
|
+
"record.metadata.status": "",
|
|
17621
|
+
"record.metadata.technical": "",
|
|
17622
|
+
"record.metadata.temporalExtent": "",
|
|
17623
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
17624
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
17625
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
17606
17626
|
"record.metadata.title": "",
|
|
17627
|
+
"record.metadata.topics": "",
|
|
17607
17628
|
"record.metadata.type": "",
|
|
17608
17629
|
"record.metadata.uniqueId": "",
|
|
17609
17630
|
"record.metadata.updateFrequency": "",
|
|
17610
|
-
"record.metadata.updateStatus": "",
|
|
17611
17631
|
"record.metadata.updatedOn": "",
|
|
17612
17632
|
"record.metadata.usage": "",
|
|
17613
17633
|
"record.more.details": "",
|
|
@@ -17639,6 +17659,7 @@ var es = {
|
|
|
17639
17659
|
"search.filters.isSpatial": "",
|
|
17640
17660
|
"search.filters.isSpatial.no": "",
|
|
17641
17661
|
"search.filters.isSpatial.yes": "",
|
|
17662
|
+
"search.filters.keyword": "",
|
|
17642
17663
|
"search.filters.license": "",
|
|
17643
17664
|
"search.filters.license.cc-by": "",
|
|
17644
17665
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17703,20 +17724,21 @@ var fr = {
|
|
|
17703
17724
|
"chart.type.line": "ligne",
|
|
17704
17725
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17705
17726
|
"chart.type.pie": "camembert",
|
|
17727
|
+
"dashboard.createRecord": "Nouvel enregistrement",
|
|
17706
17728
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17707
17729
|
"dashboard.records.all": "Catalogue",
|
|
17708
17730
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17709
17731
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17710
17732
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17711
17733
|
"dashboard.records.myRecords": "Mes fiches publiées",
|
|
17712
|
-
"dashboard.records.noRecord": "Aucun jeu de données pour cette organisation",
|
|
17713
|
-
"dashboard.records.noUser": "Aucun utilisateur pour cette organisation",
|
|
17714
17734
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17715
17735
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17716
17736
|
"dashboard.records.userDetail": "Nom",
|
|
17717
17737
|
"dashboard.records.userEmail": "Email",
|
|
17718
17738
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17719
17739
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17740
|
+
"dashboard.results.listMetadata": "Afficher les métadonnées",
|
|
17741
|
+
"dashboard.results.listResources": "Afficher les ressources",
|
|
17720
17742
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17721
17743
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17722
17744
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17798,7 +17820,7 @@ var fr = {
|
|
|
17798
17820
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17799
17821
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17800
17822
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17801
|
-
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont
|
|
17823
|
+
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont là pour vous répondre.</p>",
|
|
17802
17824
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17803
17825
|
"datahub.news.feed": "Fil d'activité",
|
|
17804
17826
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17843,37 +17865,38 @@ var fr = {
|
|
|
17843
17865
|
"facets.block.title.tag.default": "Tag",
|
|
17844
17866
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
17845
17867
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
17846
|
-
"language.ca": "
|
|
17847
|
-
"language.cs": "
|
|
17848
|
-
"language.de": "
|
|
17849
|
-
"language.en": "
|
|
17850
|
-
"language.es": "
|
|
17851
|
-
"language.fi": "
|
|
17868
|
+
"language.ca": "Catalan",
|
|
17869
|
+
"language.cs": "Tchèque",
|
|
17870
|
+
"language.de": "Allemand",
|
|
17871
|
+
"language.en": "Anglais",
|
|
17872
|
+
"language.es": "Espagnol",
|
|
17873
|
+
"language.fi": "Finnois",
|
|
17852
17874
|
"language.fr": "Français",
|
|
17853
|
-
"language.is": "
|
|
17854
|
-
"language.it": "
|
|
17855
|
-
"language.ko": "
|
|
17856
|
-
"language.nl": "
|
|
17857
|
-
"language.pt": "
|
|
17858
|
-
"language.ru": "
|
|
17859
|
-
"language.sk": "
|
|
17860
|
-
"language.zh": "
|
|
17861
|
-
"map.add.layer": "",
|
|
17862
|
-
"map.add.layer.catalog": "",
|
|
17863
|
-
"map.add.layer.file": "",
|
|
17864
|
-
"map.add.layer.wfs": "",
|
|
17865
|
-
"map.add.layer.wms": "",
|
|
17866
|
-
"map.addFromFile.placeholder": "",
|
|
17867
|
-
"map.
|
|
17868
|
-
"map.
|
|
17869
|
-
"map.
|
|
17870
|
-
"map.layers.
|
|
17875
|
+
"language.is": "Islandais",
|
|
17876
|
+
"language.it": "Italien",
|
|
17877
|
+
"language.ko": "Coréen",
|
|
17878
|
+
"language.nl": "Néerlandais",
|
|
17879
|
+
"language.pt": "Portugais",
|
|
17880
|
+
"language.ru": "Russe",
|
|
17881
|
+
"language.sk": "Slovaque",
|
|
17882
|
+
"language.zh": "Chinois",
|
|
17883
|
+
"map.add.layer": "Ajouter une couche",
|
|
17884
|
+
"map.add.layer.catalog": "Du catalogue",
|
|
17885
|
+
"map.add.layer.file": "À partir d'un fichier",
|
|
17886
|
+
"map.add.layer.wfs": "Depuis un service WFS",
|
|
17887
|
+
"map.add.layer.wms": "Depuis un service WMS",
|
|
17888
|
+
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
17889
|
+
"map.geocoding.placeholder": "Rechercher un lieu",
|
|
17890
|
+
"map.help.addFromFile": "Cliquez ou glissez-déposez un fichier pour l'ajouter à la carte (supporte actuellement uniquement le format GeoJSON).",
|
|
17891
|
+
"map.layer.add": "Ajouter",
|
|
17892
|
+
"map.layers.available": "Couches disponibles",
|
|
17893
|
+
"map.layers.list": "Couches",
|
|
17871
17894
|
"map.loading.data": "Chargement des données...",
|
|
17872
|
-
"map.loading.service": "",
|
|
17895
|
+
"map.loading.service": "Chargement du service...",
|
|
17873
17896
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17874
17897
|
"map.select.layer": "Source de données",
|
|
17875
|
-
"map.wfs.urlInput.hint": "",
|
|
17876
|
-
"map.wms.urlInput.hint": "",
|
|
17898
|
+
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
17899
|
+
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
17877
17900
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17878
17901
|
"nav.back": "Retour",
|
|
17879
17902
|
next: next$3,
|
|
@@ -17907,18 +17930,20 @@ var fr = {
|
|
|
17907
17930
|
"record.metadata.author": "Auteur",
|
|
17908
17931
|
"record.metadata.catalog": "Catalogue",
|
|
17909
17932
|
"record.metadata.contact": "Contact",
|
|
17910
|
-
"record.metadata.
|
|
17911
|
-
"record.metadata.details": "
|
|
17933
|
+
"record.metadata.creation": "Date de création",
|
|
17934
|
+
"record.metadata.details": "A propos de la donnée",
|
|
17912
17935
|
"record.metadata.download": "Téléchargements",
|
|
17913
17936
|
"record.metadata.formats": "Formats",
|
|
17914
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17915
17937
|
"record.metadata.keywords": "Mots clés",
|
|
17916
|
-
"record.metadata.
|
|
17938
|
+
"record.metadata.languages": "Langues",
|
|
17939
|
+
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
17917
17940
|
"record.metadata.links": "Liens",
|
|
17918
17941
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17919
|
-
"record.metadata.
|
|
17942
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17920
17943
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17921
17944
|
"record.metadata.preview": "Aperçu",
|
|
17945
|
+
"record.metadata.producer": "Producteur de la donnée",
|
|
17946
|
+
"record.metadata.publication": "Date de publication",
|
|
17922
17947
|
"record.metadata.publications": "données",
|
|
17923
17948
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
17924
17949
|
"record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
|
|
@@ -17940,14 +17965,19 @@ var fr = {
|
|
|
17940
17965
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17941
17966
|
"record.metadata.related": "Voir aussi",
|
|
17942
17967
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17943
|
-
"record.metadata.
|
|
17968
|
+
"record.metadata.status": "Statut",
|
|
17969
|
+
"record.metadata.technical": "Informations techniques",
|
|
17970
|
+
"record.metadata.temporalExtent": "Etendue temporelle",
|
|
17971
|
+
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
17972
|
+
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
17973
|
+
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
17944
17974
|
"record.metadata.title": "Titre",
|
|
17975
|
+
"record.metadata.topics": "Catégories",
|
|
17945
17976
|
"record.metadata.type": "Donnée géographique",
|
|
17946
17977
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17947
17978
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17948
|
-
"record.metadata.
|
|
17949
|
-
"record.metadata.
|
|
17950
|
-
"record.metadata.usage": "Conditions d'utilisation",
|
|
17979
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17980
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17951
17981
|
"record.more.details": "Détails",
|
|
17952
17982
|
"record.tab.chart": "Graphique",
|
|
17953
17983
|
"record.tab.data": "Tableau",
|
|
@@ -17977,6 +18007,7 @@ var fr = {
|
|
|
17977
18007
|
"search.filters.isSpatial": "Données spatiales",
|
|
17978
18008
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17979
18009
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
18010
|
+
"search.filters.keyword": "Mot-clé",
|
|
17980
18011
|
"search.filters.license": "Licence",
|
|
17981
18012
|
"search.filters.license.cc-by": "cc-by",
|
|
17982
18013
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18041,20 +18072,21 @@ var it = {
|
|
|
18041
18072
|
"chart.type.line": "grafico a linee",
|
|
18042
18073
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18043
18074
|
"chart.type.pie": "grafico a torta",
|
|
18075
|
+
"dashboard.createRecord": "Crea un record",
|
|
18044
18076
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18045
18077
|
"dashboard.records.all": "Catalogo",
|
|
18046
18078
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18047
18079
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18048
18080
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18049
18081
|
"dashboard.records.myRecords": "I miei dati",
|
|
18050
|
-
"dashboard.records.noRecord": "Nessun dati per questa organizzazione",
|
|
18051
|
-
"dashboard.records.noUser": "Nessun utente per questa organizzazione",
|
|
18052
18082
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18053
18083
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18054
18084
|
"dashboard.records.userDetail": "Nome",
|
|
18055
18085
|
"dashboard.records.userEmail": "Email",
|
|
18056
18086
|
"dashboard.records.username": "Nome utente",
|
|
18057
18087
|
"dashboard.records.users": "utenti",
|
|
18088
|
+
"dashboard.results.listMetadata": "Elenco dei metadati",
|
|
18089
|
+
"dashboard.results.listResources": "Elenco delle risorse",
|
|
18058
18090
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18059
18091
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18060
18092
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18181,37 +18213,38 @@ var it = {
|
|
|
18181
18213
|
"facets.block.title.tag.default": "Tag",
|
|
18182
18214
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
18183
18215
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
18184
|
-
"language.ca": "
|
|
18185
|
-
"language.cs": "
|
|
18186
|
-
"language.de": "
|
|
18187
|
-
"language.en": "
|
|
18188
|
-
"language.es": "
|
|
18189
|
-
"language.fi": "
|
|
18190
|
-
"language.fr": "
|
|
18191
|
-
"language.is": "
|
|
18216
|
+
"language.ca": "Catalano",
|
|
18217
|
+
"language.cs": "Ceco",
|
|
18218
|
+
"language.de": "Tedesco",
|
|
18219
|
+
"language.en": "Inglese",
|
|
18220
|
+
"language.es": "Spagnolo",
|
|
18221
|
+
"language.fi": "Finlandese",
|
|
18222
|
+
"language.fr": "Francese",
|
|
18223
|
+
"language.is": "Islandese",
|
|
18192
18224
|
"language.it": "Italiano",
|
|
18193
|
-
"language.ko": "
|
|
18194
|
-
"language.nl": "
|
|
18195
|
-
"language.pt": "
|
|
18196
|
-
"language.ru": "
|
|
18197
|
-
"language.sk": "
|
|
18198
|
-
"language.zh": "
|
|
18225
|
+
"language.ko": "Coreano",
|
|
18226
|
+
"language.nl": "Olandese",
|
|
18227
|
+
"language.pt": "Portoghese",
|
|
18228
|
+
"language.ru": "Russo",
|
|
18229
|
+
"language.sk": "Slovacco",
|
|
18230
|
+
"language.zh": "Cinese",
|
|
18199
18231
|
"map.add.layer": "Aggiungere un layer",
|
|
18200
18232
|
"map.add.layer.catalog": "Dal catalogo",
|
|
18201
18233
|
"map.add.layer.file": "Da un file",
|
|
18202
18234
|
"map.add.layer.wfs": "Da un WFS",
|
|
18203
18235
|
"map.add.layer.wms": "Da un WMS",
|
|
18204
|
-
"map.addFromFile.placeholder": "",
|
|
18205
|
-
"map.
|
|
18206
|
-
"map.
|
|
18207
|
-
"map.
|
|
18236
|
+
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
18237
|
+
"map.geocoding.placeholder": "Cerca un luogo",
|
|
18238
|
+
"map.help.addFromFile": "Clicca o trascina un file per aggiungerlo alla mappa (attualmente supporta solo il formato GeoJSON)",
|
|
18239
|
+
"map.layer.add": "Aggiungi",
|
|
18240
|
+
"map.layers.available": "Layer disponibili",
|
|
18208
18241
|
"map.layers.list": "Layers",
|
|
18209
18242
|
"map.loading.data": "Caricamento dati...",
|
|
18210
|
-
"map.loading.service": "",
|
|
18243
|
+
"map.loading.service": "Caricamento del servizio...",
|
|
18211
18244
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18212
18245
|
"map.select.layer": "Sorgente dati",
|
|
18213
|
-
"map.wfs.urlInput.hint": "",
|
|
18214
|
-
"map.wms.urlInput.hint": "",
|
|
18246
|
+
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
18247
|
+
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
18215
18248
|
"multiselect.filter.placeholder": "Cerca",
|
|
18216
18249
|
"nav.back": "Indietro",
|
|
18217
18250
|
next: next$2,
|
|
@@ -18245,18 +18278,20 @@ var it = {
|
|
|
18245
18278
|
"record.metadata.author": "Autore",
|
|
18246
18279
|
"record.metadata.catalog": "Catalogo",
|
|
18247
18280
|
"record.metadata.contact": "Contatto",
|
|
18248
|
-
"record.metadata.
|
|
18249
|
-
"record.metadata.details": "
|
|
18281
|
+
"record.metadata.creation": "Data di creazione",
|
|
18282
|
+
"record.metadata.details": "A proposito del dati",
|
|
18250
18283
|
"record.metadata.download": "Download",
|
|
18251
18284
|
"record.metadata.formats": "Formati",
|
|
18252
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18253
18285
|
"record.metadata.keywords": "Parole chiave",
|
|
18254
|
-
"record.metadata.
|
|
18286
|
+
"record.metadata.languages": "Lingue",
|
|
18287
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
18255
18288
|
"record.metadata.links": "Collegamenti",
|
|
18256
18289
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18257
|
-
"record.metadata.
|
|
18290
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18258
18291
|
"record.metadata.owner": "Catalogo originale",
|
|
18259
18292
|
"record.metadata.preview": "Anteprima",
|
|
18293
|
+
"record.metadata.producer": "Produttore dei dati",
|
|
18294
|
+
"record.metadata.publication": "Data di pubblicazione",
|
|
18260
18295
|
"record.metadata.publications": "pubblicazioni",
|
|
18261
18296
|
"record.metadata.quality": "Qualità dei metadati",
|
|
18262
18297
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
@@ -18278,14 +18313,19 @@ var it = {
|
|
|
18278
18313
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18279
18314
|
"record.metadata.related": "Vedi anche",
|
|
18280
18315
|
"record.metadata.sheet": "Origine del metadata",
|
|
18281
|
-
"record.metadata.
|
|
18316
|
+
"record.metadata.status": "Stato",
|
|
18317
|
+
"record.metadata.technical": "Informazioni tecniche",
|
|
18318
|
+
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
18319
|
+
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
18320
|
+
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
18321
|
+
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
18282
18322
|
"record.metadata.title": "Titolo",
|
|
18323
|
+
"record.metadata.topics": "Categorie",
|
|
18283
18324
|
"record.metadata.type": "Dati geografici",
|
|
18284
18325
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18285
18326
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18286
|
-
"record.metadata.
|
|
18287
|
-
"record.metadata.
|
|
18288
|
-
"record.metadata.usage": "Condizioni d'uso",
|
|
18327
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18328
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18289
18329
|
"record.more.details": "Dettagli",
|
|
18290
18330
|
"record.tab.chart": "Grafico",
|
|
18291
18331
|
"record.tab.data": "Tabella",
|
|
@@ -18315,6 +18355,7 @@ var it = {
|
|
|
18315
18355
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18316
18356
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18317
18357
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18358
|
+
"search.filters.keyword": "Parola chiave",
|
|
18318
18359
|
"search.filters.license": "Licenza",
|
|
18319
18360
|
"search.filters.license.cc-by": "cc-by",
|
|
18320
18361
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18379,20 +18420,21 @@ var nl = {
|
|
|
18379
18420
|
"chart.type.line": "lijndiagram",
|
|
18380
18421
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18381
18422
|
"chart.type.pie": "cirkeldiagram",
|
|
18423
|
+
"dashboard.createRecord": "",
|
|
18382
18424
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18383
18425
|
"dashboard.records.all": "Catalogus",
|
|
18384
18426
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18385
18427
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18386
18428
|
"dashboard.records.myOrg": "Organisatie",
|
|
18387
18429
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18388
|
-
"dashboard.records.noRecord": "",
|
|
18389
|
-
"dashboard.records.noUser": "",
|
|
18390
18430
|
"dashboard.records.publishedRecords": "",
|
|
18391
18431
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18392
18432
|
"dashboard.records.userDetail": "",
|
|
18393
18433
|
"dashboard.records.userEmail": "",
|
|
18394
18434
|
"dashboard.records.username": "",
|
|
18395
18435
|
"dashboard.records.users": "",
|
|
18436
|
+
"dashboard.results.listMetadata": "",
|
|
18437
|
+
"dashboard.results.listResources": "",
|
|
18396
18438
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18397
18439
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18398
18440
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18519,27 +18561,28 @@ var nl = {
|
|
|
18519
18561
|
"facets.block.title.tag.default": "",
|
|
18520
18562
|
"facets.block.title.th_regions_tree.default": "",
|
|
18521
18563
|
"favorite.not.authenticated.tooltip": "",
|
|
18522
|
-
"language.ca": "
|
|
18523
|
-
"language.cs": "
|
|
18524
|
-
"language.de": "
|
|
18525
|
-
"language.en": "
|
|
18526
|
-
"language.es": "
|
|
18527
|
-
"language.fi": "
|
|
18528
|
-
"language.fr": "
|
|
18529
|
-
"language.is": "
|
|
18530
|
-
"language.it": "
|
|
18531
|
-
"language.ko": "
|
|
18564
|
+
"language.ca": "Catalaans",
|
|
18565
|
+
"language.cs": "Tsjechisch",
|
|
18566
|
+
"language.de": "Duits",
|
|
18567
|
+
"language.en": "Engels",
|
|
18568
|
+
"language.es": "Spaans",
|
|
18569
|
+
"language.fi": "Fins",
|
|
18570
|
+
"language.fr": "Frans",
|
|
18571
|
+
"language.is": "IJslands",
|
|
18572
|
+
"language.it": "Italiaans",
|
|
18573
|
+
"language.ko": "Koreaans",
|
|
18532
18574
|
"language.nl": "Nederlands",
|
|
18533
|
-
"language.pt": "
|
|
18534
|
-
"language.ru": "
|
|
18535
|
-
"language.sk": "
|
|
18536
|
-
"language.zh": "
|
|
18575
|
+
"language.pt": "Portugees",
|
|
18576
|
+
"language.ru": "Russisch",
|
|
18577
|
+
"language.sk": "Slowaaks",
|
|
18578
|
+
"language.zh": "Chinees",
|
|
18537
18579
|
"map.add.layer": "",
|
|
18538
18580
|
"map.add.layer.catalog": "",
|
|
18539
18581
|
"map.add.layer.file": "",
|
|
18540
18582
|
"map.add.layer.wfs": "",
|
|
18541
18583
|
"map.add.layer.wms": "",
|
|
18542
18584
|
"map.addFromFile.placeholder": "",
|
|
18585
|
+
"map.geocoding.placeholder": "",
|
|
18543
18586
|
"map.help.addFromFile": "",
|
|
18544
18587
|
"map.layer.add": "",
|
|
18545
18588
|
"map.layers.available": "",
|
|
@@ -18583,18 +18626,20 @@ var nl = {
|
|
|
18583
18626
|
"record.metadata.author": "",
|
|
18584
18627
|
"record.metadata.catalog": "",
|
|
18585
18628
|
"record.metadata.contact": "",
|
|
18586
|
-
"record.metadata.
|
|
18629
|
+
"record.metadata.creation": "",
|
|
18587
18630
|
"record.metadata.details": "",
|
|
18588
18631
|
"record.metadata.download": "",
|
|
18589
18632
|
"record.metadata.formats": "",
|
|
18590
|
-
"record.metadata.isOpenData": "",
|
|
18591
18633
|
"record.metadata.keywords": "",
|
|
18634
|
+
"record.metadata.languages": "",
|
|
18592
18635
|
"record.metadata.lastUpdate": "",
|
|
18593
18636
|
"record.metadata.links": "",
|
|
18594
18637
|
"record.metadata.noUsage": "",
|
|
18595
|
-
"record.metadata.
|
|
18638
|
+
"record.metadata.otherConstraints": "",
|
|
18596
18639
|
"record.metadata.owner": "",
|
|
18597
18640
|
"record.metadata.preview": "",
|
|
18641
|
+
"record.metadata.producer": "",
|
|
18642
|
+
"record.metadata.publication": "",
|
|
18598
18643
|
"record.metadata.publications": "",
|
|
18599
18644
|
"record.metadata.quality": "",
|
|
18600
18645
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18616,12 +18661,17 @@ var nl = {
|
|
|
18616
18661
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18617
18662
|
"record.metadata.related": "",
|
|
18618
18663
|
"record.metadata.sheet": "",
|
|
18619
|
-
"record.metadata.
|
|
18664
|
+
"record.metadata.status": "",
|
|
18665
|
+
"record.metadata.technical": "",
|
|
18666
|
+
"record.metadata.temporalExtent": "",
|
|
18667
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
18668
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
18669
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18620
18670
|
"record.metadata.title": "",
|
|
18671
|
+
"record.metadata.topics": "",
|
|
18621
18672
|
"record.metadata.type": "",
|
|
18622
18673
|
"record.metadata.uniqueId": "",
|
|
18623
18674
|
"record.metadata.updateFrequency": "",
|
|
18624
|
-
"record.metadata.updateStatus": "",
|
|
18625
18675
|
"record.metadata.updatedOn": "",
|
|
18626
18676
|
"record.metadata.usage": "",
|
|
18627
18677
|
"record.more.details": "",
|
|
@@ -18653,6 +18703,7 @@ var nl = {
|
|
|
18653
18703
|
"search.filters.isSpatial": "",
|
|
18654
18704
|
"search.filters.isSpatial.no": "",
|
|
18655
18705
|
"search.filters.isSpatial.yes": "",
|
|
18706
|
+
"search.filters.keyword": "",
|
|
18656
18707
|
"search.filters.license": "",
|
|
18657
18708
|
"search.filters.license.cc-by": "",
|
|
18658
18709
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18717,20 +18768,21 @@ var pt = {
|
|
|
18717
18768
|
"chart.type.line": "gráfico de linha",
|
|
18718
18769
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18719
18770
|
"chart.type.pie": "gráfico de pizza",
|
|
18771
|
+
"dashboard.createRecord": "",
|
|
18720
18772
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18721
18773
|
"dashboard.records.all": "Catálogo",
|
|
18722
18774
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18723
18775
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18724
18776
|
"dashboard.records.myOrg": "Organização",
|
|
18725
18777
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18726
|
-
"dashboard.records.noRecord": "",
|
|
18727
|
-
"dashboard.records.noUser": "",
|
|
18728
18778
|
"dashboard.records.publishedRecords": "",
|
|
18729
18779
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18730
18780
|
"dashboard.records.userDetail": "",
|
|
18731
18781
|
"dashboard.records.userEmail": "",
|
|
18732
18782
|
"dashboard.records.username": "",
|
|
18733
18783
|
"dashboard.records.users": "",
|
|
18784
|
+
"dashboard.results.listMetadata": "",
|
|
18785
|
+
"dashboard.results.listResources": "",
|
|
18734
18786
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18735
18787
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18736
18788
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18857,27 +18909,28 @@ var pt = {
|
|
|
18857
18909
|
"facets.block.title.tag.default": "",
|
|
18858
18910
|
"facets.block.title.th_regions_tree.default": "",
|
|
18859
18911
|
"favorite.not.authenticated.tooltip": "",
|
|
18860
|
-
"language.ca": "
|
|
18861
|
-
"language.cs": "
|
|
18862
|
-
"language.de": "
|
|
18863
|
-
"language.en": "
|
|
18864
|
-
"language.es": "
|
|
18865
|
-
"language.fi": "
|
|
18866
|
-
"language.fr": "
|
|
18867
|
-
"language.is": "
|
|
18912
|
+
"language.ca": "Catalão",
|
|
18913
|
+
"language.cs": "Tcheco",
|
|
18914
|
+
"language.de": "Alemão",
|
|
18915
|
+
"language.en": "Inglês",
|
|
18916
|
+
"language.es": "Espanhol",
|
|
18917
|
+
"language.fi": "Finlandês",
|
|
18918
|
+
"language.fr": "Francês",
|
|
18919
|
+
"language.is": "Islandês",
|
|
18868
18920
|
"language.it": "Italiano",
|
|
18869
|
-
"language.ko": "
|
|
18870
|
-
"language.nl": "
|
|
18921
|
+
"language.ko": "Coreano",
|
|
18922
|
+
"language.nl": "Holandês",
|
|
18871
18923
|
"language.pt": "Português",
|
|
18872
|
-
"language.ru": "
|
|
18873
|
-
"language.sk": "
|
|
18874
|
-
"language.zh": "
|
|
18924
|
+
"language.ru": "Russo",
|
|
18925
|
+
"language.sk": "Eslovaco",
|
|
18926
|
+
"language.zh": "Chinês",
|
|
18875
18927
|
"map.add.layer": "",
|
|
18876
18928
|
"map.add.layer.catalog": "",
|
|
18877
18929
|
"map.add.layer.file": "",
|
|
18878
18930
|
"map.add.layer.wfs": "",
|
|
18879
18931
|
"map.add.layer.wms": "",
|
|
18880
18932
|
"map.addFromFile.placeholder": "",
|
|
18933
|
+
"map.geocoding.placeholder": "",
|
|
18881
18934
|
"map.help.addFromFile": "",
|
|
18882
18935
|
"map.layer.add": "",
|
|
18883
18936
|
"map.layers.available": "",
|
|
@@ -18921,18 +18974,20 @@ var pt = {
|
|
|
18921
18974
|
"record.metadata.author": "",
|
|
18922
18975
|
"record.metadata.catalog": "",
|
|
18923
18976
|
"record.metadata.contact": "",
|
|
18924
|
-
"record.metadata.
|
|
18977
|
+
"record.metadata.creation": "",
|
|
18925
18978
|
"record.metadata.details": "",
|
|
18926
18979
|
"record.metadata.download": "",
|
|
18927
18980
|
"record.metadata.formats": "",
|
|
18928
|
-
"record.metadata.isOpenData": "",
|
|
18929
18981
|
"record.metadata.keywords": "",
|
|
18982
|
+
"record.metadata.languages": "",
|
|
18930
18983
|
"record.metadata.lastUpdate": "",
|
|
18931
18984
|
"record.metadata.links": "",
|
|
18932
18985
|
"record.metadata.noUsage": "",
|
|
18933
|
-
"record.metadata.
|
|
18986
|
+
"record.metadata.otherConstraints": "",
|
|
18934
18987
|
"record.metadata.owner": "",
|
|
18935
18988
|
"record.metadata.preview": "",
|
|
18989
|
+
"record.metadata.producer": "",
|
|
18990
|
+
"record.metadata.publication": "",
|
|
18936
18991
|
"record.metadata.publications": "",
|
|
18937
18992
|
"record.metadata.quality": "",
|
|
18938
18993
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18954,12 +19009,17 @@ var pt = {
|
|
|
18954
19009
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18955
19010
|
"record.metadata.related": "",
|
|
18956
19011
|
"record.metadata.sheet": "",
|
|
18957
|
-
"record.metadata.
|
|
19012
|
+
"record.metadata.status": "",
|
|
19013
|
+
"record.metadata.technical": "",
|
|
19014
|
+
"record.metadata.temporalExtent": "",
|
|
19015
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
19016
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
19017
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18958
19018
|
"record.metadata.title": "",
|
|
19019
|
+
"record.metadata.topics": "",
|
|
18959
19020
|
"record.metadata.type": "",
|
|
18960
19021
|
"record.metadata.uniqueId": "",
|
|
18961
19022
|
"record.metadata.updateFrequency": "",
|
|
18962
|
-
"record.metadata.updateStatus": "",
|
|
18963
19023
|
"record.metadata.updatedOn": "",
|
|
18964
19024
|
"record.metadata.usage": "",
|
|
18965
19025
|
"record.more.details": "",
|
|
@@ -18991,6 +19051,7 @@ var pt = {
|
|
|
18991
19051
|
"search.filters.isSpatial": "",
|
|
18992
19052
|
"search.filters.isSpatial.no": "",
|
|
18993
19053
|
"search.filters.isSpatial.yes": "",
|
|
19054
|
+
"search.filters.keyword": "",
|
|
18994
19055
|
"search.filters.license": "",
|
|
18995
19056
|
"search.filters.license.cc-by": "",
|
|
18996
19057
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19099,8 +19160,8 @@ class Gn4FieldMapper {
|
|
|
19099
19160
|
},
|
|
19100
19161
|
cl_topic: (output, source) => ({
|
|
19101
19162
|
...output,
|
|
19102
|
-
|
|
19103
|
-
...(output.
|
|
19163
|
+
topics: [
|
|
19164
|
+
...(output.topics || []),
|
|
19104
19165
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19105
19166
|
],
|
|
19106
19167
|
}),
|
|
@@ -19124,6 +19185,18 @@ class Gn4FieldMapper {
|
|
|
19124
19185
|
...output,
|
|
19125
19186
|
recordUpdated: toDate(selectField(source, 'changeDate')),
|
|
19126
19187
|
}),
|
|
19188
|
+
publicationDateForResource: (output, source) => ({
|
|
19189
|
+
...output,
|
|
19190
|
+
recordPublished: toDate(selectField(source, 'publicationDateForResource')),
|
|
19191
|
+
}),
|
|
19192
|
+
resourceLanguage: (output, source) => {
|
|
19193
|
+
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
19194
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
19195
|
+
return {
|
|
19196
|
+
...output,
|
|
19197
|
+
languages,
|
|
19198
|
+
};
|
|
19199
|
+
},
|
|
19127
19200
|
link: (output, source) => {
|
|
19128
19201
|
const rawLinks = getAsArray(selectField(source, 'link'));
|
|
19129
19202
|
const distributions = rawLinks
|
|
@@ -19155,31 +19228,22 @@ class Gn4FieldMapper {
|
|
|
19155
19228
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19156
19229
|
}, output);
|
|
19157
19230
|
},
|
|
19158
|
-
|
|
19231
|
+
allKeywords: (output, source) => ({
|
|
19159
19232
|
...output,
|
|
19160
|
-
keywords:
|
|
19233
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19161
19234
|
}),
|
|
19162
19235
|
inspireTheme: (output, source) => ({
|
|
19163
19236
|
...output,
|
|
19164
|
-
|
|
19165
|
-
...(output.
|
|
19237
|
+
topics: [
|
|
19238
|
+
...(output.topics || []),
|
|
19166
19239
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19167
19240
|
],
|
|
19168
19241
|
}),
|
|
19169
|
-
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19170
|
-
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19171
|
-
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('
|
|
19172
|
-
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19173
|
-
licenseObject: (output, source) => (
|
|
19174
|
-
...output,
|
|
19175
|
-
licenses: getAsArray(selectField(source, 'licenseObject')).map((license) => {
|
|
19176
|
-
const link = getAsUrl(selectField(license, 'link'));
|
|
19177
|
-
return {
|
|
19178
|
-
text: selectTranslatedValue(license, this.lang3),
|
|
19179
|
-
...(link ? { link } : {}),
|
|
19180
|
-
};
|
|
19181
|
-
}),
|
|
19182
|
-
}),
|
|
19242
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19243
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19244
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19245
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19246
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19183
19247
|
lineageObject: (output, source) => ({
|
|
19184
19248
|
...output,
|
|
19185
19249
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19205,33 +19269,78 @@ class Gn4FieldMapper {
|
|
|
19205
19269
|
kind,
|
|
19206
19270
|
};
|
|
19207
19271
|
},
|
|
19272
|
+
geom: (output, source) => {
|
|
19273
|
+
const geoms = getAsArray(selectField(source, 'geom'));
|
|
19274
|
+
const shapes = getAsArray(selectField(source, 'shape'));
|
|
19275
|
+
const extentDescriptions = getAsArray(selectField(source, 'extentDescriptionObject'));
|
|
19276
|
+
const spatialExtents = getAsArray(selectField(source, 'spatialExtents'));
|
|
19277
|
+
return {
|
|
19278
|
+
...output,
|
|
19279
|
+
spatialExtents: [
|
|
19280
|
+
...spatialExtents,
|
|
19281
|
+
...geoms.map((geom, index) => {
|
|
19282
|
+
const description = selectTranslatedValue(getArrayItem(extentDescriptions, index), this.lang3);
|
|
19283
|
+
const geometry = shapes[index] ?? geom;
|
|
19284
|
+
return {
|
|
19285
|
+
...(description !== null ? { description } : null),
|
|
19286
|
+
geometry,
|
|
19287
|
+
};
|
|
19288
|
+
}),
|
|
19289
|
+
],
|
|
19290
|
+
};
|
|
19291
|
+
},
|
|
19292
|
+
resourceTemporalExtentDateRange: (output, source) => {
|
|
19293
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalExtentDateRange'));
|
|
19294
|
+
return {
|
|
19295
|
+
...output,
|
|
19296
|
+
temporalExtents: ranges.map((range) => {
|
|
19297
|
+
const start = selectField(range, 'gte');
|
|
19298
|
+
const end = selectField(range, 'lte');
|
|
19299
|
+
return {
|
|
19300
|
+
...(start !== null ? { start: toDate(start) } : null),
|
|
19301
|
+
...(end !== null ? { end: toDate(end) } : null),
|
|
19302
|
+
};
|
|
19303
|
+
}),
|
|
19304
|
+
};
|
|
19305
|
+
},
|
|
19208
19306
|
};
|
|
19209
19307
|
this.genericField = (output) => output;
|
|
19210
|
-
this.constraintField = (
|
|
19211
|
-
|
|
19212
|
-
|
|
19213
|
-
|
|
19214
|
-
|
|
19215
|
-
|
|
19216
|
-
|
|
19217
|
-
|
|
19218
|
-
|
|
19219
|
-
|
|
19220
|
-
|
|
19221
|
-
|
|
19222
|
-
|
|
19223
|
-
|
|
19224
|
-
|
|
19225
|
-
|
|
19226
|
-
|
|
19227
|
-
|
|
19228
|
-
|
|
19229
|
-
|
|
19230
|
-
|
|
19231
|
-
|
|
19232
|
-
|
|
19233
|
-
}
|
|
19234
|
-
|
|
19308
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19309
|
+
let outputField;
|
|
19310
|
+
switch (type) {
|
|
19311
|
+
case 'license':
|
|
19312
|
+
outputField = 'licenses';
|
|
19313
|
+
break;
|
|
19314
|
+
case 'legal':
|
|
19315
|
+
outputField = 'legalConstraints';
|
|
19316
|
+
break;
|
|
19317
|
+
case 'security':
|
|
19318
|
+
outputField = 'securityConstraints';
|
|
19319
|
+
break;
|
|
19320
|
+
case 'other':
|
|
19321
|
+
outputField = 'otherConstraints';
|
|
19322
|
+
break;
|
|
19323
|
+
}
|
|
19324
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19325
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19326
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19327
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19328
|
+
return {
|
|
19329
|
+
text,
|
|
19330
|
+
...(url ? { url } : {}),
|
|
19331
|
+
};
|
|
19332
|
+
}));
|
|
19333
|
+
const result = {
|
|
19334
|
+
...output,
|
|
19335
|
+
[outputField]: outputArray,
|
|
19336
|
+
};
|
|
19337
|
+
// avoid legal constraints being duplicates of licenses
|
|
19338
|
+
if ('legalConstraints' in result &&
|
|
19339
|
+
(type === 'legal' || type === 'license')) {
|
|
19340
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19341
|
+
}
|
|
19342
|
+
return result;
|
|
19343
|
+
};
|
|
19235
19344
|
this.mapLink = (sourceLink) => {
|
|
19236
19345
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19237
19346
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19279,17 +19388,6 @@ class Gn4FieldMapper {
|
|
|
19279
19388
|
extras: { ...(output.extras || {}), ...value },
|
|
19280
19389
|
});
|
|
19281
19390
|
}
|
|
19282
|
-
getConstraintsType(indexField) {
|
|
19283
|
-
switch (indexField) {
|
|
19284
|
-
case 'MD_LegalConstraintsUseLimitationObject':
|
|
19285
|
-
return 'legal';
|
|
19286
|
-
case 'MD_SecurityConstraintsUseLimitationObject':
|
|
19287
|
-
return 'security';
|
|
19288
|
-
case 'MD_ConstraintsUseLimitationObject':
|
|
19289
|
-
default:
|
|
19290
|
-
return 'other';
|
|
19291
|
-
}
|
|
19292
|
-
}
|
|
19293
19391
|
getMappingFn(fieldName) {
|
|
19294
19392
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19295
19393
|
}
|
|
@@ -19349,17 +19447,20 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19349
19447
|
status: null,
|
|
19350
19448
|
lineage: null,
|
|
19351
19449
|
recordUpdated: null,
|
|
19450
|
+
recordPublished: null,
|
|
19352
19451
|
ownerOrganization: null,
|
|
19353
19452
|
licenses: [],
|
|
19453
|
+
legalConstraints: [],
|
|
19454
|
+
securityConstraints: [],
|
|
19455
|
+
otherConstraints: [],
|
|
19354
19456
|
contacts: [],
|
|
19355
19457
|
contactsForResource: [],
|
|
19356
|
-
accessConstraints: [],
|
|
19357
19458
|
keywords: [],
|
|
19358
|
-
|
|
19359
|
-
useLimitations: [],
|
|
19459
|
+
topics: [],
|
|
19360
19460
|
spatialExtents: [],
|
|
19361
19461
|
temporalExtents: [],
|
|
19362
19462
|
overviews: [],
|
|
19463
|
+
languages: [],
|
|
19363
19464
|
};
|
|
19364
19465
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19365
19466
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -20124,11 +20225,18 @@ class OrganizationsFromMetadataService {
|
|
|
20124
20225
|
if (!allContactOrgs.length)
|
|
20125
20226
|
return of(record);
|
|
20126
20227
|
const ownerOrganization = allContactOrgs[0];
|
|
20127
|
-
|
|
20228
|
+
// read the owner group as well to have a fallback logo
|
|
20229
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20230
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20231
|
+
return group.id === Number(groupId);
|
|
20232
|
+
})));
|
|
20233
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20128
20234
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20235
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20129
20236
|
return {
|
|
20130
20237
|
...record,
|
|
20131
20238
|
ownerOrganization: {
|
|
20239
|
+
logoUrl,
|
|
20132
20240
|
...ownerOrganization,
|
|
20133
20241
|
...recordOrganisation,
|
|
20134
20242
|
},
|
|
@@ -20393,36 +20501,23 @@ class SelectionService {
|
|
|
20393
20501
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20394
20502
|
}
|
|
20395
20503
|
selectRecords(records) {
|
|
20396
|
-
const newIds =
|
|
20397
|
-
|
|
20398
|
-
newIds.push(record.uniqueIdentifier);
|
|
20399
|
-
});
|
|
20400
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds);
|
|
20401
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20504
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20505
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20402
20506
|
this.addIdsToSelected(newIds);
|
|
20403
|
-
})
|
|
20507
|
+
});
|
|
20404
20508
|
}
|
|
20405
20509
|
deselectRecords(records) {
|
|
20406
|
-
const idsToBeRemoved =
|
|
20407
|
-
|
|
20408
|
-
idsToBeRemoved.push(record.uniqueIdentifier);
|
|
20409
|
-
});
|
|
20410
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved);
|
|
20411
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20510
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20511
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20412
20512
|
this.removeIdsFromSelected(idsToBeRemoved);
|
|
20413
|
-
}), map$2(() => undefined));
|
|
20414
|
-
}
|
|
20415
|
-
clearSelection() {
|
|
20416
|
-
const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID);
|
|
20417
|
-
let currentSelection;
|
|
20418
|
-
this.subscription = currentSelectedResponse.subscribe((value) => {
|
|
20419
|
-
currentSelection = [...value];
|
|
20420
20513
|
});
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
20514
|
+
}
|
|
20515
|
+
async clearSelection() {
|
|
20516
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20517
|
+
const currentSelection = Array.from(response);
|
|
20518
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20424
20519
|
this.removeIdsFromSelected(currentSelection);
|
|
20425
|
-
})
|
|
20520
|
+
});
|
|
20426
20521
|
}
|
|
20427
20522
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, deps: [{ token: SelectionsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20428
20523
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20452,12 +20547,21 @@ class Gn4PlatformMapper {
|
|
|
20452
20547
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20453
20548
|
return { ...apiUser, id: id.toString() };
|
|
20454
20549
|
}
|
|
20455
|
-
thesaurusFromApi(thesaurus) {
|
|
20550
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20456
20551
|
return thesaurus.map((keyword) => {
|
|
20457
|
-
|
|
20552
|
+
let key = keyword.uri;
|
|
20553
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20554
|
+
if (key.indexOf('@@@') > -1) {
|
|
20555
|
+
key = key.split('@@@')[1];
|
|
20556
|
+
}
|
|
20557
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20558
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20559
|
+
? keyword.definitions[lang3]
|
|
20560
|
+
: keyword.definition;
|
|
20458
20561
|
return {
|
|
20459
|
-
key
|
|
20460
|
-
label
|
|
20562
|
+
key,
|
|
20563
|
+
label,
|
|
20564
|
+
description,
|
|
20461
20565
|
};
|
|
20462
20566
|
});
|
|
20463
20567
|
}
|
|
@@ -20470,13 +20574,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20470
20574
|
|
|
20471
20575
|
const minApiVersion = '4.2.2';
|
|
20472
20576
|
class Gn4PlatformService {
|
|
20473
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20577
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20474
20578
|
this.siteApiService = siteApiService;
|
|
20475
20579
|
this.meApi = meApi;
|
|
20476
20580
|
this.usersApi = usersApi;
|
|
20477
20581
|
this.mapper = mapper;
|
|
20478
20582
|
this.toolsApiService = toolsApiService;
|
|
20479
20583
|
this.registriesApiService = registriesApiService;
|
|
20584
|
+
this.langService = langService;
|
|
20480
20585
|
this.type = 'GeoNetwork';
|
|
20481
20586
|
this.keyTranslations$ = this.toolsApiService
|
|
20482
20587
|
.getTranslationsPackage1('gnui')
|
|
@@ -20490,6 +20595,11 @@ class Gn4PlatformService {
|
|
|
20490
20595
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20491
20596
|
}
|
|
20492
20597
|
}), shareReplay(1));
|
|
20598
|
+
/**
|
|
20599
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20600
|
+
* @private
|
|
20601
|
+
*/
|
|
20602
|
+
this.thesauri = {};
|
|
20493
20603
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20494
20604
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20495
20605
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20516,19 +20626,36 @@ class Gn4PlatformService {
|
|
|
20516
20626
|
return this.users$;
|
|
20517
20627
|
}
|
|
20518
20628
|
translateKey(key) {
|
|
20629
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20630
|
+
if (key.match(/^https?:\/\//)) {
|
|
20631
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20632
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20633
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20634
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20635
|
+
for (const item of thesaurus) {
|
|
20636
|
+
if (item.key === key)
|
|
20637
|
+
return item.label;
|
|
20638
|
+
}
|
|
20639
|
+
return key;
|
|
20640
|
+
}));
|
|
20641
|
+
}
|
|
20519
20642
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20520
20643
|
}
|
|
20521
|
-
|
|
20522
|
-
|
|
20523
|
-
.
|
|
20524
|
-
|
|
20644
|
+
getThesaurusByUri(uri) {
|
|
20645
|
+
if (this.thesauri[uri]) {
|
|
20646
|
+
return this.thesauri[uri];
|
|
20647
|
+
}
|
|
20648
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20649
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20650
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20651
|
+
return this.thesauri[uri];
|
|
20525
20652
|
}
|
|
20526
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20653
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20527
20654
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20528
20655
|
}
|
|
20529
20656
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20530
20657
|
type: Injectable
|
|
20531
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20658
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20532
20659
|
|
|
20533
20660
|
function provideGn4() {
|
|
20534
20661
|
return [
|
|
@@ -20740,6 +20867,8 @@ const defaultMapOptions = {
|
|
|
20740
20867
|
};
|
|
20741
20868
|
const FEATURE_MAP_OPTIONS = new InjectionToken('mapOptions');
|
|
20742
20869
|
|
|
20870
|
+
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
20871
|
+
|
|
20743
20872
|
var MapContextLayerTypeEnum;
|
|
20744
20873
|
(function (MapContextLayerTypeEnum) {
|
|
20745
20874
|
MapContextLayerTypeEnum["XYZ"] = "xyz";
|
|
@@ -21074,6 +21203,38 @@ function createFuzzyFilter(pattern) {
|
|
|
21074
21203
|
};
|
|
21075
21204
|
}
|
|
21076
21205
|
|
|
21206
|
+
function getTemporalRangeUnion(ranges) {
|
|
21207
|
+
let earliestStartDate = Infinity;
|
|
21208
|
+
let latestEndDate = -Infinity;
|
|
21209
|
+
if (ranges.length) {
|
|
21210
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
21211
|
+
const rangeStart = ranges[i].start
|
|
21212
|
+
? new Date(ranges[i].start).getTime()
|
|
21213
|
+
: -Infinity;
|
|
21214
|
+
const rangeEnd = ranges[i].end
|
|
21215
|
+
? new Date(ranges[i].end).getTime()
|
|
21216
|
+
: Infinity;
|
|
21217
|
+
if (rangeStart < earliestStartDate) {
|
|
21218
|
+
earliestStartDate = rangeStart;
|
|
21219
|
+
}
|
|
21220
|
+
if (rangeEnd > latestEndDate) {
|
|
21221
|
+
latestEndDate = rangeEnd;
|
|
21222
|
+
}
|
|
21223
|
+
}
|
|
21224
|
+
return {
|
|
21225
|
+
start: earliestStartDate !== -Infinity
|
|
21226
|
+
? new Date(earliestStartDate).toLocaleDateString()
|
|
21227
|
+
: undefined,
|
|
21228
|
+
end: latestEndDate !== Infinity
|
|
21229
|
+
? new Date(latestEndDate).toLocaleDateString()
|
|
21230
|
+
: undefined,
|
|
21231
|
+
};
|
|
21232
|
+
}
|
|
21233
|
+
else {
|
|
21234
|
+
return undefined;
|
|
21235
|
+
}
|
|
21236
|
+
}
|
|
21237
|
+
|
|
21077
21238
|
marker('downloads.wfs.featuretype.not.found');
|
|
21078
21239
|
const FORMATS = {
|
|
21079
21240
|
csv: {
|
|
@@ -21334,76 +21495,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21334
21495
|
}]
|
|
21335
21496
|
}] });
|
|
21336
21497
|
|
|
21337
|
-
const
|
|
21338
|
-
|
|
21339
|
-
|
|
21340
|
-
|
|
21498
|
+
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21499
|
+
const DATA_PROJECTION = 'EPSG:4326';
|
|
21500
|
+
const GEOJSON = new GeoJSON();
|
|
21501
|
+
class MapUtilsService {
|
|
21502
|
+
constructor(http, proxy) {
|
|
21503
|
+
this.http = http;
|
|
21341
21504
|
this.proxy = proxy;
|
|
21505
|
+
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21506
|
+
return GEOJSON.readFeatures(featureCollection, {
|
|
21507
|
+
featureProjection,
|
|
21508
|
+
dataProjection,
|
|
21509
|
+
});
|
|
21510
|
+
};
|
|
21342
21511
|
}
|
|
21343
|
-
|
|
21344
|
-
return
|
|
21345
|
-
|
|
21346
|
-
|
|
21347
|
-
|
|
21512
|
+
createEmptyMap() {
|
|
21513
|
+
return new Map$1({
|
|
21514
|
+
controls: [],
|
|
21515
|
+
pixelRatio: 1,
|
|
21516
|
+
});
|
|
21348
21517
|
}
|
|
21349
|
-
|
|
21350
|
-
return
|
|
21351
|
-
|
|
21352
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
21353
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
21354
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21355
|
-
if (lonLatCRS) {
|
|
21356
|
-
return boundingBoxes[lonLatCRS];
|
|
21357
|
-
}
|
|
21358
|
-
else {
|
|
21359
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21360
|
-
register(proj4);
|
|
21361
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21362
|
-
proj4.defs(availableEPSGCode, proj);
|
|
21363
|
-
const bboxWithFiniteNumbers = [
|
|
21364
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
21365
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
21366
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
21367
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
21368
|
-
];
|
|
21369
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21370
|
-
return extent;
|
|
21371
|
-
}
|
|
21372
|
-
}
|
|
21373
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21374
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
21375
|
-
}
|
|
21376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
21377
|
-
type: Injectable,
|
|
21378
|
-
args: [{
|
|
21379
|
-
providedIn: 'root',
|
|
21380
|
-
}]
|
|
21381
|
-
}], ctorParameters: function () { return [{ type: ProxyService }]; } });
|
|
21382
|
-
|
|
21383
|
-
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21384
|
-
const DATA_PROJECTION = 'EPSG:4326';
|
|
21385
|
-
class MapUtilsService {
|
|
21386
|
-
constructor(http, wmsUtils) {
|
|
21387
|
-
this.http = http;
|
|
21388
|
-
this.wmsUtils = wmsUtils;
|
|
21389
|
-
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21390
|
-
const olFeatures = new GeoJSON().readFeatures(featureCollection, {
|
|
21391
|
-
featureProjection,
|
|
21392
|
-
dataProjection,
|
|
21393
|
-
});
|
|
21394
|
-
return olFeatures;
|
|
21395
|
-
};
|
|
21396
|
-
}
|
|
21397
|
-
createEmptyMap() {
|
|
21398
|
-
const map = new Map$1({
|
|
21399
|
-
controls: [],
|
|
21400
|
-
pixelRatio: 1,
|
|
21401
|
-
});
|
|
21402
|
-
return map;
|
|
21403
|
-
}
|
|
21404
|
-
isWMSLayer(layer) {
|
|
21405
|
-
return (layer.getSource() instanceof TileWMS ||
|
|
21406
|
-
layer.getSource() instanceof ImageWMS);
|
|
21518
|
+
isWMSLayer(layer) {
|
|
21519
|
+
return (layer.getSource() instanceof TileWMS ||
|
|
21520
|
+
layer.getSource() instanceof ImageWMS);
|
|
21407
21521
|
}
|
|
21408
21522
|
getGFIUrl(layer, map, coordinate) {
|
|
21409
21523
|
const view = map.getView();
|
|
@@ -21414,8 +21528,7 @@ class MapUtilsService {
|
|
|
21414
21528
|
...source.getParams(),
|
|
21415
21529
|
INFO_FORMAT: 'application/json',
|
|
21416
21530
|
};
|
|
21417
|
-
|
|
21418
|
-
return url;
|
|
21531
|
+
return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
|
|
21419
21532
|
}
|
|
21420
21533
|
getVectorFeaturesFromClick(olMap, event) {
|
|
21421
21534
|
const features = [];
|
|
@@ -21443,38 +21556,56 @@ class MapUtilsService {
|
|
|
21443
21556
|
/**
|
|
21444
21557
|
* Will emit `null` if no extent could be computed
|
|
21445
21558
|
*/
|
|
21446
|
-
getLayerExtent(layer) {
|
|
21447
|
-
let
|
|
21559
|
+
async getLayerExtent(layer) {
|
|
21560
|
+
let latLonExtent;
|
|
21448
21561
|
if (layer &&
|
|
21449
21562
|
layer.type === 'geojson' &&
|
|
21450
21563
|
'data' in layer &&
|
|
21451
21564
|
typeof layer.data === 'object' &&
|
|
21452
21565
|
layer.data.features[0] &&
|
|
21453
21566
|
layer.data.features[0].geometry) {
|
|
21454
|
-
|
|
21455
|
-
.readFeatures(
|
|
21567
|
+
latLonExtent = new GeoJSON()
|
|
21568
|
+
.readFeatures(layer.data)
|
|
21456
21569
|
.map((feature) => feature.getGeometry())
|
|
21457
21570
|
.filter((geom) => !!geom)
|
|
21458
|
-
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null)
|
|
21571
|
+
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
|
|
21459
21572
|
}
|
|
21460
21573
|
else if (layer && layer.type === 'wms') {
|
|
21461
|
-
|
|
21574
|
+
latLonExtent = await this.getWmsLayerExtent(layer);
|
|
21462
21575
|
}
|
|
21463
21576
|
else if (layer && layer.type === 'wmts') {
|
|
21464
21577
|
if (layer.extent) {
|
|
21465
|
-
|
|
21578
|
+
latLonExtent = layer.extent;
|
|
21466
21579
|
}
|
|
21467
21580
|
else {
|
|
21468
|
-
return
|
|
21581
|
+
return layer.options.tileGrid.getExtent();
|
|
21469
21582
|
}
|
|
21470
21583
|
}
|
|
21471
21584
|
else {
|
|
21472
|
-
return
|
|
21585
|
+
return null;
|
|
21586
|
+
}
|
|
21587
|
+
if (!latLonExtent || isEmpty(latLonExtent)) {
|
|
21588
|
+
return null;
|
|
21589
|
+
}
|
|
21590
|
+
return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21591
|
+
}
|
|
21592
|
+
async getWmsLayerExtent(layer) {
|
|
21593
|
+
const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
|
|
21594
|
+
const { boundingBoxes } = endpoint.getLayerByName(layer.name);
|
|
21595
|
+
if (!Object.keys(boundingBoxes).length) {
|
|
21596
|
+
return null;
|
|
21597
|
+
}
|
|
21598
|
+
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21599
|
+
if (lonLatCRS) {
|
|
21600
|
+
return boundingBoxes[lonLatCRS].map(parseFloat);
|
|
21601
|
+
}
|
|
21602
|
+
else {
|
|
21603
|
+
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21604
|
+
register(proj4);
|
|
21605
|
+
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21606
|
+
const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
|
|
21607
|
+
return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21473
21608
|
}
|
|
21474
|
-
return geographicExtent.pipe(map$1((extent) => [
|
|
21475
|
-
...fromLonLat([extent[0], extent[1]], 'EPSG:3857'),
|
|
21476
|
-
...fromLonLat([extent[2], extent[3]], 'EPSG:3857'),
|
|
21477
|
-
]), map$1((extent) => (isEmpty(extent) ? null : extent)));
|
|
21478
21609
|
}
|
|
21479
21610
|
getWmtsLayerFromCapabilities(link) {
|
|
21480
21611
|
const getCapabilitiesUrl = new URL(link.url, window.location.toString());
|
|
@@ -21530,7 +21661,18 @@ ${e.stack || e.message || e}`);
|
|
|
21530
21661
|
])
|
|
21531
21662
|
.getArray());
|
|
21532
21663
|
}
|
|
21533
|
-
|
|
21664
|
+
getRecordExtent(record) {
|
|
21665
|
+
if (!('spatialExtents' in record)) {
|
|
21666
|
+
return null;
|
|
21667
|
+
}
|
|
21668
|
+
// transform an array of geojson geometries into a bbox
|
|
21669
|
+
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
21670
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
21671
|
+
return extend(prev, geom.getExtent());
|
|
21672
|
+
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
21673
|
+
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21674
|
+
}
|
|
21675
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, deps: [{ token: i1.HttpClient }, { token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21534
21676
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
21535
21677
|
}
|
|
21536
21678
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, decorators: [{
|
|
@@ -21538,7 +21680,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21538
21680
|
args: [{
|
|
21539
21681
|
providedIn: 'root',
|
|
21540
21682
|
}]
|
|
21541
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type:
|
|
21683
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ProxyService }]; } });
|
|
21542
21684
|
function dragPanCondition(event) {
|
|
21543
21685
|
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
21544
21686
|
if (!dragPanCondition) {
|
|
@@ -22623,6 +22765,9 @@ class MapContextService {
|
|
|
22623
22765
|
if (mapConfig) {
|
|
22624
22766
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22625
22767
|
}
|
|
22768
|
+
else {
|
|
22769
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22770
|
+
}
|
|
22626
22771
|
if (!mapContext.view?.extent &&
|
|
22627
22772
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22628
22773
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22733,6 +22878,11 @@ class MapContextService {
|
|
|
22733
22878
|
}
|
|
22734
22879
|
return view;
|
|
22735
22880
|
}
|
|
22881
|
+
addDefaultBaselayerContext(layers) {
|
|
22882
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22883
|
+
? layers
|
|
22884
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22885
|
+
}
|
|
22736
22886
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22737
22887
|
return {
|
|
22738
22888
|
...mapContext,
|
|
@@ -23279,11 +23429,11 @@ class ThumbnailComponent {
|
|
|
23279
23429
|
}
|
|
23280
23430
|
}
|
|
23281
23431
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, deps: [{ token: THUMBNAIL_PLACEHOLDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23282
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23283
23433
|
}
|
|
23284
23434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23285
23435
|
type: Component,
|
|
23286
|
-
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23436
|
+
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23287
23437
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23288
23438
|
type: Optional
|
|
23289
23439
|
}, {
|
|
@@ -23411,8 +23561,7 @@ class MetadataQualityComponent {
|
|
|
23411
23561
|
: this.calculatedQualityScore;
|
|
23412
23562
|
}
|
|
23413
23563
|
get calculatedQualityScore() {
|
|
23414
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23415
|
-
this.items.length);
|
|
23564
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23416
23565
|
}
|
|
23417
23566
|
showMenu() {
|
|
23418
23567
|
this.isMenuShown = true;
|
|
@@ -23430,7 +23579,7 @@ class MetadataQualityComponent {
|
|
|
23430
23579
|
this.items = [];
|
|
23431
23580
|
this.add('title', !!this.metadata?.title);
|
|
23432
23581
|
this.add('description', !!this.metadata?.abstract);
|
|
23433
|
-
this.add('topic', this.metadata?.
|
|
23582
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23434
23583
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23435
23584
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23436
23585
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23878,6 +24027,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23878
24027
|
type: Input
|
|
23879
24028
|
}] } });
|
|
23880
24029
|
|
|
24030
|
+
class MarkdownParserComponent {
|
|
24031
|
+
get parsedMarkdown() {
|
|
24032
|
+
return marked.parse(this.textContent);
|
|
24033
|
+
}
|
|
24034
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24035
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24036
|
+
}
|
|
24037
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24038
|
+
type: Component,
|
|
24039
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
24040
|
+
}], propDecorators: { textContent: [{
|
|
24041
|
+
type: Input
|
|
24042
|
+
}] } });
|
|
24043
|
+
|
|
23881
24044
|
class ContentGhostComponent {
|
|
23882
24045
|
constructor() {
|
|
23883
24046
|
this.ghostClass = '';
|
|
@@ -24017,14 +24180,16 @@ class MaxLinesComponent {
|
|
|
24017
24180
|
return result;
|
|
24018
24181
|
}
|
|
24019
24182
|
ngOnDestroy() {
|
|
24183
|
+
if (!this.observer)
|
|
24184
|
+
return;
|
|
24020
24185
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
24021
24186
|
}
|
|
24022
24187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24023
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24024
24189
|
}
|
|
24025
24190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
24026
24191
|
type: Component,
|
|
24027
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24192
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24028
24193
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
24029
24194
|
type: Input
|
|
24030
24195
|
}], container: [{
|
|
@@ -24032,36 +24197,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24032
24197
|
args: ['container']
|
|
24033
24198
|
}] } });
|
|
24034
24199
|
|
|
24035
|
-
class MarkdownParserComponent {
|
|
24036
|
-
get parsedMarkdown() {
|
|
24037
|
-
return marked.parse(this.textContent);
|
|
24038
|
-
}
|
|
24039
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24040
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24041
|
-
}
|
|
24042
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24043
|
-
type: Component,
|
|
24044
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
24045
|
-
}], propDecorators: { textContent: [{
|
|
24046
|
-
type: Input
|
|
24047
|
-
}] } });
|
|
24048
|
-
|
|
24049
24200
|
class MetadataInfoComponent {
|
|
24050
24201
|
constructor() {
|
|
24051
24202
|
this.keyword = new EventEmitter();
|
|
24052
24203
|
}
|
|
24053
24204
|
get hasUsage() {
|
|
24054
24205
|
return (this.metadata.extras?.isOpenData === true ||
|
|
24055
|
-
this.metadata.
|
|
24056
|
-
|
|
24206
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24207
|
+
this.legalConstraints.length > 0) ||
|
|
24208
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24209
|
+
this.otherConstraints.length > 0) ||
|
|
24210
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24057
24211
|
}
|
|
24058
|
-
get
|
|
24212
|
+
get legalConstraints() {
|
|
24059
24213
|
let array = [];
|
|
24060
|
-
if (this.metadata.
|
|
24061
|
-
array = array.concat(this.metadata.
|
|
24214
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24215
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24062
24216
|
}
|
|
24063
|
-
|
|
24064
|
-
|
|
24217
|
+
return array;
|
|
24218
|
+
}
|
|
24219
|
+
get otherConstraints() {
|
|
24220
|
+
let array = [];
|
|
24221
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24222
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24223
|
+
}
|
|
24224
|
+
return array;
|
|
24225
|
+
}
|
|
24226
|
+
get licenses() {
|
|
24227
|
+
let array = [];
|
|
24228
|
+
if (this.metadata.licenses?.length) {
|
|
24229
|
+
array = array.concat(this.metadata.licenses
|
|
24230
|
+
.filter((c) => c.text)
|
|
24231
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
24065
24232
|
}
|
|
24066
24233
|
return array;
|
|
24067
24234
|
}
|
|
@@ -24077,22 +24244,28 @@ class MetadataInfoComponent {
|
|
|
24077
24244
|
return undefined;
|
|
24078
24245
|
}
|
|
24079
24246
|
}
|
|
24247
|
+
get temporalExtent() {
|
|
24248
|
+
const temporalExtents = this.metadata.temporalExtents;
|
|
24249
|
+
return getTemporalRangeUnion(temporalExtents);
|
|
24250
|
+
}
|
|
24251
|
+
get shownOrganization() {
|
|
24252
|
+
return this.metadata.ownerOrganization;
|
|
24253
|
+
}
|
|
24254
|
+
get resourceContact() {
|
|
24255
|
+
return this.metadata.contactsForResource?.[0];
|
|
24256
|
+
}
|
|
24080
24257
|
fieldReady(propName) {
|
|
24081
24258
|
return !this.incomplete || propName in this.metadata;
|
|
24082
24259
|
}
|
|
24083
24260
|
onKeywordClick(keyword) {
|
|
24084
24261
|
this.keyword.emit(keyword);
|
|
24085
24262
|
}
|
|
24086
|
-
copyText() {
|
|
24087
|
-
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
24088
|
-
event.target.blur();
|
|
24089
|
-
}
|
|
24090
24263
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24091
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\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</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\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.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"py-4 px-6 rounded bg-gray-100 text-gray-700 flex flex-wrap gap-2\">\n <gn-ui-badge *ngIf=\"metadata.extras?.isOpenData\">\n <span translate>record.metadata.isOpenData</span>\n </gn-ui-badge>\n <span\n class=\"text-primary font-medium\"\n *ngFor=\"let usage of usages\"\n gnUiLinkify\n >\n {{ usage }}\n </span>\n <span class=\"text-primary font-medium noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | 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 && metadata.recordUpdated.toLocaleString() }}\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.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24264
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\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</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\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 <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.recordUpdated ||\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\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 && metadata.recordUpdated.toLocaleString() }}\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 *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 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 </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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { 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: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24092
24265
|
}
|
|
24093
24266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24094
24267
|
type: Component,
|
|
24095
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\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</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-
|
|
24268
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\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</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\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 <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.recordUpdated ||\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\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 && metadata.recordUpdated.toLocaleString() }}\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 *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 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 </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 mat-icon{transform:scale(.8)}\n"] }]
|
|
24096
24269
|
}], propDecorators: { metadata: [{
|
|
24097
24270
|
type: Input
|
|
24098
24271
|
}], incomplete: [{
|
|
@@ -24161,11 +24334,11 @@ class ButtonComponent {
|
|
|
24161
24334
|
propagateToDocumentOnly(event);
|
|
24162
24335
|
}
|
|
24163
24336
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24164
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24337
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, isStandalone: true, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24165
24338
|
}
|
|
24166
24339
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24167
24340
|
type: Component,
|
|
24168
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24341
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24169
24342
|
}], propDecorators: { type: [{
|
|
24170
24343
|
type: Input
|
|
24171
24344
|
}], disabled: [{
|
|
@@ -24240,11 +24413,11 @@ class DownloadsListComponent {
|
|
|
24240
24413
|
return link.type === 'service' && link.accessServiceProtocol === 'wfs';
|
|
24241
24414
|
}
|
|
24242
24415
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24243
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24416
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24244
24417
|
}
|
|
24245
24418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
24246
24419
|
type: Component,
|
|
24247
|
-
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24420
|
+
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
24248
24421
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { links: [{
|
|
24249
24422
|
type: Input
|
|
24250
24423
|
}] } });
|
|
@@ -24445,11 +24618,11 @@ class CarouselComponent {
|
|
|
24445
24618
|
this.emblaApi.scrollTo(stepIndex);
|
|
24446
24619
|
}
|
|
24447
24620
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24448
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24621
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24449
24622
|
}
|
|
24450
24623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24451
24624
|
type: Component,
|
|
24452
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24625
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24453
24626
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24454
24627
|
type: Input
|
|
24455
24628
|
}], stepsContainerClass: [{
|
|
@@ -24493,6 +24666,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24493
24666
|
}]
|
|
24494
24667
|
}] });
|
|
24495
24668
|
|
|
24669
|
+
class InteractiveTableColumnComponent {
|
|
24670
|
+
constructor() {
|
|
24671
|
+
this.grow = false;
|
|
24672
|
+
this.sortable = false;
|
|
24673
|
+
this.activeSort = null;
|
|
24674
|
+
this.sortChange = new EventEmitter();
|
|
24675
|
+
}
|
|
24676
|
+
handleSortChange() {
|
|
24677
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24678
|
+
this.sortChange.emit(this.activeSort);
|
|
24679
|
+
}
|
|
24680
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24681
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableColumnComponent, isStandalone: true, selector: "gn-ui-interactive-table-column", inputs: { grow: "grow", sortable: "sortable", activeSort: "activeSort" }, outputs: { sortChange: "sortChange" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "cell", first: true, predicate: ["cell"], descendants: true }], ngImport: i0, template: "<span>empty</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24682
|
+
}
|
|
24683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24684
|
+
type: Component,
|
|
24685
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24686
|
+
}], propDecorators: { header: [{
|
|
24687
|
+
type: ContentChild,
|
|
24688
|
+
args: ['header']
|
|
24689
|
+
}], cell: [{
|
|
24690
|
+
type: ContentChild,
|
|
24691
|
+
args: ['cell']
|
|
24692
|
+
}], grow: [{
|
|
24693
|
+
type: Input
|
|
24694
|
+
}], sortable: [{
|
|
24695
|
+
type: Input
|
|
24696
|
+
}], activeSort: [{
|
|
24697
|
+
type: Input
|
|
24698
|
+
}], sortChange: [{
|
|
24699
|
+
type: Output
|
|
24700
|
+
}] } });
|
|
24701
|
+
|
|
24702
|
+
class InteractiveTableComponent {
|
|
24703
|
+
constructor() {
|
|
24704
|
+
this.items = [];
|
|
24705
|
+
this.itemClick = new EventEmitter();
|
|
24706
|
+
}
|
|
24707
|
+
get gridStyle() {
|
|
24708
|
+
return {
|
|
24709
|
+
'grid-template-columns': this.columns
|
|
24710
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24711
|
+
.join(' '),
|
|
24712
|
+
};
|
|
24713
|
+
}
|
|
24714
|
+
handleRowClick(item) {
|
|
24715
|
+
this.itemClick.emit(item);
|
|
24716
|
+
}
|
|
24717
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24718
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\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 <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\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 >\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-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\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: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 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;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24719
|
+
}
|
|
24720
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24721
|
+
type: Component,
|
|
24722
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\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 <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\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 >\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-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\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: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 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;}\n"] }]
|
|
24723
|
+
}], propDecorators: { columns: [{
|
|
24724
|
+
type: ContentChildren,
|
|
24725
|
+
args: [InteractiveTableColumnComponent]
|
|
24726
|
+
}], items: [{
|
|
24727
|
+
type: Input
|
|
24728
|
+
}], itemClick: [{
|
|
24729
|
+
type: Output
|
|
24730
|
+
}] } });
|
|
24731
|
+
|
|
24496
24732
|
class LinkCardComponent {
|
|
24497
24733
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24498
24734
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -24538,11 +24774,11 @@ class MetadataContactComponent {
|
|
|
24538
24774
|
this.organizationClick.emit(this.shownOrganization);
|
|
24539
24775
|
}
|
|
24540
24776
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24541
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, 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 mb-6
|
|
24777
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, 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 mb-6\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\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: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24542
24778
|
}
|
|
24543
24779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24544
24780
|
type: Component,
|
|
24545
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24781
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\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" }]
|
|
24546
24782
|
}], propDecorators: { metadata: [{
|
|
24547
24783
|
type: Input
|
|
24548
24784
|
}], organizationClick: [{
|
|
@@ -24766,11 +25002,11 @@ class DropdownSelectorComponent {
|
|
|
24766
25002
|
}
|
|
24767
25003
|
}
|
|
24768
25004
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24769
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25005
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\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.min-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 >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.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"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.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: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24770
25006
|
}
|
|
24771
25007
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24772
25008
|
type: Component,
|
|
24773
|
-
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25009
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\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.min-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 >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24774
25010
|
}], propDecorators: { title: [{
|
|
24775
25011
|
type: Input
|
|
24776
25012
|
}], showTitle: [{
|
|
@@ -24946,11 +25182,11 @@ class DropdownMultiselectComponent {
|
|
|
24946
25182
|
this.setFocus();
|
|
24947
25183
|
}
|
|
24948
25184
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24949
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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=\"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=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white 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 <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-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 <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-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,
|
|
25185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white 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 <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-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 <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-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$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.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"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.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: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24950
25186
|
}
|
|
24951
25187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24952
25188
|
type: Component,
|
|
24953
|
-
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"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=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white 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 <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-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 <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-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,
|
|
25189
|
+
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=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white 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 <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-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 <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\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 <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-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" }]
|
|
24954
25190
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24955
25191
|
type: Input
|
|
24956
25192
|
}], choices: [{
|
|
@@ -25104,11 +25340,11 @@ class TextAreaComponent {
|
|
|
25104
25340
|
this.rawChange.next(value);
|
|
25105
25341
|
}
|
|
25106
25342
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25343
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25108
25344
|
}
|
|
25109
25345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25110
25346
|
type: Component,
|
|
25111
|
-
args: [{ selector: 'gn-ui-text-area', template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25347
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25112
25348
|
}], propDecorators: { value: [{
|
|
25113
25349
|
type: Input
|
|
25114
25350
|
}], placeholder: [{
|
|
@@ -25209,11 +25445,11 @@ class AutocompleteComponent {
|
|
|
25209
25445
|
}
|
|
25210
25446
|
}
|
|
25211
25447
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25448
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25213
25449
|
}
|
|
25214
25450
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25215
25451
|
type: Component,
|
|
25216
|
-
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25452
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
25217
25453
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25218
25454
|
type: Input
|
|
25219
25455
|
}], action: [{
|
|
@@ -25378,11 +25614,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25378
25614
|
|
|
25379
25615
|
class NavigationButtonComponent {
|
|
25380
25616
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25381
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25382
25618
|
}
|
|
25383
25619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25384
25620
|
type: Component,
|
|
25385
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25621
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
25386
25622
|
}], propDecorators: { label: [{
|
|
25387
25623
|
type: Input
|
|
25388
25624
|
}], icon: [{
|
|
@@ -25589,11 +25825,11 @@ class CheckboxComponent {
|
|
|
25589
25825
|
this.changed.emit(this.checked);
|
|
25590
25826
|
}
|
|
25591
25827
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25592
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25593
25829
|
}
|
|
25594
25830
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25595
25831
|
type: Component,
|
|
25596
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25832
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
25597
25833
|
}], propDecorators: { type: [{
|
|
25598
25834
|
type: Input
|
|
25599
25835
|
}], checked: [{
|
|
@@ -25648,14 +25884,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25648
25884
|
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25649
25885
|
}] });
|
|
25650
25886
|
|
|
25887
|
+
class EditableLabelDirective {
|
|
25888
|
+
constructor(el, renderer) {
|
|
25889
|
+
this.el = el;
|
|
25890
|
+
this.renderer = renderer;
|
|
25891
|
+
this.editableLabelChanged = new EventEmitter();
|
|
25892
|
+
}
|
|
25893
|
+
ngAfterViewInit() {
|
|
25894
|
+
if (this.gnUiEditableLabel !== false) {
|
|
25895
|
+
const appendedInput = this.renderer.createElement('input');
|
|
25896
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25897
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25898
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25899
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25900
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25901
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25902
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25903
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25904
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25905
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25906
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
25907
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25908
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25909
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25910
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25911
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
25912
|
+
});
|
|
25913
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25914
|
+
}
|
|
25915
|
+
}
|
|
25916
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25917
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25918
|
+
}
|
|
25919
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25920
|
+
type: Directive,
|
|
25921
|
+
args: [{
|
|
25922
|
+
selector: '[gnUiEditableLabel]',
|
|
25923
|
+
standalone: true,
|
|
25924
|
+
}]
|
|
25925
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25926
|
+
type: Output
|
|
25927
|
+
}], gnUiEditableLabel: [{
|
|
25928
|
+
type: Input
|
|
25929
|
+
}] } });
|
|
25930
|
+
|
|
25651
25931
|
class UiInputsModule {
|
|
25652
25932
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25653
25933
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25654
25934
|
AutocompleteComponent,
|
|
25655
|
-
ButtonComponent,
|
|
25656
25935
|
TextInputComponent,
|
|
25657
25936
|
DragAndDropFileInputComponent,
|
|
25658
|
-
TextAreaComponent,
|
|
25659
25937
|
ChipsInputComponent,
|
|
25660
25938
|
NavigationButtonComponent,
|
|
25661
25939
|
StarToggleComponent,
|
|
@@ -25687,7 +25965,10 @@ class UiInputsModule {
|
|
|
25687
25965
|
MatFormFieldModule,
|
|
25688
25966
|
MatInputModule,
|
|
25689
25967
|
MatDatepickerModule,
|
|
25690
|
-
MatNativeDateModule
|
|
25968
|
+
MatNativeDateModule,
|
|
25969
|
+
EditableLabelDirective,
|
|
25970
|
+
TextAreaComponent,
|
|
25971
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25691
25972
|
AutocompleteComponent,
|
|
25692
25973
|
ButtonComponent,
|
|
25693
25974
|
TextInputComponent,
|
|
@@ -25703,7 +25984,8 @@ class UiInputsModule {
|
|
|
25703
25984
|
CopyTextButtonComponent,
|
|
25704
25985
|
CheckboxComponent,
|
|
25705
25986
|
SearchInputComponent,
|
|
25706
|
-
DateRangePickerComponent
|
|
25987
|
+
DateRangePickerComponent,
|
|
25988
|
+
EditableLabelDirective] }); }
|
|
25707
25989
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
|
|
25708
25990
|
TranslateModule.forChild(),
|
|
25709
25991
|
NgxDropzoneModule,
|
|
@@ -25728,10 +26010,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25728
26010
|
declarations: [
|
|
25729
26011
|
DropdownSelectorComponent,
|
|
25730
26012
|
AutocompleteComponent,
|
|
25731
|
-
ButtonComponent,
|
|
25732
26013
|
TextInputComponent,
|
|
25733
26014
|
DragAndDropFileInputComponent,
|
|
25734
|
-
TextAreaComponent,
|
|
25735
26015
|
ChipsInputComponent,
|
|
25736
26016
|
NavigationButtonComponent,
|
|
25737
26017
|
StarToggleComponent,
|
|
@@ -25769,6 +26049,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25769
26049
|
MatInputModule,
|
|
25770
26050
|
MatDatepickerModule,
|
|
25771
26051
|
MatNativeDateModule,
|
|
26052
|
+
EditableLabelDirective,
|
|
26053
|
+
TextAreaComponent,
|
|
26054
|
+
ButtonComponent,
|
|
25772
26055
|
],
|
|
25773
26056
|
exports: [
|
|
25774
26057
|
DropdownSelectorComponent,
|
|
@@ -25788,6 +26071,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25788
26071
|
CheckboxComponent,
|
|
25789
26072
|
SearchInputComponent,
|
|
25790
26073
|
DateRangePickerComponent,
|
|
26074
|
+
EditableLabelDirective,
|
|
25791
26075
|
],
|
|
25792
26076
|
}]
|
|
25793
26077
|
}] });
|
|
@@ -25887,7 +26171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25887
26171
|
|
|
25888
26172
|
const DEFAULT_PARAMS = {
|
|
25889
26173
|
OFFSET: '',
|
|
25890
|
-
LIMIT: '',
|
|
26174
|
+
LIMIT: '-1',
|
|
25891
26175
|
FORMAT: 'json',
|
|
25892
26176
|
};
|
|
25893
26177
|
class RecordApiFormComponent {
|
|
@@ -25916,6 +26200,8 @@ class RecordApiFormComponent {
|
|
|
25916
26200
|
}
|
|
25917
26201
|
return outputUrl;
|
|
25918
26202
|
}));
|
|
26203
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
26204
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
25919
26205
|
}
|
|
25920
26206
|
set apiLink(value) {
|
|
25921
26207
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -25925,10 +26211,11 @@ class RecordApiFormComponent {
|
|
|
25925
26211
|
this.offset$.next(value);
|
|
25926
26212
|
}
|
|
25927
26213
|
setLimit(value) {
|
|
25928
|
-
|
|
26214
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26215
|
+
this.limit$.next(newLimit);
|
|
25929
26216
|
}
|
|
25930
26217
|
setFormat(value) {
|
|
25931
|
-
this.format$.next(value);
|
|
26218
|
+
this.format$.next(String(value));
|
|
25932
26219
|
}
|
|
25933
26220
|
resetUrl() {
|
|
25934
26221
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -25936,11 +26223,11 @@ class RecordApiFormComponent {
|
|
|
25936
26223
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
25937
26224
|
}
|
|
25938
26225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25939
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25940
26227
|
}
|
|
25941
26228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
25942
26229
|
type: Component,
|
|
25943
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26230
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
25944
26231
|
}], propDecorators: { apiLink: [{
|
|
25945
26232
|
type: Input
|
|
25946
26233
|
}] } });
|
|
@@ -25953,11 +26240,11 @@ class ImageOverlayPreviewComponent {
|
|
|
25953
26240
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
25954
26241
|
}
|
|
25955
26242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25956
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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"] }] }); }
|
|
25957
26244
|
}
|
|
25958
26245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
25959
26246
|
type: Component,
|
|
25960
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26247
|
+
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
25961
26248
|
}], propDecorators: { imageUrl: [{
|
|
25962
26249
|
type: Input
|
|
25963
26250
|
}], isPlaceholderShown: [{
|
|
@@ -25986,7 +26273,6 @@ class UiElementsModule {
|
|
|
25986
26273
|
PaginationButtonsComponent,
|
|
25987
26274
|
MaxLinesComponent,
|
|
25988
26275
|
RecordApiFormComponent,
|
|
25989
|
-
MarkdownParserComponent,
|
|
25990
26276
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
25991
26277
|
MatIconModule,
|
|
25992
26278
|
MatTooltipModule,
|
|
@@ -25995,7 +26281,8 @@ class UiElementsModule {
|
|
|
25995
26281
|
RouterModule,
|
|
25996
26282
|
UiInputsModule,
|
|
25997
26283
|
FormsModule,
|
|
25998
|
-
NgOptimizedImage
|
|
26284
|
+
NgOptimizedImage,
|
|
26285
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
25999
26286
|
ContentGhostComponent,
|
|
26000
26287
|
DownloadItemComponent,
|
|
26001
26288
|
DownloadsListComponent,
|
|
@@ -26012,6 +26299,7 @@ class UiElementsModule {
|
|
|
26012
26299
|
AvatarComponent,
|
|
26013
26300
|
UserPreviewComponent,
|
|
26014
26301
|
PaginationButtonsComponent,
|
|
26302
|
+
MaxLinesComponent,
|
|
26015
26303
|
RecordApiFormComponent,
|
|
26016
26304
|
MarkdownParserComponent,
|
|
26017
26305
|
ImageOverlayPreviewComponent] }); }
|
|
@@ -26041,6 +26329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26041
26329
|
UiInputsModule,
|
|
26042
26330
|
FormsModule,
|
|
26043
26331
|
NgOptimizedImage,
|
|
26332
|
+
MarkdownParserComponent,
|
|
26044
26333
|
],
|
|
26045
26334
|
declarations: [
|
|
26046
26335
|
MetadataInfoComponent,
|
|
@@ -26063,7 +26352,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26063
26352
|
PaginationButtonsComponent,
|
|
26064
26353
|
MaxLinesComponent,
|
|
26065
26354
|
RecordApiFormComponent,
|
|
26066
|
-
MarkdownParserComponent,
|
|
26067
26355
|
ImageOverlayPreviewComponent,
|
|
26068
26356
|
],
|
|
26069
26357
|
exports: [
|
|
@@ -26084,6 +26372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26084
26372
|
AvatarComponent,
|
|
26085
26373
|
UserPreviewComponent,
|
|
26086
26374
|
PaginationButtonsComponent,
|
|
26375
|
+
MaxLinesComponent,
|
|
26087
26376
|
RecordApiFormComponent,
|
|
26088
26377
|
MarkdownParserComponent,
|
|
26089
26378
|
ImageOverlayPreviewComponent,
|
|
@@ -26091,143 +26380,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26091
26380
|
}]
|
|
26092
26381
|
}] });
|
|
26093
26382
|
|
|
26094
|
-
class RecordTableComponent {
|
|
26095
|
-
constructor() {
|
|
26096
|
-
this.selectedRecords = [];
|
|
26097
|
-
this.records = [];
|
|
26098
|
-
this.recordClick = new EventEmitter();
|
|
26099
|
-
this.recordsSelect = new EventEmitter();
|
|
26100
|
-
this.recordsDeselect = new EventEmitter();
|
|
26101
|
-
this.sortByChange = new EventEmitter();
|
|
26102
|
-
}
|
|
26103
|
-
dateToString(date) {
|
|
26104
|
-
return date?.toLocaleDateString(undefined, {
|
|
26105
|
-
year: 'numeric',
|
|
26106
|
-
month: 'long',
|
|
26107
|
-
day: 'numeric',
|
|
26108
|
-
timeZone: 'UTC',
|
|
26109
|
-
});
|
|
26110
|
-
}
|
|
26111
|
-
getStatus(isPublishedToAll) {
|
|
26112
|
-
return isPublishedToAll ? 'published' : 'not published';
|
|
26113
|
-
}
|
|
26114
|
-
formatUserInfo(userInfo) {
|
|
26115
|
-
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
26116
|
-
if (infos && infos.length === 4) {
|
|
26117
|
-
return `${infos[2]} ${infos[1]}`;
|
|
26118
|
-
}
|
|
26119
|
-
return undefined;
|
|
26120
|
-
}
|
|
26121
|
-
getRecordFormats(record) {
|
|
26122
|
-
if (record.kind === 'service' || !('distributions' in record)) {
|
|
26123
|
-
return [];
|
|
26124
|
-
}
|
|
26125
|
-
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
26126
|
-
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
26127
|
-
return formats;
|
|
26128
|
-
}
|
|
26129
|
-
getBadgeColor(format) {
|
|
26130
|
-
return getBadgeColor(format);
|
|
26131
|
-
}
|
|
26132
|
-
getOrderForColumn(col) {
|
|
26133
|
-
if (!this.sortBy) {
|
|
26134
|
-
return null;
|
|
26135
|
-
}
|
|
26136
|
-
let order = null;
|
|
26137
|
-
const sortedArray = Array.isArray(this.sortBy[0])
|
|
26138
|
-
? this.sortBy
|
|
26139
|
-
: [this.sortBy];
|
|
26140
|
-
sortedArray.forEach((sortedCol) => {
|
|
26141
|
-
if (sortedCol[1] === col) {
|
|
26142
|
-
order = sortedCol[0];
|
|
26143
|
-
}
|
|
26144
|
-
});
|
|
26145
|
-
return order;
|
|
26146
|
-
}
|
|
26147
|
-
setSortBy(col) {
|
|
26148
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26149
|
-
let newOrder;
|
|
26150
|
-
if (sortOrder) {
|
|
26151
|
-
newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
|
|
26152
|
-
}
|
|
26153
|
-
else {
|
|
26154
|
-
newOrder = 'asc';
|
|
26155
|
-
}
|
|
26156
|
-
this.sortByChange.emit([newOrder, col]);
|
|
26157
|
-
this.sortBy = [newOrder, col];
|
|
26158
|
-
}
|
|
26159
|
-
isSortedBy(col, order) {
|
|
26160
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26161
|
-
return sortOrder === order;
|
|
26162
|
-
}
|
|
26163
|
-
isChecked(record) {
|
|
26164
|
-
if (this.selectedRecords.includes(record.uniqueIdentifier)) {
|
|
26165
|
-
return true;
|
|
26166
|
-
}
|
|
26167
|
-
return false;
|
|
26168
|
-
}
|
|
26169
|
-
handleRecordSelectedChange(selected, record) {
|
|
26170
|
-
if (!selected) {
|
|
26171
|
-
this.recordsDeselect.emit([record]);
|
|
26172
|
-
this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
|
|
26173
|
-
}
|
|
26174
|
-
else {
|
|
26175
|
-
this.recordsSelect.emit([record]);
|
|
26176
|
-
this.selectedRecords.push(record.uniqueIdentifier);
|
|
26177
|
-
}
|
|
26178
|
-
}
|
|
26179
|
-
selectAll() {
|
|
26180
|
-
if (this.isAllSelected()) {
|
|
26181
|
-
this.recordsDeselect.emit(this.records);
|
|
26182
|
-
this.selectedRecords = [];
|
|
26183
|
-
}
|
|
26184
|
-
else {
|
|
26185
|
-
this.recordsSelect.emit(this.records);
|
|
26186
|
-
this.selectedRecords = this.records.map((record) => {
|
|
26187
|
-
return record.uniqueIdentifier;
|
|
26188
|
-
});
|
|
26189
|
-
}
|
|
26190
|
-
}
|
|
26191
|
-
isAllSelected() {
|
|
26192
|
-
if (this.selectedRecords.length === this.records.length) {
|
|
26193
|
-
const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
|
|
26194
|
-
if (allRecords.length === this.records.length) {
|
|
26195
|
-
return true;
|
|
26196
|
-
}
|
|
26197
|
-
}
|
|
26198
|
-
return false;
|
|
26199
|
-
}
|
|
26200
|
-
isSomeSelected() {
|
|
26201
|
-
if (this.selectedRecords.length > 0 &&
|
|
26202
|
-
this.selectedRecords.length < this.records.length) {
|
|
26203
|
-
return true;
|
|
26204
|
-
}
|
|
26205
|
-
return false;
|
|
26206
|
-
}
|
|
26207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26208
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
26209
|
-
}
|
|
26210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
26211
|
-
type: Component,
|
|
26212
|
-
args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"] }]
|
|
26213
|
-
}], propDecorators: { selectedRecords: [{
|
|
26214
|
-
type: Input
|
|
26215
|
-
}], records: [{
|
|
26216
|
-
type: Input
|
|
26217
|
-
}], totalHits: [{
|
|
26218
|
-
type: Input
|
|
26219
|
-
}], sortBy: [{
|
|
26220
|
-
type: Input
|
|
26221
|
-
}], recordClick: [{
|
|
26222
|
-
type: Output
|
|
26223
|
-
}], recordsSelect: [{
|
|
26224
|
-
type: Output
|
|
26225
|
-
}], recordsDeselect: [{
|
|
26226
|
-
type: Output
|
|
26227
|
-
}], sortByChange: [{
|
|
26228
|
-
type: Output
|
|
26229
|
-
}] } });
|
|
26230
|
-
|
|
26231
26383
|
class UiSearchModule {
|
|
26232
26384
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26233
26385
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26240,8 +26392,7 @@ class UiSearchModule {
|
|
|
26240
26392
|
ResultsHitsNumberComponent,
|
|
26241
26393
|
ResultsListItemComponent,
|
|
26242
26394
|
RecordPreviewFeedComponent,
|
|
26243
|
-
RecordPreviewRowComponent,
|
|
26244
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26395
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26245
26396
|
FacetsModule$1,
|
|
26246
26397
|
FormsModule,
|
|
26247
26398
|
ReactiveFormsModule,
|
|
@@ -26252,7 +26403,8 @@ class UiSearchModule {
|
|
|
26252
26403
|
UiElementsModule,
|
|
26253
26404
|
MatIconModule,
|
|
26254
26405
|
MatCheckboxModule,
|
|
26255
|
-
RouterLink
|
|
26406
|
+
RouterLink,
|
|
26407
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26256
26408
|
RecordPreviewCardComponent,
|
|
26257
26409
|
RecordPreviewTextComponent,
|
|
26258
26410
|
RecordPreviewTitleComponent,
|
|
@@ -26262,8 +26414,7 @@ class UiSearchModule {
|
|
|
26262
26414
|
RecordPreviewComponent,
|
|
26263
26415
|
ResultsHitsNumberComponent,
|
|
26264
26416
|
RecordPreviewFeedComponent,
|
|
26265
|
-
RecordPreviewRowComponent
|
|
26266
|
-
RecordTableComponent] }); }
|
|
26417
|
+
RecordPreviewRowComponent] }); }
|
|
26267
26418
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26268
26419
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26269
26420
|
], imports: [CommonModule,
|
|
@@ -26278,7 +26429,8 @@ class UiSearchModule {
|
|
|
26278
26429
|
UiInputsModule,
|
|
26279
26430
|
UiElementsModule,
|
|
26280
26431
|
MatIconModule,
|
|
26281
|
-
MatCheckboxModule,
|
|
26432
|
+
MatCheckboxModule,
|
|
26433
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26282
26434
|
}
|
|
26283
26435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26284
26436
|
type: NgModule,
|
|
@@ -26295,7 +26447,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26295
26447
|
ResultsListItemComponent,
|
|
26296
26448
|
RecordPreviewFeedComponent,
|
|
26297
26449
|
RecordPreviewRowComponent,
|
|
26298
|
-
RecordTableComponent,
|
|
26299
26450
|
],
|
|
26300
26451
|
imports: [
|
|
26301
26452
|
CommonModule,
|
|
@@ -26312,6 +26463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26312
26463
|
MatIconModule,
|
|
26313
26464
|
MatCheckboxModule,
|
|
26314
26465
|
RouterLink,
|
|
26466
|
+
InteractiveTableComponent,
|
|
26315
26467
|
],
|
|
26316
26468
|
exports: [
|
|
26317
26469
|
RecordPreviewListComponent,
|
|
@@ -26325,7 +26477,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26325
26477
|
ResultsHitsNumberComponent,
|
|
26326
26478
|
RecordPreviewFeedComponent,
|
|
26327
26479
|
RecordPreviewRowComponent,
|
|
26328
|
-
RecordTableComponent,
|
|
26329
26480
|
],
|
|
26330
26481
|
providers: [
|
|
26331
26482
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -26884,6 +27035,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26884
27035
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26885
27036
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26886
27037
|
|
|
27038
|
+
// this geometry will be used to filter & boost results accordingly
|
|
27039
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
27040
|
+
|
|
26887
27041
|
class SearchFacade {
|
|
26888
27042
|
constructor(store, filterGeometry) {
|
|
26889
27043
|
this.store = store;
|
|
@@ -26988,6 +27142,7 @@ class SearchFacade {
|
|
|
26988
27142
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
26989
27143
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
26990
27144
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
27145
|
+
return this;
|
|
26991
27146
|
}
|
|
26992
27147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade, deps: [{ token: i1$2.Store }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26993
27148
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27372,8 +27527,11 @@ class FuzzySearchComponent {
|
|
|
27372
27527
|
this.searchService.updateFilters({ any });
|
|
27373
27528
|
}
|
|
27374
27529
|
}
|
|
27375
|
-
handleInputCleared() {
|
|
27376
|
-
this.
|
|
27530
|
+
async handleInputCleared() {
|
|
27531
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27532
|
+
if (currentSearchFilters.any) {
|
|
27533
|
+
this.searchService.updateFilters({ any: '' });
|
|
27534
|
+
}
|
|
27377
27535
|
}
|
|
27378
27536
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27379
27537
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -27453,6 +27611,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27453
27611
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27454
27612
|
}] }]; } });
|
|
27455
27613
|
|
|
27614
|
+
// expects the replacement key ${uuid}
|
|
27615
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27616
|
+
|
|
27456
27617
|
class FavoriteStarComponent {
|
|
27457
27618
|
set record(value) {
|
|
27458
27619
|
this.record_ = value;
|
|
@@ -27536,11 +27697,11 @@ class FavoriteStarComponent {
|
|
|
27536
27697
|
});
|
|
27537
27698
|
}
|
|
27538
27699
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27539
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, 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
|
|
27700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, 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 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 <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27540
27701
|
}
|
|
27541
27702
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27542
27703
|
type: Component,
|
|
27543
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row
|
|
27704
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 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 <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27544
27705
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27545
27706
|
type: Input
|
|
27546
27707
|
}], record: [{
|
|
@@ -27714,9 +27875,11 @@ class SearchEffects {
|
|
|
27714
27875
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27715
27876
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27716
27877
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27717
|
-
return of([state, favorites,
|
|
27878
|
+
return of([state, favorites, undefined]);
|
|
27718
27879
|
}
|
|
27719
27880
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27881
|
+
if (!geom)
|
|
27882
|
+
return;
|
|
27720
27883
|
try {
|
|
27721
27884
|
const trace = valid$1(geom, true);
|
|
27722
27885
|
if (trace?.length > 0) {
|
|
@@ -27728,7 +27891,7 @@ class SearchEffects {
|
|
|
27728
27891
|
throw new Error();
|
|
27729
27892
|
}
|
|
27730
27893
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27731
|
-
return of([state, favorites,
|
|
27894
|
+
return of([state, favorites, undefined]);
|
|
27732
27895
|
}));
|
|
27733
27896
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27734
27897
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -27827,10 +27990,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27827
27990
|
class AbstractSearchField {
|
|
27828
27991
|
}
|
|
27829
27992
|
class SimpleSearchField {
|
|
27830
|
-
constructor(esFieldName, order = 'asc',
|
|
27993
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27831
27994
|
this.esFieldName = esFieldName;
|
|
27832
|
-
this.order = order;
|
|
27833
27995
|
this.injector = injector;
|
|
27996
|
+
this.order = order;
|
|
27997
|
+
this.orderType = orderType;
|
|
27834
27998
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27835
27999
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27836
28000
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27841,12 +28005,12 @@ class SimpleSearchField {
|
|
|
27841
28005
|
type: 'terms',
|
|
27842
28006
|
field: this.esFieldName,
|
|
27843
28007
|
limit: 1000,
|
|
27844
|
-
sort: [this.order,
|
|
28008
|
+
sort: [this.order, this.orderType],
|
|
27845
28009
|
},
|
|
27846
28010
|
};
|
|
27847
28011
|
}
|
|
27848
28012
|
async getBucketLabel(bucket) {
|
|
27849
|
-
return bucket.term;
|
|
28013
|
+
return bucket.term.toString();
|
|
27850
28014
|
}
|
|
27851
28015
|
getAvailableValues() {
|
|
27852
28016
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27874,9 +28038,13 @@ class SimpleSearchField {
|
|
|
27874
28038
|
return of(values);
|
|
27875
28039
|
}
|
|
27876
28040
|
}
|
|
27877
|
-
class
|
|
27878
|
-
constructor() {
|
|
27879
|
-
super(
|
|
28041
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
28042
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28043
|
+
super(esFieldName, injector, order, orderType);
|
|
28044
|
+
this.esFieldName = esFieldName;
|
|
28045
|
+
this.injector = injector;
|
|
28046
|
+
this.order = order;
|
|
28047
|
+
this.orderType = orderType;
|
|
27880
28048
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27881
28049
|
}
|
|
27882
28050
|
async getTranslation(key) {
|
|
@@ -27886,26 +28054,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27886
28054
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27887
28055
|
}
|
|
27888
28056
|
getAvailableValues() {
|
|
28057
|
+
if (this.orderType === 'count')
|
|
28058
|
+
return super.getAvailableValues();
|
|
27889
28059
|
// sort values by alphabetical order
|
|
27890
28060
|
return super
|
|
27891
28061
|
.getAvailableValues()
|
|
27892
28062
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27893
28063
|
}
|
|
27894
28064
|
}
|
|
27895
|
-
|
|
27896
|
-
|
|
27897
|
-
|
|
27898
|
-
|
|
28065
|
+
/**
|
|
28066
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
28067
|
+
* to the defined METADATA_LANGUAGE token
|
|
28068
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
28069
|
+
*/
|
|
28070
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
28071
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28072
|
+
super(esFieldName, injector, order, orderType);
|
|
28073
|
+
this.esFieldName = esFieldName;
|
|
28074
|
+
this.injector = injector;
|
|
28075
|
+
this.order = order;
|
|
28076
|
+
this.orderType = orderType;
|
|
27899
28077
|
this.langService = this.injector.get(LangService);
|
|
27900
|
-
this.
|
|
27901
|
-
|
|
27902
|
-
|
|
27903
|
-
|
|
27904
|
-
|
|
27905
|
-
}
|
|
27906
|
-
|
|
27907
|
-
|
|
27908
|
-
|
|
28078
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
28079
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
28080
|
+
// permalinks that might not work for different users
|
|
28081
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
28082
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
28083
|
+
}
|
|
28084
|
+
else {
|
|
28085
|
+
this.esFieldName += '.default';
|
|
28086
|
+
}
|
|
27909
28087
|
}
|
|
27910
28088
|
}
|
|
27911
28089
|
class FullTextSearchField {
|
|
@@ -27925,7 +28103,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
27925
28103
|
marker('search.filters.isSpatial.no');
|
|
27926
28104
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
27927
28105
|
constructor(injector) {
|
|
27928
|
-
super('isSpatial', 'asc'
|
|
28106
|
+
super('isSpatial', injector, 'asc');
|
|
27929
28107
|
this.translateService = this.injector.get(TranslateService);
|
|
27930
28108
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
27931
28109
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -27975,7 +28153,7 @@ marker('search.filters.license.unknown');
|
|
|
27975
28153
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
27976
28154
|
class LicenseSearchField extends SimpleSearchField {
|
|
27977
28155
|
constructor(injector) {
|
|
27978
|
-
super('license', 'asc'
|
|
28156
|
+
super('license', injector, 'asc');
|
|
27979
28157
|
this.translateService = this.injector.get(TranslateService);
|
|
27980
28158
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
27981
28159
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -28059,7 +28237,7 @@ class OrganizationSearchField {
|
|
|
28059
28237
|
}
|
|
28060
28238
|
class OwnerSearchField extends SimpleSearchField {
|
|
28061
28239
|
constructor(injector) {
|
|
28062
|
-
super('owner', 'asc'
|
|
28240
|
+
super('owner', injector, 'asc');
|
|
28063
28241
|
}
|
|
28064
28242
|
getAvailableValues() {
|
|
28065
28243
|
return of([]);
|
|
@@ -28068,6 +28246,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
28068
28246
|
|
|
28069
28247
|
marker('search.filters.format');
|
|
28070
28248
|
marker('search.filters.inspireKeyword');
|
|
28249
|
+
marker('search.filters.keyword');
|
|
28071
28250
|
marker('search.filters.isSpatial');
|
|
28072
28251
|
marker('search.filters.license');
|
|
28073
28252
|
marker('search.filters.publicationYear');
|
|
@@ -28085,13 +28264,14 @@ class FieldsService {
|
|
|
28085
28264
|
this.injector = injector;
|
|
28086
28265
|
this.fields = {
|
|
28087
28266
|
publisher: new OrganizationSearchField(this.injector),
|
|
28088
|
-
format: new SimpleSearchField('format', 'asc'
|
|
28089
|
-
resourceType: new
|
|
28090
|
-
representationType: new
|
|
28091
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
28092
|
-
topic: new
|
|
28093
|
-
inspireKeyword: new
|
|
28094
|
-
|
|
28267
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28268
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28269
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28270
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28271
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28272
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28273
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28274
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
28095
28275
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
28096
28276
|
q: new FullTextSearchField(),
|
|
28097
28277
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28165,10 +28345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28165
28345
|
type: Input
|
|
28166
28346
|
}] } });
|
|
28167
28347
|
|
|
28168
|
-
// this geometry will be used to filter & boost results accordingly
|
|
28169
|
-
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
28170
|
-
// expects the replacement key ${uuid}
|
|
28171
|
-
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
28172
28348
|
class FeatureSearchModule {
|
|
28173
28349
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28174
28350
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28267,6 +28443,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28267
28443
|
}]
|
|
28268
28444
|
}] });
|
|
28269
28445
|
|
|
28446
|
+
class ResultsTableComponent {
|
|
28447
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28448
|
+
this.searchFacade = searchFacade;
|
|
28449
|
+
this.searchService = searchService;
|
|
28450
|
+
this.selectionService = selectionService;
|
|
28451
|
+
this.recordClick = new EventEmitter();
|
|
28452
|
+
this.records$ = this.searchFacade.results$;
|
|
28453
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28454
|
+
}
|
|
28455
|
+
dateToString(date) {
|
|
28456
|
+
return date?.toLocaleDateString(undefined, {
|
|
28457
|
+
year: 'numeric',
|
|
28458
|
+
month: 'long',
|
|
28459
|
+
day: 'numeric',
|
|
28460
|
+
timeZone: 'UTC',
|
|
28461
|
+
});
|
|
28462
|
+
}
|
|
28463
|
+
getStatus(isPublishedToAll) {
|
|
28464
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28465
|
+
}
|
|
28466
|
+
getRecordFormats(record) {
|
|
28467
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28468
|
+
return [];
|
|
28469
|
+
}
|
|
28470
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28471
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28472
|
+
return formats;
|
|
28473
|
+
}
|
|
28474
|
+
formatUserInfo(userInfo) {
|
|
28475
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28476
|
+
if (infos && infos.length === 4) {
|
|
28477
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28478
|
+
}
|
|
28479
|
+
return undefined;
|
|
28480
|
+
}
|
|
28481
|
+
getBadgeColor(format) {
|
|
28482
|
+
return getBadgeColor(format);
|
|
28483
|
+
}
|
|
28484
|
+
handleRecordClick(item) {
|
|
28485
|
+
this.recordClick.emit(item);
|
|
28486
|
+
}
|
|
28487
|
+
setSortBy(col, order) {
|
|
28488
|
+
this.searchService.setSortBy([order, col]);
|
|
28489
|
+
}
|
|
28490
|
+
isSortedBy(col) {
|
|
28491
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28492
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28493
|
+
? sortOrder
|
|
28494
|
+
: [sortOrder];
|
|
28495
|
+
for (const sort of sortArray) {
|
|
28496
|
+
if (sort[1] === col) {
|
|
28497
|
+
return sort[0];
|
|
28498
|
+
}
|
|
28499
|
+
}
|
|
28500
|
+
return null;
|
|
28501
|
+
}));
|
|
28502
|
+
}
|
|
28503
|
+
isChecked(record) {
|
|
28504
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28505
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28506
|
+
}));
|
|
28507
|
+
}
|
|
28508
|
+
handleRecordSelectedChange(selected, record) {
|
|
28509
|
+
if (!selected) {
|
|
28510
|
+
this.selectionService.deselectRecords([record]);
|
|
28511
|
+
}
|
|
28512
|
+
else {
|
|
28513
|
+
this.selectionService.selectRecords([record]);
|
|
28514
|
+
}
|
|
28515
|
+
}
|
|
28516
|
+
async toggleSelectAll() {
|
|
28517
|
+
const records = await firstValueFrom(this.records$);
|
|
28518
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28519
|
+
this.selectionService.deselectRecords(records);
|
|
28520
|
+
}
|
|
28521
|
+
else {
|
|
28522
|
+
this.selectionService.selectRecords(records);
|
|
28523
|
+
}
|
|
28524
|
+
}
|
|
28525
|
+
isAllSelected() {
|
|
28526
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28527
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28528
|
+
}));
|
|
28529
|
+
}
|
|
28530
|
+
isSomeSelected() {
|
|
28531
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28532
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28533
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28534
|
+
return !allSelected && someSelected;
|
|
28535
|
+
}));
|
|
28536
|
+
}
|
|
28537
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\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 [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\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$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28539
|
+
}
|
|
28540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28541
|
+
type: Component,
|
|
28542
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28543
|
+
CommonModule,
|
|
28544
|
+
UiInputsModule,
|
|
28545
|
+
InteractiveTableComponent,
|
|
28546
|
+
InteractiveTableColumnComponent,
|
|
28547
|
+
MatIconModule,
|
|
28548
|
+
TranslateModule,
|
|
28549
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\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 [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-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-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28550
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28551
|
+
type: Output
|
|
28552
|
+
}] } });
|
|
28553
|
+
|
|
28270
28554
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28271
28555
|
get mapLinks() {
|
|
28272
28556
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28593,6 +28877,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28593
28877
|
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-context [context]=\"context$ | async\"></gn-ui-map-context>\n" }]
|
|
28594
28878
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28595
28879
|
|
|
28880
|
+
const GEOCODING_PROVIDER = new InjectionToken('geocoding-provider');
|
|
28881
|
+
class GeocodingService {
|
|
28882
|
+
constructor(provider) {
|
|
28883
|
+
this.provider = provider;
|
|
28884
|
+
}
|
|
28885
|
+
query(text) {
|
|
28886
|
+
let queryObservable;
|
|
28887
|
+
switch (this.provider[0]) {
|
|
28888
|
+
case 'geoadmin':
|
|
28889
|
+
queryObservable = from(queryGeoadmin(text, this.provider[1]));
|
|
28890
|
+
break;
|
|
28891
|
+
case 'geonames':
|
|
28892
|
+
queryObservable = from(queryGeonames(text, this.provider[1]));
|
|
28893
|
+
break;
|
|
28894
|
+
case 'data-gouv-fr':
|
|
28895
|
+
queryObservable = from(queryDataGouvFr(text, this.provider[1]));
|
|
28896
|
+
break;
|
|
28897
|
+
default:
|
|
28898
|
+
return throwError(() => new Error(`Unsupported geocoding provider: ${this.provider[0]}`));
|
|
28899
|
+
}
|
|
28900
|
+
return queryObservable.pipe(catchError((error) => throwError(error)));
|
|
28901
|
+
}
|
|
28902
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, deps: [{ token: GEOCODING_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28903
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, providedIn: 'root' }); }
|
|
28904
|
+
}
|
|
28905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, decorators: [{
|
|
28906
|
+
type: Injectable,
|
|
28907
|
+
args: [{
|
|
28908
|
+
providedIn: 'root',
|
|
28909
|
+
}]
|
|
28910
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28911
|
+
type: Inject,
|
|
28912
|
+
args: [GEOCODING_PROVIDER]
|
|
28913
|
+
}] }]; } });
|
|
28914
|
+
|
|
28915
|
+
class GeocodingComponent {
|
|
28916
|
+
constructor(mapManager, geocodingService) {
|
|
28917
|
+
this.mapManager = mapManager;
|
|
28918
|
+
this.geocodingService = geocodingService;
|
|
28919
|
+
this.searchText = '';
|
|
28920
|
+
this.results = [];
|
|
28921
|
+
this.searchTextChanged = new Subject();
|
|
28922
|
+
this.destroy$ = new Subject();
|
|
28923
|
+
this.errorMessage = null;
|
|
28924
|
+
this.searchTextChanged
|
|
28925
|
+
.pipe(debounceTime(300), switchMap$1((searchText) => {
|
|
28926
|
+
return from(this.geocodingService.query(searchText)).pipe(catchError$1((error) => {
|
|
28927
|
+
this.errorMessage =
|
|
28928
|
+
'An error occurred while searching. Please try again.';
|
|
28929
|
+
console.error(error);
|
|
28930
|
+
return [];
|
|
28931
|
+
}));
|
|
28932
|
+
}), takeUntil(this.destroy$))
|
|
28933
|
+
.subscribe((results) => {
|
|
28934
|
+
this.results = results;
|
|
28935
|
+
});
|
|
28936
|
+
}
|
|
28937
|
+
ngOnDestroy() {
|
|
28938
|
+
this.destroy$.next();
|
|
28939
|
+
this.destroy$.complete();
|
|
28940
|
+
}
|
|
28941
|
+
onSearchChange(searchText) {
|
|
28942
|
+
if (!searchText) {
|
|
28943
|
+
this.clearSearch();
|
|
28944
|
+
return;
|
|
28945
|
+
}
|
|
28946
|
+
else {
|
|
28947
|
+
this.searchTextChanged.next(searchText);
|
|
28948
|
+
}
|
|
28949
|
+
}
|
|
28950
|
+
clearSearch() {
|
|
28951
|
+
this.searchText = '';
|
|
28952
|
+
this.results = [];
|
|
28953
|
+
this.errorMessage = null;
|
|
28954
|
+
}
|
|
28955
|
+
zoomToLocation(result) {
|
|
28956
|
+
const map = this.mapManager.map;
|
|
28957
|
+
const view = map.getView();
|
|
28958
|
+
const geometry = result.geom;
|
|
28959
|
+
if (geometry.type === 'Point') {
|
|
28960
|
+
this.zoomToPoint(geometry.coordinates, view);
|
|
28961
|
+
}
|
|
28962
|
+
else if (geometry.type === 'Polygon') {
|
|
28963
|
+
this.zoomToPolygon(geometry.coordinates, view);
|
|
28964
|
+
}
|
|
28965
|
+
else {
|
|
28966
|
+
console.error(`Unsupported geometry type: ${geometry.type}`);
|
|
28967
|
+
}
|
|
28968
|
+
}
|
|
28969
|
+
zoomToPoint(pointCoords, view) {
|
|
28970
|
+
const transformedCoords = fromLonLat(pointCoords);
|
|
28971
|
+
view.setCenter(transformedCoords);
|
|
28972
|
+
view.setZoom(12);
|
|
28973
|
+
}
|
|
28974
|
+
zoomToPolygon(polygonCoords, view) {
|
|
28975
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
28976
|
+
const polygon = new Polygon([transformedCoords]);
|
|
28977
|
+
view.fit(polygon, {
|
|
28978
|
+
duration: 100,
|
|
28979
|
+
maxZoom: 12,
|
|
28980
|
+
});
|
|
28981
|
+
}
|
|
28982
|
+
onEnterPress() {
|
|
28983
|
+
if (this.results && this.results.length > 0) {
|
|
28984
|
+
this.zoomToLocation(this.results[0]);
|
|
28985
|
+
}
|
|
28986
|
+
}
|
|
28987
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, deps: [{ token: MapManagerService }, { token: GeocodingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28988
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: GeocodingComponent, selector: "gn-ui-geocoding", ngImport: i0, template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28989
|
+
}
|
|
28990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
28991
|
+
type: Component,
|
|
28992
|
+
args: [{ selector: 'gn-ui-geocoding', template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n" }]
|
|
28993
|
+
}], ctorParameters: function () { return [{ type: MapManagerService }, { type: GeocodingService }]; } });
|
|
28994
|
+
|
|
28596
28995
|
class FeatureMapModule {
|
|
28597
28996
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28598
28997
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, declarations: [MapContextComponent,
|
|
@@ -28603,7 +29002,8 @@ class FeatureMapModule {
|
|
|
28603
29002
|
AddLayerRecordPreviewComponent,
|
|
28604
29003
|
AddLayerFromWmsComponent,
|
|
28605
29004
|
AddLayerFromFileComponent,
|
|
28606
|
-
AddLayerFromWfsComponent
|
|
29005
|
+
AddLayerFromWfsComponent,
|
|
29006
|
+
GeocodingComponent], imports: [CommonModule,
|
|
28607
29007
|
UiMapModule,
|
|
28608
29008
|
UiLayoutModule,
|
|
28609
29009
|
MatIconModule,
|
|
@@ -28614,13 +29014,18 @@ class FeatureMapModule {
|
|
|
28614
29014
|
MapInstanceDirective,
|
|
28615
29015
|
LayersPanelComponent,
|
|
28616
29016
|
AddLayerFromCatalogComponent,
|
|
28617
|
-
MapContainerComponent
|
|
29017
|
+
MapContainerComponent,
|
|
29018
|
+
GeocodingComponent] }); }
|
|
28618
29019
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
28619
29020
|
{
|
|
28620
29021
|
provide: FEATURE_MAP_OPTIONS,
|
|
28621
29022
|
useValue: defaultMapOptions,
|
|
28622
29023
|
},
|
|
28623
29024
|
MapFacade,
|
|
29025
|
+
{
|
|
29026
|
+
provide: GEOCODING_PROVIDER,
|
|
29027
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
29028
|
+
},
|
|
28624
29029
|
], imports: [CommonModule,
|
|
28625
29030
|
UiMapModule,
|
|
28626
29031
|
UiLayoutModule,
|
|
@@ -28646,6 +29051,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28646
29051
|
AddLayerFromWmsComponent,
|
|
28647
29052
|
AddLayerFromFileComponent,
|
|
28648
29053
|
AddLayerFromWfsComponent,
|
|
29054
|
+
GeocodingComponent,
|
|
28649
29055
|
],
|
|
28650
29056
|
exports: [
|
|
28651
29057
|
MapContextComponent,
|
|
@@ -28653,6 +29059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28653
29059
|
LayersPanelComponent,
|
|
28654
29060
|
AddLayerFromCatalogComponent,
|
|
28655
29061
|
MapContainerComponent,
|
|
29062
|
+
GeocodingComponent,
|
|
28656
29063
|
],
|
|
28657
29064
|
imports: [
|
|
28658
29065
|
CommonModule,
|
|
@@ -28673,6 +29080,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28673
29080
|
useValue: defaultMapOptions,
|
|
28674
29081
|
},
|
|
28675
29082
|
MapFacade,
|
|
29083
|
+
{
|
|
29084
|
+
provide: GEOCODING_PROVIDER,
|
|
29085
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
29086
|
+
},
|
|
28676
29087
|
],
|
|
28677
29088
|
}]
|
|
28678
29089
|
}] });
|
|
@@ -28767,7 +29178,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28767
29178
|
...state,
|
|
28768
29179
|
chartConfig,
|
|
28769
29180
|
})), on(close, (state) => {
|
|
28770
|
-
// eslint-disable-next-line
|
|
29181
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28771
29182
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28772
29183
|
return stateWithoutMd;
|
|
28773
29184
|
}));
|
|
@@ -30437,12 +30848,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30437
30848
|
}] } });
|
|
30438
30849
|
|
|
30439
30850
|
class MapViewComponent {
|
|
30440
|
-
constructor(mdViewFacade, mapManager, mapUtils, dataService,
|
|
30851
|
+
constructor(mdViewFacade, mapManager, mapUtils, dataService, featureInfo, changeRef, styleService) {
|
|
30441
30852
|
this.mdViewFacade = mdViewFacade;
|
|
30442
30853
|
this.mapManager = mapManager;
|
|
30443
30854
|
this.mapUtils = mapUtils;
|
|
30444
30855
|
this.dataService = dataService;
|
|
30445
|
-
this.proxy = proxy;
|
|
30446
30856
|
this.featureInfo = featureInfo;
|
|
30447
30857
|
this.changeRef = changeRef;
|
|
30448
30858
|
this.styleService = styleService;
|
|
@@ -30477,7 +30887,7 @@ class MapViewComponent {
|
|
|
30477
30887
|
return of([]);
|
|
30478
30888
|
}), finalize(() => (this.loading = false)));
|
|
30479
30889
|
}));
|
|
30480
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => this.mapUtils.getLayerExtent(layers[0]).pipe(catchError((error) => {
|
|
30890
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((error) => {
|
|
30481
30891
|
console.warn(error); // FIXME: report this to the user somehow
|
|
30482
30892
|
return of(undefined);
|
|
30483
30893
|
}), map$1((extent) => ({
|
|
@@ -30485,7 +30895,18 @@ class MapViewComponent {
|
|
|
30485
30895
|
view: {
|
|
30486
30896
|
extent,
|
|
30487
30897
|
},
|
|
30488
|
-
})), tap$1(() => this.resetSelection()))))
|
|
30898
|
+
})), tap$1(() => this.resetSelection()))), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
30899
|
+
if (context.view.extent)
|
|
30900
|
+
return context;
|
|
30901
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
30902
|
+
return {
|
|
30903
|
+
...context,
|
|
30904
|
+
view: {
|
|
30905
|
+
...context.view,
|
|
30906
|
+
extent,
|
|
30907
|
+
},
|
|
30908
|
+
};
|
|
30909
|
+
}));
|
|
30489
30910
|
}
|
|
30490
30911
|
ngOnDestroy() {
|
|
30491
30912
|
this.subscription.unsubscribe();
|
|
@@ -30538,13 +30959,13 @@ class MapViewComponent {
|
|
|
30538
30959
|
selectLinkToDisplay(link) {
|
|
30539
30960
|
this.selectedLinkIndex$.next(link);
|
|
30540
30961
|
}
|
|
30541
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token:
|
|
30962
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token: FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30542
30963
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30543
30964
|
}
|
|
30544
30965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
30545
30966
|
type: Component,
|
|
30546
30967
|
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
30547
|
-
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type:
|
|
30968
|
+
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type: FeatureInfoService }, { type: i0.ChangeDetectorRef }, { type: MapStyleService }]; } });
|
|
30548
30969
|
|
|
30549
30970
|
class DataViewComponent {
|
|
30550
30971
|
constructor(mdViewFacade) {
|
|
@@ -30711,11 +31132,11 @@ class LanguageSwitcherComponent {
|
|
|
30711
31132
|
this.translate.use(value);
|
|
30712
31133
|
}
|
|
30713
31134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30714
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\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"], outputs: ["selectValue"] }] }); }
|
|
30715
31136
|
}
|
|
30716
31137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30717
31138
|
type: Component,
|
|
30718
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31139
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\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" }]
|
|
30719
31140
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30720
31141
|
type: Optional
|
|
30721
31142
|
}, {
|
|
@@ -30996,13 +31417,6 @@ class MyOrgService {
|
|
|
30996
31417
|
constructor(platformService, orgService) {
|
|
30997
31418
|
this.platformService = platformService;
|
|
30998
31419
|
this.orgService = orgService;
|
|
30999
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
31000
|
-
orgName: '',
|
|
31001
|
-
logoUrl: '',
|
|
31002
|
-
recordCount: 0,
|
|
31003
|
-
userCount: 0,
|
|
31004
|
-
userList: [],
|
|
31005
|
-
});
|
|
31006
31420
|
this.myOrgData$ = combineLatest([
|
|
31007
31421
|
this.platformService.getMe(),
|
|
31008
31422
|
this.platformService.getUsers(),
|
|
@@ -31021,7 +31435,7 @@ class MyOrgService {
|
|
|
31021
31435
|
userList,
|
|
31022
31436
|
userCount,
|
|
31023
31437
|
};
|
|
31024
|
-
}));
|
|
31438
|
+
}), shareReplay(1));
|
|
31025
31439
|
}
|
|
31026
31440
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31027
31441
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -31714,11 +32128,11 @@ class RecordFormComponent {
|
|
|
31714
32128
|
return field.config.model;
|
|
31715
32129
|
}
|
|
31716
32130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31717
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31718
32132
|
}
|
|
31719
32133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31720
32134
|
type: Component,
|
|
31721
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
32135
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31722
32136
|
}], ctorParameters: function () { return [{ type: EditorService }]; } });
|
|
31723
32137
|
|
|
31724
32138
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -32086,5 +32500,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32086
32500
|
* Generated bundle index. Do not edit.
|
|
32087
32501
|
*/
|
|
32088
32502
|
|
|
32089
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, Gn4MetadataMapper, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService,
|
|
32503
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, 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, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32090
32504
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|