geonetwork-ui 2.2.0-dev.177cac3b → 2.2.0-dev.260a7d93
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 +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +77 -52
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +4 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +16 -11
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -16
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +21 -18
- 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/dataviz/src/lib/service/data.service.mjs +5 -4
- 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/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
- 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 +20 -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/layers-panel/layers-panel.component.mjs +5 -4
- 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 +1 -1
- 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/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/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +2 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
- 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/editable-label/editable-label.directive.mjs +46 -0
- 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 +2 -2
- 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/shared/src/lib/links/link-utils.mjs +29 -13
- package/esm2022/translations/de.json +103 -98
- package/esm2022/translations/en.json +28 -23
- package/esm2022/translations/es.json +9 -4
- package/esm2022/translations/fr.json +12 -7
- package/esm2022/translations/it.json +11 -6
- package/esm2022/translations/nl.json +9 -4
- package/esm2022/translations/pt.json +9 -4
- package/fesm2022/geonetwork-ui.mjs +1098 -759
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -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/iso19139/converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -4
- 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 +3 -2
- 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 +15 -15
- 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/dataviz/src/lib/service/data.service.d.ts +15 -2
- package/libs/feature/dataviz/src/lib/service/data.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/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
- 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 +15 -13
- 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/downloads-list/downloads-list.component.d.ts +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/metadata-info/metadata-info.component.d.ts +7 -3
- 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/shared/src/lib/links/link-utils.d.ts +19 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +6 -6
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -3
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +22 -4
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +112 -65
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +3 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +19 -12
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +62 -43
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +91 -59
- 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 +17 -18
- 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/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +6 -2
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
- 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/add-layer-from-file/add-layer-from-file.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +10 -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/layers-panel/layers-panel.component.html +3 -1
- 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.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/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 +54 -54
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +45 -18
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +31 -12
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +1 -2
- 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/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.css +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 +1 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
- 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.css +1 -1
- 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/shared/src/lib/links/link-utils.ts +34 -11
- package/translations/de.json +103 -98
- package/translations/en.json +28 -23
- package/translations/es.json +9 -4
- package/translations/fr.json +12 -7
- package/translations/it.json +11 -6
- package/translations/nl.json +9 -4
- package/translations/pt.json +9 -4
- package/translations/sk.json +9 -4
- 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';
|
|
@@ -647,28 +649,32 @@ function extractStatus() {
|
|
|
647
649
|
return pipe(findChildElement('gmd:MD_ProgressCode'), readAttribute('codeListValue'), map(getStatusFromStatusCode));
|
|
648
650
|
}
|
|
649
651
|
// from gmd:resourceConstraints
|
|
650
|
-
function
|
|
651
|
-
|
|
652
|
-
|
|
652
|
+
function extractLegalConstraints() {
|
|
653
|
+
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]) => ({
|
|
654
|
+
...(url && { url }),
|
|
653
655
|
text,
|
|
654
|
-
type: 'other',
|
|
655
656
|
})));
|
|
656
|
-
|
|
657
|
+
}
|
|
658
|
+
// from gmd:resourceConstraints
|
|
659
|
+
function extractSecurityConstraints() {
|
|
660
|
+
return pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
661
|
+
...(url && { url }),
|
|
657
662
|
text,
|
|
658
|
-
type: 'security',
|
|
659
663
|
})));
|
|
660
|
-
return pipe(combine(getOtherConstraints, getSecurityConstraints), flattenArray());
|
|
661
664
|
}
|
|
662
665
|
// from gmd:resourceConstraints
|
|
663
|
-
function
|
|
664
|
-
return pipe(
|
|
666
|
+
function extractOtherConstraints() {
|
|
667
|
+
return pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
668
|
+
...(url && { url }),
|
|
669
|
+
text,
|
|
670
|
+
})));
|
|
665
671
|
}
|
|
666
672
|
// from gmd:resourceConstraints
|
|
667
673
|
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(
|
|
674
|
+
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
675
|
...(url && { url }),
|
|
670
676
|
text,
|
|
671
|
-
})))
|
|
677
|
+
})));
|
|
672
678
|
}
|
|
673
679
|
// from gmd:MD_Distribution
|
|
674
680
|
function extractDatasetDistributions() {
|
|
@@ -840,11 +846,14 @@ function readStatus(rootEl) {
|
|
|
840
846
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
841
847
|
}
|
|
842
848
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
843
|
-
function
|
|
844
|
-
return pipe(getConstraints, mapArray(
|
|
849
|
+
function readLegalConstraints(rootEl) {
|
|
850
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
845
851
|
}
|
|
846
|
-
function
|
|
847
|
-
return pipe(getConstraints, mapArray(
|
|
852
|
+
function readSecurityConstraints(rootEl) {
|
|
853
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
854
|
+
}
|
|
855
|
+
function readOtherConstraints(rootEl) {
|
|
856
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
848
857
|
}
|
|
849
858
|
function readLicenses(rootEl) {
|
|
850
859
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
@@ -1077,23 +1086,23 @@ function appendKeywords(keywords, type) {
|
|
|
1077
1086
|
? appendChildren(pipe(createElement('gmd:type'), createChild('gmd:MD_KeywordTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_KeywordTypeCode'), addAttribute('codeListValue', type)))
|
|
1078
1087
|
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword))))));
|
|
1079
1088
|
}
|
|
1080
|
-
function
|
|
1081
|
-
|
|
1082
|
-
// remove legal constraints that *only* have 'otherRestrictions'
|
|
1083
|
-
const otherConstraintsFilter = pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.every((code) => code === 'otherRestrictions'));
|
|
1084
|
-
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray((el) => securityConstraintsFilter(el) || otherConstraintsFilter(el))));
|
|
1085
|
-
}
|
|
1086
|
-
function createAccessConstraint(constraint) {
|
|
1087
|
-
if (constraint.type === 'security') {
|
|
1089
|
+
function createConstraint(constraint, type) {
|
|
1090
|
+
if (type === 'security') {
|
|
1088
1091
|
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
1092
|
}
|
|
1090
|
-
|
|
1093
|
+
else if (type === 'legal') {
|
|
1094
|
+
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))));
|
|
1095
|
+
}
|
|
1096
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1091
1097
|
}
|
|
1092
|
-
function
|
|
1098
|
+
function removeOtherConstraints() {
|
|
1093
1099
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1094
1100
|
}
|
|
1095
|
-
function
|
|
1096
|
-
return pipe(
|
|
1101
|
+
function removeSecurityConstraints() {
|
|
1102
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1103
|
+
}
|
|
1104
|
+
function removeLegalConstraints() {
|
|
1105
|
+
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
1106
|
}
|
|
1098
1107
|
function removeLicenses() {
|
|
1099
1108
|
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')))));
|
|
@@ -1197,14 +1206,17 @@ function writeKeywords(record, rootEl) {
|
|
|
1197
1206
|
function writeThemes(record, rootEl) {
|
|
1198
1207
|
pipe(findOrCreateIdentification(), removeKeywords('theme'), appendKeywords(record.themes, 'theme'))(rootEl);
|
|
1199
1208
|
}
|
|
1200
|
-
function writeAccessConstraints(record, rootEl) {
|
|
1201
|
-
pipe(findOrCreateIdentification(), removeAccessConstraints(), appendChildren(...record.accessConstraints.map(createAccessConstraint)))(rootEl);
|
|
1202
|
-
}
|
|
1203
1209
|
function writeLicenses(record, rootEl) {
|
|
1204
1210
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1205
1211
|
}
|
|
1206
|
-
function
|
|
1207
|
-
pipe(findOrCreateIdentification(),
|
|
1212
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1213
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1214
|
+
}
|
|
1215
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1216
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1217
|
+
}
|
|
1218
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1219
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1208
1220
|
}
|
|
1209
1221
|
function writeUpdateFrequency(record, rootEl) {
|
|
1210
1222
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1302,8 +1314,9 @@ function toModel(xml) {
|
|
|
1302
1314
|
const recordCreated = recordUpdated;
|
|
1303
1315
|
const keywords = readKeywords(rootEl);
|
|
1304
1316
|
const themes = readThemes(rootEl);
|
|
1305
|
-
const
|
|
1306
|
-
const
|
|
1317
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1318
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1319
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1307
1320
|
const licenses = readLicenses(rootEl);
|
|
1308
1321
|
const overviews = readOverviews(rootEl);
|
|
1309
1322
|
// not used yet
|
|
@@ -1331,9 +1344,10 @@ function toModel(xml) {
|
|
|
1331
1344
|
contactsForResource: [],
|
|
1332
1345
|
keywords,
|
|
1333
1346
|
themes,
|
|
1334
|
-
accessConstraints,
|
|
1335
|
-
useLimitations,
|
|
1336
1347
|
licenses,
|
|
1348
|
+
legalConstraints,
|
|
1349
|
+
securityConstraints,
|
|
1350
|
+
otherConstraints,
|
|
1337
1351
|
...(datasetCreated && { datasetCreated }),
|
|
1338
1352
|
...(datasetUpdated && { datasetUpdated }),
|
|
1339
1353
|
lineage,
|
|
@@ -1358,9 +1372,10 @@ function toModel(xml) {
|
|
|
1358
1372
|
contacts,
|
|
1359
1373
|
keywords,
|
|
1360
1374
|
themes,
|
|
1361
|
-
accessConstraints,
|
|
1362
|
-
useLimitations,
|
|
1363
1375
|
licenses,
|
|
1376
|
+
legalConstraints,
|
|
1377
|
+
securityConstraints,
|
|
1378
|
+
otherConstraints,
|
|
1364
1379
|
overviews,
|
|
1365
1380
|
onlineResources,
|
|
1366
1381
|
};
|
|
@@ -1386,9 +1401,11 @@ function toXml(record, originalXml) {
|
|
|
1386
1401
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1387
1402
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1388
1403
|
fieldChanged('themes') && writeThemes(record, rootEl);
|
|
1389
|
-
fieldChanged('
|
|
1404
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1405
|
+
fieldChanged('securityConstraints') &&
|
|
1406
|
+
writeSecurityConstraints(record, rootEl);
|
|
1390
1407
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1391
|
-
fieldChanged('
|
|
1408
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1392
1409
|
if (record.kind === 'dataset') {
|
|
1393
1410
|
writeStatus(record, rootEl);
|
|
1394
1411
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1414,6 +1431,7 @@ const selectTranslatedValue = (source, lang3) => selectFallback(selectField(sour
|
|
|
1414
1431
|
const selectTranslatedField = (source, fieldName, lang3) => selectTranslatedValue(selectField(source, fieldName), lang3);
|
|
1415
1432
|
const toDate = (field) => new Date(field);
|
|
1416
1433
|
const getFirstValue = (field) => Array.isArray(field) ? field[0] : field;
|
|
1434
|
+
const getArrayItem = (field, index) => Array.isArray(field) && field[index] !== undefined ? field[index] : null;
|
|
1417
1435
|
const getAsArray = (field) => Array.isArray(field) ? field : field !== null ? [field] : [];
|
|
1418
1436
|
const getAsUrl = (field, location = window.location.toString()) => {
|
|
1419
1437
|
// an empty string is not a valid url, even though it could be considered an empty path to the root
|
|
@@ -16540,133 +16558,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16540
16558
|
}]
|
|
16541
16559
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16542
16560
|
|
|
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
16561
|
var dropFile$6 = "Datei ablegen";
|
|
16671
16562
|
var next$6 = "weiter";
|
|
16672
16563
|
var previous$6 = "zurück";
|
|
@@ -16689,20 +16580,21 @@ var de = {
|
|
|
16689
16580
|
"chart.type.line": "Liniendiagramm",
|
|
16690
16581
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16691
16582
|
"chart.type.pie": "Kreisdiagramm",
|
|
16692
|
-
"dashboard.
|
|
16693
|
-
"dashboard.
|
|
16694
|
-
"dashboard.records.
|
|
16695
|
-
"dashboard.records.
|
|
16696
|
-
"dashboard.records.
|
|
16697
|
-
"dashboard.records.
|
|
16698
|
-
"dashboard.records.
|
|
16699
|
-
"dashboard.records.
|
|
16700
|
-
"dashboard.records.
|
|
16701
|
-
"dashboard.records.
|
|
16702
|
-
"dashboard.records.
|
|
16703
|
-
"dashboard.records.
|
|
16704
|
-
"dashboard.records.
|
|
16705
|
-
"dashboard.
|
|
16583
|
+
"dashboard.createRecord": "",
|
|
16584
|
+
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16585
|
+
"dashboard.records.all": "Katalog",
|
|
16586
|
+
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16587
|
+
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16588
|
+
"dashboard.records.myOrg": "Meine Organisation",
|
|
16589
|
+
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16590
|
+
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16591
|
+
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16592
|
+
"dashboard.records.userDetail": "Name",
|
|
16593
|
+
"dashboard.records.userEmail": "E-Mail",
|
|
16594
|
+
"dashboard.records.username": "Benutzername",
|
|
16595
|
+
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16596
|
+
"dashboard.results.listMetadata": "",
|
|
16597
|
+
"dashboard.results.listResources": "",
|
|
16706
16598
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16707
16599
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16708
16600
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16716,7 +16608,7 @@ var de = {
|
|
|
16716
16608
|
"datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
|
|
16717
16609
|
"datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
|
|
16718
16610
|
"datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
|
|
16719
|
-
"datafeeder.form.tags": "Wählen Sie einen oder mehrere
|
|
16611
|
+
"datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
|
|
16720
16612
|
"datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
|
|
16721
16613
|
"datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
|
|
16722
16614
|
"datafeeder.month.april": "April",
|
|
@@ -16731,16 +16623,16 @@ var de = {
|
|
|
16731
16623
|
"datafeeder.month.november": "November",
|
|
16732
16624
|
"datafeeder.month.october": "Oktober",
|
|
16733
16625
|
"datafeeder.month.september": "September",
|
|
16734
|
-
"datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist",
|
|
16735
|
-
"datafeeder.publish.illustration.title": "Ein weiterer Datensatz zum Veröffentlichen?",
|
|
16626
|
+
"datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
|
|
16627
|
+
"datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
|
|
16736
16628
|
"datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
|
|
16737
|
-
"datafeeder.publish.title": "Vielen Dank! Ihr Datensatz wird veröffentlicht",
|
|
16629
|
+
"datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
|
|
16738
16630
|
"datafeeder.publish.upload": "Jetzt hochladen",
|
|
16739
16631
|
"datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
|
|
16740
16632
|
"datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
|
|
16741
16633
|
"datafeeder.publishSuccess.mapViewer": "Kartenviewer",
|
|
16742
16634
|
"datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
|
|
16743
|
-
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! Ihr Datensatz wurde veröffentlicht",
|
|
16635
|
+
"datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
|
|
16744
16636
|
"datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
|
|
16745
16637
|
"datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
|
|
16746
16638
|
"datafeeder.summarizePage.previous": "Zurück",
|
|
@@ -16748,11 +16640,11 @@ var de = {
|
|
|
16748
16640
|
"datafeeder.summarizePage.title": "Sie sind fast fertig...",
|
|
16749
16641
|
"datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
|
|
16750
16642
|
"datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
|
|
16751
|
-
"datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen
|
|
16643
|
+
"datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
|
|
16752
16644
|
"datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
|
|
16753
16645
|
"datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
|
|
16754
|
-
"datafeeder.upload.error.subtitle.fileSize": "Beachten Sie:
|
|
16755
|
-
"datafeeder.upload.error.title.analysis": "Fehler
|
|
16646
|
+
"datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
|
|
16647
|
+
"datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
|
|
16756
16648
|
"datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
|
|
16757
16649
|
"datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
|
|
16758
16650
|
"datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
|
|
@@ -16760,19 +16652,19 @@ var de = {
|
|
|
16760
16652
|
"datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
|
|
16761
16653
|
"datafeeder.upload.illustration.enrichment": "Anreicherung",
|
|
16762
16654
|
"datafeeder.upload.illustration.import": "Import",
|
|
16763
|
-
"datafeeder.upload.illustration.title": "Das Hinzufügen von Daten war noch nie
|
|
16655
|
+
"datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
|
|
16764
16656
|
"datafeeder.upload.illustration.validation": "Validierung",
|
|
16765
|
-
"datafeeder.upload.illustration.verification": "
|
|
16657
|
+
"datafeeder.upload.illustration.verification": "Überprüfung",
|
|
16766
16658
|
"datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
|
|
16767
16659
|
"datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
|
|
16768
16660
|
"datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
|
|
16769
16661
|
"datafeeder.upload.uploadButton": "Hochladen",
|
|
16770
|
-
"datafeeder.validation.encoding": "
|
|
16662
|
+
"datafeeder.validation.encoding": "Codierung",
|
|
16771
16663
|
"datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
|
|
16772
16664
|
"datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
|
|
16773
16665
|
"datafeeder.validation.projection": "Raumbezugssystem:",
|
|
16774
|
-
"datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem",
|
|
16775
|
-
"datafeeder.validation.sample.title": "Und eine
|
|
16666
|
+
"datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
|
|
16667
|
+
"datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
|
|
16776
16668
|
"datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
|
|
16777
16669
|
"datafeeder.wizardSummarize.createdAt": "Erstellt am",
|
|
16778
16670
|
"datafeeder.wizardSummarize.scale": "Maßstab",
|
|
@@ -16782,20 +16674,20 @@ var de = {
|
|
|
16782
16674
|
"datahub.header.news": "Startseite",
|
|
16783
16675
|
"datahub.header.organisations": "Organisationen",
|
|
16784
16676
|
"datahub.header.popularRecords": "Die beliebtesten",
|
|
16785
|
-
"datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten
|
|
16786
|
-
"datahub.news.contact.contactus": "",
|
|
16787
|
-
"datahub.news.contact.html": "",
|
|
16788
|
-
"datahub.news.contact.title": "",
|
|
16677
|
+
"datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
|
|
16678
|
+
"datahub.news.contact.contactus": "Kontaktieren Sie uns",
|
|
16679
|
+
"datahub.news.contact.html": "<p>Brauchen Sie Daten, die derzeit nicht auf der Plattform vorhanden sind?</p><p>Unsere Teams stehen Ihnen zur Verfügung.</p>",
|
|
16680
|
+
"datahub.news.contact.title": "Ein spezielles Bedürfnis?",
|
|
16789
16681
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
16790
16682
|
"datahub.news.figures": "Indikatoren",
|
|
16791
|
-
"datahub.record.addToFavorites": "",
|
|
16792
|
-
"datahub.search.back": "Zurück
|
|
16683
|
+
"datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
|
|
16684
|
+
"datahub.search.back": "Zurück",
|
|
16793
16685
|
"datahub.search.filter.all": "Alle",
|
|
16794
|
-
"datahub.search.filter.generatedByWfs": "Generiert durch API",
|
|
16686
|
+
"datahub.search.filter.generatedByWfs": "Generiert durch eine API",
|
|
16795
16687
|
"datahub.search.filter.others": "Andere",
|
|
16796
16688
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
16797
16689
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
16798
|
-
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht
|
|
16690
|
+
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
16799
16691
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
16800
16692
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
16801
16693
|
"domain.record.status.completed": "Abgeschlossen",
|
|
@@ -16803,18 +16695,18 @@ var de = {
|
|
|
16803
16695
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
16804
16696
|
"domain.record.status.removed": "Entfernt",
|
|
16805
16697
|
"domain.record.status.under_development": "In Erstellung",
|
|
16806
|
-
"domain.record.updateFrequency.asNeeded": "
|
|
16807
|
-
"domain.record.updateFrequency.continual": "
|
|
16698
|
+
"domain.record.updateFrequency.asNeeded": "Nach Bedarf",
|
|
16699
|
+
"domain.record.updateFrequency.continual": "Fortlaufend",
|
|
16808
16700
|
"domain.record.updateFrequency.day": "{count, plural, =0{0} one{Ein} other{{count}}} mal am Tag",
|
|
16809
|
-
"domain.record.updateFrequency.irregular": "
|
|
16701
|
+
"domain.record.updateFrequency.irregular": "Unregelmäßig",
|
|
16810
16702
|
"domain.record.updateFrequency.month": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Monat",
|
|
16811
16703
|
"domain.record.updateFrequency.notPlanned": "Nicht geplant",
|
|
16812
|
-
"domain.record.updateFrequency.periodic": "
|
|
16704
|
+
"domain.record.updateFrequency.periodic": "Regelmäßig",
|
|
16813
16705
|
"domain.record.updateFrequency.unknown": "Unbekannt",
|
|
16814
16706
|
"domain.record.updateFrequency.week": "{count, plural, =0{0} one{Ein} other{{count}}} mal in der Woche",
|
|
16815
16707
|
"domain.record.updateFrequency.year": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Jahr",
|
|
16816
16708
|
"downloads.format.unknown": "unbekannt",
|
|
16817
|
-
"downloads.wfs.featuretype.not.found": "
|
|
16709
|
+
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
16818
16710
|
dropFile: dropFile$6,
|
|
16819
16711
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
16820
16712
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -16849,15 +16741,18 @@ var de = {
|
|
|
16849
16741
|
"map.add.layer.file": "Aus einer Datei",
|
|
16850
16742
|
"map.add.layer.wfs": "Aus WFS",
|
|
16851
16743
|
"map.add.layer.wms": "Aus WMS",
|
|
16852
|
-
"map.
|
|
16853
|
-
"map.
|
|
16744
|
+
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16745
|
+
"map.geocoding.placeholder": "",
|
|
16746
|
+
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16747
|
+
"map.layer.add": "Hinzufügen",
|
|
16748
|
+
"map.layers.available": "Verfügbare Layer",
|
|
16854
16749
|
"map.layers.list": "Ebenen",
|
|
16855
16750
|
"map.loading.data": "Kartendaten werden geladen...",
|
|
16856
|
-
"map.loading.service": "",
|
|
16751
|
+
"map.loading.service": "Dienst wird geladen...",
|
|
16857
16752
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
16858
16753
|
"map.select.layer": "Datenquelle",
|
|
16859
|
-
"map.wfs.urlInput.hint": "",
|
|
16860
|
-
"map.wms.urlInput.hint": "",
|
|
16754
|
+
"map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
|
|
16755
|
+
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
16861
16756
|
"multiselect.filter.placeholder": "Suche",
|
|
16862
16757
|
"nav.back": "Zurück",
|
|
16863
16758
|
next: next$6,
|
|
@@ -16873,61 +16768,61 @@ var de = {
|
|
|
16873
16768
|
"pagination.pageOf": "von",
|
|
16874
16769
|
previous: previous$6,
|
|
16875
16770
|
"record.action.download": "Herunterladen",
|
|
16876
|
-
"record.action.view": "
|
|
16771
|
+
"record.action.view": "Anzeigen",
|
|
16877
16772
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
16878
16773
|
"record.metadata.about": "Beschreibung",
|
|
16879
16774
|
"record.metadata.api": "API",
|
|
16880
|
-
"record.metadata.api.form.closeButton": "",
|
|
16881
|
-
"record.metadata.api.form.closeForm": "",
|
|
16882
|
-
"record.metadata.api.form.create": "",
|
|
16883
|
-
"record.metadata.api.form.customUrl": "",
|
|
16884
|
-
"record.metadata.api.form.limit": "",
|
|
16885
|
-
"record.metadata.api.form.limit.all": "",
|
|
16886
|
-
"record.metadata.api.form.offset": "",
|
|
16887
|
-
"record.metadata.api.form.openForm": "",
|
|
16888
|
-
"record.metadata.api.form.reset": "",
|
|
16889
|
-
"record.metadata.api.form.title": "",
|
|
16890
|
-
"record.metadata.api.form.type": "",
|
|
16891
|
-
"record.metadata.author": "",
|
|
16775
|
+
"record.metadata.api.form.closeButton": "Schließen",
|
|
16776
|
+
"record.metadata.api.form.closeForm": "Formular schließen",
|
|
16777
|
+
"record.metadata.api.form.create": "Ihre Anfrage erstellen",
|
|
16778
|
+
"record.metadata.api.form.customUrl": "Benutzerdefinierte URL",
|
|
16779
|
+
"record.metadata.api.form.limit": "Anzahl der Datensätze",
|
|
16780
|
+
"record.metadata.api.form.limit.all": "Alle",
|
|
16781
|
+
"record.metadata.api.form.offset": "Anzahl des ersten Datensatzes",
|
|
16782
|
+
"record.metadata.api.form.openForm": "Formular öffnen",
|
|
16783
|
+
"record.metadata.api.form.reset": "Zurücksetzen",
|
|
16784
|
+
"record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
|
|
16785
|
+
"record.metadata.api.form.type": "Ausgabeformat",
|
|
16786
|
+
"record.metadata.author": "Autor",
|
|
16892
16787
|
"record.metadata.catalog": "Katalog",
|
|
16893
16788
|
"record.metadata.contact": "Kontakt",
|
|
16894
|
-
"record.metadata.createdOn": "Erstellt am",
|
|
16895
16789
|
"record.metadata.details": "Technische Informationen",
|
|
16896
16790
|
"record.metadata.download": "Downloads",
|
|
16897
|
-
"record.metadata.formats": "",
|
|
16898
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16791
|
+
"record.metadata.formats": "Formate",
|
|
16899
16792
|
"record.metadata.keywords": "Stichworte",
|
|
16900
|
-
"record.metadata.lastUpdate": "",
|
|
16793
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am",
|
|
16901
16794
|
"record.metadata.links": "Links",
|
|
16902
|
-
"record.metadata.noUsage": "Für diesen Datensatz sind keine
|
|
16795
|
+
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16903
16796
|
"record.metadata.origin": "Über die Daten",
|
|
16797
|
+
"record.metadata.otherConstraints": "",
|
|
16904
16798
|
"record.metadata.owner": "",
|
|
16905
16799
|
"record.metadata.preview": "Vorschau",
|
|
16906
16800
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16907
|
-
"record.metadata.quality": "",
|
|
16908
|
-
"record.metadata.quality.contact.failed": "",
|
|
16909
|
-
"record.metadata.quality.contact.success": "",
|
|
16910
|
-
"record.metadata.quality.description.failed": "",
|
|
16911
|
-
"record.metadata.quality.description.success": "",
|
|
16912
|
-
"record.metadata.quality.details": "",
|
|
16913
|
-
"record.metadata.quality.keywords.failed": "",
|
|
16914
|
-
"record.metadata.quality.keywords.success": "",
|
|
16915
|
-
"record.metadata.quality.legalConstraints.failed": "",
|
|
16916
|
-
"record.metadata.quality.legalConstraints.success": "",
|
|
16917
|
-
"record.metadata.quality.organisation.failed": "",
|
|
16918
|
-
"record.metadata.quality.organisation.success": "",
|
|
16919
|
-
"record.metadata.quality.title.failed": "",
|
|
16920
|
-
"record.metadata.quality.title.success": "",
|
|
16921
|
-
"record.metadata.quality.topic.failed": "",
|
|
16922
|
-
"record.metadata.quality.topic.success": "",
|
|
16923
|
-
"record.metadata.quality.updateFrequency.failed": "",
|
|
16924
|
-
"record.metadata.quality.updateFrequency.success": "",
|
|
16801
|
+
"record.metadata.quality": "Metadatenqualität",
|
|
16802
|
+
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
16803
|
+
"record.metadata.quality.contact.success": "Kontakt angegeben",
|
|
16804
|
+
"record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
|
|
16805
|
+
"record.metadata.quality.description.success": "Beschreibung angegeben",
|
|
16806
|
+
"record.metadata.quality.details": "Details",
|
|
16807
|
+
"record.metadata.quality.keywords.failed": "Schlagwörter nicht angegeben",
|
|
16808
|
+
"record.metadata.quality.keywords.success": "Schlagwörter angegeben",
|
|
16809
|
+
"record.metadata.quality.legalConstraints.failed": "Rechtliche Beschränkungen nicht angegeben",
|
|
16810
|
+
"record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
|
|
16811
|
+
"record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
|
|
16812
|
+
"record.metadata.quality.organisation.success": "Organisation angegeben",
|
|
16813
|
+
"record.metadata.quality.title.failed": "Titel nicht angegeben",
|
|
16814
|
+
"record.metadata.quality.title.success": "Titel angegeben",
|
|
16815
|
+
"record.metadata.quality.topic.failed": "Thema nicht angegeben",
|
|
16816
|
+
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
16817
|
+
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
16818
|
+
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16925
16819
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16926
|
-
"record.metadata.sheet": "Weitere Informationen
|
|
16927
|
-
"record.metadata.
|
|
16820
|
+
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16821
|
+
"record.metadata.status": "",
|
|
16822
|
+
"record.metadata.themes": "Kategorien",
|
|
16928
16823
|
"record.metadata.title": "Titel",
|
|
16929
|
-
"record.metadata.type": "",
|
|
16930
|
-
"record.metadata.uniqueId": "",
|
|
16824
|
+
"record.metadata.type": "Geographischer Datensatz",
|
|
16825
|
+
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16931
16826
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16932
16827
|
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16933
16828
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
@@ -16939,28 +16834,29 @@ var de = {
|
|
|
16939
16834
|
"record.was.created.time": "erstellte diesen Datensatz {time}",
|
|
16940
16835
|
records: records$6,
|
|
16941
16836
|
"results.layout.selectOne": "Layout auswählen",
|
|
16942
|
-
"results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{
|
|
16943
|
-
"results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie
|
|
16837
|
+
"results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
|
|
16838
|
+
"results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
|
|
16944
16839
|
"results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
|
|
16945
|
-
"results.records.hits.selected": "",
|
|
16840
|
+
"results.records.hits.selected": "{ amount } ausgewählt",
|
|
16946
16841
|
"results.showMore": "Mehr Ergebnisse anzeigen...",
|
|
16947
|
-
"results.sortBy.dateStamp": "
|
|
16842
|
+
"results.sortBy.dateStamp": "Neueste",
|
|
16948
16843
|
"results.sortBy.popularity": "Beliebtheit",
|
|
16949
|
-
"results.sortBy.qualityScore": "",
|
|
16844
|
+
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
16950
16845
|
"results.sortBy.relevancy": "Relevanz",
|
|
16951
16846
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
16952
16847
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
16953
|
-
"search.error.receivedError": "Ein Fehler
|
|
16848
|
+
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
16954
16849
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
16955
|
-
"search.field.any.placeholder": "Suche
|
|
16850
|
+
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
16956
16851
|
"search.field.sortBy": "Sortieren nach:",
|
|
16957
16852
|
"search.filters.clear": "Zurücksetzen",
|
|
16958
|
-
"search.filters.contact": "
|
|
16853
|
+
"search.filters.contact": "Kontakte",
|
|
16959
16854
|
"search.filters.format": "Formate",
|
|
16960
16855
|
"search.filters.inspireKeyword": "INSPIRE-Schlüsselwort",
|
|
16961
16856
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16962
16857
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16963
16858
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16859
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16964
16860
|
"search.filters.license": "Lizenz",
|
|
16965
16861
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16966
16862
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -16973,13 +16869,13 @@ var de = {
|
|
|
16973
16869
|
"search.filters.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
16974
16870
|
"search.filters.maximize": "Erweitern",
|
|
16975
16871
|
"search.filters.minimize": "Minimieren",
|
|
16976
|
-
"search.filters.myRecords": "",
|
|
16977
|
-
"search.filters.myRecordsHelp": "",
|
|
16978
|
-
"search.filters.otherRecords": "",
|
|
16872
|
+
"search.filters.myRecords": "Nur meine Datensätze anzeigen",
|
|
16873
|
+
"search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
|
|
16874
|
+
"search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
|
|
16979
16875
|
"search.filters.publicationYear": "Veröffentlichungsjahr",
|
|
16980
16876
|
"search.filters.publisher": "Organisationen",
|
|
16981
|
-
"search.filters.representationType": "",
|
|
16982
|
-
"search.filters.resourceType": "",
|
|
16877
|
+
"search.filters.representationType": "Repräsentationstyp",
|
|
16878
|
+
"search.filters.resourceType": "Ressourcentyp",
|
|
16983
16879
|
"search.filters.standard": "Standard",
|
|
16984
16880
|
"search.filters.title": "Ergebnisse filtern",
|
|
16985
16881
|
"search.filters.topic": "Thema",
|
|
@@ -17025,20 +16921,21 @@ var en = {
|
|
|
17025
16921
|
"chart.type.line": "line chart",
|
|
17026
16922
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17027
16923
|
"chart.type.pie": "pie chart",
|
|
16924
|
+
"dashboard.createRecord": "New record",
|
|
17028
16925
|
"dashboard.labels.mySpace": "My space",
|
|
17029
|
-
"dashboard.records.all": "
|
|
16926
|
+
"dashboard.records.all": "Metadata records",
|
|
17030
16927
|
"dashboard.records.myDraft": "My drafts",
|
|
17031
16928
|
"dashboard.records.myLibrary": "My library",
|
|
17032
16929
|
"dashboard.records.myOrg": "Organization",
|
|
17033
16930
|
"dashboard.records.myRecords": "My Records",
|
|
17034
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17035
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17036
16931
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17037
16932
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17038
16933
|
"dashboard.records.userDetail": "Name",
|
|
17039
16934
|
"dashboard.records.userEmail": "Email",
|
|
17040
16935
|
"dashboard.records.username": "Username",
|
|
17041
16936
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
16937
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
16938
|
+
"dashboard.results.listResources": "Show resources",
|
|
17042
16939
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17043
16940
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17044
16941
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17185,6 +17082,9 @@ var en = {
|
|
|
17185
17082
|
"map.add.layer.file": "From a file",
|
|
17186
17083
|
"map.add.layer.wfs": "From WFS",
|
|
17187
17084
|
"map.add.layer.wms": "From WMS",
|
|
17085
|
+
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
17086
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
17087
|
+
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
17188
17088
|
"map.layer.add": "Add",
|
|
17189
17089
|
"map.layers.available": "Available Layers",
|
|
17190
17090
|
"map.layers.list": "Layers",
|
|
@@ -17227,47 +17127,47 @@ var en = {
|
|
|
17227
17127
|
"record.metadata.author": "Author",
|
|
17228
17128
|
"record.metadata.catalog": "Catalog",
|
|
17229
17129
|
"record.metadata.contact": "Contact",
|
|
17230
|
-
"record.metadata.createdOn": "Created on",
|
|
17231
17130
|
"record.metadata.details": "Technical information",
|
|
17232
17131
|
"record.metadata.download": "Downloads",
|
|
17233
17132
|
"record.metadata.formats": "Formats",
|
|
17234
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17235
17133
|
"record.metadata.keywords": "Keywords",
|
|
17236
17134
|
"record.metadata.lastUpdate": "Last updated on",
|
|
17237
17135
|
"record.metadata.links": "Links",
|
|
17238
17136
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17239
17137
|
"record.metadata.origin": "About the data",
|
|
17138
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17240
17139
|
"record.metadata.owner": "Catalog of origin",
|
|
17241
17140
|
"record.metadata.preview": "Preview",
|
|
17242
17141
|
"record.metadata.publications": "publications",
|
|
17243
17142
|
"record.metadata.quality": "Metadata Quality",
|
|
17244
|
-
"record.metadata.quality.contact.failed": "Contact is not
|
|
17245
|
-
"record.metadata.quality.contact.success": "Contact is
|
|
17246
|
-
"record.metadata.quality.description.failed": "Description is not
|
|
17247
|
-
"record.metadata.quality.description.success": "Description is
|
|
17143
|
+
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
17144
|
+
"record.metadata.quality.contact.success": "Contact is specified",
|
|
17145
|
+
"record.metadata.quality.description.failed": "Description is not specified",
|
|
17146
|
+
"record.metadata.quality.description.success": "Description is specified",
|
|
17248
17147
|
"record.metadata.quality.details": "Details",
|
|
17249
|
-
"record.metadata.quality.keywords.failed": "Keywords are not
|
|
17250
|
-
"record.metadata.quality.keywords.success": "Keywords are
|
|
17251
|
-
"record.metadata.quality.legalConstraints.failed": "Legal constraints are not
|
|
17252
|
-
"record.metadata.quality.legalConstraints.success": "Legal constraints are
|
|
17253
|
-
"record.metadata.quality.organisation.failed": "Organisation is not
|
|
17254
|
-
"record.metadata.quality.organisation.success": "Organisation is
|
|
17255
|
-
"record.metadata.quality.title.failed": "Title is not
|
|
17256
|
-
"record.metadata.quality.title.success": "Title is
|
|
17257
|
-
"record.metadata.quality.topic.failed": "Topic is not
|
|
17258
|
-
"record.metadata.quality.topic.success": "Topic is
|
|
17259
|
-
"record.metadata.quality.updateFrequency.failed": "Update frequency is not
|
|
17260
|
-
"record.metadata.quality.updateFrequency.success": "Update frequency is
|
|
17148
|
+
"record.metadata.quality.keywords.failed": "Keywords are not specified",
|
|
17149
|
+
"record.metadata.quality.keywords.success": "Keywords are specified",
|
|
17150
|
+
"record.metadata.quality.legalConstraints.failed": "Legal constraints are not specified",
|
|
17151
|
+
"record.metadata.quality.legalConstraints.success": "Legal constraints are specified",
|
|
17152
|
+
"record.metadata.quality.organisation.failed": "Organisation is not specified",
|
|
17153
|
+
"record.metadata.quality.organisation.success": "Organisation is specified",
|
|
17154
|
+
"record.metadata.quality.title.failed": "Title is not specified",
|
|
17155
|
+
"record.metadata.quality.title.success": "Title is specified",
|
|
17156
|
+
"record.metadata.quality.topic.failed": "Topic is not specified",
|
|
17157
|
+
"record.metadata.quality.topic.success": "Topic is specified",
|
|
17158
|
+
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17159
|
+
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17261
17160
|
"record.metadata.related": "Related records",
|
|
17262
17161
|
"record.metadata.sheet": "Original metadata",
|
|
17162
|
+
"record.metadata.status": "Status",
|
|
17263
17163
|
"record.metadata.themes": "Categories",
|
|
17264
17164
|
"record.metadata.title": "Title",
|
|
17265
17165
|
"record.metadata.type": "Geographical dataset",
|
|
17266
17166
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17267
17167
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17268
17168
|
"record.metadata.updateStatus": "Data Update Status",
|
|
17269
|
-
"record.metadata.updatedOn": "
|
|
17270
|
-
"record.metadata.usage": "
|
|
17169
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17170
|
+
"record.metadata.usage": "License and Conditions",
|
|
17271
17171
|
"record.more.details": "Read more",
|
|
17272
17172
|
"record.tab.chart": "Chart",
|
|
17273
17173
|
"record.tab.data": "Table",
|
|
@@ -17297,6 +17197,7 @@ var en = {
|
|
|
17297
17197
|
"search.filters.isSpatial": "Is spatial data",
|
|
17298
17198
|
"search.filters.isSpatial.no": "non spatial",
|
|
17299
17199
|
"search.filters.isSpatial.yes": "spatial",
|
|
17200
|
+
"search.filters.keyword": "Keyword",
|
|
17300
17201
|
"search.filters.license": "License",
|
|
17301
17202
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17302
17203
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17361,20 +17262,21 @@ var es = {
|
|
|
17361
17262
|
"chart.type.line": "gráfico de líneas",
|
|
17362
17263
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17363
17264
|
"chart.type.pie": "gráfico circular",
|
|
17265
|
+
"dashboard.createRecord": "",
|
|
17364
17266
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17365
17267
|
"dashboard.records.all": "Catálogo",
|
|
17366
17268
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17367
17269
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17368
17270
|
"dashboard.records.myOrg": "Organización",
|
|
17369
17271
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17370
|
-
"dashboard.records.noRecord": "",
|
|
17371
|
-
"dashboard.records.noUser": "",
|
|
17372
17272
|
"dashboard.records.publishedRecords": "",
|
|
17373
17273
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17374
17274
|
"dashboard.records.userDetail": "",
|
|
17375
17275
|
"dashboard.records.userEmail": "",
|
|
17376
17276
|
"dashboard.records.username": "",
|
|
17377
17277
|
"dashboard.records.users": "",
|
|
17278
|
+
"dashboard.results.listMetadata": "",
|
|
17279
|
+
"dashboard.results.listResources": "",
|
|
17378
17280
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17379
17281
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17380
17282
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17521,6 +17423,9 @@ var es = {
|
|
|
17521
17423
|
"map.add.layer.file": "",
|
|
17522
17424
|
"map.add.layer.wfs": "",
|
|
17523
17425
|
"map.add.layer.wms": "",
|
|
17426
|
+
"map.addFromFile.placeholder": "",
|
|
17427
|
+
"map.geocoding.placeholder": "",
|
|
17428
|
+
"map.help.addFromFile": "",
|
|
17524
17429
|
"map.layer.add": "",
|
|
17525
17430
|
"map.layers.available": "",
|
|
17526
17431
|
"map.layers.list": "",
|
|
@@ -17563,16 +17468,15 @@ var es = {
|
|
|
17563
17468
|
"record.metadata.author": "",
|
|
17564
17469
|
"record.metadata.catalog": "",
|
|
17565
17470
|
"record.metadata.contact": "",
|
|
17566
|
-
"record.metadata.createdOn": "",
|
|
17567
17471
|
"record.metadata.details": "",
|
|
17568
17472
|
"record.metadata.download": "",
|
|
17569
17473
|
"record.metadata.formats": "",
|
|
17570
|
-
"record.metadata.isOpenData": "",
|
|
17571
17474
|
"record.metadata.keywords": "",
|
|
17572
17475
|
"record.metadata.lastUpdate": "",
|
|
17573
17476
|
"record.metadata.links": "",
|
|
17574
17477
|
"record.metadata.noUsage": "",
|
|
17575
17478
|
"record.metadata.origin": "",
|
|
17479
|
+
"record.metadata.otherConstraints": "",
|
|
17576
17480
|
"record.metadata.owner": "",
|
|
17577
17481
|
"record.metadata.preview": "",
|
|
17578
17482
|
"record.metadata.publications": "",
|
|
@@ -17596,6 +17500,7 @@ var es = {
|
|
|
17596
17500
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17597
17501
|
"record.metadata.related": "",
|
|
17598
17502
|
"record.metadata.sheet": "",
|
|
17503
|
+
"record.metadata.status": "",
|
|
17599
17504
|
"record.metadata.themes": "",
|
|
17600
17505
|
"record.metadata.title": "",
|
|
17601
17506
|
"record.metadata.type": "",
|
|
@@ -17633,6 +17538,7 @@ var es = {
|
|
|
17633
17538
|
"search.filters.isSpatial": "",
|
|
17634
17539
|
"search.filters.isSpatial.no": "",
|
|
17635
17540
|
"search.filters.isSpatial.yes": "",
|
|
17541
|
+
"search.filters.keyword": "",
|
|
17636
17542
|
"search.filters.license": "",
|
|
17637
17543
|
"search.filters.license.cc-by": "",
|
|
17638
17544
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17697,20 +17603,21 @@ var fr = {
|
|
|
17697
17603
|
"chart.type.line": "ligne",
|
|
17698
17604
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17699
17605
|
"chart.type.pie": "camembert",
|
|
17606
|
+
"dashboard.createRecord": "",
|
|
17700
17607
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17701
17608
|
"dashboard.records.all": "Catalogue",
|
|
17702
17609
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17703
17610
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17704
17611
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17705
17612
|
"dashboard.records.myRecords": "Mes fiches publiées",
|
|
17706
|
-
"dashboard.records.noRecord": "Aucun jeu de données pour cette organisation",
|
|
17707
|
-
"dashboard.records.noUser": "Aucun utilisateur pour cette organisation",
|
|
17708
17613
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17709
17614
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17710
17615
|
"dashboard.records.userDetail": "Nom",
|
|
17711
17616
|
"dashboard.records.userEmail": "Email",
|
|
17712
17617
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17713
17618
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17619
|
+
"dashboard.results.listMetadata": "",
|
|
17620
|
+
"dashboard.results.listResources": "",
|
|
17714
17621
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17715
17622
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17716
17623
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17792,7 +17699,7 @@ var fr = {
|
|
|
17792
17699
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17793
17700
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17794
17701
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17795
|
-
"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
|
|
17702
|
+
"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>",
|
|
17796
17703
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17797
17704
|
"datahub.news.feed": "Fil d'activité",
|
|
17798
17705
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17857,6 +17764,9 @@ var fr = {
|
|
|
17857
17764
|
"map.add.layer.file": "",
|
|
17858
17765
|
"map.add.layer.wfs": "",
|
|
17859
17766
|
"map.add.layer.wms": "",
|
|
17767
|
+
"map.addFromFile.placeholder": "",
|
|
17768
|
+
"map.geocoding.placeholder": "",
|
|
17769
|
+
"map.help.addFromFile": "",
|
|
17860
17770
|
"map.layer.add": "",
|
|
17861
17771
|
"map.layers.available": "",
|
|
17862
17772
|
"map.layers.list": "",
|
|
@@ -17899,16 +17809,15 @@ var fr = {
|
|
|
17899
17809
|
"record.metadata.author": "Auteur",
|
|
17900
17810
|
"record.metadata.catalog": "Catalogue",
|
|
17901
17811
|
"record.metadata.contact": "Contact",
|
|
17902
|
-
"record.metadata.createdOn": "Créé le",
|
|
17903
17812
|
"record.metadata.details": "Informations techniques",
|
|
17904
17813
|
"record.metadata.download": "Téléchargements",
|
|
17905
17814
|
"record.metadata.formats": "Formats",
|
|
17906
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17907
17815
|
"record.metadata.keywords": "Mots clés",
|
|
17908
17816
|
"record.metadata.lastUpdate": "Mis à jour le",
|
|
17909
17817
|
"record.metadata.links": "Liens",
|
|
17910
17818
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17911
17819
|
"record.metadata.origin": "À propos des données",
|
|
17820
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17912
17821
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17913
17822
|
"record.metadata.preview": "Aperçu",
|
|
17914
17823
|
"record.metadata.publications": "données",
|
|
@@ -17932,14 +17841,15 @@ var fr = {
|
|
|
17932
17841
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17933
17842
|
"record.metadata.related": "Voir aussi",
|
|
17934
17843
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17844
|
+
"record.metadata.status": "",
|
|
17935
17845
|
"record.metadata.themes": "Catégories",
|
|
17936
17846
|
"record.metadata.title": "Titre",
|
|
17937
17847
|
"record.metadata.type": "Donnée géographique",
|
|
17938
17848
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17939
17849
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17940
17850
|
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17941
|
-
"record.metadata.updatedOn": "
|
|
17942
|
-
"record.metadata.usage": "
|
|
17851
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17852
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17943
17853
|
"record.more.details": "Détails",
|
|
17944
17854
|
"record.tab.chart": "Graphique",
|
|
17945
17855
|
"record.tab.data": "Tableau",
|
|
@@ -17969,6 +17879,7 @@ var fr = {
|
|
|
17969
17879
|
"search.filters.isSpatial": "Données spatiales",
|
|
17970
17880
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17971
17881
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
17882
|
+
"search.filters.keyword": "Mot-clé",
|
|
17972
17883
|
"search.filters.license": "Licence",
|
|
17973
17884
|
"search.filters.license.cc-by": "cc-by",
|
|
17974
17885
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18033,20 +17944,21 @@ var it = {
|
|
|
18033
17944
|
"chart.type.line": "grafico a linee",
|
|
18034
17945
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18035
17946
|
"chart.type.pie": "grafico a torta",
|
|
17947
|
+
"dashboard.createRecord": "",
|
|
18036
17948
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18037
17949
|
"dashboard.records.all": "Catalogo",
|
|
18038
17950
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18039
17951
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18040
17952
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18041
17953
|
"dashboard.records.myRecords": "I miei dati",
|
|
18042
|
-
"dashboard.records.noRecord": "Nessun dati per questa organizzazione",
|
|
18043
|
-
"dashboard.records.noUser": "Nessun utente per questa organizzazione",
|
|
18044
17954
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18045
17955
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18046
17956
|
"dashboard.records.userDetail": "Nome",
|
|
18047
17957
|
"dashboard.records.userEmail": "Email",
|
|
18048
17958
|
"dashboard.records.username": "Nome utente",
|
|
18049
17959
|
"dashboard.records.users": "utenti",
|
|
17960
|
+
"dashboard.results.listMetadata": "",
|
|
17961
|
+
"dashboard.results.listResources": "",
|
|
18050
17962
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18051
17963
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18052
17964
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18193,6 +18105,9 @@ var it = {
|
|
|
18193
18105
|
"map.add.layer.file": "Da un file",
|
|
18194
18106
|
"map.add.layer.wfs": "Da un WFS",
|
|
18195
18107
|
"map.add.layer.wms": "Da un WMS",
|
|
18108
|
+
"map.addFromFile.placeholder": "",
|
|
18109
|
+
"map.geocoding.placeholder": "",
|
|
18110
|
+
"map.help.addFromFile": "",
|
|
18196
18111
|
"map.layer.add": "",
|
|
18197
18112
|
"map.layers.available": "",
|
|
18198
18113
|
"map.layers.list": "Layers",
|
|
@@ -18235,16 +18150,15 @@ var it = {
|
|
|
18235
18150
|
"record.metadata.author": "Autore",
|
|
18236
18151
|
"record.metadata.catalog": "Catalogo",
|
|
18237
18152
|
"record.metadata.contact": "Contatto",
|
|
18238
|
-
"record.metadata.createdOn": "Creato il",
|
|
18239
18153
|
"record.metadata.details": "Informazioni tecniche",
|
|
18240
18154
|
"record.metadata.download": "Download",
|
|
18241
18155
|
"record.metadata.formats": "Formati",
|
|
18242
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18243
18156
|
"record.metadata.keywords": "Parole chiave",
|
|
18244
18157
|
"record.metadata.lastUpdate": "Ultimo aggiornamento",
|
|
18245
18158
|
"record.metadata.links": "Collegamenti",
|
|
18246
18159
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18247
18160
|
"record.metadata.origin": "Informazioni sui dati",
|
|
18161
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18248
18162
|
"record.metadata.owner": "Catalogo originale",
|
|
18249
18163
|
"record.metadata.preview": "Anteprima",
|
|
18250
18164
|
"record.metadata.publications": "pubblicazioni",
|
|
@@ -18268,14 +18182,15 @@ var it = {
|
|
|
18268
18182
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18269
18183
|
"record.metadata.related": "Vedi anche",
|
|
18270
18184
|
"record.metadata.sheet": "Origine del metadata",
|
|
18185
|
+
"record.metadata.status": "",
|
|
18271
18186
|
"record.metadata.themes": "Categorie",
|
|
18272
18187
|
"record.metadata.title": "Titolo",
|
|
18273
18188
|
"record.metadata.type": "Dati geografici",
|
|
18274
18189
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18275
18190
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18276
18191
|
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18277
|
-
"record.metadata.updatedOn": "Ultimo aggiornamento
|
|
18278
|
-
"record.metadata.usage": "
|
|
18192
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18193
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18279
18194
|
"record.more.details": "Dettagli",
|
|
18280
18195
|
"record.tab.chart": "Grafico",
|
|
18281
18196
|
"record.tab.data": "Tabella",
|
|
@@ -18305,6 +18220,7 @@ var it = {
|
|
|
18305
18220
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18306
18221
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18307
18222
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18223
|
+
"search.filters.keyword": "Parola chiave",
|
|
18308
18224
|
"search.filters.license": "Licenza",
|
|
18309
18225
|
"search.filters.license.cc-by": "cc-by",
|
|
18310
18226
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18369,20 +18285,21 @@ var nl = {
|
|
|
18369
18285
|
"chart.type.line": "lijndiagram",
|
|
18370
18286
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18371
18287
|
"chart.type.pie": "cirkeldiagram",
|
|
18288
|
+
"dashboard.createRecord": "",
|
|
18372
18289
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18373
18290
|
"dashboard.records.all": "Catalogus",
|
|
18374
18291
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18375
18292
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18376
18293
|
"dashboard.records.myOrg": "Organisatie",
|
|
18377
18294
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18378
|
-
"dashboard.records.noRecord": "",
|
|
18379
|
-
"dashboard.records.noUser": "",
|
|
18380
18295
|
"dashboard.records.publishedRecords": "",
|
|
18381
18296
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18382
18297
|
"dashboard.records.userDetail": "",
|
|
18383
18298
|
"dashboard.records.userEmail": "",
|
|
18384
18299
|
"dashboard.records.username": "",
|
|
18385
18300
|
"dashboard.records.users": "",
|
|
18301
|
+
"dashboard.results.listMetadata": "",
|
|
18302
|
+
"dashboard.results.listResources": "",
|
|
18386
18303
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18387
18304
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18388
18305
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18529,6 +18446,9 @@ var nl = {
|
|
|
18529
18446
|
"map.add.layer.file": "",
|
|
18530
18447
|
"map.add.layer.wfs": "",
|
|
18531
18448
|
"map.add.layer.wms": "",
|
|
18449
|
+
"map.addFromFile.placeholder": "",
|
|
18450
|
+
"map.geocoding.placeholder": "",
|
|
18451
|
+
"map.help.addFromFile": "",
|
|
18532
18452
|
"map.layer.add": "",
|
|
18533
18453
|
"map.layers.available": "",
|
|
18534
18454
|
"map.layers.list": "",
|
|
@@ -18571,16 +18491,15 @@ var nl = {
|
|
|
18571
18491
|
"record.metadata.author": "",
|
|
18572
18492
|
"record.metadata.catalog": "",
|
|
18573
18493
|
"record.metadata.contact": "",
|
|
18574
|
-
"record.metadata.createdOn": "",
|
|
18575
18494
|
"record.metadata.details": "",
|
|
18576
18495
|
"record.metadata.download": "",
|
|
18577
18496
|
"record.metadata.formats": "",
|
|
18578
|
-
"record.metadata.isOpenData": "",
|
|
18579
18497
|
"record.metadata.keywords": "",
|
|
18580
18498
|
"record.metadata.lastUpdate": "",
|
|
18581
18499
|
"record.metadata.links": "",
|
|
18582
18500
|
"record.metadata.noUsage": "",
|
|
18583
18501
|
"record.metadata.origin": "",
|
|
18502
|
+
"record.metadata.otherConstraints": "",
|
|
18584
18503
|
"record.metadata.owner": "",
|
|
18585
18504
|
"record.metadata.preview": "",
|
|
18586
18505
|
"record.metadata.publications": "",
|
|
@@ -18604,6 +18523,7 @@ var nl = {
|
|
|
18604
18523
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18605
18524
|
"record.metadata.related": "",
|
|
18606
18525
|
"record.metadata.sheet": "",
|
|
18526
|
+
"record.metadata.status": "",
|
|
18607
18527
|
"record.metadata.themes": "",
|
|
18608
18528
|
"record.metadata.title": "",
|
|
18609
18529
|
"record.metadata.type": "",
|
|
@@ -18641,6 +18561,7 @@ var nl = {
|
|
|
18641
18561
|
"search.filters.isSpatial": "",
|
|
18642
18562
|
"search.filters.isSpatial.no": "",
|
|
18643
18563
|
"search.filters.isSpatial.yes": "",
|
|
18564
|
+
"search.filters.keyword": "",
|
|
18644
18565
|
"search.filters.license": "",
|
|
18645
18566
|
"search.filters.license.cc-by": "",
|
|
18646
18567
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18705,20 +18626,21 @@ var pt = {
|
|
|
18705
18626
|
"chart.type.line": "gráfico de linha",
|
|
18706
18627
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18707
18628
|
"chart.type.pie": "gráfico de pizza",
|
|
18629
|
+
"dashboard.createRecord": "",
|
|
18708
18630
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18709
18631
|
"dashboard.records.all": "Catálogo",
|
|
18710
18632
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18711
18633
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18712
18634
|
"dashboard.records.myOrg": "Organização",
|
|
18713
18635
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18714
|
-
"dashboard.records.noRecord": "",
|
|
18715
|
-
"dashboard.records.noUser": "",
|
|
18716
18636
|
"dashboard.records.publishedRecords": "",
|
|
18717
18637
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18718
18638
|
"dashboard.records.userDetail": "",
|
|
18719
18639
|
"dashboard.records.userEmail": "",
|
|
18720
18640
|
"dashboard.records.username": "",
|
|
18721
18641
|
"dashboard.records.users": "",
|
|
18642
|
+
"dashboard.results.listMetadata": "",
|
|
18643
|
+
"dashboard.results.listResources": "",
|
|
18722
18644
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18723
18645
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18724
18646
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18865,6 +18787,9 @@ var pt = {
|
|
|
18865
18787
|
"map.add.layer.file": "",
|
|
18866
18788
|
"map.add.layer.wfs": "",
|
|
18867
18789
|
"map.add.layer.wms": "",
|
|
18790
|
+
"map.addFromFile.placeholder": "",
|
|
18791
|
+
"map.geocoding.placeholder": "",
|
|
18792
|
+
"map.help.addFromFile": "",
|
|
18868
18793
|
"map.layer.add": "",
|
|
18869
18794
|
"map.layers.available": "",
|
|
18870
18795
|
"map.layers.list": "",
|
|
@@ -18907,16 +18832,15 @@ var pt = {
|
|
|
18907
18832
|
"record.metadata.author": "",
|
|
18908
18833
|
"record.metadata.catalog": "",
|
|
18909
18834
|
"record.metadata.contact": "",
|
|
18910
|
-
"record.metadata.createdOn": "",
|
|
18911
18835
|
"record.metadata.details": "",
|
|
18912
18836
|
"record.metadata.download": "",
|
|
18913
18837
|
"record.metadata.formats": "",
|
|
18914
|
-
"record.metadata.isOpenData": "",
|
|
18915
18838
|
"record.metadata.keywords": "",
|
|
18916
18839
|
"record.metadata.lastUpdate": "",
|
|
18917
18840
|
"record.metadata.links": "",
|
|
18918
18841
|
"record.metadata.noUsage": "",
|
|
18919
18842
|
"record.metadata.origin": "",
|
|
18843
|
+
"record.metadata.otherConstraints": "",
|
|
18920
18844
|
"record.metadata.owner": "",
|
|
18921
18845
|
"record.metadata.preview": "",
|
|
18922
18846
|
"record.metadata.publications": "",
|
|
@@ -18940,6 +18864,7 @@ var pt = {
|
|
|
18940
18864
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18941
18865
|
"record.metadata.related": "",
|
|
18942
18866
|
"record.metadata.sheet": "",
|
|
18867
|
+
"record.metadata.status": "",
|
|
18943
18868
|
"record.metadata.themes": "",
|
|
18944
18869
|
"record.metadata.title": "",
|
|
18945
18870
|
"record.metadata.type": "",
|
|
@@ -18977,6 +18902,7 @@ var pt = {
|
|
|
18977
18902
|
"search.filters.isSpatial": "",
|
|
18978
18903
|
"search.filters.isSpatial.no": "",
|
|
18979
18904
|
"search.filters.isSpatial.yes": "",
|
|
18905
|
+
"search.filters.keyword": "",
|
|
18980
18906
|
"search.filters.license": "",
|
|
18981
18907
|
"search.filters.license.cc-by": "",
|
|
18982
18908
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19152,20 +19078,11 @@ class Gn4FieldMapper {
|
|
|
19152
19078
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19153
19079
|
],
|
|
19154
19080
|
}),
|
|
19155
|
-
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19156
|
-
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19157
|
-
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('
|
|
19158
|
-
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19159
|
-
licenseObject: (output, source) => (
|
|
19160
|
-
...output,
|
|
19161
|
-
licenses: getAsArray(selectField(source, 'licenseObject')).map((license) => {
|
|
19162
|
-
const link = getAsUrl(selectField(license, 'link'));
|
|
19163
|
-
return {
|
|
19164
|
-
text: selectTranslatedValue(license, this.lang3),
|
|
19165
|
-
...(link ? { link } : {}),
|
|
19166
|
-
};
|
|
19167
|
-
}),
|
|
19168
|
-
}),
|
|
19081
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19082
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19083
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19084
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19085
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19169
19086
|
lineageObject: (output, source) => ({
|
|
19170
19087
|
...output,
|
|
19171
19088
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19191,33 +19108,78 @@ class Gn4FieldMapper {
|
|
|
19191
19108
|
kind,
|
|
19192
19109
|
};
|
|
19193
19110
|
},
|
|
19111
|
+
geom: (output, source) => {
|
|
19112
|
+
const geoms = getAsArray(selectField(source, 'geom'));
|
|
19113
|
+
const shapes = getAsArray(selectField(source, 'shape'));
|
|
19114
|
+
const extentDescriptions = getAsArray(selectField(source, 'extentDescriptionObject'));
|
|
19115
|
+
const spatialExtents = getAsArray(selectField(source, 'spatialExtents'));
|
|
19116
|
+
return {
|
|
19117
|
+
...output,
|
|
19118
|
+
spatialExtents: [
|
|
19119
|
+
...spatialExtents,
|
|
19120
|
+
...geoms.map((geom, index) => {
|
|
19121
|
+
const description = selectTranslatedValue(getArrayItem(extentDescriptions, index), this.lang3);
|
|
19122
|
+
const geometry = shapes[index] ?? geom;
|
|
19123
|
+
return {
|
|
19124
|
+
...(description !== null ? { description } : null),
|
|
19125
|
+
geometry,
|
|
19126
|
+
};
|
|
19127
|
+
}),
|
|
19128
|
+
],
|
|
19129
|
+
};
|
|
19130
|
+
},
|
|
19131
|
+
resourceTemporalDateRange: (output, source) => {
|
|
19132
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalDateRange'));
|
|
19133
|
+
return {
|
|
19134
|
+
...output,
|
|
19135
|
+
temporalExtents: ranges.map((range) => {
|
|
19136
|
+
const start = selectField(range, 'gte');
|
|
19137
|
+
const end = selectField(range, 'lte');
|
|
19138
|
+
return {
|
|
19139
|
+
...(start !== null ? { start: toDate(start) } : null),
|
|
19140
|
+
...(end !== null ? { end: toDate(end) } : null),
|
|
19141
|
+
};
|
|
19142
|
+
}),
|
|
19143
|
+
};
|
|
19144
|
+
},
|
|
19194
19145
|
};
|
|
19195
19146
|
this.genericField = (output) => output;
|
|
19196
|
-
this.constraintField = (
|
|
19197
|
-
|
|
19198
|
-
|
|
19199
|
-
|
|
19200
|
-
|
|
19201
|
-
|
|
19202
|
-
|
|
19203
|
-
|
|
19204
|
-
|
|
19205
|
-
|
|
19206
|
-
|
|
19207
|
-
|
|
19208
|
-
|
|
19209
|
-
|
|
19210
|
-
|
|
19211
|
-
|
|
19212
|
-
|
|
19213
|
-
|
|
19214
|
-
|
|
19215
|
-
|
|
19216
|
-
|
|
19217
|
-
|
|
19218
|
-
|
|
19219
|
-
}
|
|
19220
|
-
|
|
19147
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19148
|
+
let outputField;
|
|
19149
|
+
switch (type) {
|
|
19150
|
+
case 'license':
|
|
19151
|
+
outputField = 'licenses';
|
|
19152
|
+
break;
|
|
19153
|
+
case 'legal':
|
|
19154
|
+
outputField = 'legalConstraints';
|
|
19155
|
+
break;
|
|
19156
|
+
case 'security':
|
|
19157
|
+
outputField = 'securityConstraints';
|
|
19158
|
+
break;
|
|
19159
|
+
case 'other':
|
|
19160
|
+
outputField = 'otherConstraints';
|
|
19161
|
+
break;
|
|
19162
|
+
}
|
|
19163
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19164
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19165
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19166
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19167
|
+
return {
|
|
19168
|
+
text,
|
|
19169
|
+
...(url ? { url } : {}),
|
|
19170
|
+
};
|
|
19171
|
+
}));
|
|
19172
|
+
const result = {
|
|
19173
|
+
...output,
|
|
19174
|
+
[outputField]: outputArray,
|
|
19175
|
+
};
|
|
19176
|
+
// avoid legal constraints being duplicates of licenses
|
|
19177
|
+
if ('legalConstraints' in result &&
|
|
19178
|
+
(type === 'legal' || type === 'license')) {
|
|
19179
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19180
|
+
}
|
|
19181
|
+
return result;
|
|
19182
|
+
};
|
|
19221
19183
|
this.mapLink = (sourceLink) => {
|
|
19222
19184
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19223
19185
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19265,17 +19227,6 @@ class Gn4FieldMapper {
|
|
|
19265
19227
|
extras: { ...(output.extras || {}), ...value },
|
|
19266
19228
|
});
|
|
19267
19229
|
}
|
|
19268
|
-
getConstraintsType(indexField) {
|
|
19269
|
-
switch (indexField) {
|
|
19270
|
-
case 'MD_LegalConstraintsUseLimitationObject':
|
|
19271
|
-
return 'legal';
|
|
19272
|
-
case 'MD_SecurityConstraintsUseLimitationObject':
|
|
19273
|
-
return 'security';
|
|
19274
|
-
case 'MD_ConstraintsUseLimitationObject':
|
|
19275
|
-
default:
|
|
19276
|
-
return 'other';
|
|
19277
|
-
}
|
|
19278
|
-
}
|
|
19279
19230
|
getMappingFn(fieldName) {
|
|
19280
19231
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19281
19232
|
}
|
|
@@ -19337,12 +19288,13 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19337
19288
|
recordUpdated: null,
|
|
19338
19289
|
ownerOrganization: null,
|
|
19339
19290
|
licenses: [],
|
|
19291
|
+
legalConstraints: [],
|
|
19292
|
+
securityConstraints: [],
|
|
19293
|
+
otherConstraints: [],
|
|
19340
19294
|
contacts: [],
|
|
19341
19295
|
contactsForResource: [],
|
|
19342
|
-
accessConstraints: [],
|
|
19343
19296
|
keywords: [],
|
|
19344
19297
|
themes: [],
|
|
19345
|
-
useLimitations: [],
|
|
19346
19298
|
spatialExtents: [],
|
|
19347
19299
|
temporalExtents: [],
|
|
19348
19300
|
overviews: [],
|
|
@@ -20110,11 +20062,18 @@ class OrganizationsFromMetadataService {
|
|
|
20110
20062
|
if (!allContactOrgs.length)
|
|
20111
20063
|
return of(record);
|
|
20112
20064
|
const ownerOrganization = allContactOrgs[0];
|
|
20113
|
-
|
|
20065
|
+
// read the owner group as well to have a fallback logo
|
|
20066
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20067
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20068
|
+
return group.id === Number(groupId);
|
|
20069
|
+
})));
|
|
20070
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20114
20071
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20072
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20115
20073
|
return {
|
|
20116
20074
|
...record,
|
|
20117
20075
|
ownerOrganization: {
|
|
20076
|
+
logoUrl,
|
|
20118
20077
|
...ownerOrganization,
|
|
20119
20078
|
...recordOrganisation,
|
|
20120
20079
|
},
|
|
@@ -20379,36 +20338,23 @@ class SelectionService {
|
|
|
20379
20338
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20380
20339
|
}
|
|
20381
20340
|
selectRecords(records) {
|
|
20382
|
-
const newIds =
|
|
20383
|
-
|
|
20384
|
-
newIds.push(record.uniqueIdentifier);
|
|
20385
|
-
});
|
|
20386
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds);
|
|
20387
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20341
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20342
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20388
20343
|
this.addIdsToSelected(newIds);
|
|
20389
|
-
})
|
|
20344
|
+
});
|
|
20390
20345
|
}
|
|
20391
20346
|
deselectRecords(records) {
|
|
20392
|
-
const idsToBeRemoved =
|
|
20393
|
-
|
|
20394
|
-
idsToBeRemoved.push(record.uniqueIdentifier);
|
|
20395
|
-
});
|
|
20396
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved);
|
|
20397
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20347
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20348
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20398
20349
|
this.removeIdsFromSelected(idsToBeRemoved);
|
|
20399
|
-
}), map$2(() => undefined));
|
|
20400
|
-
}
|
|
20401
|
-
clearSelection() {
|
|
20402
|
-
const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID);
|
|
20403
|
-
let currentSelection;
|
|
20404
|
-
this.subscription = currentSelectedResponse.subscribe((value) => {
|
|
20405
|
-
currentSelection = [...value];
|
|
20406
20350
|
});
|
|
20407
|
-
|
|
20408
|
-
|
|
20409
|
-
|
|
20351
|
+
}
|
|
20352
|
+
async clearSelection() {
|
|
20353
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20354
|
+
const currentSelection = Array.from(response);
|
|
20355
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20410
20356
|
this.removeIdsFromSelected(currentSelection);
|
|
20411
|
-
})
|
|
20357
|
+
});
|
|
20412
20358
|
}
|
|
20413
20359
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, deps: [{ token: SelectionsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20414
20360
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20438,12 +20384,21 @@ class Gn4PlatformMapper {
|
|
|
20438
20384
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20439
20385
|
return { ...apiUser, id: id.toString() };
|
|
20440
20386
|
}
|
|
20441
|
-
thesaurusFromApi(thesaurus) {
|
|
20387
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20442
20388
|
return thesaurus.map((keyword) => {
|
|
20443
|
-
|
|
20389
|
+
let key = keyword.uri;
|
|
20390
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20391
|
+
if (key.indexOf('@@@') > -1) {
|
|
20392
|
+
key = key.split('@@@')[1];
|
|
20393
|
+
}
|
|
20394
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20395
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20396
|
+
? keyword.definitions[lang3]
|
|
20397
|
+
: keyword.definition;
|
|
20444
20398
|
return {
|
|
20445
|
-
key
|
|
20446
|
-
label
|
|
20399
|
+
key,
|
|
20400
|
+
label,
|
|
20401
|
+
description,
|
|
20447
20402
|
};
|
|
20448
20403
|
});
|
|
20449
20404
|
}
|
|
@@ -20456,13 +20411,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20456
20411
|
|
|
20457
20412
|
const minApiVersion = '4.2.2';
|
|
20458
20413
|
class Gn4PlatformService {
|
|
20459
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20414
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20460
20415
|
this.siteApiService = siteApiService;
|
|
20461
20416
|
this.meApi = meApi;
|
|
20462
20417
|
this.usersApi = usersApi;
|
|
20463
20418
|
this.mapper = mapper;
|
|
20464
20419
|
this.toolsApiService = toolsApiService;
|
|
20465
20420
|
this.registriesApiService = registriesApiService;
|
|
20421
|
+
this.langService = langService;
|
|
20466
20422
|
this.type = 'GeoNetwork';
|
|
20467
20423
|
this.keyTranslations$ = this.toolsApiService
|
|
20468
20424
|
.getTranslationsPackage1('gnui')
|
|
@@ -20476,6 +20432,11 @@ class Gn4PlatformService {
|
|
|
20476
20432
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20477
20433
|
}
|
|
20478
20434
|
}), shareReplay(1));
|
|
20435
|
+
/**
|
|
20436
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20437
|
+
* @private
|
|
20438
|
+
*/
|
|
20439
|
+
this.thesauri = {};
|
|
20479
20440
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20480
20441
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20481
20442
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20502,19 +20463,36 @@ class Gn4PlatformService {
|
|
|
20502
20463
|
return this.users$;
|
|
20503
20464
|
}
|
|
20504
20465
|
translateKey(key) {
|
|
20466
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20467
|
+
if (key.match(/^https?:\/\//)) {
|
|
20468
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20469
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20470
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20471
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20472
|
+
for (const item of thesaurus) {
|
|
20473
|
+
if (item.key === key)
|
|
20474
|
+
return item.label;
|
|
20475
|
+
}
|
|
20476
|
+
return key;
|
|
20477
|
+
}));
|
|
20478
|
+
}
|
|
20505
20479
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20506
20480
|
}
|
|
20507
|
-
|
|
20508
|
-
|
|
20509
|
-
.
|
|
20510
|
-
|
|
20481
|
+
getThesaurusByUri(uri) {
|
|
20482
|
+
if (this.thesauri[uri]) {
|
|
20483
|
+
return this.thesauri[uri];
|
|
20484
|
+
}
|
|
20485
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20486
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20487
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20488
|
+
return this.thesauri[uri];
|
|
20511
20489
|
}
|
|
20512
|
-
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 }); }
|
|
20490
|
+
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 }); }
|
|
20513
20491
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20514
20492
|
}
|
|
20515
20493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20516
20494
|
type: Injectable
|
|
20517
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20495
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20518
20496
|
|
|
20519
20497
|
function provideGn4() {
|
|
20520
20498
|
return [
|
|
@@ -20726,6 +20704,8 @@ const defaultMapOptions = {
|
|
|
20726
20704
|
};
|
|
20727
20705
|
const FEATURE_MAP_OPTIONS = new InjectionToken('mapOptions');
|
|
20728
20706
|
|
|
20707
|
+
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
20708
|
+
|
|
20729
20709
|
var MapContextLayerTypeEnum;
|
|
20730
20710
|
(function (MapContextLayerTypeEnum) {
|
|
20731
20711
|
MapContextLayerTypeEnum["XYZ"] = "xyz";
|
|
@@ -21101,9 +21081,15 @@ const FORMATS = {
|
|
|
21101
21081
|
color: '#328556',
|
|
21102
21082
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
21103
21083
|
},
|
|
21084
|
+
gml: {
|
|
21085
|
+
extensions: ['gml'],
|
|
21086
|
+
priority: 5,
|
|
21087
|
+
color: '#c92bce',
|
|
21088
|
+
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
21089
|
+
},
|
|
21104
21090
|
kml: {
|
|
21105
21091
|
extensions: ['kml', 'kmz'],
|
|
21106
|
-
priority:
|
|
21092
|
+
priority: 6,
|
|
21107
21093
|
color: '#348009',
|
|
21108
21094
|
mimeTypes: [
|
|
21109
21095
|
'application/vnd.google-earth.kml+xml',
|
|
@@ -21112,34 +21098,40 @@ const FORMATS = {
|
|
|
21112
21098
|
},
|
|
21113
21099
|
gpkg: {
|
|
21114
21100
|
extensions: ['gpkg', 'geopackage'],
|
|
21115
|
-
priority:
|
|
21101
|
+
priority: 7,
|
|
21116
21102
|
color: '#ea79ba',
|
|
21117
21103
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
21118
21104
|
},
|
|
21119
21105
|
zip: {
|
|
21120
21106
|
extensions: ['zip', 'tar.gz'],
|
|
21121
|
-
priority:
|
|
21107
|
+
priority: 8,
|
|
21122
21108
|
color: '#f2bb3a',
|
|
21123
21109
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
21124
21110
|
},
|
|
21125
21111
|
pdf: {
|
|
21126
21112
|
extensions: ['pdf'],
|
|
21127
|
-
priority:
|
|
21113
|
+
priority: 9,
|
|
21128
21114
|
color: '#db544a',
|
|
21129
21115
|
mimeTypes: ['application/pdf'],
|
|
21130
21116
|
},
|
|
21131
21117
|
jpg: {
|
|
21132
21118
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
21133
|
-
priority:
|
|
21119
|
+
priority: 9,
|
|
21134
21120
|
color: '#673ab7',
|
|
21135
21121
|
mimeTypes: ['image/jpg'],
|
|
21136
21122
|
},
|
|
21137
21123
|
svg: {
|
|
21138
21124
|
extensions: ['svg'],
|
|
21139
|
-
priority:
|
|
21125
|
+
priority: 10,
|
|
21140
21126
|
color: '#d98294',
|
|
21141
21127
|
mimeTypes: ['image/svg+xml'],
|
|
21142
21128
|
},
|
|
21129
|
+
dxf: {
|
|
21130
|
+
extensions: ['dxf'],
|
|
21131
|
+
priority: 11,
|
|
21132
|
+
color: '#de630b',
|
|
21133
|
+
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
21134
|
+
},
|
|
21143
21135
|
};
|
|
21144
21136
|
function getFormatPriority(linkFormat) {
|
|
21145
21137
|
for (const format in FORMATS) {
|
|
@@ -21156,14 +21148,18 @@ function getFormatPriority(linkFormat) {
|
|
|
21156
21148
|
function getLinkPriority(link) {
|
|
21157
21149
|
return getFormatPriority(getFileFormat(link));
|
|
21158
21150
|
}
|
|
21159
|
-
function
|
|
21160
|
-
|
|
21161
|
-
|
|
21162
|
-
|
|
21163
|
-
|
|
21151
|
+
function getFileFormatFromServiceOutput(serviceOutput) {
|
|
21152
|
+
function formatMatcher(format) {
|
|
21153
|
+
const output = serviceOutput.toLowerCase();
|
|
21154
|
+
return (format.extensions.some((extension) => output.includes(extension)) ||
|
|
21155
|
+
format.mimeTypes.some((mimeType) => output.includes(mimeType)));
|
|
21156
|
+
}
|
|
21157
|
+
for (const formatName in FORMATS) {
|
|
21158
|
+
if (formatMatcher(FORMATS[formatName])) {
|
|
21159
|
+
return formatName;
|
|
21164
21160
|
}
|
|
21165
21161
|
}
|
|
21166
|
-
return
|
|
21162
|
+
return null;
|
|
21167
21163
|
}
|
|
21168
21164
|
function getFileFormat(link) {
|
|
21169
21165
|
if ('mimeType' in link) {
|
|
@@ -21304,72 +21300,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21304
21300
|
}]
|
|
21305
21301
|
}] });
|
|
21306
21302
|
|
|
21307
|
-
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
21308
|
-
|
|
21309
|
-
class MapUtilsWMSService {
|
|
21310
|
-
constructor(proxy) {
|
|
21311
|
-
this.proxy = proxy;
|
|
21312
|
-
}
|
|
21313
|
-
getCapabilities(layer) {
|
|
21314
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady());
|
|
21315
|
-
}
|
|
21316
|
-
getLayerFull(layer) {
|
|
21317
|
-
return this.getCapabilities(layer).pipe(map$1((endpoint) => endpoint.getLayerByName(layer.name)));
|
|
21318
|
-
}
|
|
21319
|
-
getLayerLonLatBBox(layer) {
|
|
21320
|
-
return this.getLayerFull(layer).pipe(switchMap$1((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull))));
|
|
21321
|
-
}
|
|
21322
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
21323
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
21324
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21325
|
-
if (lonLatCRS) {
|
|
21326
|
-
return boundingBoxes[lonLatCRS];
|
|
21327
|
-
}
|
|
21328
|
-
else {
|
|
21329
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21330
|
-
register(proj4);
|
|
21331
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21332
|
-
proj4.defs(availableEPSGCode, proj);
|
|
21333
|
-
const bboxWithFiniteNumbers = [
|
|
21334
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
21335
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
21336
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
21337
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
21338
|
-
];
|
|
21339
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21340
|
-
return extent;
|
|
21341
|
-
}
|
|
21342
|
-
}
|
|
21343
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21344
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
21345
|
-
}
|
|
21346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
21347
|
-
type: Injectable,
|
|
21348
|
-
args: [{
|
|
21349
|
-
providedIn: 'root',
|
|
21350
|
-
}]
|
|
21351
|
-
}], ctorParameters: function () { return [{ type: ProxyService }]; } });
|
|
21352
|
-
|
|
21353
21303
|
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21354
21304
|
const DATA_PROJECTION = 'EPSG:4326';
|
|
21305
|
+
const GEOJSON = new GeoJSON();
|
|
21355
21306
|
class MapUtilsService {
|
|
21356
|
-
constructor(http,
|
|
21307
|
+
constructor(http, proxy) {
|
|
21357
21308
|
this.http = http;
|
|
21358
|
-
this.
|
|
21309
|
+
this.proxy = proxy;
|
|
21359
21310
|
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21360
|
-
|
|
21311
|
+
return GEOJSON.readFeatures(featureCollection, {
|
|
21361
21312
|
featureProjection,
|
|
21362
21313
|
dataProjection,
|
|
21363
21314
|
});
|
|
21364
|
-
return olFeatures;
|
|
21365
21315
|
};
|
|
21366
21316
|
}
|
|
21367
21317
|
createEmptyMap() {
|
|
21368
|
-
|
|
21318
|
+
return new Map$1({
|
|
21369
21319
|
controls: [],
|
|
21370
21320
|
pixelRatio: 1,
|
|
21371
21321
|
});
|
|
21372
|
-
return map;
|
|
21373
21322
|
}
|
|
21374
21323
|
isWMSLayer(layer) {
|
|
21375
21324
|
return (layer.getSource() instanceof TileWMS ||
|
|
@@ -21384,8 +21333,7 @@ class MapUtilsService {
|
|
|
21384
21333
|
...source.getParams(),
|
|
21385
21334
|
INFO_FORMAT: 'application/json',
|
|
21386
21335
|
};
|
|
21387
|
-
|
|
21388
|
-
return url;
|
|
21336
|
+
return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
|
|
21389
21337
|
}
|
|
21390
21338
|
getVectorFeaturesFromClick(olMap, event) {
|
|
21391
21339
|
const features = [];
|
|
@@ -21413,38 +21361,56 @@ class MapUtilsService {
|
|
|
21413
21361
|
/**
|
|
21414
21362
|
* Will emit `null` if no extent could be computed
|
|
21415
21363
|
*/
|
|
21416
|
-
getLayerExtent(layer) {
|
|
21417
|
-
let
|
|
21364
|
+
async getLayerExtent(layer) {
|
|
21365
|
+
let latLonExtent;
|
|
21418
21366
|
if (layer &&
|
|
21419
21367
|
layer.type === 'geojson' &&
|
|
21420
21368
|
'data' in layer &&
|
|
21421
21369
|
typeof layer.data === 'object' &&
|
|
21422
21370
|
layer.data.features[0] &&
|
|
21423
21371
|
layer.data.features[0].geometry) {
|
|
21424
|
-
|
|
21425
|
-
.readFeatures(
|
|
21372
|
+
latLonExtent = new GeoJSON()
|
|
21373
|
+
.readFeatures(layer.data)
|
|
21426
21374
|
.map((feature) => feature.getGeometry())
|
|
21427
21375
|
.filter((geom) => !!geom)
|
|
21428
|
-
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null)
|
|
21376
|
+
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
|
|
21429
21377
|
}
|
|
21430
21378
|
else if (layer && layer.type === 'wms') {
|
|
21431
|
-
|
|
21379
|
+
latLonExtent = await this.getWmsLayerExtent(layer);
|
|
21432
21380
|
}
|
|
21433
21381
|
else if (layer && layer.type === 'wmts') {
|
|
21434
21382
|
if (layer.extent) {
|
|
21435
|
-
|
|
21383
|
+
latLonExtent = layer.extent;
|
|
21436
21384
|
}
|
|
21437
21385
|
else {
|
|
21438
|
-
return
|
|
21386
|
+
return layer.options.tileGrid.getExtent();
|
|
21439
21387
|
}
|
|
21440
21388
|
}
|
|
21441
21389
|
else {
|
|
21442
|
-
return
|
|
21390
|
+
return null;
|
|
21391
|
+
}
|
|
21392
|
+
if (!latLonExtent || isEmpty(latLonExtent)) {
|
|
21393
|
+
return null;
|
|
21394
|
+
}
|
|
21395
|
+
return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21396
|
+
}
|
|
21397
|
+
async getWmsLayerExtent(layer) {
|
|
21398
|
+
const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
|
|
21399
|
+
const { boundingBoxes } = endpoint.getLayerByName(layer.name);
|
|
21400
|
+
if (!Object.keys(boundingBoxes).length) {
|
|
21401
|
+
return null;
|
|
21402
|
+
}
|
|
21403
|
+
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21404
|
+
if (lonLatCRS) {
|
|
21405
|
+
return boundingBoxes[lonLatCRS].map(parseFloat);
|
|
21406
|
+
}
|
|
21407
|
+
else {
|
|
21408
|
+
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21409
|
+
register(proj4);
|
|
21410
|
+
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21411
|
+
const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
|
|
21412
|
+
return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21443
21413
|
}
|
|
21444
|
-
return geographicExtent.pipe(map$1((extent) => [
|
|
21445
|
-
...fromLonLat([extent[0], extent[1]], 'EPSG:3857'),
|
|
21446
|
-
...fromLonLat([extent[2], extent[3]], 'EPSG:3857'),
|
|
21447
|
-
]), map$1((extent) => (isEmpty(extent) ? null : extent)));
|
|
21448
21414
|
}
|
|
21449
21415
|
getWmtsLayerFromCapabilities(link) {
|
|
21450
21416
|
const getCapabilitiesUrl = new URL(link.url, window.location.toString());
|
|
@@ -21500,7 +21466,18 @@ ${e.stack || e.message || e}`);
|
|
|
21500
21466
|
])
|
|
21501
21467
|
.getArray());
|
|
21502
21468
|
}
|
|
21503
|
-
|
|
21469
|
+
getRecordExtent(record) {
|
|
21470
|
+
if (!('spatialExtents' in record)) {
|
|
21471
|
+
return null;
|
|
21472
|
+
}
|
|
21473
|
+
// transform an array of geojson geometries into a bbox
|
|
21474
|
+
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
21475
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
21476
|
+
return extend(prev, geom.getExtent());
|
|
21477
|
+
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
21478
|
+
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21479
|
+
}
|
|
21480
|
+
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 }); }
|
|
21504
21481
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
21505
21482
|
}
|
|
21506
21483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, decorators: [{
|
|
@@ -21508,7 +21485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21508
21485
|
args: [{
|
|
21509
21486
|
providedIn: 'root',
|
|
21510
21487
|
}]
|
|
21511
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type:
|
|
21488
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ProxyService }]; } });
|
|
21512
21489
|
function dragPanCondition(event) {
|
|
21513
21490
|
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
21514
21491
|
if (!dragPanCondition) {
|
|
@@ -22593,6 +22570,9 @@ class MapContextService {
|
|
|
22593
22570
|
if (mapConfig) {
|
|
22594
22571
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22595
22572
|
}
|
|
22573
|
+
else {
|
|
22574
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22575
|
+
}
|
|
22596
22576
|
if (!mapContext.view?.extent &&
|
|
22597
22577
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22598
22578
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22703,6 +22683,11 @@ class MapContextService {
|
|
|
22703
22683
|
}
|
|
22704
22684
|
return view;
|
|
22705
22685
|
}
|
|
22686
|
+
addDefaultBaselayerContext(layers) {
|
|
22687
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22688
|
+
? layers
|
|
22689
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22690
|
+
}
|
|
22706
22691
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22707
22692
|
return {
|
|
22708
22693
|
...mapContext,
|
|
@@ -23381,8 +23366,7 @@ class MetadataQualityComponent {
|
|
|
23381
23366
|
: this.calculatedQualityScore;
|
|
23382
23367
|
}
|
|
23383
23368
|
get calculatedQualityScore() {
|
|
23384
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23385
|
-
this.items.length);
|
|
23369
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23386
23370
|
}
|
|
23387
23371
|
showMenu() {
|
|
23388
23372
|
this.isMenuShown = true;
|
|
@@ -23848,11 +23832,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23848
23832
|
type: Input
|
|
23849
23833
|
}] } });
|
|
23850
23834
|
|
|
23851
|
-
class
|
|
23852
|
-
|
|
23853
|
-
this.
|
|
23835
|
+
class MarkdownParserComponent {
|
|
23836
|
+
get parsedMarkdown() {
|
|
23837
|
+
return marked.parse(this.textContent);
|
|
23854
23838
|
}
|
|
23855
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
23839
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23840
|
+
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 }); }
|
|
23841
|
+
}
|
|
23842
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23843
|
+
type: Component,
|
|
23844
|
+
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"] }]
|
|
23845
|
+
}], propDecorators: { textContent: [{
|
|
23846
|
+
type: Input
|
|
23847
|
+
}] } });
|
|
23848
|
+
|
|
23849
|
+
class ContentGhostComponent {
|
|
23850
|
+
constructor() {
|
|
23851
|
+
this.ghostClass = '';
|
|
23852
|
+
}
|
|
23853
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ContentGhostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23856
23854
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: { showContent: "showContent", ghostClass: "ghostClass" }, ngImport: i0, template: "<div\n *ngIf=\"!showContent\"\n class=\"ghost bg-gray-100 rounded-lg relative overflow-hidden {{ ghostClass }}\"\n></div>\n<ng-content *ngIf=\"showContent\"></ng-content>\n", styles: [".ghost{min-height:2rem;min-width:2rem;overflow:hidden}.ghost:after{content:\"\";position:absolute;top:0;bottom:0;width:50%;background-image:linear-gradient(to left,rgba(251,251,251,.05),rgba(251,251,251,.3),rgba(251,251,251,.6),rgba(251,251,251,.3),rgba(251,251,251,.05));animation:loading 1s infinite}@keyframes loading{0%{left:-50%}to{left:100%}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23857
23855
|
}
|
|
23858
23856
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ContentGhostComponent, decorators: [{
|
|
@@ -24002,36 +24000,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24002
24000
|
args: ['container']
|
|
24003
24001
|
}] } });
|
|
24004
24002
|
|
|
24005
|
-
class MarkdownParserComponent {
|
|
24006
|
-
get parsedMarkdown() {
|
|
24007
|
-
return marked.parse(this.textContent);
|
|
24008
|
-
}
|
|
24009
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24010
|
-
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 /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 /deep/ .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host /deep/ .markdown-body h1,:host /deep/ .markdown-body h2,:host /deep/ .markdown-body h3,:host /deep/ .markdown-body h4,:host /deep/ .markdown-body h5,:host /deep/ .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host /deep/ .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host /deep/ .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host /deep/ .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host /deep/ .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host /deep/ .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host /deep/ .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host /deep/ .markdown-body p{margin-top:0;margin-bottom:10px}:host /deep/ .markdown-body p > a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host /deep/ .markdown-body p > a:hover{color:var(--color-primary-darker)!important}:host /deep/ .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host /deep/ .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host /deep/ .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host /deep/ .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host /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 /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 /deep/ .markdown-body hr::before{display:table;content:\"\"}:host /deep/ .markdown-body hr::after{display:table;clear:both;content:\"\"}:host /deep/ .markdown-body ul,:host /deep/ .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host /deep/ .markdown-body ol ol,:host /deep/ .markdown-body ul ol{list-style-type:lower-roman}:host /deep/ .markdown-body ul ul ol,:host /deep/ .markdown-body ul ol ol,:host /deep/ .markdown-body ol ul ol,:host /deep/ .markdown-body ol ol ol{list-style-type:lower-alpha}:host /deep/ .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host /deep/ .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host /deep/ .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host /deep/ .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host /deep/ .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host /deep/ .markdown-body div > ol:not([type]){list-style:unset;list-style-type:decimal}:host /deep/ .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host /deep/ .markdown-body td,:host /deep/ .markdown-body th{padding:0}:host /deep/ .markdown-body th{color:var(--color-secondary)}:host /deep/ .markdown-body table th,:host /deep/ .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host /deep/ .markdown-body table td > :last-child{margin-bottom:0}:host /deep/ .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host /deep/ .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host /deep/ .markdown-body table img{background-color:transparent}:host /deep/ .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host /deep/ .markdown-body img[align=\"right\"]{padding-left:20px}:host /deep/ .markdown-body img[align=\"left\"]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24011
|
-
}
|
|
24012
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24013
|
-
type: Component,
|
|
24014
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host /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 /deep/ .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host /deep/ .markdown-body h1,:host /deep/ .markdown-body h2,:host /deep/ .markdown-body h3,:host /deep/ .markdown-body h4,:host /deep/ .markdown-body h5,:host /deep/ .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host /deep/ .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host /deep/ .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host /deep/ .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host /deep/ .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host /deep/ .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host /deep/ .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host /deep/ .markdown-body p{margin-top:0;margin-bottom:10px}:host /deep/ .markdown-body p > a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host /deep/ .markdown-body p > a:hover{color:var(--color-primary-darker)!important}:host /deep/ .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host /deep/ .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host /deep/ .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host /deep/ .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host /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 /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 /deep/ .markdown-body hr::before{display:table;content:\"\"}:host /deep/ .markdown-body hr::after{display:table;clear:both;content:\"\"}:host /deep/ .markdown-body ul,:host /deep/ .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host /deep/ .markdown-body ol ol,:host /deep/ .markdown-body ul ol{list-style-type:lower-roman}:host /deep/ .markdown-body ul ul ol,:host /deep/ .markdown-body ul ol ol,:host /deep/ .markdown-body ol ul ol,:host /deep/ .markdown-body ol ol ol{list-style-type:lower-alpha}:host /deep/ .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host /deep/ .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host /deep/ .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host /deep/ .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host /deep/ .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host /deep/ .markdown-body div > ol:not([type]){list-style:unset;list-style-type:decimal}:host /deep/ .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host /deep/ .markdown-body td,:host /deep/ .markdown-body th{padding:0}:host /deep/ .markdown-body th{color:var(--color-secondary)}:host /deep/ .markdown-body table th,:host /deep/ .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host /deep/ .markdown-body table td > :last-child{margin-bottom:0}:host /deep/ .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host /deep/ .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host /deep/ .markdown-body table img{background-color:transparent}:host /deep/ .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host /deep/ .markdown-body img[align=\"right\"]{padding-left:20px}:host /deep/ .markdown-body img[align=\"left\"]{padding-right:20px}\n"] }]
|
|
24015
|
-
}], propDecorators: { textContent: [{
|
|
24016
|
-
type: Input
|
|
24017
|
-
}] } });
|
|
24018
|
-
|
|
24019
24003
|
class MetadataInfoComponent {
|
|
24020
24004
|
constructor() {
|
|
24021
24005
|
this.keyword = new EventEmitter();
|
|
24022
24006
|
}
|
|
24023
24007
|
get hasUsage() {
|
|
24024
24008
|
return (this.metadata.extras?.isOpenData === true ||
|
|
24025
|
-
this.metadata.
|
|
24026
|
-
|
|
24009
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24010
|
+
this.legalConstraints.length > 0) ||
|
|
24011
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24012
|
+
this.otherConstraints.length > 0) ||
|
|
24013
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24014
|
+
}
|
|
24015
|
+
get legalConstraints() {
|
|
24016
|
+
let array = [];
|
|
24017
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24018
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24019
|
+
}
|
|
24020
|
+
return array;
|
|
24027
24021
|
}
|
|
24028
|
-
get
|
|
24022
|
+
get otherConstraints() {
|
|
24029
24023
|
let array = [];
|
|
24030
|
-
if (this.metadata.
|
|
24031
|
-
array = array.concat(this.metadata.
|
|
24024
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24025
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24032
24026
|
}
|
|
24033
|
-
|
|
24034
|
-
|
|
24027
|
+
return array;
|
|
24028
|
+
}
|
|
24029
|
+
get licenses() {
|
|
24030
|
+
let array = [];
|
|
24031
|
+
if (this.metadata.licenses?.length) {
|
|
24032
|
+
array = array.concat(this.metadata.licenses
|
|
24033
|
+
.filter((c) => c.text)
|
|
24034
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
24035
24035
|
}
|
|
24036
24036
|
return array;
|
|
24037
24037
|
}
|
|
@@ -24053,16 +24053,12 @@ class MetadataInfoComponent {
|
|
|
24053
24053
|
onKeywordClick(keyword) {
|
|
24054
24054
|
this.keyword.emit(keyword);
|
|
24055
24055
|
}
|
|
24056
|
-
copyText() {
|
|
24057
|
-
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
24058
|
-
event.target.blur();
|
|
24059
|
-
}
|
|
24060
24056
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24061
|
-
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
|
|
24057
|
+
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 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 text-gray-900\"\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\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: 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: "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 }); }
|
|
24062
24058
|
}
|
|
24063
24059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24064
24060
|
type: Component,
|
|
24065
|
-
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-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
|
|
24061
|
+
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 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 text-gray-900\"\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\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"] }]
|
|
24066
24062
|
}], propDecorators: { metadata: [{
|
|
24067
24063
|
type: Input
|
|
24068
24064
|
}], incomplete: [{
|
|
@@ -24131,11 +24127,11 @@ class ButtonComponent {
|
|
|
24131
24127
|
propagateToDocumentOnly(event);
|
|
24132
24128
|
}
|
|
24133
24129
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24134
|
-
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
|
|
24130
|
+
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 }); }
|
|
24135
24131
|
}
|
|
24136
24132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24137
24133
|
type: Component,
|
|
24138
|
-
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
|
|
24134
|
+
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"] }]
|
|
24139
24135
|
}], propDecorators: { type: [{
|
|
24140
24136
|
type: Input
|
|
24141
24137
|
}], disabled: [{
|
|
@@ -24210,11 +24206,11 @@ class DownloadsListComponent {
|
|
|
24210
24206
|
return link.type === 'service' && link.accessServiceProtocol === 'wfs';
|
|
24211
24207
|
}
|
|
24212
24208
|
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 }); }
|
|
24213
|
-
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
|
|
24209
|
+
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 }); }
|
|
24214
24210
|
}
|
|
24215
24211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
24216
24212
|
type: Component,
|
|
24217
|
-
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
|
|
24213
|
+
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" }]
|
|
24218
24214
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { links: [{
|
|
24219
24215
|
type: Input
|
|
24220
24216
|
}] } });
|
|
@@ -24415,11 +24411,11 @@ class CarouselComponent {
|
|
|
24415
24411
|
this.emblaApi.scrollTo(stepIndex);
|
|
24416
24412
|
}
|
|
24417
24413
|
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 }); }
|
|
24418
|
-
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
|
|
24414
|
+
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 }); }
|
|
24419
24415
|
}
|
|
24420
24416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24421
24417
|
type: Component,
|
|
24422
|
-
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
|
|
24418
|
+
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"] }]
|
|
24423
24419
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24424
24420
|
type: Input
|
|
24425
24421
|
}], stepsContainerClass: [{
|
|
@@ -24463,6 +24459,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24463
24459
|
}]
|
|
24464
24460
|
}] });
|
|
24465
24461
|
|
|
24462
|
+
class InteractiveTableColumnComponent {
|
|
24463
|
+
constructor() {
|
|
24464
|
+
this.grow = false;
|
|
24465
|
+
this.sortable = false;
|
|
24466
|
+
this.activeSort = null;
|
|
24467
|
+
this.sortChange = new EventEmitter();
|
|
24468
|
+
}
|
|
24469
|
+
handleSortChange() {
|
|
24470
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24471
|
+
this.sortChange.emit(this.activeSort);
|
|
24472
|
+
}
|
|
24473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24474
|
+
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 }); }
|
|
24475
|
+
}
|
|
24476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24477
|
+
type: Component,
|
|
24478
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24479
|
+
}], propDecorators: { header: [{
|
|
24480
|
+
type: ContentChild,
|
|
24481
|
+
args: ['header']
|
|
24482
|
+
}], cell: [{
|
|
24483
|
+
type: ContentChild,
|
|
24484
|
+
args: ['cell']
|
|
24485
|
+
}], grow: [{
|
|
24486
|
+
type: Input
|
|
24487
|
+
}], sortable: [{
|
|
24488
|
+
type: Input
|
|
24489
|
+
}], activeSort: [{
|
|
24490
|
+
type: Input
|
|
24491
|
+
}], sortChange: [{
|
|
24492
|
+
type: Output
|
|
24493
|
+
}] } });
|
|
24494
|
+
|
|
24495
|
+
class InteractiveTableComponent {
|
|
24496
|
+
constructor() {
|
|
24497
|
+
this.items = [];
|
|
24498
|
+
this.itemClick = new EventEmitter();
|
|
24499
|
+
}
|
|
24500
|
+
get gridStyle() {
|
|
24501
|
+
return {
|
|
24502
|
+
'grid-template-columns': this.columns
|
|
24503
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24504
|
+
.join(' '),
|
|
24505
|
+
};
|
|
24506
|
+
}
|
|
24507
|
+
handleRowClick(item) {
|
|
24508
|
+
this.itemClick.emit(item);
|
|
24509
|
+
}
|
|
24510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24511
|
+
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 }); }
|
|
24512
|
+
}
|
|
24513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24514
|
+
type: Component,
|
|
24515
|
+
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"] }]
|
|
24516
|
+
}], propDecorators: { columns: [{
|
|
24517
|
+
type: ContentChildren,
|
|
24518
|
+
args: [InteractiveTableColumnComponent]
|
|
24519
|
+
}], items: [{
|
|
24520
|
+
type: Input
|
|
24521
|
+
}], itemClick: [{
|
|
24522
|
+
type: Output
|
|
24523
|
+
}] } });
|
|
24524
|
+
|
|
24466
24525
|
class LinkCardComponent {
|
|
24467
24526
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24468
24527
|
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 }); }
|
|
@@ -24508,11 +24567,11 @@ class MetadataContactComponent {
|
|
|
24508
24567
|
this.organizationClick.emit(this.shownOrganization);
|
|
24509
24568
|
}
|
|
24510
24569
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24511
|
-
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
|
|
24570
|
+
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\">\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 }); }
|
|
24512
24571
|
}
|
|
24513
24572
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24514
24573
|
type: Component,
|
|
24515
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24574
|
+
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\">\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" }]
|
|
24516
24575
|
}], propDecorators: { metadata: [{
|
|
24517
24576
|
type: Input
|
|
24518
24577
|
}], organizationClick: [{
|
|
@@ -24916,11 +24975,11 @@ class DropdownMultiselectComponent {
|
|
|
24916
24975
|
this.setFocus();
|
|
24917
24976
|
}
|
|
24918
24977
|
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 }); }
|
|
24919
|
-
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,
|
|
24978
|
+
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, 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 }); }
|
|
24920
24979
|
}
|
|
24921
24980
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24922
24981
|
type: Component,
|
|
24923
|
-
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,
|
|
24982
|
+
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, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24924
24983
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24925
24984
|
type: Input
|
|
24926
24985
|
}], choices: [{
|
|
@@ -25074,11 +25133,11 @@ class TextAreaComponent {
|
|
|
25074
25133
|
this.rawChange.next(value);
|
|
25075
25134
|
}
|
|
25076
25135
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25077
|
-
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"] }); }
|
|
25136
|
+
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"] }); }
|
|
25078
25137
|
}
|
|
25079
25138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25080
25139
|
type: Component,
|
|
25081
|
-
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"] }]
|
|
25140
|
+
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"] }]
|
|
25082
25141
|
}], propDecorators: { value: [{
|
|
25083
25142
|
type: Input
|
|
25084
25143
|
}], placeholder: [{
|
|
@@ -25179,11 +25238,11 @@ class AutocompleteComponent {
|
|
|
25179
25238
|
}
|
|
25180
25239
|
}
|
|
25181
25240
|
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 }); }
|
|
25182
|
-
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(
|
|
25241
|
+
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 }); }
|
|
25183
25242
|
}
|
|
25184
25243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25185
25244
|
type: Component,
|
|
25186
|
-
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(
|
|
25245
|
+
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"] }]
|
|
25187
25246
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25188
25247
|
type: Input
|
|
25189
25248
|
}], action: [{
|
|
@@ -25559,11 +25618,11 @@ class CheckboxComponent {
|
|
|
25559
25618
|
this.changed.emit(this.checked);
|
|
25560
25619
|
}
|
|
25561
25620
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25562
|
-
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
|
|
25621
|
+
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 }); }
|
|
25563
25622
|
}
|
|
25564
25623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25565
25624
|
type: Component,
|
|
25566
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25625
|
+
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"] }]
|
|
25567
25626
|
}], propDecorators: { type: [{
|
|
25568
25627
|
type: Input
|
|
25569
25628
|
}], checked: [{
|
|
@@ -25618,14 +25677,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25618
25677
|
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"] }]
|
|
25619
25678
|
}] });
|
|
25620
25679
|
|
|
25680
|
+
class EditableLabelDirective {
|
|
25681
|
+
constructor(el, renderer) {
|
|
25682
|
+
this.el = el;
|
|
25683
|
+
this.renderer = renderer;
|
|
25684
|
+
this.editableLabelChanged = new EventEmitter();
|
|
25685
|
+
}
|
|
25686
|
+
ngAfterViewInit() {
|
|
25687
|
+
if (this.gnUiEditableLabel !== false) {
|
|
25688
|
+
const appendedInput = this.renderer.createElement('input');
|
|
25689
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25690
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25691
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25692
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25693
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25694
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25695
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25696
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25697
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25698
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25699
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
25700
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25701
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25702
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25703
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25704
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
25705
|
+
});
|
|
25706
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25707
|
+
}
|
|
25708
|
+
}
|
|
25709
|
+
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 }); }
|
|
25710
|
+
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 }); }
|
|
25711
|
+
}
|
|
25712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25713
|
+
type: Directive,
|
|
25714
|
+
args: [{
|
|
25715
|
+
selector: '[gnUiEditableLabel]',
|
|
25716
|
+
standalone: true,
|
|
25717
|
+
}]
|
|
25718
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25719
|
+
type: Output
|
|
25720
|
+
}], gnUiEditableLabel: [{
|
|
25721
|
+
type: Input
|
|
25722
|
+
}] } });
|
|
25723
|
+
|
|
25621
25724
|
class UiInputsModule {
|
|
25622
25725
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25623
25726
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25624
25727
|
AutocompleteComponent,
|
|
25625
|
-
ButtonComponent,
|
|
25626
25728
|
TextInputComponent,
|
|
25627
25729
|
DragAndDropFileInputComponent,
|
|
25628
|
-
TextAreaComponent,
|
|
25629
25730
|
ChipsInputComponent,
|
|
25630
25731
|
NavigationButtonComponent,
|
|
25631
25732
|
StarToggleComponent,
|
|
@@ -25657,7 +25758,10 @@ class UiInputsModule {
|
|
|
25657
25758
|
MatFormFieldModule,
|
|
25658
25759
|
MatInputModule,
|
|
25659
25760
|
MatDatepickerModule,
|
|
25660
|
-
MatNativeDateModule
|
|
25761
|
+
MatNativeDateModule,
|
|
25762
|
+
EditableLabelDirective,
|
|
25763
|
+
TextAreaComponent,
|
|
25764
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25661
25765
|
AutocompleteComponent,
|
|
25662
25766
|
ButtonComponent,
|
|
25663
25767
|
TextInputComponent,
|
|
@@ -25673,7 +25777,8 @@ class UiInputsModule {
|
|
|
25673
25777
|
CopyTextButtonComponent,
|
|
25674
25778
|
CheckboxComponent,
|
|
25675
25779
|
SearchInputComponent,
|
|
25676
|
-
DateRangePickerComponent
|
|
25780
|
+
DateRangePickerComponent,
|
|
25781
|
+
EditableLabelDirective] }); }
|
|
25677
25782
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
|
|
25678
25783
|
TranslateModule.forChild(),
|
|
25679
25784
|
NgxDropzoneModule,
|
|
@@ -25698,10 +25803,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25698
25803
|
declarations: [
|
|
25699
25804
|
DropdownSelectorComponent,
|
|
25700
25805
|
AutocompleteComponent,
|
|
25701
|
-
ButtonComponent,
|
|
25702
25806
|
TextInputComponent,
|
|
25703
25807
|
DragAndDropFileInputComponent,
|
|
25704
|
-
TextAreaComponent,
|
|
25705
25808
|
ChipsInputComponent,
|
|
25706
25809
|
NavigationButtonComponent,
|
|
25707
25810
|
StarToggleComponent,
|
|
@@ -25739,6 +25842,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25739
25842
|
MatInputModule,
|
|
25740
25843
|
MatDatepickerModule,
|
|
25741
25844
|
MatNativeDateModule,
|
|
25845
|
+
EditableLabelDirective,
|
|
25846
|
+
TextAreaComponent,
|
|
25847
|
+
ButtonComponent,
|
|
25742
25848
|
],
|
|
25743
25849
|
exports: [
|
|
25744
25850
|
DropdownSelectorComponent,
|
|
@@ -25758,6 +25864,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25758
25864
|
CheckboxComponent,
|
|
25759
25865
|
SearchInputComponent,
|
|
25760
25866
|
DateRangePickerComponent,
|
|
25867
|
+
EditableLabelDirective,
|
|
25761
25868
|
],
|
|
25762
25869
|
}]
|
|
25763
25870
|
}] });
|
|
@@ -25857,7 +25964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25857
25964
|
|
|
25858
25965
|
const DEFAULT_PARAMS = {
|
|
25859
25966
|
OFFSET: '',
|
|
25860
|
-
LIMIT: '',
|
|
25967
|
+
LIMIT: '-1',
|
|
25861
25968
|
FORMAT: 'json',
|
|
25862
25969
|
};
|
|
25863
25970
|
class RecordApiFormComponent {
|
|
@@ -25886,6 +25993,8 @@ class RecordApiFormComponent {
|
|
|
25886
25993
|
}
|
|
25887
25994
|
return outputUrl;
|
|
25888
25995
|
}));
|
|
25996
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
25997
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
25889
25998
|
}
|
|
25890
25999
|
set apiLink(value) {
|
|
25891
26000
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -25895,10 +26004,11 @@ class RecordApiFormComponent {
|
|
|
25895
26004
|
this.offset$.next(value);
|
|
25896
26005
|
}
|
|
25897
26006
|
setLimit(value) {
|
|
25898
|
-
|
|
26007
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26008
|
+
this.limit$.next(newLimit);
|
|
25899
26009
|
}
|
|
25900
26010
|
setFormat(value) {
|
|
25901
|
-
this.format$.next(value);
|
|
26011
|
+
this.format$.next(String(value));
|
|
25902
26012
|
}
|
|
25903
26013
|
resetUrl() {
|
|
25904
26014
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -25906,11 +26016,11 @@ class RecordApiFormComponent {
|
|
|
25906
26016
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
25907
26017
|
}
|
|
25908
26018
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25909
|
-
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 (
|
|
26019
|
+
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 }); }
|
|
25910
26020
|
}
|
|
25911
26021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
25912
26022
|
type: Component,
|
|
25913
|
-
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 (
|
|
26023
|
+
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"] }]
|
|
25914
26024
|
}], propDecorators: { apiLink: [{
|
|
25915
26025
|
type: Input
|
|
25916
26026
|
}] } });
|
|
@@ -25923,11 +26033,11 @@ class ImageOverlayPreviewComponent {
|
|
|
25923
26033
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
25924
26034
|
}
|
|
25925
26035
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25926
|
-
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-
|
|
26036
|
+
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"] }] }); }
|
|
25927
26037
|
}
|
|
25928
26038
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
25929
26039
|
type: Component,
|
|
25930
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26040
|
+
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" }]
|
|
25931
26041
|
}], propDecorators: { imageUrl: [{
|
|
25932
26042
|
type: Input
|
|
25933
26043
|
}], isPlaceholderShown: [{
|
|
@@ -25956,7 +26066,6 @@ class UiElementsModule {
|
|
|
25956
26066
|
PaginationButtonsComponent,
|
|
25957
26067
|
MaxLinesComponent,
|
|
25958
26068
|
RecordApiFormComponent,
|
|
25959
|
-
MarkdownParserComponent,
|
|
25960
26069
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
25961
26070
|
MatIconModule,
|
|
25962
26071
|
MatTooltipModule,
|
|
@@ -25965,7 +26074,8 @@ class UiElementsModule {
|
|
|
25965
26074
|
RouterModule,
|
|
25966
26075
|
UiInputsModule,
|
|
25967
26076
|
FormsModule,
|
|
25968
|
-
NgOptimizedImage
|
|
26077
|
+
NgOptimizedImage,
|
|
26078
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
25969
26079
|
ContentGhostComponent,
|
|
25970
26080
|
DownloadItemComponent,
|
|
25971
26081
|
DownloadsListComponent,
|
|
@@ -25982,6 +26092,7 @@ class UiElementsModule {
|
|
|
25982
26092
|
AvatarComponent,
|
|
25983
26093
|
UserPreviewComponent,
|
|
25984
26094
|
PaginationButtonsComponent,
|
|
26095
|
+
MaxLinesComponent,
|
|
25985
26096
|
RecordApiFormComponent,
|
|
25986
26097
|
MarkdownParserComponent,
|
|
25987
26098
|
ImageOverlayPreviewComponent] }); }
|
|
@@ -26011,6 +26122,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26011
26122
|
UiInputsModule,
|
|
26012
26123
|
FormsModule,
|
|
26013
26124
|
NgOptimizedImage,
|
|
26125
|
+
MarkdownParserComponent,
|
|
26014
26126
|
],
|
|
26015
26127
|
declarations: [
|
|
26016
26128
|
MetadataInfoComponent,
|
|
@@ -26033,7 +26145,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26033
26145
|
PaginationButtonsComponent,
|
|
26034
26146
|
MaxLinesComponent,
|
|
26035
26147
|
RecordApiFormComponent,
|
|
26036
|
-
MarkdownParserComponent,
|
|
26037
26148
|
ImageOverlayPreviewComponent,
|
|
26038
26149
|
],
|
|
26039
26150
|
exports: [
|
|
@@ -26054,6 +26165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26054
26165
|
AvatarComponent,
|
|
26055
26166
|
UserPreviewComponent,
|
|
26056
26167
|
PaginationButtonsComponent,
|
|
26168
|
+
MaxLinesComponent,
|
|
26057
26169
|
RecordApiFormComponent,
|
|
26058
26170
|
MarkdownParserComponent,
|
|
26059
26171
|
ImageOverlayPreviewComponent,
|
|
@@ -26061,143 +26173,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26061
26173
|
}]
|
|
26062
26174
|
}] });
|
|
26063
26175
|
|
|
26064
|
-
class RecordTableComponent {
|
|
26065
|
-
constructor() {
|
|
26066
|
-
this.selectedRecords = [];
|
|
26067
|
-
this.records = [];
|
|
26068
|
-
this.recordClick = new EventEmitter();
|
|
26069
|
-
this.recordsSelect = new EventEmitter();
|
|
26070
|
-
this.recordsDeselect = new EventEmitter();
|
|
26071
|
-
this.sortByChange = new EventEmitter();
|
|
26072
|
-
}
|
|
26073
|
-
dateToString(date) {
|
|
26074
|
-
return date?.toLocaleDateString(undefined, {
|
|
26075
|
-
year: 'numeric',
|
|
26076
|
-
month: 'long',
|
|
26077
|
-
day: 'numeric',
|
|
26078
|
-
timeZone: 'UTC',
|
|
26079
|
-
});
|
|
26080
|
-
}
|
|
26081
|
-
getStatus(isPublishedToAll) {
|
|
26082
|
-
return isPublishedToAll ? 'published' : 'not published';
|
|
26083
|
-
}
|
|
26084
|
-
formatUserInfo(userInfo) {
|
|
26085
|
-
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
26086
|
-
if (infos && infos.length === 4) {
|
|
26087
|
-
return `${infos[2]} ${infos[1]}`;
|
|
26088
|
-
}
|
|
26089
|
-
return undefined;
|
|
26090
|
-
}
|
|
26091
|
-
getRecordFormats(record) {
|
|
26092
|
-
if (record.kind === 'service' || !('distributions' in record)) {
|
|
26093
|
-
return [];
|
|
26094
|
-
}
|
|
26095
|
-
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
26096
|
-
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
26097
|
-
return formats;
|
|
26098
|
-
}
|
|
26099
|
-
getBadgeColor(format) {
|
|
26100
|
-
return getBadgeColor(format);
|
|
26101
|
-
}
|
|
26102
|
-
getOrderForColumn(col) {
|
|
26103
|
-
if (!this.sortBy) {
|
|
26104
|
-
return null;
|
|
26105
|
-
}
|
|
26106
|
-
let order = null;
|
|
26107
|
-
const sortedArray = Array.isArray(this.sortBy[0])
|
|
26108
|
-
? this.sortBy
|
|
26109
|
-
: [this.sortBy];
|
|
26110
|
-
sortedArray.forEach((sortedCol) => {
|
|
26111
|
-
if (sortedCol[1] === col) {
|
|
26112
|
-
order = sortedCol[0];
|
|
26113
|
-
}
|
|
26114
|
-
});
|
|
26115
|
-
return order;
|
|
26116
|
-
}
|
|
26117
|
-
setSortBy(col) {
|
|
26118
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26119
|
-
let newOrder;
|
|
26120
|
-
if (sortOrder) {
|
|
26121
|
-
newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
|
|
26122
|
-
}
|
|
26123
|
-
else {
|
|
26124
|
-
newOrder = 'asc';
|
|
26125
|
-
}
|
|
26126
|
-
this.sortByChange.emit([newOrder, col]);
|
|
26127
|
-
this.sortBy = [newOrder, col];
|
|
26128
|
-
}
|
|
26129
|
-
isSortedBy(col, order) {
|
|
26130
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26131
|
-
return sortOrder === order;
|
|
26132
|
-
}
|
|
26133
|
-
isChecked(record) {
|
|
26134
|
-
if (this.selectedRecords.includes(record.uniqueIdentifier)) {
|
|
26135
|
-
return true;
|
|
26136
|
-
}
|
|
26137
|
-
return false;
|
|
26138
|
-
}
|
|
26139
|
-
handleRecordSelectedChange(selected, record) {
|
|
26140
|
-
if (!selected) {
|
|
26141
|
-
this.recordsDeselect.emit([record]);
|
|
26142
|
-
this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
|
|
26143
|
-
}
|
|
26144
|
-
else {
|
|
26145
|
-
this.recordsSelect.emit([record]);
|
|
26146
|
-
this.selectedRecords.push(record.uniqueIdentifier);
|
|
26147
|
-
}
|
|
26148
|
-
}
|
|
26149
|
-
selectAll() {
|
|
26150
|
-
if (this.isAllSelected()) {
|
|
26151
|
-
this.recordsDeselect.emit(this.records);
|
|
26152
|
-
this.selectedRecords = [];
|
|
26153
|
-
}
|
|
26154
|
-
else {
|
|
26155
|
-
this.recordsSelect.emit(this.records);
|
|
26156
|
-
this.selectedRecords = this.records.map((record) => {
|
|
26157
|
-
return record.uniqueIdentifier;
|
|
26158
|
-
});
|
|
26159
|
-
}
|
|
26160
|
-
}
|
|
26161
|
-
isAllSelected() {
|
|
26162
|
-
if (this.selectedRecords.length === this.records.length) {
|
|
26163
|
-
const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
|
|
26164
|
-
if (allRecords.length === this.records.length) {
|
|
26165
|
-
return true;
|
|
26166
|
-
}
|
|
26167
|
-
}
|
|
26168
|
-
return false;
|
|
26169
|
-
}
|
|
26170
|
-
isSomeSelected() {
|
|
26171
|
-
if (this.selectedRecords.length > 0 &&
|
|
26172
|
-
this.selectedRecords.length < this.records.length) {
|
|
26173
|
-
return true;
|
|
26174
|
-
}
|
|
26175
|
-
return false;
|
|
26176
|
-
}
|
|
26177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26178
|
-
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"] }] }); }
|
|
26179
|
-
}
|
|
26180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
26181
|
-
type: Component,
|
|
26182
|
-
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"] }]
|
|
26183
|
-
}], propDecorators: { selectedRecords: [{
|
|
26184
|
-
type: Input
|
|
26185
|
-
}], records: [{
|
|
26186
|
-
type: Input
|
|
26187
|
-
}], totalHits: [{
|
|
26188
|
-
type: Input
|
|
26189
|
-
}], sortBy: [{
|
|
26190
|
-
type: Input
|
|
26191
|
-
}], recordClick: [{
|
|
26192
|
-
type: Output
|
|
26193
|
-
}], recordsSelect: [{
|
|
26194
|
-
type: Output
|
|
26195
|
-
}], recordsDeselect: [{
|
|
26196
|
-
type: Output
|
|
26197
|
-
}], sortByChange: [{
|
|
26198
|
-
type: Output
|
|
26199
|
-
}] } });
|
|
26200
|
-
|
|
26201
26176
|
class UiSearchModule {
|
|
26202
26177
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26203
26178
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26210,8 +26185,7 @@ class UiSearchModule {
|
|
|
26210
26185
|
ResultsHitsNumberComponent,
|
|
26211
26186
|
ResultsListItemComponent,
|
|
26212
26187
|
RecordPreviewFeedComponent,
|
|
26213
|
-
RecordPreviewRowComponent,
|
|
26214
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26188
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26215
26189
|
FacetsModule$1,
|
|
26216
26190
|
FormsModule,
|
|
26217
26191
|
ReactiveFormsModule,
|
|
@@ -26222,7 +26196,8 @@ class UiSearchModule {
|
|
|
26222
26196
|
UiElementsModule,
|
|
26223
26197
|
MatIconModule,
|
|
26224
26198
|
MatCheckboxModule,
|
|
26225
|
-
RouterLink
|
|
26199
|
+
RouterLink,
|
|
26200
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26226
26201
|
RecordPreviewCardComponent,
|
|
26227
26202
|
RecordPreviewTextComponent,
|
|
26228
26203
|
RecordPreviewTitleComponent,
|
|
@@ -26232,8 +26207,7 @@ class UiSearchModule {
|
|
|
26232
26207
|
RecordPreviewComponent,
|
|
26233
26208
|
ResultsHitsNumberComponent,
|
|
26234
26209
|
RecordPreviewFeedComponent,
|
|
26235
|
-
RecordPreviewRowComponent
|
|
26236
|
-
RecordTableComponent] }); }
|
|
26210
|
+
RecordPreviewRowComponent] }); }
|
|
26237
26211
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26238
26212
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26239
26213
|
], imports: [CommonModule,
|
|
@@ -26248,7 +26222,8 @@ class UiSearchModule {
|
|
|
26248
26222
|
UiInputsModule,
|
|
26249
26223
|
UiElementsModule,
|
|
26250
26224
|
MatIconModule,
|
|
26251
|
-
MatCheckboxModule,
|
|
26225
|
+
MatCheckboxModule,
|
|
26226
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26252
26227
|
}
|
|
26253
26228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26254
26229
|
type: NgModule,
|
|
@@ -26265,7 +26240,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26265
26240
|
ResultsListItemComponent,
|
|
26266
26241
|
RecordPreviewFeedComponent,
|
|
26267
26242
|
RecordPreviewRowComponent,
|
|
26268
|
-
RecordTableComponent,
|
|
26269
26243
|
],
|
|
26270
26244
|
imports: [
|
|
26271
26245
|
CommonModule,
|
|
@@ -26282,6 +26256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26282
26256
|
MatIconModule,
|
|
26283
26257
|
MatCheckboxModule,
|
|
26284
26258
|
RouterLink,
|
|
26259
|
+
InteractiveTableComponent,
|
|
26285
26260
|
],
|
|
26286
26261
|
exports: [
|
|
26287
26262
|
RecordPreviewListComponent,
|
|
@@ -26295,7 +26270,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26295
26270
|
ResultsHitsNumberComponent,
|
|
26296
26271
|
RecordPreviewFeedComponent,
|
|
26297
26272
|
RecordPreviewRowComponent,
|
|
26298
|
-
RecordTableComponent,
|
|
26299
26273
|
],
|
|
26300
26274
|
providers: [
|
|
26301
26275
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -26854,6 +26828,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26854
26828
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26855
26829
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26856
26830
|
|
|
26831
|
+
// this geometry will be used to filter & boost results accordingly
|
|
26832
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
26833
|
+
|
|
26857
26834
|
class SearchFacade {
|
|
26858
26835
|
constructor(store, filterGeometry) {
|
|
26859
26836
|
this.store = store;
|
|
@@ -26958,6 +26935,7 @@ class SearchFacade {
|
|
|
26958
26935
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
26959
26936
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
26960
26937
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
26938
|
+
return this;
|
|
26961
26939
|
}
|
|
26962
26940
|
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 }); }
|
|
26963
26941
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27342,8 +27320,11 @@ class FuzzySearchComponent {
|
|
|
27342
27320
|
this.searchService.updateFilters({ any });
|
|
27343
27321
|
}
|
|
27344
27322
|
}
|
|
27345
|
-
handleInputCleared() {
|
|
27346
|
-
this.
|
|
27323
|
+
async handleInputCleared() {
|
|
27324
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27325
|
+
if (currentSearchFilters.any) {
|
|
27326
|
+
this.searchService.updateFilters({ any: '' });
|
|
27327
|
+
}
|
|
27347
27328
|
}
|
|
27348
27329
|
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 }); }
|
|
27349
27330
|
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 }); }
|
|
@@ -27423,6 +27404,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27423
27404
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27424
27405
|
}] }]; } });
|
|
27425
27406
|
|
|
27407
|
+
// expects the replacement key ${uuid}
|
|
27408
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27409
|
+
|
|
27426
27410
|
class FavoriteStarComponent {
|
|
27427
27411
|
set record(value) {
|
|
27428
27412
|
this.record_ = value;
|
|
@@ -27684,9 +27668,11 @@ class SearchEffects {
|
|
|
27684
27668
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27685
27669
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27686
27670
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27687
|
-
return of([state, favorites,
|
|
27671
|
+
return of([state, favorites, undefined]);
|
|
27688
27672
|
}
|
|
27689
27673
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27674
|
+
if (!geom)
|
|
27675
|
+
return;
|
|
27690
27676
|
try {
|
|
27691
27677
|
const trace = valid$1(geom, true);
|
|
27692
27678
|
if (trace?.length > 0) {
|
|
@@ -27698,7 +27684,7 @@ class SearchEffects {
|
|
|
27698
27684
|
throw new Error();
|
|
27699
27685
|
}
|
|
27700
27686
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27701
|
-
return of([state, favorites,
|
|
27687
|
+
return of([state, favorites, undefined]);
|
|
27702
27688
|
}));
|
|
27703
27689
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27704
27690
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -27797,10 +27783,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27797
27783
|
class AbstractSearchField {
|
|
27798
27784
|
}
|
|
27799
27785
|
class SimpleSearchField {
|
|
27800
|
-
constructor(esFieldName, order = 'asc',
|
|
27786
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27801
27787
|
this.esFieldName = esFieldName;
|
|
27802
|
-
this.order = order;
|
|
27803
27788
|
this.injector = injector;
|
|
27789
|
+
this.order = order;
|
|
27790
|
+
this.orderType = orderType;
|
|
27804
27791
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27805
27792
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27806
27793
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27811,12 +27798,12 @@ class SimpleSearchField {
|
|
|
27811
27798
|
type: 'terms',
|
|
27812
27799
|
field: this.esFieldName,
|
|
27813
27800
|
limit: 1000,
|
|
27814
|
-
sort: [this.order,
|
|
27801
|
+
sort: [this.order, this.orderType],
|
|
27815
27802
|
},
|
|
27816
27803
|
};
|
|
27817
27804
|
}
|
|
27818
27805
|
async getBucketLabel(bucket) {
|
|
27819
|
-
return bucket.term;
|
|
27806
|
+
return bucket.term.toString();
|
|
27820
27807
|
}
|
|
27821
27808
|
getAvailableValues() {
|
|
27822
27809
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27844,9 +27831,13 @@ class SimpleSearchField {
|
|
|
27844
27831
|
return of(values);
|
|
27845
27832
|
}
|
|
27846
27833
|
}
|
|
27847
|
-
class
|
|
27848
|
-
constructor() {
|
|
27849
|
-
super(
|
|
27834
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
27835
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27836
|
+
super(esFieldName, injector, order, orderType);
|
|
27837
|
+
this.esFieldName = esFieldName;
|
|
27838
|
+
this.injector = injector;
|
|
27839
|
+
this.order = order;
|
|
27840
|
+
this.orderType = orderType;
|
|
27850
27841
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27851
27842
|
}
|
|
27852
27843
|
async getTranslation(key) {
|
|
@@ -27856,26 +27847,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27856
27847
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27857
27848
|
}
|
|
27858
27849
|
getAvailableValues() {
|
|
27850
|
+
if (this.orderType === 'count')
|
|
27851
|
+
return super.getAvailableValues();
|
|
27859
27852
|
// sort values by alphabetical order
|
|
27860
27853
|
return super
|
|
27861
27854
|
.getAvailableValues()
|
|
27862
27855
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27863
27856
|
}
|
|
27864
27857
|
}
|
|
27865
|
-
|
|
27866
|
-
|
|
27867
|
-
|
|
27868
|
-
|
|
27858
|
+
/**
|
|
27859
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
27860
|
+
* to the defined METADATA_LANGUAGE token
|
|
27861
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
27862
|
+
*/
|
|
27863
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
27864
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27865
|
+
super(esFieldName, injector, order, orderType);
|
|
27866
|
+
this.esFieldName = esFieldName;
|
|
27867
|
+
this.injector = injector;
|
|
27868
|
+
this.order = order;
|
|
27869
|
+
this.orderType = orderType;
|
|
27869
27870
|
this.langService = this.injector.get(LangService);
|
|
27870
|
-
this.
|
|
27871
|
-
|
|
27872
|
-
|
|
27873
|
-
|
|
27874
|
-
|
|
27875
|
-
}
|
|
27876
|
-
|
|
27877
|
-
|
|
27878
|
-
|
|
27871
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
27872
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
27873
|
+
// permalinks that might not work for different users
|
|
27874
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
27875
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
27876
|
+
}
|
|
27877
|
+
else {
|
|
27878
|
+
this.esFieldName += '.default';
|
|
27879
|
+
}
|
|
27879
27880
|
}
|
|
27880
27881
|
}
|
|
27881
27882
|
class FullTextSearchField {
|
|
@@ -27895,7 +27896,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
27895
27896
|
marker('search.filters.isSpatial.no');
|
|
27896
27897
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
27897
27898
|
constructor(injector) {
|
|
27898
|
-
super('isSpatial', 'asc'
|
|
27899
|
+
super('isSpatial', injector, 'asc');
|
|
27899
27900
|
this.translateService = this.injector.get(TranslateService);
|
|
27900
27901
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
27901
27902
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -27945,7 +27946,7 @@ marker('search.filters.license.unknown');
|
|
|
27945
27946
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
27946
27947
|
class LicenseSearchField extends SimpleSearchField {
|
|
27947
27948
|
constructor(injector) {
|
|
27948
|
-
super('license', 'asc'
|
|
27949
|
+
super('license', injector, 'asc');
|
|
27949
27950
|
this.translateService = this.injector.get(TranslateService);
|
|
27950
27951
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
27951
27952
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -28029,7 +28030,7 @@ class OrganizationSearchField {
|
|
|
28029
28030
|
}
|
|
28030
28031
|
class OwnerSearchField extends SimpleSearchField {
|
|
28031
28032
|
constructor(injector) {
|
|
28032
|
-
super('owner', 'asc'
|
|
28033
|
+
super('owner', injector, 'asc');
|
|
28033
28034
|
}
|
|
28034
28035
|
getAvailableValues() {
|
|
28035
28036
|
return of([]);
|
|
@@ -28038,6 +28039,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
28038
28039
|
|
|
28039
28040
|
marker('search.filters.format');
|
|
28040
28041
|
marker('search.filters.inspireKeyword');
|
|
28042
|
+
marker('search.filters.keyword');
|
|
28041
28043
|
marker('search.filters.isSpatial');
|
|
28042
28044
|
marker('search.filters.license');
|
|
28043
28045
|
marker('search.filters.publicationYear');
|
|
@@ -28055,13 +28057,14 @@ class FieldsService {
|
|
|
28055
28057
|
this.injector = injector;
|
|
28056
28058
|
this.fields = {
|
|
28057
28059
|
publisher: new OrganizationSearchField(this.injector),
|
|
28058
|
-
format: new SimpleSearchField('format', 'asc'
|
|
28059
|
-
resourceType: new
|
|
28060
|
-
representationType: new
|
|
28061
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
28062
|
-
topic: new
|
|
28063
|
-
inspireKeyword: new
|
|
28064
|
-
|
|
28060
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28061
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28062
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28063
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28064
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28065
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28066
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28067
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
28065
28068
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
28066
28069
|
q: new FullTextSearchField(),
|
|
28067
28070
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28135,10 +28138,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28135
28138
|
type: Input
|
|
28136
28139
|
}] } });
|
|
28137
28140
|
|
|
28138
|
-
// this geometry will be used to filter & boost results accordingly
|
|
28139
|
-
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
28140
|
-
// expects the replacement key ${uuid}
|
|
28141
|
-
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
28142
28141
|
class FeatureSearchModule {
|
|
28143
28142
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28144
28143
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28237,6 +28236,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28237
28236
|
}]
|
|
28238
28237
|
}] });
|
|
28239
28238
|
|
|
28239
|
+
class ResultsTableComponent {
|
|
28240
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28241
|
+
this.searchFacade = searchFacade;
|
|
28242
|
+
this.searchService = searchService;
|
|
28243
|
+
this.selectionService = selectionService;
|
|
28244
|
+
this.recordClick = new EventEmitter();
|
|
28245
|
+
this.records$ = this.searchFacade.results$;
|
|
28246
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28247
|
+
}
|
|
28248
|
+
dateToString(date) {
|
|
28249
|
+
return date?.toLocaleDateString(undefined, {
|
|
28250
|
+
year: 'numeric',
|
|
28251
|
+
month: 'long',
|
|
28252
|
+
day: 'numeric',
|
|
28253
|
+
timeZone: 'UTC',
|
|
28254
|
+
});
|
|
28255
|
+
}
|
|
28256
|
+
getStatus(isPublishedToAll) {
|
|
28257
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28258
|
+
}
|
|
28259
|
+
getRecordFormats(record) {
|
|
28260
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28261
|
+
return [];
|
|
28262
|
+
}
|
|
28263
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28264
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28265
|
+
return formats;
|
|
28266
|
+
}
|
|
28267
|
+
formatUserInfo(userInfo) {
|
|
28268
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28269
|
+
if (infos && infos.length === 4) {
|
|
28270
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28271
|
+
}
|
|
28272
|
+
return undefined;
|
|
28273
|
+
}
|
|
28274
|
+
getBadgeColor(format) {
|
|
28275
|
+
return getBadgeColor(format);
|
|
28276
|
+
}
|
|
28277
|
+
handleRecordClick(item) {
|
|
28278
|
+
this.recordClick.emit(item);
|
|
28279
|
+
}
|
|
28280
|
+
setSortBy(col, order) {
|
|
28281
|
+
this.searchService.setSortBy([order, col]);
|
|
28282
|
+
}
|
|
28283
|
+
isSortedBy(col) {
|
|
28284
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28285
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28286
|
+
? sortOrder
|
|
28287
|
+
: [sortOrder];
|
|
28288
|
+
for (const sort of sortArray) {
|
|
28289
|
+
if (sort[1] === col) {
|
|
28290
|
+
return sort[0];
|
|
28291
|
+
}
|
|
28292
|
+
}
|
|
28293
|
+
return null;
|
|
28294
|
+
}));
|
|
28295
|
+
}
|
|
28296
|
+
isChecked(record) {
|
|
28297
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28298
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28299
|
+
}));
|
|
28300
|
+
}
|
|
28301
|
+
handleRecordSelectedChange(selected, record) {
|
|
28302
|
+
if (!selected) {
|
|
28303
|
+
this.selectionService.deselectRecords([record]);
|
|
28304
|
+
}
|
|
28305
|
+
else {
|
|
28306
|
+
this.selectionService.selectRecords([record]);
|
|
28307
|
+
}
|
|
28308
|
+
}
|
|
28309
|
+
async toggleSelectAll() {
|
|
28310
|
+
const records = await firstValueFrom(this.records$);
|
|
28311
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28312
|
+
this.selectionService.deselectRecords(records);
|
|
28313
|
+
}
|
|
28314
|
+
else {
|
|
28315
|
+
this.selectionService.selectRecords(records);
|
|
28316
|
+
}
|
|
28317
|
+
}
|
|
28318
|
+
isAllSelected() {
|
|
28319
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28320
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28321
|
+
}));
|
|
28322
|
+
}
|
|
28323
|
+
isSomeSelected() {
|
|
28324
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28325
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28326
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28327
|
+
return !allSelected && someSelected;
|
|
28328
|
+
}));
|
|
28329
|
+
}
|
|
28330
|
+
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 }); }
|
|
28331
|
+
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"] }] }); }
|
|
28332
|
+
}
|
|
28333
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28334
|
+
type: Component,
|
|
28335
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28336
|
+
CommonModule,
|
|
28337
|
+
UiInputsModule,
|
|
28338
|
+
InteractiveTableComponent,
|
|
28339
|
+
InteractiveTableColumnComponent,
|
|
28340
|
+
MatIconModule,
|
|
28341
|
+
TranslateModule,
|
|
28342
|
+
], 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" }]
|
|
28343
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28344
|
+
type: Output
|
|
28345
|
+
}] } });
|
|
28346
|
+
|
|
28240
28347
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28241
28348
|
get mapLinks() {
|
|
28242
28349
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28366,6 +28473,105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28366
28473
|
args: [{ selector: 'gn-ui-add-layer-from-wms', template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n" }]
|
|
28367
28474
|
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
28368
28475
|
|
|
28476
|
+
const INVALID_FILE_FORMAT_ERROR_MESSAGE = 'Invalid file format';
|
|
28477
|
+
class AddLayerFromFileComponent {
|
|
28478
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
28479
|
+
this.mapFacade = mapFacade;
|
|
28480
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
28481
|
+
this.errorMessage = null;
|
|
28482
|
+
this.successMessage = null;
|
|
28483
|
+
this.loading = false;
|
|
28484
|
+
this.acceptedMimeType = ['.geojson'];
|
|
28485
|
+
this.maxFileSize = 5000000;
|
|
28486
|
+
}
|
|
28487
|
+
async handleFileChange(file) {
|
|
28488
|
+
if (!file) {
|
|
28489
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28490
|
+
return;
|
|
28491
|
+
}
|
|
28492
|
+
if (file.size > this.maxFileSize) {
|
|
28493
|
+
this.displayMessage('File size exceeds the limit of 5MB', 'error');
|
|
28494
|
+
return;
|
|
28495
|
+
}
|
|
28496
|
+
await this.addLayer(file);
|
|
28497
|
+
}
|
|
28498
|
+
async addLayer(file) {
|
|
28499
|
+
this.errorMessage = null;
|
|
28500
|
+
this.loading = true;
|
|
28501
|
+
try {
|
|
28502
|
+
if (!this.isFileFormatValid(file)) {
|
|
28503
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28504
|
+
return;
|
|
28505
|
+
}
|
|
28506
|
+
const fileExtension = this.getFileExtension(file);
|
|
28507
|
+
switch (fileExtension) {
|
|
28508
|
+
case 'geojson':
|
|
28509
|
+
await this.addGeoJsonLayer(file);
|
|
28510
|
+
break;
|
|
28511
|
+
default:
|
|
28512
|
+
this.displayMessage(INVALID_FILE_FORMAT_ERROR_MESSAGE, 'error');
|
|
28513
|
+
break;
|
|
28514
|
+
}
|
|
28515
|
+
}
|
|
28516
|
+
catch (error) {
|
|
28517
|
+
const err = error;
|
|
28518
|
+
this.displayMessage('Error loading file: ' + err.message, 'error');
|
|
28519
|
+
}
|
|
28520
|
+
finally {
|
|
28521
|
+
this.loading = false;
|
|
28522
|
+
}
|
|
28523
|
+
}
|
|
28524
|
+
addGeoJsonLayer(file) {
|
|
28525
|
+
return new Promise((resolve, reject) => {
|
|
28526
|
+
try {
|
|
28527
|
+
const reader = new FileReader();
|
|
28528
|
+
reader.onload = () => {
|
|
28529
|
+
const result = reader.result;
|
|
28530
|
+
const title = file.name.split('.').slice(0, -1).join('.');
|
|
28531
|
+
const layerToAdd = {
|
|
28532
|
+
type: 'geojson',
|
|
28533
|
+
data: result,
|
|
28534
|
+
};
|
|
28535
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: title });
|
|
28536
|
+
this.displayMessage('File successfully added to map', 'success');
|
|
28537
|
+
resolve();
|
|
28538
|
+
};
|
|
28539
|
+
reader.onerror = reject;
|
|
28540
|
+
reader.readAsText(file);
|
|
28541
|
+
}
|
|
28542
|
+
catch (error) {
|
|
28543
|
+
reject(error);
|
|
28544
|
+
}
|
|
28545
|
+
});
|
|
28546
|
+
}
|
|
28547
|
+
isFileFormatValid(file) {
|
|
28548
|
+
const fileExtension = this.getFileExtension(file);
|
|
28549
|
+
return this.acceptedMimeType.includes(`.${fileExtension}`);
|
|
28550
|
+
}
|
|
28551
|
+
getFileExtension(file) {
|
|
28552
|
+
return file.name.split('.').pop();
|
|
28553
|
+
}
|
|
28554
|
+
displayMessage(message, type) {
|
|
28555
|
+
if (type === 'success') {
|
|
28556
|
+
this.successMessage = message;
|
|
28557
|
+
}
|
|
28558
|
+
else if (type === 'error') {
|
|
28559
|
+
this.errorMessage = message;
|
|
28560
|
+
}
|
|
28561
|
+
setTimeout(() => {
|
|
28562
|
+
this.successMessage = null;
|
|
28563
|
+
this.errorMessage = null;
|
|
28564
|
+
this.changeDetectorRef.detectChanges();
|
|
28565
|
+
}, 5000);
|
|
28566
|
+
}
|
|
28567
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28568
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file", ngImport: i0, template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"flex-grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\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: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: ["placeholder", "accept"], outputs: ["fileChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28569
|
+
}
|
|
28570
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, decorators: [{
|
|
28571
|
+
type: Component,
|
|
28572
|
+
args: [{ selector: 'gn-ui-add-layer-from-file', template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"flex-grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\n</div>\n" }]
|
|
28573
|
+
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
28574
|
+
|
|
28369
28575
|
class AddLayerFromWfsComponent {
|
|
28370
28576
|
constructor(mapFacade, changeDetectorRef) {
|
|
28371
28577
|
this.mapFacade = mapFacade;
|
|
@@ -28427,11 +28633,11 @@ class LayersPanelComponent {
|
|
|
28427
28633
|
this.mapFacade.removeLayer(index);
|
|
28428
28634
|
}
|
|
28429
28635
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28430
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3
|
|
28636
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28431
28637
|
}
|
|
28432
28638
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
28433
28639
|
type: Component,
|
|
28434
|
-
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3
|
|
28640
|
+
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n" }]
|
|
28435
28641
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28436
28642
|
|
|
28437
28643
|
class MapEffects {
|
|
@@ -28464,6 +28670,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28464
28670
|
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-context [context]=\"context$ | async\"></gn-ui-map-context>\n" }]
|
|
28465
28671
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28466
28672
|
|
|
28673
|
+
const GEOCODING_PROVIDER = new InjectionToken('geocoding-provider');
|
|
28674
|
+
class GeocodingService {
|
|
28675
|
+
constructor(provider) {
|
|
28676
|
+
this.provider = provider;
|
|
28677
|
+
}
|
|
28678
|
+
query(text) {
|
|
28679
|
+
let queryObservable;
|
|
28680
|
+
switch (this.provider[0]) {
|
|
28681
|
+
case 'geoadmin':
|
|
28682
|
+
queryObservable = from(queryGeoadmin(text, this.provider[1]));
|
|
28683
|
+
break;
|
|
28684
|
+
case 'geonames':
|
|
28685
|
+
queryObservable = from(queryGeonames(text, this.provider[1]));
|
|
28686
|
+
break;
|
|
28687
|
+
case 'data-gouv-fr':
|
|
28688
|
+
queryObservable = from(queryDataGouvFr(text, this.provider[1]));
|
|
28689
|
+
break;
|
|
28690
|
+
default:
|
|
28691
|
+
return throwError(() => new Error(`Unsupported geocoding provider: ${this.provider[0]}`));
|
|
28692
|
+
}
|
|
28693
|
+
return queryObservable.pipe(catchError((error) => throwError(error)));
|
|
28694
|
+
}
|
|
28695
|
+
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 }); }
|
|
28696
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, providedIn: 'root' }); }
|
|
28697
|
+
}
|
|
28698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, decorators: [{
|
|
28699
|
+
type: Injectable,
|
|
28700
|
+
args: [{
|
|
28701
|
+
providedIn: 'root',
|
|
28702
|
+
}]
|
|
28703
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28704
|
+
type: Inject,
|
|
28705
|
+
args: [GEOCODING_PROVIDER]
|
|
28706
|
+
}] }]; } });
|
|
28707
|
+
|
|
28708
|
+
class GeocodingComponent {
|
|
28709
|
+
constructor(mapManager, geocodingService) {
|
|
28710
|
+
this.mapManager = mapManager;
|
|
28711
|
+
this.geocodingService = geocodingService;
|
|
28712
|
+
this.searchText = '';
|
|
28713
|
+
this.results = [];
|
|
28714
|
+
this.searchTextChanged = new Subject();
|
|
28715
|
+
this.destroy$ = new Subject();
|
|
28716
|
+
this.errorMessage = null;
|
|
28717
|
+
this.searchTextChanged
|
|
28718
|
+
.pipe(debounceTime(300), switchMap$1((searchText) => {
|
|
28719
|
+
return from(this.geocodingService.query(searchText)).pipe(catchError$1((error) => {
|
|
28720
|
+
this.errorMessage =
|
|
28721
|
+
'An error occurred while searching. Please try again.';
|
|
28722
|
+
console.error(error);
|
|
28723
|
+
return [];
|
|
28724
|
+
}));
|
|
28725
|
+
}), takeUntil(this.destroy$))
|
|
28726
|
+
.subscribe((results) => {
|
|
28727
|
+
this.results = results;
|
|
28728
|
+
});
|
|
28729
|
+
}
|
|
28730
|
+
ngOnDestroy() {
|
|
28731
|
+
this.destroy$.next();
|
|
28732
|
+
this.destroy$.complete();
|
|
28733
|
+
}
|
|
28734
|
+
onSearchChange(searchText) {
|
|
28735
|
+
if (!searchText) {
|
|
28736
|
+
this.clearSearch();
|
|
28737
|
+
return;
|
|
28738
|
+
}
|
|
28739
|
+
else {
|
|
28740
|
+
this.searchTextChanged.next(searchText);
|
|
28741
|
+
}
|
|
28742
|
+
}
|
|
28743
|
+
clearSearch() {
|
|
28744
|
+
this.searchText = '';
|
|
28745
|
+
this.results = [];
|
|
28746
|
+
this.errorMessage = null;
|
|
28747
|
+
}
|
|
28748
|
+
zoomToLocation(result) {
|
|
28749
|
+
const map = this.mapManager.map;
|
|
28750
|
+
const view = map.getView();
|
|
28751
|
+
const geometry = result.geom;
|
|
28752
|
+
if (geometry.type === 'Point') {
|
|
28753
|
+
this.zoomToPoint(geometry.coordinates, view);
|
|
28754
|
+
}
|
|
28755
|
+
else if (geometry.type === 'Polygon') {
|
|
28756
|
+
this.zoomToPolygon(geometry.coordinates, view);
|
|
28757
|
+
}
|
|
28758
|
+
else {
|
|
28759
|
+
console.error(`Unsupported geometry type: ${geometry.type}`);
|
|
28760
|
+
}
|
|
28761
|
+
}
|
|
28762
|
+
zoomToPoint(pointCoords, view) {
|
|
28763
|
+
const transformedCoords = fromLonLat(pointCoords);
|
|
28764
|
+
view.setCenter(transformedCoords);
|
|
28765
|
+
view.setZoom(12);
|
|
28766
|
+
}
|
|
28767
|
+
zoomToPolygon(polygonCoords, view) {
|
|
28768
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
28769
|
+
const polygon = new Polygon([transformedCoords]);
|
|
28770
|
+
view.fit(polygon, {
|
|
28771
|
+
duration: 100,
|
|
28772
|
+
maxZoom: 12,
|
|
28773
|
+
});
|
|
28774
|
+
}
|
|
28775
|
+
onEnterPress() {
|
|
28776
|
+
if (this.results && this.results.length > 0) {
|
|
28777
|
+
this.zoomToLocation(this.results[0]);
|
|
28778
|
+
}
|
|
28779
|
+
}
|
|
28780
|
+
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 }); }
|
|
28781
|
+
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" }] }); }
|
|
28782
|
+
}
|
|
28783
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
28784
|
+
type: Component,
|
|
28785
|
+
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" }]
|
|
28786
|
+
}], ctorParameters: function () { return [{ type: MapManagerService }, { type: GeocodingService }]; } });
|
|
28787
|
+
|
|
28467
28788
|
class FeatureMapModule {
|
|
28468
28789
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28469
28790
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, declarations: [MapContextComponent,
|
|
@@ -28473,7 +28794,9 @@ class FeatureMapModule {
|
|
|
28473
28794
|
MapContainerComponent,
|
|
28474
28795
|
AddLayerRecordPreviewComponent,
|
|
28475
28796
|
AddLayerFromWmsComponent,
|
|
28476
|
-
|
|
28797
|
+
AddLayerFromFileComponent,
|
|
28798
|
+
AddLayerFromWfsComponent,
|
|
28799
|
+
GeocodingComponent], imports: [CommonModule,
|
|
28477
28800
|
UiMapModule,
|
|
28478
28801
|
UiLayoutModule,
|
|
28479
28802
|
MatIconModule,
|
|
@@ -28484,13 +28807,18 @@ class FeatureMapModule {
|
|
|
28484
28807
|
MapInstanceDirective,
|
|
28485
28808
|
LayersPanelComponent,
|
|
28486
28809
|
AddLayerFromCatalogComponent,
|
|
28487
|
-
MapContainerComponent
|
|
28810
|
+
MapContainerComponent,
|
|
28811
|
+
GeocodingComponent] }); }
|
|
28488
28812
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
28489
28813
|
{
|
|
28490
28814
|
provide: FEATURE_MAP_OPTIONS,
|
|
28491
28815
|
useValue: defaultMapOptions,
|
|
28492
28816
|
},
|
|
28493
28817
|
MapFacade,
|
|
28818
|
+
{
|
|
28819
|
+
provide: GEOCODING_PROVIDER,
|
|
28820
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28821
|
+
},
|
|
28494
28822
|
], imports: [CommonModule,
|
|
28495
28823
|
UiMapModule,
|
|
28496
28824
|
UiLayoutModule,
|
|
@@ -28514,7 +28842,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28514
28842
|
MapContainerComponent,
|
|
28515
28843
|
AddLayerRecordPreviewComponent,
|
|
28516
28844
|
AddLayerFromWmsComponent,
|
|
28845
|
+
AddLayerFromFileComponent,
|
|
28517
28846
|
AddLayerFromWfsComponent,
|
|
28847
|
+
GeocodingComponent,
|
|
28518
28848
|
],
|
|
28519
28849
|
exports: [
|
|
28520
28850
|
MapContextComponent,
|
|
@@ -28522,6 +28852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28522
28852
|
LayersPanelComponent,
|
|
28523
28853
|
AddLayerFromCatalogComponent,
|
|
28524
28854
|
MapContainerComponent,
|
|
28855
|
+
GeocodingComponent,
|
|
28525
28856
|
],
|
|
28526
28857
|
imports: [
|
|
28527
28858
|
CommonModule,
|
|
@@ -28542,6 +28873,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28542
28873
|
useValue: defaultMapOptions,
|
|
28543
28874
|
},
|
|
28544
28875
|
MapFacade,
|
|
28876
|
+
{
|
|
28877
|
+
provide: GEOCODING_PROVIDER,
|
|
28878
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28879
|
+
},
|
|
28545
28880
|
],
|
|
28546
28881
|
}]
|
|
28547
28882
|
}] });
|
|
@@ -28636,7 +28971,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28636
28971
|
...state,
|
|
28637
28972
|
chartConfig,
|
|
28638
28973
|
})), on(close, (state) => {
|
|
28639
|
-
// eslint-disable-next-line
|
|
28974
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28640
28975
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28641
28976
|
return stateWithoutMd;
|
|
28642
28977
|
}));
|
|
@@ -29903,15 +30238,16 @@ class DataService {
|
|
|
29903
30238
|
// Pour DL toutes les données
|
|
29904
30239
|
return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => urls.all), map$1((urls) => Object.keys(urls).map((format) => ({
|
|
29905
30240
|
...wfsLink,
|
|
30241
|
+
type: 'download',
|
|
29906
30242
|
url: new URL(urls[format]),
|
|
29907
|
-
mimeType: getMimeTypeForFormat(
|
|
30243
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
29908
30244
|
}))));
|
|
29909
30245
|
}
|
|
29910
30246
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
29911
30247
|
return ['json', 'geojson'].map((format) => ({
|
|
29912
30248
|
...esriRestLink,
|
|
29913
30249
|
url: new URL(this.getDownloadUrlFromEsriRest(esriRestLink.url.toString(), format)),
|
|
29914
|
-
mimeType: getMimeTypeForFormat(
|
|
30250
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
29915
30251
|
}));
|
|
29916
30252
|
}
|
|
29917
30253
|
readAsGeoJson(link) {
|
|
@@ -30305,12 +30641,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30305
30641
|
}] } });
|
|
30306
30642
|
|
|
30307
30643
|
class MapViewComponent {
|
|
30308
|
-
constructor(mdViewFacade, mapManager, mapUtils, dataService,
|
|
30644
|
+
constructor(mdViewFacade, mapManager, mapUtils, dataService, featureInfo, changeRef, styleService) {
|
|
30309
30645
|
this.mdViewFacade = mdViewFacade;
|
|
30310
30646
|
this.mapManager = mapManager;
|
|
30311
30647
|
this.mapUtils = mapUtils;
|
|
30312
30648
|
this.dataService = dataService;
|
|
30313
|
-
this.proxy = proxy;
|
|
30314
30649
|
this.featureInfo = featureInfo;
|
|
30315
30650
|
this.changeRef = changeRef;
|
|
30316
30651
|
this.styleService = styleService;
|
|
@@ -30345,7 +30680,7 @@ class MapViewComponent {
|
|
|
30345
30680
|
return of([]);
|
|
30346
30681
|
}), finalize(() => (this.loading = false)));
|
|
30347
30682
|
}));
|
|
30348
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => this.mapUtils.getLayerExtent(layers[0]).pipe(catchError((error) => {
|
|
30683
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((error) => {
|
|
30349
30684
|
console.warn(error); // FIXME: report this to the user somehow
|
|
30350
30685
|
return of(undefined);
|
|
30351
30686
|
}), map$1((extent) => ({
|
|
@@ -30353,7 +30688,18 @@ class MapViewComponent {
|
|
|
30353
30688
|
view: {
|
|
30354
30689
|
extent,
|
|
30355
30690
|
},
|
|
30356
|
-
})), tap$1(() => this.resetSelection()))))
|
|
30691
|
+
})), tap$1(() => this.resetSelection()))), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
30692
|
+
if (context.view.extent)
|
|
30693
|
+
return context;
|
|
30694
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
30695
|
+
return {
|
|
30696
|
+
...context,
|
|
30697
|
+
view: {
|
|
30698
|
+
...context.view,
|
|
30699
|
+
extent,
|
|
30700
|
+
},
|
|
30701
|
+
};
|
|
30702
|
+
}));
|
|
30357
30703
|
}
|
|
30358
30704
|
ngOnDestroy() {
|
|
30359
30705
|
this.subscription.unsubscribe();
|
|
@@ -30406,13 +30752,13 @@ class MapViewComponent {
|
|
|
30406
30752
|
selectLinkToDisplay(link) {
|
|
30407
30753
|
this.selectedLinkIndex$.next(link);
|
|
30408
30754
|
}
|
|
30409
|
-
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:
|
|
30755
|
+
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 }); }
|
|
30410
30756
|
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 }); }
|
|
30411
30757
|
}
|
|
30412
30758
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
30413
30759
|
type: Component,
|
|
30414
30760
|
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" }]
|
|
30415
|
-
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type:
|
|
30761
|
+
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type: FeatureInfoService }, { type: i0.ChangeDetectorRef }, { type: MapStyleService }]; } });
|
|
30416
30762
|
|
|
30417
30763
|
class DataViewComponent {
|
|
30418
30764
|
constructor(mdViewFacade) {
|
|
@@ -30864,13 +31210,6 @@ class MyOrgService {
|
|
|
30864
31210
|
constructor(platformService, orgService) {
|
|
30865
31211
|
this.platformService = platformService;
|
|
30866
31212
|
this.orgService = orgService;
|
|
30867
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
30868
|
-
orgName: '',
|
|
30869
|
-
logoUrl: '',
|
|
30870
|
-
recordCount: 0,
|
|
30871
|
-
userCount: 0,
|
|
30872
|
-
userList: [],
|
|
30873
|
-
});
|
|
30874
31213
|
this.myOrgData$ = combineLatest([
|
|
30875
31214
|
this.platformService.getMe(),
|
|
30876
31215
|
this.platformService.getUsers(),
|
|
@@ -30889,7 +31228,7 @@ class MyOrgService {
|
|
|
30889
31228
|
userList,
|
|
30890
31229
|
userCount,
|
|
30891
31230
|
};
|
|
30892
|
-
}));
|
|
31231
|
+
}), shareReplay(1));
|
|
30893
31232
|
}
|
|
30894
31233
|
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 }); }
|
|
30895
31234
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -31582,11 +31921,11 @@ class RecordFormComponent {
|
|
|
31582
31921
|
return field.config.model;
|
|
31583
31922
|
}
|
|
31584
31923
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31585
|
-
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 }); }
|
|
31924
|
+
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 }); }
|
|
31586
31925
|
}
|
|
31587
31926
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31588
31927
|
type: Component,
|
|
31589
|
-
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" }]
|
|
31928
|
+
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" }]
|
|
31590
31929
|
}], ctorParameters: function () { return [{ type: EditorService }]; } });
|
|
31591
31930
|
|
|
31592
31931
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -31954,5 +32293,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31954
32293
|
* Generated bundle index. Do not edit.
|
|
31955
32294
|
*/
|
|
31956
32295
|
|
|
31957
|
-
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,
|
|
32296
|
+
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_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, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, 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 };
|
|
31958
32297
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|