geonetwork-ui 2.2.0-dev.886aae61 → 2.2.0-dev.95b40cd8
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 +5 -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-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -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/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -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 +23 -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 -3
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +11 -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 +7 -4
- 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 +3 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
- package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/index.mjs +3 -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 +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- 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 -17
- 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/related-record-card/related-record-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -3
- 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 +2 -2
- 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/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- 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/record-preview-card/record-preview-card.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
- 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 +106 -93
- package/esm2022/translations/en.json +38 -25
- package/esm2022/translations/es.json +17 -4
- package/esm2022/translations/fr.json +22 -9
- package/esm2022/translations/it.json +29 -16
- package/esm2022/translations/nl.json +17 -4
- package/esm2022/translations/pt.json +17 -4
- package/fesm2022/geonetwork-ui.mjs +1275 -788
- 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/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.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 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -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 +5 -4
- 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 +2 -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/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +7 -2
- 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/thumbnail/thumbnail.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +12 -11
- 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/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/ui-inputs.module.d.ts +2 -1
- 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 +4 -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/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +12 -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 +6 -2
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +16 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
- package/src/libs/feature/search/src/index.ts +3 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
- package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
- package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
- package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
- package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
- package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
- package/src/libs/ui/elements/src/index.ts +2 -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.css +0 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +54 -54
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +101 -45
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +31 -7
- 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/related-record-card/related-record-card.component.html +1 -1
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +4 -0
- 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/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/navigation-button/navigation-button.component.html +8 -3
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- 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 +106 -93
- package/translations/en.json +38 -25
- package/translations/es.json +17 -4
- package/translations/fr.json +22 -9
- package/translations/it.json +29 -16
- package/translations/nl.json +17 -4
- package/translations/pt.json +17 -4
- package/translations/sk.json +17 -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,11 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AccessConstraint,
|
|
3
2
|
CatalogRecord,
|
|
3
|
+
Constraint,
|
|
4
4
|
DatasetDistribution,
|
|
5
5
|
DatasetRecord,
|
|
6
6
|
DatasetServiceDistribution,
|
|
7
7
|
Individual,
|
|
8
|
-
License,
|
|
9
8
|
RecordStatus,
|
|
10
9
|
Role,
|
|
11
10
|
ServiceEndpoint,
|
|
@@ -374,35 +373,11 @@ function appendKeywords(keywords: string[], type: string | null) {
|
|
|
374
373
|
)
|
|
375
374
|
}
|
|
376
375
|
|
|
377
|
-
function
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
)
|
|
382
|
-
|
|
383
|
-
// remove legal constraints that *only* have 'otherRestrictions'
|
|
384
|
-
const otherConstraintsFilter = pipe(
|
|
385
|
-
findNestedElements(
|
|
386
|
-
'gmd:MD_LegalConstraints',
|
|
387
|
-
'gmd:accessConstraints',
|
|
388
|
-
'gmd:MD_RestrictionCode'
|
|
389
|
-
),
|
|
390
|
-
mapArray(readAttribute('codeListValue')),
|
|
391
|
-
(restrictionCodes) =>
|
|
392
|
-
restrictionCodes.every((code) => code === 'otherRestrictions')
|
|
393
|
-
)
|
|
394
|
-
return removeChildren(
|
|
395
|
-
pipe(
|
|
396
|
-
findChildrenElement('gmd:resourceConstraints'),
|
|
397
|
-
filterArray(
|
|
398
|
-
(el) => securityConstraintsFilter(el) || otherConstraintsFilter(el)
|
|
399
|
-
)
|
|
400
|
-
)
|
|
401
|
-
)
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
function createAccessConstraint(constraint: AccessConstraint) {
|
|
405
|
-
if (constraint.type === 'security') {
|
|
376
|
+
function createConstraint(
|
|
377
|
+
constraint: Constraint,
|
|
378
|
+
type: 'legal' | 'security' | 'other'
|
|
379
|
+
) {
|
|
380
|
+
if (type === 'security') {
|
|
406
381
|
return pipe(
|
|
407
382
|
createElement('gmd:resourceConstraints'),
|
|
408
383
|
createChild('gmd:MD_SecurityConstraints'),
|
|
@@ -422,29 +397,41 @@ function createAccessConstraint(constraint: AccessConstraint) {
|
|
|
422
397
|
)
|
|
423
398
|
)
|
|
424
399
|
)
|
|
400
|
+
} else if (type === 'legal') {
|
|
401
|
+
return pipe(
|
|
402
|
+
createElement('gmd:resourceConstraints'),
|
|
403
|
+
createChild('gmd:MD_LegalConstraints'),
|
|
404
|
+
appendChildren(
|
|
405
|
+
pipe(
|
|
406
|
+
createElement('gmd:accessConstraints'),
|
|
407
|
+
createChild('gmd:MD_RestrictionCode'),
|
|
408
|
+
addAttribute(
|
|
409
|
+
'codeList',
|
|
410
|
+
'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'
|
|
411
|
+
),
|
|
412
|
+
addAttribute('codeListValue', 'otherRestrictions')
|
|
413
|
+
),
|
|
414
|
+
pipe(
|
|
415
|
+
createElement('gmd:otherConstraints'),
|
|
416
|
+
writeCharacterString(constraint.text)
|
|
417
|
+
)
|
|
418
|
+
)
|
|
419
|
+
)
|
|
425
420
|
}
|
|
421
|
+
|
|
426
422
|
return pipe(
|
|
427
423
|
createElement('gmd:resourceConstraints'),
|
|
428
|
-
createChild('gmd:
|
|
424
|
+
createChild('gmd:MD_Constraints'),
|
|
429
425
|
appendChildren(
|
|
430
426
|
pipe(
|
|
431
|
-
createElement('gmd:
|
|
432
|
-
createChild('gmd:MD_RestrictionCode'),
|
|
433
|
-
addAttribute(
|
|
434
|
-
'codeList',
|
|
435
|
-
'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'
|
|
436
|
-
),
|
|
437
|
-
addAttribute('codeListValue', 'otherRestrictions')
|
|
438
|
-
),
|
|
439
|
-
pipe(
|
|
440
|
-
createElement('gmd:otherConstraints'),
|
|
427
|
+
createElement('gmd:useLimitation'),
|
|
441
428
|
writeCharacterString(constraint.text)
|
|
442
429
|
)
|
|
443
430
|
)
|
|
444
431
|
)
|
|
445
432
|
}
|
|
446
433
|
|
|
447
|
-
function
|
|
434
|
+
function removeOtherConstraints() {
|
|
448
435
|
return removeChildren(
|
|
449
436
|
pipe(
|
|
450
437
|
findChildrenElement('gmd:resourceConstraints'),
|
|
@@ -458,12 +445,37 @@ function removeUseLimitations() {
|
|
|
458
445
|
)
|
|
459
446
|
}
|
|
460
447
|
|
|
461
|
-
function
|
|
462
|
-
return
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
448
|
+
function removeSecurityConstraints() {
|
|
449
|
+
return removeChildren(
|
|
450
|
+
pipe(
|
|
451
|
+
findChildrenElement('gmd:resourceConstraints'),
|
|
452
|
+
filterArray(
|
|
453
|
+
pipe(
|
|
454
|
+
findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'),
|
|
455
|
+
(array) => array.length > 0
|
|
456
|
+
)
|
|
457
|
+
)
|
|
458
|
+
)
|
|
459
|
+
)
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
function removeLegalConstraints() {
|
|
463
|
+
return removeChildren(
|
|
464
|
+
pipe(
|
|
465
|
+
findChildrenElement('gmd:resourceConstraints'),
|
|
466
|
+
filterArray(
|
|
467
|
+
pipe(
|
|
468
|
+
findNestedElements(
|
|
469
|
+
'gmd:MD_LegalConstraints',
|
|
470
|
+
'gmd:accessConstraints',
|
|
471
|
+
'gmd:MD_RestrictionCode'
|
|
472
|
+
),
|
|
473
|
+
mapArray(readAttribute('codeListValue')),
|
|
474
|
+
(restrictionCodes) =>
|
|
475
|
+
restrictionCodes.every((code) => code !== 'license')
|
|
476
|
+
)
|
|
477
|
+
)
|
|
478
|
+
)
|
|
467
479
|
)
|
|
468
480
|
}
|
|
469
481
|
|
|
@@ -487,7 +499,7 @@ function removeLicenses() {
|
|
|
487
499
|
)
|
|
488
500
|
}
|
|
489
501
|
|
|
490
|
-
function createLicense(license:
|
|
502
|
+
function createLicense(license: Constraint) {
|
|
491
503
|
return pipe(
|
|
492
504
|
createElement('gmd:resourceConstraints'),
|
|
493
505
|
createChild('gmd:MD_LegalConstraints'),
|
|
@@ -741,30 +753,50 @@ export function writeThemes(record: CatalogRecord, rootEl: XmlElement) {
|
|
|
741
753
|
)(rootEl)
|
|
742
754
|
}
|
|
743
755
|
|
|
744
|
-
export function
|
|
756
|
+
export function writeLicenses(record: CatalogRecord, rootEl: XmlElement) {
|
|
757
|
+
pipe(
|
|
758
|
+
findOrCreateIdentification(),
|
|
759
|
+
removeLicenses(),
|
|
760
|
+
appendChildren(...record.licenses.map(createLicense))
|
|
761
|
+
)(rootEl)
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
export function writeLegalConstraints(
|
|
745
765
|
record: CatalogRecord,
|
|
746
766
|
rootEl: XmlElement
|
|
747
767
|
) {
|
|
748
768
|
pipe(
|
|
749
769
|
findOrCreateIdentification(),
|
|
750
|
-
|
|
751
|
-
appendChildren(
|
|
770
|
+
removeLegalConstraints(),
|
|
771
|
+
appendChildren(
|
|
772
|
+
...record.legalConstraints.map((c) => createConstraint(c, 'legal'))
|
|
773
|
+
)
|
|
752
774
|
)(rootEl)
|
|
753
775
|
}
|
|
754
776
|
|
|
755
|
-
export function
|
|
777
|
+
export function writeSecurityConstraints(
|
|
778
|
+
record: CatalogRecord,
|
|
779
|
+
rootEl: XmlElement
|
|
780
|
+
) {
|
|
756
781
|
pipe(
|
|
757
782
|
findOrCreateIdentification(),
|
|
758
|
-
|
|
759
|
-
appendChildren(
|
|
783
|
+
removeSecurityConstraints(),
|
|
784
|
+
appendChildren(
|
|
785
|
+
...record.securityConstraints.map((c) => createConstraint(c, 'security'))
|
|
786
|
+
)
|
|
760
787
|
)(rootEl)
|
|
761
788
|
}
|
|
762
789
|
|
|
763
|
-
export function
|
|
790
|
+
export function writeOtherConstraints(
|
|
791
|
+
record: CatalogRecord,
|
|
792
|
+
rootEl: XmlElement
|
|
793
|
+
) {
|
|
764
794
|
pipe(
|
|
765
795
|
findOrCreateIdentification(),
|
|
766
|
-
|
|
767
|
-
appendChildren(
|
|
796
|
+
removeOtherConstraints(),
|
|
797
|
+
appendChildren(
|
|
798
|
+
...record.otherConstraints.map((c) => createConstraint(c, 'other'))
|
|
799
|
+
)
|
|
768
800
|
)(rootEl)
|
|
769
801
|
}
|
|
770
802
|
|
package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts
CHANGED
|
@@ -25,7 +25,14 @@ import {
|
|
|
25
25
|
SourceWithUnknownProps,
|
|
26
26
|
} from '../../../../../../../libs/api/metadata-converter/src'
|
|
27
27
|
import { combineLatest, Observable, of, switchMap, takeLast } from 'rxjs'
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
filter,
|
|
30
|
+
map,
|
|
31
|
+
shareReplay,
|
|
32
|
+
startWith,
|
|
33
|
+
tap,
|
|
34
|
+
withLatestFrom,
|
|
35
|
+
} from 'rxjs/operators'
|
|
29
36
|
import { LangService } from '../../../../../../../libs/util/i18n/src'
|
|
30
37
|
import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
|
|
31
38
|
import { coerce, satisfies, valid } from 'semver'
|
|
@@ -296,15 +303,28 @@ export class OrganizationsFromMetadataService
|
|
|
296
303
|
|
|
297
304
|
const ownerOrganization = allContactOrgs[0]
|
|
298
305
|
|
|
306
|
+
// read the owner group as well to have a fallback logo
|
|
307
|
+
const groupId = selectField(source, 'groupOwner')
|
|
308
|
+
const group$ = this.groups$.pipe(
|
|
309
|
+
map((groups) =>
|
|
310
|
+
groups.find((group) => {
|
|
311
|
+
return group.id === Number(groupId)
|
|
312
|
+
})
|
|
313
|
+
)
|
|
314
|
+
)
|
|
315
|
+
|
|
299
316
|
return this.organisations$.pipe(
|
|
300
317
|
takeLast(1),
|
|
301
|
-
|
|
318
|
+
withLatestFrom(group$),
|
|
319
|
+
map(([organisations, group]: [Organization[], GroupApiModel]) => {
|
|
302
320
|
const recordOrganisation = organisations.filter(
|
|
303
321
|
(org) => org.name === ownerOrganization.name
|
|
304
322
|
)[0]
|
|
323
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL}${group.logo}`)
|
|
305
324
|
return {
|
|
306
325
|
...record,
|
|
307
326
|
ownerOrganization: {
|
|
327
|
+
logoUrl,
|
|
308
328
|
...ownerOrganization,
|
|
309
329
|
...recordOrganisation,
|
|
310
330
|
},
|
|
@@ -45,12 +45,23 @@ export class Gn4PlatformMapper {
|
|
|
45
45
|
return { ...apiUser, id: id.toString() } as UserModel
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
thesaurusFromApi(thesaurus: any[]): ThesaurusModel {
|
|
48
|
+
thesaurusFromApi(thesaurus: any[], lang3?: string): ThesaurusModel {
|
|
49
49
|
return thesaurus.map((keyword) => {
|
|
50
|
-
|
|
50
|
+
let key = keyword.uri
|
|
51
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
52
|
+
if (key.indexOf('@@@') > -1) {
|
|
53
|
+
key = key.split('@@@')[1]
|
|
54
|
+
}
|
|
55
|
+
const label =
|
|
56
|
+
lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value
|
|
57
|
+
const description =
|
|
58
|
+
lang3 && lang3 in keyword.definitions
|
|
59
|
+
? keyword.definitions[lang3]
|
|
60
|
+
: keyword.definition
|
|
51
61
|
return {
|
|
52
|
-
key
|
|
53
|
-
label
|
|
62
|
+
key,
|
|
63
|
+
label,
|
|
64
|
+
description,
|
|
54
65
|
}
|
|
55
66
|
})
|
|
56
67
|
}
|
|
@@ -14,8 +14,10 @@ import { Organization } from '../../../../../../../libs/common/domain/src/lib/mo
|
|
|
14
14
|
import { Gn4PlatformMapper } from './gn4-platform.mapper'
|
|
15
15
|
import { ltr } from 'semver'
|
|
16
16
|
import { ThesaurusModel } from '../../../../../../../libs/common/domain/src/lib/model/thesaurus/thesaurus.model'
|
|
17
|
+
import { LangService } from '../../../../../../../libs/util/i18n/src'
|
|
17
18
|
|
|
18
19
|
const minApiVersion = '4.2.2'
|
|
20
|
+
|
|
19
21
|
@Injectable()
|
|
20
22
|
export class Gn4PlatformService implements PlatformServiceInterface {
|
|
21
23
|
private readonly type = 'GeoNetwork'
|
|
@@ -50,13 +52,20 @@ export class Gn4PlatformService implements PlatformServiceInterface {
|
|
|
50
52
|
shareReplay(1)
|
|
51
53
|
)
|
|
52
54
|
|
|
55
|
+
/**
|
|
56
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private thesauri: Record<string, Observable<ThesaurusModel>> = {}
|
|
60
|
+
|
|
53
61
|
constructor(
|
|
54
62
|
private siteApiService: SiteApiService,
|
|
55
63
|
private meApi: MeApiService,
|
|
56
64
|
private usersApi: UsersApiService,
|
|
57
65
|
private mapper: Gn4PlatformMapper,
|
|
58
66
|
private toolsApiService: ToolsApiService,
|
|
59
|
-
private registriesApiService: RegistriesApiService
|
|
67
|
+
private registriesApiService: RegistriesApiService,
|
|
68
|
+
private langService: LangService
|
|
60
69
|
) {
|
|
61
70
|
this.me$ = this.meApi.getMe().pipe(
|
|
62
71
|
switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)),
|
|
@@ -98,17 +107,47 @@ export class Gn4PlatformService implements PlatformServiceInterface {
|
|
|
98
107
|
}
|
|
99
108
|
|
|
100
109
|
translateKey(key: string): Observable<string> {
|
|
110
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
111
|
+
if (key.match(/^https?:\/\//)) {
|
|
112
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
113
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
114
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/')
|
|
115
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(
|
|
116
|
+
map((thesaurus) => {
|
|
117
|
+
for (const item of thesaurus) {
|
|
118
|
+
if (item.key === key) return item.label
|
|
119
|
+
}
|
|
120
|
+
return key
|
|
121
|
+
})
|
|
122
|
+
)
|
|
123
|
+
}
|
|
101
124
|
return this.keyTranslations$.pipe(map((translations) => translations[key]))
|
|
102
125
|
}
|
|
103
126
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
.searchKeywords(
|
|
127
|
+
getThesaurusByUri(uri: string): Observable<ThesaurusModel> {
|
|
128
|
+
if (this.thesauri[uri]) {
|
|
129
|
+
return this.thesauri[uri]
|
|
130
|
+
}
|
|
131
|
+
this.thesauri[uri] = this.registriesApiService
|
|
132
|
+
.searchKeywords(
|
|
133
|
+
null,
|
|
134
|
+
this.langService.iso3,
|
|
135
|
+
1000,
|
|
136
|
+
0,
|
|
137
|
+
null,
|
|
138
|
+
null,
|
|
139
|
+
null,
|
|
140
|
+
`${uri}*`
|
|
141
|
+
)
|
|
110
142
|
.pipe(
|
|
111
|
-
map((thesaurus) =>
|
|
143
|
+
map((thesaurus) =>
|
|
144
|
+
this.mapper.thesaurusFromApi(
|
|
145
|
+
thesaurus as any[],
|
|
146
|
+
this.langService.iso3
|
|
147
|
+
)
|
|
148
|
+
),
|
|
149
|
+
shareReplay(1)
|
|
112
150
|
)
|
|
151
|
+
return this.thesauri[uri]
|
|
113
152
|
}
|
|
114
153
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
2
|
import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
|
|
3
3
|
import { SelectionsApiService } from '../../../../../../../libs/data-access/gn4/src'
|
|
4
|
-
import { BehaviorSubject,
|
|
4
|
+
import { BehaviorSubject, firstValueFrom } from 'rxjs'
|
|
5
5
|
|
|
6
6
|
const BUCKET_ID = 'gnui'
|
|
7
7
|
|
|
@@ -12,7 +12,6 @@ export class SelectionService {
|
|
|
12
12
|
selectedRecordsIdentifiers$: BehaviorSubject<string[]> = new BehaviorSubject(
|
|
13
13
|
[]
|
|
14
14
|
)
|
|
15
|
-
subscription: Subscription
|
|
16
15
|
|
|
17
16
|
constructor(private selectionsApi: SelectionsApiService) {
|
|
18
17
|
this.selectionsApi.get(BUCKET_ID).subscribe((selectedIds) => {
|
|
@@ -33,48 +32,25 @@ export class SelectionService {
|
|
|
33
32
|
this.selectedRecordsIdentifiers$.next(filtered)
|
|
34
33
|
}
|
|
35
34
|
|
|
36
|
-
selectRecords(records: CatalogRecord[])
|
|
37
|
-
const newIds =
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
selectRecords(records: CatalogRecord[]) {
|
|
36
|
+
const newIds = records.map((record) => record.uniqueIdentifier)
|
|
37
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
38
|
+
this.addIdsToSelected(newIds)
|
|
40
39
|
})
|
|
41
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds)
|
|
42
|
-
return apiResponse.pipe(
|
|
43
|
-
tap(() => {
|
|
44
|
-
this.addIdsToSelected(newIds)
|
|
45
|
-
}),
|
|
46
|
-
map(() => undefined)
|
|
47
|
-
)
|
|
48
40
|
}
|
|
49
41
|
|
|
50
|
-
deselectRecords(records: CatalogRecord[])
|
|
51
|
-
const idsToBeRemoved =
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
deselectRecords(records: CatalogRecord[]) {
|
|
43
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier)
|
|
44
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
45
|
+
this.removeIdsFromSelected(idsToBeRemoved)
|
|
54
46
|
})
|
|
55
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved)
|
|
56
|
-
return apiResponse.pipe(
|
|
57
|
-
tap(() => {
|
|
58
|
-
this.removeIdsFromSelected(idsToBeRemoved)
|
|
59
|
-
}),
|
|
60
|
-
map(() => undefined)
|
|
61
|
-
)
|
|
62
47
|
}
|
|
63
48
|
|
|
64
|
-
clearSelection()
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
this.
|
|
68
|
-
currentSelection
|
|
49
|
+
async clearSelection() {
|
|
50
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID))
|
|
51
|
+
const currentSelection = Array.from(response)
|
|
52
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
53
|
+
this.removeIdsFromSelected(currentSelection)
|
|
69
54
|
})
|
|
70
|
-
this.selectionsApi.clear(BUCKET_ID, currentSelection)
|
|
71
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, currentSelection)
|
|
72
|
-
|
|
73
|
-
return apiResponse.pipe(
|
|
74
|
-
tap(() => {
|
|
75
|
-
this.removeIdsFromSelected(currentSelection)
|
|
76
|
-
}),
|
|
77
|
-
map(() => undefined)
|
|
78
|
-
)
|
|
79
55
|
}
|
|
80
56
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
2
|
-
import { Individual } from './contact.model'
|
|
3
|
-
import { Organization } from './organization.model'
|
|
2
|
+
import type { Individual } from './contact.model'
|
|
3
|
+
import type { Organization } from './organization.model'
|
|
4
|
+
import type { Geometry } from 'geojson'
|
|
4
5
|
|
|
5
6
|
type Uuid = string
|
|
6
7
|
|
|
@@ -47,13 +48,7 @@ export const RecordStatusValues = [
|
|
|
47
48
|
]
|
|
48
49
|
export type RecordStatus = typeof RecordStatusValues[number]
|
|
49
50
|
|
|
50
|
-
export type
|
|
51
|
-
export interface AccessConstraint {
|
|
52
|
-
text: string
|
|
53
|
-
type: AccessConstraintType
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export type License = {
|
|
51
|
+
export type Constraint = {
|
|
57
52
|
text: string
|
|
58
53
|
url?: URL
|
|
59
54
|
}
|
|
@@ -76,10 +71,10 @@ export interface BaseRecord {
|
|
|
76
71
|
kind: RecordKind
|
|
77
72
|
themes: Array<string> // TODO: handle codelists
|
|
78
73
|
keywords: Array<string> // TODO: handle thesaurus and id
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
licenses: Array<Constraint>
|
|
75
|
+
legalConstraints: Array<Constraint>
|
|
76
|
+
securityConstraints: Array<Constraint>
|
|
77
|
+
otherConstraints: Array<Constraint>
|
|
83
78
|
overviews: Array<GraphicOverview>
|
|
84
79
|
extras?: Record<string, unknown>
|
|
85
80
|
landingPage?: URL
|
|
@@ -122,6 +117,7 @@ export interface DatasetDownloadDistribution {
|
|
|
122
117
|
// textEncoding?: string
|
|
123
118
|
name?: string
|
|
124
119
|
description?: string
|
|
120
|
+
accessServiceProtocol?: ServiceProtocol
|
|
125
121
|
}
|
|
126
122
|
|
|
127
123
|
export interface OnlineLinkResource {
|
|
@@ -145,13 +141,16 @@ export interface GraphicOverview {
|
|
|
145
141
|
}
|
|
146
142
|
|
|
147
143
|
export interface DatasetSpatialExtent {
|
|
148
|
-
geometry:
|
|
144
|
+
geometry: Geometry
|
|
149
145
|
description?: string
|
|
150
146
|
}
|
|
151
147
|
|
|
148
|
+
/**
|
|
149
|
+
* At least a start or an end date should be provided
|
|
150
|
+
*/
|
|
152
151
|
export interface DatasetTemporalExtent {
|
|
153
|
-
start
|
|
154
|
-
end
|
|
152
|
+
start?: Date
|
|
153
|
+
end?: Date
|
|
155
154
|
description?: string
|
|
156
155
|
}
|
|
157
156
|
|
|
@@ -163,8 +162,8 @@ export interface DatasetRecord extends BaseRecord {
|
|
|
163
162
|
datasetUpdated?: Date
|
|
164
163
|
lineage: string // Explanation of the origin of this record (e.g: how, why)"
|
|
165
164
|
distributions: Array<DatasetDistribution>
|
|
166
|
-
spatialExtents: Array<DatasetSpatialExtent>
|
|
167
|
-
temporalExtents: Array<DatasetTemporalExtent>
|
|
165
|
+
spatialExtents: Array<DatasetSpatialExtent>
|
|
166
|
+
temporalExtents: Array<DatasetTemporalExtent>
|
|
168
167
|
spatialRepresentation?: SpatialRepresentationType
|
|
169
168
|
}
|
|
170
169
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type FieldName = string
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FieldFilters } from './filter.model'
|
|
2
2
|
import { CatalogRecord } from '../record'
|
|
3
3
|
import { Geometry } from 'geojson'
|
|
4
|
+
import { FieldName } from './field.model'
|
|
4
5
|
|
|
5
|
-
type FieldSort = ['desc' | 'asc', FieldName]
|
|
6
|
+
export type FieldSort = ['desc' | 'asc', FieldName]
|
|
6
7
|
export type SortByField = FieldSort | FieldSort[] // several sort criteria can be used!
|
|
7
|
-
export type FieldName = string
|
|
8
8
|
|
|
9
9
|
export interface SearchParams {
|
|
10
10
|
filters?: FieldFilters
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user.model'
|
|
@@ -15,8 +15,5 @@ export abstract class PlatformServiceInterface {
|
|
|
15
15
|
): Observable<UserModel[]>
|
|
16
16
|
abstract getOrganizations(): Observable<Organization[]>
|
|
17
17
|
abstract translateKey(key: string): Observable<string>
|
|
18
|
-
abstract
|
|
19
|
-
thesaurusName: string,
|
|
20
|
-
lang: string
|
|
21
|
-
): Observable<ThesaurusModel>
|
|
18
|
+
abstract getThesaurusByUri(uri: string): Observable<ThesaurusModel>
|
|
22
19
|
}
|
|
@@ -64,7 +64,7 @@ export const GROUPS_FIXTURE = deepFreeze([
|
|
|
64
64
|
defaultCategory: null,
|
|
65
65
|
allowedCategories: [],
|
|
66
66
|
enableAllowedCategories: false,
|
|
67
|
-
id:
|
|
67
|
+
id: 2,
|
|
68
68
|
email: 'ifremer.ifremer@ifremer.admin.fr',
|
|
69
69
|
referrer: null,
|
|
70
70
|
description: "Institut français de recherche pour l'exploitation de la mer",
|
|
@@ -115,7 +115,7 @@ As such, **it is not very interesting at all.**`,
|
|
|
115
115
|
url: new URL('https://data.rennesmetropole.fr/pages/licence/'),
|
|
116
116
|
},
|
|
117
117
|
],
|
|
118
|
-
|
|
118
|
+
legalConstraints: [
|
|
119
119
|
{
|
|
120
120
|
text: "Dataset access isn't possible since it does not really exist",
|
|
121
121
|
type: 'other',
|
|
@@ -125,6 +125,8 @@ As such, **it is not very interesting at all.**`,
|
|
|
125
125
|
type: 'security',
|
|
126
126
|
},
|
|
127
127
|
],
|
|
128
|
+
securityConstraints: [],
|
|
129
|
+
otherConstraints: [],
|
|
128
130
|
spatialExtents: [],
|
|
129
131
|
temporalExtents: [],
|
|
130
132
|
updateFrequency: {
|
|
@@ -189,7 +191,9 @@ Malgré l'attention portée à la création de ces données, il est rappelé que
|
|
|
189
191
|
],
|
|
190
192
|
lineage: `Document d’urbanisme numérisé conformément aux prescriptions nationales du CNIG par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.
|
|
191
193
|
Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur de 2019 et contrôlé par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.`,
|
|
192
|
-
|
|
194
|
+
legalConstraints: [],
|
|
195
|
+
securityConstraints: [],
|
|
196
|
+
otherConstraints: [],
|
|
193
197
|
useLimitations: ["Aucune condition ne s'applique", 'Licence Ouverte 2.0'],
|
|
194
198
|
licenses: [
|
|
195
199
|
{
|