geonetwork-ui 2.2.0-dev.e3947702 → 2.2.0-dev.e441b922
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 +27 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +64 -61
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +7 -4
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +25 -17
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +55 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
- package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
- package/esm2022/libs/feature/editor/src/index.mjs +6 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +8 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +26 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +30 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +42 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +13 -0
- package/esm2022/libs/feature/editor/src/lib/expressions.mjs +13 -0
- package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +16 -4
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +34 -0
- package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +15 -11
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +22 -44
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -13
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
- package/esm2022/libs/feature/search/src/index.mjs +4 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
- package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +5 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +47 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +4 -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 +9 -9
- package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +3 -2
- package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +4 -2
- package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +1 -1
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +9 -9
- package/esm2022/libs/ui/layout/src/index.mjs +3 -1
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
- package/esm2022/libs/ui/search/src/index.mjs +1 -2
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
- package/esm2022/libs/ui/widgets/src/lib/badge/badge.component.mjs +3 -3
- package/esm2022/libs/util/i18n/src/index.mjs +1 -2
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
- package/esm2022/translations/de.json +37 -26
- package/esm2022/translations/en.json +37 -26
- package/esm2022/translations/es.json +31 -20
- package/esm2022/translations/fr.json +51 -40
- package/esm2022/translations/it.json +44 -33
- package/esm2022/translations/nl.json +32 -21
- package/esm2022/translations/pt.json +31 -20
- package/fesm2022/geonetwork-ui.mjs +1221 -871
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +7 -6
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.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 +21 -12
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
- package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
- package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
- package/libs/feature/editor/src/index.d.ts +5 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +23 -0
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +15 -0
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +19 -0
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts +2 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +18 -0
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +15 -0
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/expressions.d.ts +4 -0
- package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -1
- package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +3 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/models/fields.model.d.ts +15 -0
- package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts +10 -5
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -13
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- 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/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/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -6
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
- package/libs/ui/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 +1 -1
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts +0 -1
- package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +1 -1
- 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 -40
- package/libs/ui/layout/src/index.d.ts +2 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
- package/libs/ui/search/src/index.d.ts +0 -1
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +0 -1
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +63 -8
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +57 -9
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +229 -24
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +29 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +99 -76
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
- package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +30 -21
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +120 -63
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +177 -97
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
- 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/model/record/metadata.model.ts +25 -14
- package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
- package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
- package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
- package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/editor/src/index.ts +5 -0
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +24 -0
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +49 -0
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +30 -0
- package/src/libs/feature/editor/src/lib/+state/editor.models.ts +1 -0
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +68 -0
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +39 -0
- package/src/libs/feature/editor/src/lib/expressions.ts +16 -0
- package/src/libs/feature/editor/src/lib/feature-editor.module.ts +11 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +35 -0
- package/src/libs/feature/editor/src/lib/models/fields.model.ts +29 -0
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.html +9 -7
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +11 -5
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +34 -73
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +12 -12
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
- package/src/libs/feature/search/src/index.ts +3 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
- package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
- package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
- package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
- package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
- package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +3 -2
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -2
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.html +5 -1
- package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +169 -52
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -15
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -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 +0 -5
- package/src/libs/ui/inputs/src/lib/button/button.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +7 -6
- package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +2 -2
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +1 -0
- package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +3 -1
- package/src/libs/ui/inputs/src/lib/form-field/form-field.model.ts +0 -1
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
- package/src/libs/ui/search/src/index.ts +0 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
- package/src/libs/ui/widgets/src/lib/badge/badge.component.html +3 -1
- package/src/libs/util/i18n/src/index.ts +0 -1
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
- package/tailwind.base.css +44 -15
- package/translations/de.json +37 -26
- package/translations/en.json +37 -26
- package/translations/es.json +31 -20
- package/translations/fr.json +51 -40
- package/translations/it.json +44 -33
- package/translations/nl.json +32 -21
- package/translations/pt.json +31 -20
- package/translations/sk.json +119 -108
- 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/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/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
|
@@ -1,21 +1,21 @@
|
|
|
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, inject } 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
|
-
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
18
|
+
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
19
19
|
import Map$1 from 'ol/Map';
|
|
20
20
|
import * as i2 from '@angular/material/icon';
|
|
21
21
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -75,7 +75,7 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
|
75
75
|
import { MatInputModule } from '@angular/material/input';
|
|
76
76
|
import * as basicLightbox from 'basiclightbox';
|
|
77
77
|
import * as i1$8 from '@ngrx/effects';
|
|
78
|
-
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
78
|
+
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
79
79
|
import tippy from 'tippy.js';
|
|
80
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
81
|
import { Polygon } from 'ol/geom';
|
|
@@ -587,6 +587,20 @@ function matchMimeType(format) {
|
|
|
587
587
|
return format || null;
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
591
|
+
if (!typeCode)
|
|
592
|
+
return 'other';
|
|
593
|
+
switch (typeCode) {
|
|
594
|
+
case 'theme':
|
|
595
|
+
case 'place':
|
|
596
|
+
case 'temporal':
|
|
597
|
+
case 'other':
|
|
598
|
+
return typeCode;
|
|
599
|
+
default:
|
|
600
|
+
return 'other';
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
590
604
|
function extractCharacterString() {
|
|
591
605
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
592
606
|
}
|
|
@@ -649,28 +663,32 @@ function extractStatus() {
|
|
|
649
663
|
return pipe(findChildElement('gmd:MD_ProgressCode'), readAttribute('codeListValue'), map(getStatusFromStatusCode));
|
|
650
664
|
}
|
|
651
665
|
// from gmd:resourceConstraints
|
|
652
|
-
function
|
|
653
|
-
|
|
654
|
-
|
|
666
|
+
function extractLegalConstraints() {
|
|
667
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') === -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
668
|
+
...(url && { url }),
|
|
655
669
|
text,
|
|
656
|
-
type: 'other',
|
|
657
670
|
})));
|
|
658
|
-
|
|
671
|
+
}
|
|
672
|
+
// from gmd:resourceConstraints
|
|
673
|
+
function extractSecurityConstraints() {
|
|
674
|
+
return pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
675
|
+
...(url && { url }),
|
|
659
676
|
text,
|
|
660
|
-
type: 'security',
|
|
661
677
|
})));
|
|
662
|
-
return pipe(combine(getOtherConstraints, getSecurityConstraints), flattenArray());
|
|
663
678
|
}
|
|
664
679
|
// from gmd:resourceConstraints
|
|
665
|
-
function
|
|
666
|
-
return pipe(
|
|
680
|
+
function extractOtherConstraints() {
|
|
681
|
+
return pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
682
|
+
...(url && { url }),
|
|
683
|
+
text,
|
|
684
|
+
})));
|
|
667
685
|
}
|
|
668
686
|
// from gmd:resourceConstraints
|
|
669
687
|
function extractLicenses() {
|
|
670
|
-
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(
|
|
688
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
671
689
|
...(url && { url }),
|
|
672
690
|
text,
|
|
673
|
-
})))
|
|
691
|
+
})));
|
|
674
692
|
}
|
|
675
693
|
// from gmd:MD_Distribution
|
|
676
694
|
function extractDatasetDistributions() {
|
|
@@ -814,6 +832,9 @@ function readOwnerOrganization(rootEl) {
|
|
|
814
832
|
function readRecordUpdated(rootEl) {
|
|
815
833
|
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
816
834
|
}
|
|
835
|
+
function readRecordPublished(rootEl) {
|
|
836
|
+
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
837
|
+
}
|
|
817
838
|
function readTitle(rootEl) {
|
|
818
839
|
return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
819
840
|
}
|
|
@@ -829,31 +850,55 @@ function readDatasetUpdated(rootEl) {
|
|
|
829
850
|
function readContacts(rootEl) {
|
|
830
851
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
831
852
|
}
|
|
832
|
-
|
|
833
|
-
|
|
853
|
+
// from gmd:thesaurusName
|
|
854
|
+
function readThesaurus(rootEl) {
|
|
855
|
+
if (!rootEl)
|
|
856
|
+
return null;
|
|
857
|
+
const findIdentifier = findNestedElement('gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code');
|
|
858
|
+
const id = pipe(findIdentifier, extractCharacterString())(rootEl);
|
|
859
|
+
const url = pipe(findIdentifier, extractUrl())(rootEl);
|
|
860
|
+
const name = pipe(findNestedElement('gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
861
|
+
return {
|
|
862
|
+
id,
|
|
863
|
+
...(name && { name }),
|
|
864
|
+
...(url && { url }),
|
|
865
|
+
};
|
|
834
866
|
}
|
|
835
|
-
|
|
836
|
-
|
|
867
|
+
// from gmd:MD_Keywords
|
|
868
|
+
function readKeywordGroup(rootEl) {
|
|
869
|
+
const type = pipe(findChildrenElement('gmd:MD_KeywordTypeCode'), mapArray(readAttribute('codeListValue')), map((values) => getKeywordTypeFromKeywordTypeCode(values[0])))(rootEl);
|
|
870
|
+
const thesaurus = pipe(findNestedElement('gmd:thesaurusName'), readThesaurus)(rootEl);
|
|
871
|
+
return pipe(findChildrenElement('gmd:keyword'), mapArray((el) => {
|
|
872
|
+
const label = extractCharacterString()(el);
|
|
873
|
+
return {
|
|
874
|
+
...(thesaurus ? { thesaurus } : {}),
|
|
875
|
+
label,
|
|
876
|
+
type,
|
|
877
|
+
};
|
|
878
|
+
}))(rootEl);
|
|
837
879
|
}
|
|
838
|
-
function
|
|
839
|
-
return
|
|
880
|
+
function readKeywords(rootEl) {
|
|
881
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
840
882
|
}
|
|
841
883
|
function readStatus(rootEl) {
|
|
842
884
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
843
885
|
}
|
|
844
886
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
845
|
-
function
|
|
846
|
-
return pipe(getConstraints, mapArray(
|
|
887
|
+
function readLegalConstraints(rootEl) {
|
|
888
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
847
889
|
}
|
|
848
|
-
function
|
|
849
|
-
return pipe(getConstraints, mapArray(
|
|
890
|
+
function readSecurityConstraints(rootEl) {
|
|
891
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
892
|
+
}
|
|
893
|
+
function readOtherConstraints(rootEl) {
|
|
894
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
850
895
|
}
|
|
851
896
|
function readLicenses(rootEl) {
|
|
852
897
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
853
898
|
}
|
|
854
899
|
// not used yet
|
|
855
900
|
function readIsoTopics(rootEl) {
|
|
856
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
901
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
857
902
|
}
|
|
858
903
|
function readSpatialRepresentation(rootEl) {
|
|
859
904
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1069,33 +1114,50 @@ function updateCitationDate(date, type) {
|
|
|
1069
1114
|
function appendCitationDate(date, type) {
|
|
1070
1115
|
return appendChildren(pipe(createElement('gmd:date'), createChild('gmd:CI_Date'), appendChildren(pipe(createElement('gmd:date'), writeDateTime(date)), pipe(createElement('gmd:dateType'), createChild('gmd:CI_DateTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'), addAttribute('codeListValue', type)))));
|
|
1071
1116
|
}
|
|
1072
|
-
function removeKeywords(
|
|
1073
|
-
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1117
|
+
function removeKeywords() {
|
|
1118
|
+
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')));
|
|
1119
|
+
}
|
|
1120
|
+
// returns a <gmd:thesaurusName> element
|
|
1121
|
+
function createThesaurus(thesaurus) {
|
|
1122
|
+
return pipe(createElement('gmd:thesaurusName'), createChild('gmd:CI_Citation'), appendChildren(pipe(createElement('gmd:title'), writeCharacterString(thesaurus.name || thesaurus.id)), pipe(createElement('gmd:identifier'), createChild('gmd:MD_Identifier'), appendChildren(pipe(createElement('gmd:code'), thesaurus.url
|
|
1123
|
+
? writeAnchor(thesaurus.url, thesaurus.id)
|
|
1124
|
+
: writeCharacterString(thesaurus.id))))));
|
|
1125
|
+
}
|
|
1126
|
+
function appendKeywords(keywords) {
|
|
1127
|
+
const keywordsByThesaurus = keywords.reduce((acc, keyword) => {
|
|
1128
|
+
const thesaurusId = keyword.thesaurus?.id;
|
|
1129
|
+
const type = keyword.type;
|
|
1130
|
+
let existingGroup = acc.find((group) => group[0].thesaurus
|
|
1131
|
+
? group[0].thesaurus.id === thesaurusId
|
|
1132
|
+
: group[0].type === type);
|
|
1133
|
+
if (!existingGroup) {
|
|
1134
|
+
existingGroup = [];
|
|
1135
|
+
acc.push(existingGroup);
|
|
1136
|
+
}
|
|
1137
|
+
existingGroup.push(keyword);
|
|
1138
|
+
return acc;
|
|
1139
|
+
}, []);
|
|
1140
|
+
return appendChildren(...keywordsByThesaurus.map((keywords) => pipe(createElement('gmd:descriptiveKeywords'), createChild('gmd:MD_Keywords'), appendChildren(pipe(createElement('gmd:type'), createChild('gmd:MD_KeywordTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_KeywordTypeCode'), addAttribute('codeListValue', keywords[0].type))), keywords[0].thesaurus
|
|
1141
|
+
? appendChildren(createThesaurus(keywords[0].thesaurus))
|
|
1142
|
+
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword.label)))))));
|
|
1143
|
+
}
|
|
1144
|
+
function createConstraint(constraint, type) {
|
|
1145
|
+
if (type === 'security') {
|
|
1090
1146
|
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_SecurityConstraints'), appendChildren(pipe(createElement('gmd:classification'), createChild('gmd:MD_ClassificationCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ClassificationCode'), addAttribute('codeListValue', 'restricted')), pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1091
1147
|
}
|
|
1092
|
-
|
|
1148
|
+
else if (type === 'legal') {
|
|
1149
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_LegalConstraints'), appendChildren(pipe(createElement('gmd:accessConstraints'), createChild('gmd:MD_RestrictionCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'), addAttribute('codeListValue', 'otherRestrictions')), pipe(createElement('gmd:otherConstraints'), writeCharacterString(constraint.text))));
|
|
1150
|
+
}
|
|
1151
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1093
1152
|
}
|
|
1094
|
-
function
|
|
1153
|
+
function removeOtherConstraints() {
|
|
1095
1154
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1096
1155
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return pipe(
|
|
1156
|
+
function removeSecurityConstraints() {
|
|
1157
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1158
|
+
}
|
|
1159
|
+
function removeLegalConstraints() {
|
|
1160
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.every((code) => code !== 'license')))));
|
|
1099
1161
|
}
|
|
1100
1162
|
function removeLicenses() {
|
|
1101
1163
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.some((code) => code === 'license')))));
|
|
@@ -1194,19 +1256,22 @@ function writeContacts(record, rootEl) {
|
|
|
1194
1256
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1195
1257
|
}
|
|
1196
1258
|
function writeKeywords(record, rootEl) {
|
|
1197
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1198
1260
|
}
|
|
1199
|
-
function
|
|
1200
|
-
pipe(findOrCreateIdentification(),
|
|
1201
|
-
}
|
|
1202
|
-
function writeAccessConstraints(record, rootEl) {
|
|
1203
|
-
pipe(findOrCreateIdentification(), removeAccessConstraints(), appendChildren(...record.accessConstraints.map(createAccessConstraint)))(rootEl);
|
|
1261
|
+
function writeTopics(record, rootEl) {
|
|
1262
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:topicCategory'), appendChildren(...record.topics.map((topic) => pipe(createElement('gmd:topicCategory'), createChild('gmd:MD_TopicCategoryCode'), setTextContent(topic)))))(rootEl);
|
|
1204
1263
|
}
|
|
1205
1264
|
function writeLicenses(record, rootEl) {
|
|
1206
1265
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1207
1266
|
}
|
|
1208
|
-
function
|
|
1209
|
-
pipe(findOrCreateIdentification(),
|
|
1267
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1268
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1269
|
+
}
|
|
1270
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1271
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1272
|
+
}
|
|
1273
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1274
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1210
1275
|
}
|
|
1211
1276
|
function writeUpdateFrequency(record, rootEl) {
|
|
1212
1277
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1302,14 +1367,14 @@ function toModel(xml) {
|
|
|
1302
1367
|
const contacts = readContacts(rootEl);
|
|
1303
1368
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1304
1369
|
const recordCreated = recordUpdated;
|
|
1370
|
+
const recordPublished = readRecordPublished(rootEl);
|
|
1305
1371
|
const keywords = readKeywords(rootEl);
|
|
1306
|
-
const
|
|
1307
|
-
const
|
|
1308
|
-
const
|
|
1372
|
+
const topics = readIsoTopics(rootEl);
|
|
1373
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1374
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1375
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1309
1376
|
const licenses = readLicenses(rootEl);
|
|
1310
1377
|
const overviews = readOverviews(rootEl);
|
|
1311
|
-
// not used yet
|
|
1312
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1313
1378
|
if (kind === 'dataset') {
|
|
1314
1379
|
const status = readStatus(rootEl);
|
|
1315
1380
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1323,8 +1388,10 @@ function toModel(xml) {
|
|
|
1323
1388
|
return {
|
|
1324
1389
|
uniqueIdentifier,
|
|
1325
1390
|
kind,
|
|
1391
|
+
languages: [],
|
|
1326
1392
|
recordCreated,
|
|
1327
1393
|
recordUpdated,
|
|
1394
|
+
recordPublished,
|
|
1328
1395
|
status,
|
|
1329
1396
|
title,
|
|
1330
1397
|
abstract,
|
|
@@ -1332,10 +1399,11 @@ function toModel(xml) {
|
|
|
1332
1399
|
contacts,
|
|
1333
1400
|
contactsForResource: [],
|
|
1334
1401
|
keywords,
|
|
1335
|
-
|
|
1336
|
-
accessConstraints,
|
|
1337
|
-
useLimitations,
|
|
1402
|
+
topics,
|
|
1338
1403
|
licenses,
|
|
1404
|
+
legalConstraints,
|
|
1405
|
+
securityConstraints,
|
|
1406
|
+
otherConstraints,
|
|
1339
1407
|
...(datasetCreated && { datasetCreated }),
|
|
1340
1408
|
...(datasetUpdated && { datasetUpdated }),
|
|
1341
1409
|
lineage,
|
|
@@ -1352,17 +1420,20 @@ function toModel(xml) {
|
|
|
1352
1420
|
return {
|
|
1353
1421
|
uniqueIdentifier,
|
|
1354
1422
|
kind,
|
|
1423
|
+
languages: [],
|
|
1355
1424
|
recordCreated,
|
|
1356
1425
|
recordUpdated,
|
|
1426
|
+
recordPublished,
|
|
1357
1427
|
title,
|
|
1358
1428
|
abstract,
|
|
1359
1429
|
ownerOrganization,
|
|
1360
1430
|
contacts,
|
|
1361
1431
|
keywords,
|
|
1362
|
-
|
|
1363
|
-
accessConstraints,
|
|
1364
|
-
useLimitations,
|
|
1432
|
+
topics,
|
|
1365
1433
|
licenses,
|
|
1434
|
+
legalConstraints,
|
|
1435
|
+
securityConstraints,
|
|
1436
|
+
otherConstraints,
|
|
1366
1437
|
overviews,
|
|
1367
1438
|
onlineResources,
|
|
1368
1439
|
};
|
|
@@ -1387,10 +1458,12 @@ function toXml(record, originalXml) {
|
|
|
1387
1458
|
writeAbstract(record, rootEl);
|
|
1388
1459
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1389
1460
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1390
|
-
fieldChanged('
|
|
1391
|
-
fieldChanged('
|
|
1461
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1462
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1463
|
+
fieldChanged('securityConstraints') &&
|
|
1464
|
+
writeSecurityConstraints(record, rootEl);
|
|
1392
1465
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1393
|
-
fieldChanged('
|
|
1466
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1394
1467
|
if (record.kind === 'dataset') {
|
|
1395
1468
|
writeStatus(record, rootEl);
|
|
1396
1469
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1457,6 +1530,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1457
1530
|
...(phone && { phone }),
|
|
1458
1531
|
};
|
|
1459
1532
|
};
|
|
1533
|
+
const mapKeywords = (thesauri, language) => {
|
|
1534
|
+
const keywords = [];
|
|
1535
|
+
for (const thesaurusId in thesauri) {
|
|
1536
|
+
const rawThesaurus = thesauri[thesaurusId];
|
|
1537
|
+
let thesaurus = null;
|
|
1538
|
+
if (rawThesaurus.id) {
|
|
1539
|
+
const thesaurusSource = { ...rawThesaurus };
|
|
1540
|
+
const url = getAsUrl(selectField(thesaurusSource, 'link'));
|
|
1541
|
+
const name = selectField(thesaurusSource, 'title');
|
|
1542
|
+
thesaurus = {
|
|
1543
|
+
id: rawThesaurus.id,
|
|
1544
|
+
...(name && { name }),
|
|
1545
|
+
...(url && { url }),
|
|
1546
|
+
};
|
|
1547
|
+
}
|
|
1548
|
+
for (const keyword of rawThesaurus.keywords) {
|
|
1549
|
+
keywords.push({
|
|
1550
|
+
label: selectTranslatedValue(keyword, language),
|
|
1551
|
+
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
1552
|
+
...(thesaurus && { thesaurus }),
|
|
1553
|
+
});
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
return keywords;
|
|
1557
|
+
};
|
|
1460
1558
|
|
|
1461
1559
|
/**
|
|
1462
1560
|
* Custom HttpParameterCodec
|
|
@@ -16443,6 +16541,23 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
16443
16541
|
chi: 'zh',
|
|
16444
16542
|
slo: 'sk',
|
|
16445
16543
|
};
|
|
16544
|
+
const LANGUAGE_NAMES = {
|
|
16545
|
+
en: 'English',
|
|
16546
|
+
nl: 'Nederlands',
|
|
16547
|
+
fr: 'Français',
|
|
16548
|
+
de: 'Deutsch',
|
|
16549
|
+
ko: '한국어',
|
|
16550
|
+
es: 'Español',
|
|
16551
|
+
cs: 'Čeština',
|
|
16552
|
+
ca: 'Català',
|
|
16553
|
+
fi: 'Suomi',
|
|
16554
|
+
is: 'Íslenska',
|
|
16555
|
+
it: 'Italiano',
|
|
16556
|
+
pt: 'Português',
|
|
16557
|
+
ru: 'Русский',
|
|
16558
|
+
zh: '中文',
|
|
16559
|
+
sk: 'Slovenčina',
|
|
16560
|
+
};
|
|
16446
16561
|
// Caution: changing this can break language selection from third parties!
|
|
16447
16562
|
const LANGUAGE_STORAGE_KEY = 'geonetwork-ui-language';
|
|
16448
16563
|
const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
|
|
@@ -16543,133 +16658,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16543
16658
|
}]
|
|
16544
16659
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16545
16660
|
|
|
16546
|
-
// IMPORTANT:
|
|
16547
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/test-translate-loader.service.ts
|
|
16548
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16549
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16550
|
-
class TestTranslateLoader extends TranslateLoader {
|
|
16551
|
-
constructor(_translations = {}) {
|
|
16552
|
-
super();
|
|
16553
|
-
this._translations = _translations;
|
|
16554
|
-
}
|
|
16555
|
-
/**
|
|
16556
|
-
* Returns an {Observable} of translations for the specified language. If the
|
|
16557
|
-
* language is not recognized, an empty translations object will be returned.
|
|
16558
|
-
*
|
|
16559
|
-
* @param language the language for which the translations should be retrieved.
|
|
16560
|
-
* @returns the translations for the specified
|
|
16561
|
-
* language or an empty set of translations if the language is not recognized.
|
|
16562
|
-
*/
|
|
16563
|
-
getTranslation(language) {
|
|
16564
|
-
return of(this._translations[language] || {});
|
|
16565
|
-
}
|
|
16566
|
-
}
|
|
16567
|
-
|
|
16568
|
-
// IMPORTANT:
|
|
16569
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/testing.module.ts
|
|
16570
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16571
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16572
|
-
/**
|
|
16573
|
-
* The TranslateTestingModule provides the {TranslateModule} as well as a
|
|
16574
|
-
* {TranslateService} configured to return translations specific for the
|
|
16575
|
-
* test environment.
|
|
16576
|
-
*
|
|
16577
|
-
* @export
|
|
16578
|
-
*/
|
|
16579
|
-
class TranslateTestingModule {
|
|
16580
|
-
constructor() {
|
|
16581
|
-
this._translations = {};
|
|
16582
|
-
}
|
|
16583
|
-
static withTranslations(languageOrTranslations, translations) {
|
|
16584
|
-
const translateTestingModule = new TranslateTestingModule();
|
|
16585
|
-
if (typeof languageOrTranslations === 'string') {
|
|
16586
|
-
return translateTestingModule.withTranslations(languageOrTranslations, translations);
|
|
16587
|
-
}
|
|
16588
|
-
return translateTestingModule.withTranslations(languageOrTranslations);
|
|
16589
|
-
}
|
|
16590
|
-
get ngModule() {
|
|
16591
|
-
return TranslateTestingModule;
|
|
16592
|
-
}
|
|
16593
|
-
get providers() {
|
|
16594
|
-
const translateService = new TranslateService(null, new TestTranslateLoader(this._translations), this._compiler || new TranslateFakeCompiler(), new TranslateDefaultParser(), new FakeMissingTranslationHandler(), true, true, false, this._defaultLanguage);
|
|
16595
|
-
return [
|
|
16596
|
-
{
|
|
16597
|
-
provide: TranslateService,
|
|
16598
|
-
useValue: translateService,
|
|
16599
|
-
},
|
|
16600
|
-
];
|
|
16601
|
-
}
|
|
16602
|
-
withTranslations(languageOrTranslations, translations) {
|
|
16603
|
-
if (typeof languageOrTranslations === 'string' && translations) {
|
|
16604
|
-
this.addTranslations(languageOrTranslations, translations);
|
|
16605
|
-
this._defaultLanguage = languageOrTranslations;
|
|
16606
|
-
}
|
|
16607
|
-
else if (languageOrTranslations) {
|
|
16608
|
-
Object.keys(languageOrTranslations).forEach((language) => this.addTranslations(language, languageOrTranslations[language]));
|
|
16609
|
-
}
|
|
16610
|
-
return this;
|
|
16611
|
-
}
|
|
16612
|
-
/**
|
|
16613
|
-
* Updates the {TranslationTestingModule} to provide a {TranslateService} that will
|
|
16614
|
-
* use the provided {TranslateCompiler} to translate the test translations.
|
|
16615
|
-
*
|
|
16616
|
-
* @example
|
|
16617
|
-
*
|
|
16618
|
-
* TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
|
|
16619
|
-
* .withCompiler(new TranslateMessageFormatCompiler());
|
|
16620
|
-
*
|
|
16621
|
-
* @param compiler the compiler to use to compile the test translations.
|
|
16622
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16623
|
-
* @memberof TranslateTestingModule
|
|
16624
|
-
*/
|
|
16625
|
-
withCompiler(compiler) {
|
|
16626
|
-
this._compiler = compiler;
|
|
16627
|
-
return this;
|
|
16628
|
-
}
|
|
16629
|
-
/**
|
|
16630
|
-
* Updates the {TranslateTestingModule} to use the provided language as the default language.
|
|
16631
|
-
* By default, the default language will be set to the first language provided.
|
|
16632
|
-
*
|
|
16633
|
-
* @example
|
|
16634
|
-
*
|
|
16635
|
-
* TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
|
|
16636
|
-
* .withTranslations('en', ENGLISH_TRANSLATIONS)
|
|
16637
|
-
* .withDefaultLanguage('en');
|
|
16638
|
-
*
|
|
16639
|
-
* @param language the new default language for translations.
|
|
16640
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16641
|
-
* @memberof TranslateTestingModule
|
|
16642
|
-
*/
|
|
16643
|
-
withDefaultLanguage(language) {
|
|
16644
|
-
this._defaultLanguage = language || this._defaultLanguage;
|
|
16645
|
-
return this;
|
|
16646
|
-
}
|
|
16647
|
-
addTranslations(language, translations) {
|
|
16648
|
-
if (!this._defaultLanguage) {
|
|
16649
|
-
this._defaultLanguage = language;
|
|
16650
|
-
}
|
|
16651
|
-
if (this._translations[language]) {
|
|
16652
|
-
this._translations[language] = {
|
|
16653
|
-
...this._translations[language],
|
|
16654
|
-
...translations,
|
|
16655
|
-
};
|
|
16656
|
-
}
|
|
16657
|
-
else {
|
|
16658
|
-
this._translations[language] = translations;
|
|
16659
|
-
}
|
|
16660
|
-
}
|
|
16661
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16662
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule], exports: [TranslateModule] }); }
|
|
16663
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule, TranslateModule] }); }
|
|
16664
|
-
}
|
|
16665
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, decorators: [{
|
|
16666
|
-
type: NgModule,
|
|
16667
|
-
args: [{
|
|
16668
|
-
imports: [TranslateModule],
|
|
16669
|
-
exports: [TranslateModule],
|
|
16670
|
-
}]
|
|
16671
|
-
}] });
|
|
16672
|
-
|
|
16673
16661
|
var dropFile$6 = "Datei ablegen";
|
|
16674
16662
|
var next$6 = "weiter";
|
|
16675
16663
|
var previous$6 = "zurück";
|
|
@@ -16692,20 +16680,21 @@ var de = {
|
|
|
16692
16680
|
"chart.type.line": "Liniendiagramm",
|
|
16693
16681
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16694
16682
|
"chart.type.pie": "Kreisdiagramm",
|
|
16683
|
+
"dashboard.createRecord": "Neuer Eintrag",
|
|
16695
16684
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16696
16685
|
"dashboard.records.all": "Katalog",
|
|
16697
16686
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16698
16687
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16699
16688
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
16700
16689
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16701
|
-
"dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
|
|
16702
|
-
"dashboard.records.noUser": "Keine Benutzer für diese Organisation",
|
|
16703
16690
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16704
16691
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16705
16692
|
"dashboard.records.userDetail": "Name",
|
|
16706
16693
|
"dashboard.records.userEmail": "E-Mail",
|
|
16707
16694
|
"dashboard.records.username": "Benutzername",
|
|
16708
16695
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16696
|
+
"dashboard.results.listMetadata": "Metadaten anzeigen",
|
|
16697
|
+
"dashboard.results.listResources": "Ressourcen anzeigen",
|
|
16709
16698
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16710
16699
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16711
16700
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16819,6 +16808,8 @@ var de = {
|
|
|
16819
16808
|
"downloads.format.unknown": "unbekannt",
|
|
16820
16809
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
16821
16810
|
dropFile: dropFile$6,
|
|
16811
|
+
"editor.record.publish": "",
|
|
16812
|
+
"editor.record.upToDate": "",
|
|
16822
16813
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
16823
16814
|
"facets.block.title.OrgForResource": "Organisation",
|
|
16824
16815
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -16832,28 +16823,28 @@ var de = {
|
|
|
16832
16823
|
"facets.block.title.tag.default": "Stichwort",
|
|
16833
16824
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
16834
16825
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
|
|
16835
|
-
"language.ca": "
|
|
16836
|
-
"language.cs": "
|
|
16826
|
+
"language.ca": "Katalanisch",
|
|
16827
|
+
"language.cs": "Tschechisch",
|
|
16837
16828
|
"language.de": "Deutsch",
|
|
16838
|
-
"language.en": "
|
|
16839
|
-
"language.es": "
|
|
16840
|
-
"language.fi": "
|
|
16841
|
-
"language.fr": "
|
|
16842
|
-
"language.is": "
|
|
16843
|
-
"language.it": "
|
|
16844
|
-
"language.ko": "
|
|
16845
|
-
"language.nl": "
|
|
16846
|
-
"language.pt": "
|
|
16847
|
-
"language.ru": "
|
|
16848
|
-
"language.sk": "
|
|
16849
|
-
"language.zh": "
|
|
16829
|
+
"language.en": "Englisch",
|
|
16830
|
+
"language.es": "Spanisch",
|
|
16831
|
+
"language.fi": "Finnisch",
|
|
16832
|
+
"language.fr": "Französisch",
|
|
16833
|
+
"language.is": "Isländisch",
|
|
16834
|
+
"language.it": "Italienisch",
|
|
16835
|
+
"language.ko": "Koreanisch",
|
|
16836
|
+
"language.nl": "Niederländisch",
|
|
16837
|
+
"language.pt": "Portugiesisch",
|
|
16838
|
+
"language.ru": "Russisch",
|
|
16839
|
+
"language.sk": "Slowakisch",
|
|
16840
|
+
"language.zh": "Chinesisch",
|
|
16850
16841
|
"map.add.layer": "Eine Ebene hinzufügen",
|
|
16851
16842
|
"map.add.layer.catalog": "Aus dem Katalog",
|
|
16852
16843
|
"map.add.layer.file": "Aus einer Datei",
|
|
16853
16844
|
"map.add.layer.wfs": "Aus WFS",
|
|
16854
16845
|
"map.add.layer.wms": "Aus WMS",
|
|
16855
16846
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16856
|
-
"map.geocoding.placeholder": "",
|
|
16847
|
+
"map.geocoding.placeholder": "Nach einem Ort suchen",
|
|
16857
16848
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16858
16849
|
"map.layer.add": "Hinzufügen",
|
|
16859
16850
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -16897,18 +16888,20 @@ var de = {
|
|
|
16897
16888
|
"record.metadata.author": "Autor",
|
|
16898
16889
|
"record.metadata.catalog": "Katalog",
|
|
16899
16890
|
"record.metadata.contact": "Kontakt",
|
|
16900
|
-
"record.metadata.
|
|
16901
|
-
"record.metadata.details": "
|
|
16891
|
+
"record.metadata.creation": "Erstellungsdatum",
|
|
16892
|
+
"record.metadata.details": "Über die Daten",
|
|
16902
16893
|
"record.metadata.download": "Downloads",
|
|
16903
16894
|
"record.metadata.formats": "Formate",
|
|
16904
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16905
16895
|
"record.metadata.keywords": "Stichworte",
|
|
16906
|
-
"record.metadata.
|
|
16896
|
+
"record.metadata.languages": "Sprachen",
|
|
16897
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
16907
16898
|
"record.metadata.links": "Links",
|
|
16908
16899
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16909
|
-
"record.metadata.
|
|
16910
|
-
"record.metadata.owner": "",
|
|
16900
|
+
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
16901
|
+
"record.metadata.owner": "Herkunftskatalog",
|
|
16911
16902
|
"record.metadata.preview": "Vorschau",
|
|
16903
|
+
"record.metadata.producer": "Datenproduzent",
|
|
16904
|
+
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
16912
16905
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16913
16906
|
"record.metadata.quality": "Metadatenqualität",
|
|
16914
16907
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
@@ -16930,12 +16923,17 @@ var de = {
|
|
|
16930
16923
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16931
16924
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16932
16925
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16933
|
-
"record.metadata.
|
|
16926
|
+
"record.metadata.status": "Status",
|
|
16927
|
+
"record.metadata.technical": "Technische Informationen",
|
|
16928
|
+
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
16929
|
+
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
16930
|
+
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
16931
|
+
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
16934
16932
|
"record.metadata.title": "Titel",
|
|
16933
|
+
"record.metadata.topics": "Kategorien",
|
|
16935
16934
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16936
16935
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16937
16936
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16938
|
-
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16939
16937
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
16940
16938
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
16941
16939
|
"record.more.details": "Weitere Details",
|
|
@@ -16967,6 +16965,7 @@ var de = {
|
|
|
16967
16965
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16968
16966
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16969
16967
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16968
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16970
16969
|
"search.filters.license": "Lizenz",
|
|
16971
16970
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16972
16971
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -16997,7 +16996,7 @@ var de = {
|
|
|
16997
16996
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16998
16997
|
"table.select.data": "Datenquelle",
|
|
16999
16998
|
"tooltip.html.copy": "HTML kopieren",
|
|
17000
|
-
"tooltip.id.copy": "",
|
|
16999
|
+
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17001
17000
|
"tooltip.url.copy": "URL kopieren",
|
|
17002
17001
|
"tooltip.url.open": "URL öffnen",
|
|
17003
17002
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17031,20 +17030,21 @@ var en = {
|
|
|
17031
17030
|
"chart.type.line": "line chart",
|
|
17032
17031
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17033
17032
|
"chart.type.pie": "pie chart",
|
|
17033
|
+
"dashboard.createRecord": "New record",
|
|
17034
17034
|
"dashboard.labels.mySpace": "My space",
|
|
17035
|
-
"dashboard.records.all": "
|
|
17035
|
+
"dashboard.records.all": "Metadata records",
|
|
17036
17036
|
"dashboard.records.myDraft": "My drafts",
|
|
17037
17037
|
"dashboard.records.myLibrary": "My library",
|
|
17038
17038
|
"dashboard.records.myOrg": "Organization",
|
|
17039
17039
|
"dashboard.records.myRecords": "My Records",
|
|
17040
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17041
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17042
17040
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17043
17041
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17044
17042
|
"dashboard.records.userDetail": "Name",
|
|
17045
17043
|
"dashboard.records.userEmail": "Email",
|
|
17046
17044
|
"dashboard.records.username": "Username",
|
|
17047
17045
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
17046
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
17047
|
+
"dashboard.results.listResources": "Show resources",
|
|
17048
17048
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17049
17049
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17050
17050
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17158,6 +17158,8 @@ var en = {
|
|
|
17158
17158
|
"downloads.format.unknown": "unknown",
|
|
17159
17159
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17160
17160
|
dropFile: dropFile$5,
|
|
17161
|
+
"editor.record.publish": "Publish this record",
|
|
17162
|
+
"editor.record.upToDate": "This record is up to date",
|
|
17161
17163
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17162
17164
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17163
17165
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -17171,21 +17173,21 @@ var en = {
|
|
|
17171
17173
|
"facets.block.title.tag.default": "Tag",
|
|
17172
17174
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
17173
17175
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
17174
|
-
"language.ca": "
|
|
17175
|
-
"language.cs": "
|
|
17176
|
-
"language.de": "
|
|
17176
|
+
"language.ca": "Catalan",
|
|
17177
|
+
"language.cs": "Czech",
|
|
17178
|
+
"language.de": "German",
|
|
17177
17179
|
"language.en": "English",
|
|
17178
|
-
"language.es": "
|
|
17179
|
-
"language.fi": "
|
|
17180
|
-
"language.fr": "
|
|
17181
|
-
"language.is": "
|
|
17182
|
-
"language.it": "
|
|
17183
|
-
"language.ko": "
|
|
17184
|
-
"language.nl": "
|
|
17185
|
-
"language.pt": "
|
|
17186
|
-
"language.ru": "
|
|
17187
|
-
"language.sk": "
|
|
17188
|
-
"language.zh": "
|
|
17180
|
+
"language.es": "Spanish",
|
|
17181
|
+
"language.fi": "Finnish",
|
|
17182
|
+
"language.fr": "French",
|
|
17183
|
+
"language.is": "Icelandic",
|
|
17184
|
+
"language.it": "Italian",
|
|
17185
|
+
"language.ko": "Korean",
|
|
17186
|
+
"language.nl": "Dutch",
|
|
17187
|
+
"language.pt": "Portuguese",
|
|
17188
|
+
"language.ru": "Russian",
|
|
17189
|
+
"language.sk": "Slovak",
|
|
17190
|
+
"language.zh": "Chinese",
|
|
17189
17191
|
"map.add.layer": "Add a layer",
|
|
17190
17192
|
"map.add.layer.catalog": "From the catalog",
|
|
17191
17193
|
"map.add.layer.file": "From a file",
|
|
@@ -17236,18 +17238,20 @@ var en = {
|
|
|
17236
17238
|
"record.metadata.author": "Author",
|
|
17237
17239
|
"record.metadata.catalog": "Catalog",
|
|
17238
17240
|
"record.metadata.contact": "Contact",
|
|
17239
|
-
"record.metadata.
|
|
17240
|
-
"record.metadata.details": "
|
|
17241
|
+
"record.metadata.creation": "Date of creation",
|
|
17242
|
+
"record.metadata.details": "About the data",
|
|
17241
17243
|
"record.metadata.download": "Downloads",
|
|
17242
17244
|
"record.metadata.formats": "Formats",
|
|
17243
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17244
17245
|
"record.metadata.keywords": "Keywords",
|
|
17245
|
-
"record.metadata.
|
|
17246
|
+
"record.metadata.languages": "Languages",
|
|
17247
|
+
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
17246
17248
|
"record.metadata.links": "Links",
|
|
17247
17249
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17248
|
-
"record.metadata.
|
|
17250
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17249
17251
|
"record.metadata.owner": "Catalog of origin",
|
|
17250
17252
|
"record.metadata.preview": "Preview",
|
|
17253
|
+
"record.metadata.producer": "Data producer",
|
|
17254
|
+
"record.metadata.publication": "Date of publication",
|
|
17251
17255
|
"record.metadata.publications": "publications",
|
|
17252
17256
|
"record.metadata.quality": "Metadata Quality",
|
|
17253
17257
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
@@ -17269,14 +17273,19 @@ var en = {
|
|
|
17269
17273
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17270
17274
|
"record.metadata.related": "Related records",
|
|
17271
17275
|
"record.metadata.sheet": "Original metadata",
|
|
17272
|
-
"record.metadata.
|
|
17276
|
+
"record.metadata.status": "Status",
|
|
17277
|
+
"record.metadata.technical": "Technical information",
|
|
17278
|
+
"record.metadata.temporalExtent": "Temporal extent",
|
|
17279
|
+
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
17280
|
+
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
17281
|
+
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
17273
17282
|
"record.metadata.title": "Title",
|
|
17283
|
+
"record.metadata.topics": "Categories",
|
|
17274
17284
|
"record.metadata.type": "Geographical dataset",
|
|
17275
17285
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17276
17286
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17277
|
-
"record.metadata.
|
|
17278
|
-
"record.metadata.
|
|
17279
|
-
"record.metadata.usage": "Usage & constraints",
|
|
17287
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17288
|
+
"record.metadata.usage": "License and Conditions",
|
|
17280
17289
|
"record.more.details": "Read more",
|
|
17281
17290
|
"record.tab.chart": "Chart",
|
|
17282
17291
|
"record.tab.data": "Table",
|
|
@@ -17306,6 +17315,7 @@ var en = {
|
|
|
17306
17315
|
"search.filters.isSpatial": "Is spatial data",
|
|
17307
17316
|
"search.filters.isSpatial.no": "non spatial",
|
|
17308
17317
|
"search.filters.isSpatial.yes": "spatial",
|
|
17318
|
+
"search.filters.keyword": "Keyword",
|
|
17309
17319
|
"search.filters.license": "License",
|
|
17310
17320
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17311
17321
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17370,20 +17380,21 @@ var es = {
|
|
|
17370
17380
|
"chart.type.line": "gráfico de líneas",
|
|
17371
17381
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17372
17382
|
"chart.type.pie": "gráfico circular",
|
|
17383
|
+
"dashboard.createRecord": "",
|
|
17373
17384
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17374
17385
|
"dashboard.records.all": "Catálogo",
|
|
17375
17386
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17376
17387
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17377
17388
|
"dashboard.records.myOrg": "Organización",
|
|
17378
17389
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17379
|
-
"dashboard.records.noRecord": "",
|
|
17380
|
-
"dashboard.records.noUser": "",
|
|
17381
17390
|
"dashboard.records.publishedRecords": "",
|
|
17382
17391
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17383
17392
|
"dashboard.records.userDetail": "",
|
|
17384
17393
|
"dashboard.records.userEmail": "",
|
|
17385
17394
|
"dashboard.records.username": "",
|
|
17386
17395
|
"dashboard.records.users": "",
|
|
17396
|
+
"dashboard.results.listMetadata": "",
|
|
17397
|
+
"dashboard.results.listResources": "",
|
|
17387
17398
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17388
17399
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17389
17400
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17497,6 +17508,8 @@ var es = {
|
|
|
17497
17508
|
"downloads.format.unknown": "",
|
|
17498
17509
|
"downloads.wfs.featuretype.not.found": "",
|
|
17499
17510
|
dropFile: dropFile$4,
|
|
17511
|
+
"editor.record.publish": "",
|
|
17512
|
+
"editor.record.upToDate": "",
|
|
17500
17513
|
"externalviewer.dataset.unnamed": "",
|
|
17501
17514
|
"facets.block.title.OrgForResource": "",
|
|
17502
17515
|
"facets.block.title.availableInServices": "",
|
|
@@ -17510,21 +17523,21 @@ var es = {
|
|
|
17510
17523
|
"facets.block.title.tag.default": "",
|
|
17511
17524
|
"facets.block.title.th_regions_tree.default": "",
|
|
17512
17525
|
"favorite.not.authenticated.tooltip": "",
|
|
17513
|
-
"language.ca": "
|
|
17514
|
-
"language.cs": "
|
|
17515
|
-
"language.de": "
|
|
17516
|
-
"language.en": "
|
|
17526
|
+
"language.ca": "Catalán",
|
|
17527
|
+
"language.cs": "Checo",
|
|
17528
|
+
"language.de": "Alemán",
|
|
17529
|
+
"language.en": "Inglés",
|
|
17517
17530
|
"language.es": "Español",
|
|
17518
|
-
"language.fi": "
|
|
17519
|
-
"language.fr": "
|
|
17520
|
-
"language.is": "
|
|
17531
|
+
"language.fi": "Finlandés",
|
|
17532
|
+
"language.fr": "Francés",
|
|
17533
|
+
"language.is": "Islandés",
|
|
17521
17534
|
"language.it": "Italiano",
|
|
17522
|
-
"language.ko": "
|
|
17523
|
-
"language.nl": "
|
|
17524
|
-
"language.pt": "
|
|
17525
|
-
"language.ru": "
|
|
17526
|
-
"language.sk": "
|
|
17527
|
-
"language.zh": "
|
|
17535
|
+
"language.ko": "Coreano",
|
|
17536
|
+
"language.nl": "Neerlandés",
|
|
17537
|
+
"language.pt": "Portugués",
|
|
17538
|
+
"language.ru": "Ruso",
|
|
17539
|
+
"language.sk": "Eslovaco",
|
|
17540
|
+
"language.zh": "Chino",
|
|
17528
17541
|
"map.add.layer": "",
|
|
17529
17542
|
"map.add.layer.catalog": "",
|
|
17530
17543
|
"map.add.layer.file": "",
|
|
@@ -17575,18 +17588,20 @@ var es = {
|
|
|
17575
17588
|
"record.metadata.author": "",
|
|
17576
17589
|
"record.metadata.catalog": "",
|
|
17577
17590
|
"record.metadata.contact": "",
|
|
17578
|
-
"record.metadata.
|
|
17591
|
+
"record.metadata.creation": "",
|
|
17579
17592
|
"record.metadata.details": "",
|
|
17580
17593
|
"record.metadata.download": "",
|
|
17581
17594
|
"record.metadata.formats": "",
|
|
17582
|
-
"record.metadata.isOpenData": "",
|
|
17583
17595
|
"record.metadata.keywords": "",
|
|
17596
|
+
"record.metadata.languages": "",
|
|
17584
17597
|
"record.metadata.lastUpdate": "",
|
|
17585
17598
|
"record.metadata.links": "",
|
|
17586
17599
|
"record.metadata.noUsage": "",
|
|
17587
|
-
"record.metadata.
|
|
17600
|
+
"record.metadata.otherConstraints": "",
|
|
17588
17601
|
"record.metadata.owner": "",
|
|
17589
17602
|
"record.metadata.preview": "",
|
|
17603
|
+
"record.metadata.producer": "",
|
|
17604
|
+
"record.metadata.publication": "",
|
|
17590
17605
|
"record.metadata.publications": "",
|
|
17591
17606
|
"record.metadata.quality": "",
|
|
17592
17607
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -17608,12 +17623,17 @@ var es = {
|
|
|
17608
17623
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17609
17624
|
"record.metadata.related": "",
|
|
17610
17625
|
"record.metadata.sheet": "",
|
|
17611
|
-
"record.metadata.
|
|
17626
|
+
"record.metadata.status": "",
|
|
17627
|
+
"record.metadata.technical": "",
|
|
17628
|
+
"record.metadata.temporalExtent": "",
|
|
17629
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
17630
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
17631
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
17612
17632
|
"record.metadata.title": "",
|
|
17633
|
+
"record.metadata.topics": "",
|
|
17613
17634
|
"record.metadata.type": "",
|
|
17614
17635
|
"record.metadata.uniqueId": "",
|
|
17615
17636
|
"record.metadata.updateFrequency": "",
|
|
17616
|
-
"record.metadata.updateStatus": "",
|
|
17617
17637
|
"record.metadata.updatedOn": "",
|
|
17618
17638
|
"record.metadata.usage": "",
|
|
17619
17639
|
"record.more.details": "",
|
|
@@ -17645,6 +17665,7 @@ var es = {
|
|
|
17645
17665
|
"search.filters.isSpatial": "",
|
|
17646
17666
|
"search.filters.isSpatial.no": "",
|
|
17647
17667
|
"search.filters.isSpatial.yes": "",
|
|
17668
|
+
"search.filters.keyword": "",
|
|
17648
17669
|
"search.filters.license": "",
|
|
17649
17670
|
"search.filters.license.cc-by": "",
|
|
17650
17671
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17709,20 +17730,21 @@ var fr = {
|
|
|
17709
17730
|
"chart.type.line": "ligne",
|
|
17710
17731
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17711
17732
|
"chart.type.pie": "camembert",
|
|
17733
|
+
"dashboard.createRecord": "Nouvel enregistrement",
|
|
17712
17734
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17713
17735
|
"dashboard.records.all": "Catalogue",
|
|
17714
17736
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17715
17737
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17716
17738
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17717
17739
|
"dashboard.records.myRecords": "Mes fiches publiées",
|
|
17718
|
-
"dashboard.records.noRecord": "Aucun jeu de données pour cette organisation",
|
|
17719
|
-
"dashboard.records.noUser": "Aucun utilisateur pour cette organisation",
|
|
17720
17740
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17721
17741
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17722
17742
|
"dashboard.records.userDetail": "Nom",
|
|
17723
17743
|
"dashboard.records.userEmail": "Email",
|
|
17724
17744
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17725
17745
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17746
|
+
"dashboard.results.listMetadata": "Afficher les métadonnées",
|
|
17747
|
+
"dashboard.results.listResources": "Afficher les ressources",
|
|
17726
17748
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17727
17749
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17728
17750
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17804,7 +17826,7 @@ var fr = {
|
|
|
17804
17826
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17805
17827
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17806
17828
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17807
|
-
"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
|
|
17829
|
+
"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>",
|
|
17808
17830
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17809
17831
|
"datahub.news.feed": "Fil d'activité",
|
|
17810
17832
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17836,6 +17858,8 @@ var fr = {
|
|
|
17836
17858
|
"downloads.format.unknown": "inconnu",
|
|
17837
17859
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
17838
17860
|
dropFile: dropFile$3,
|
|
17861
|
+
"editor.record.publish": "",
|
|
17862
|
+
"editor.record.upToDate": "",
|
|
17839
17863
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
17840
17864
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17841
17865
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -17849,38 +17873,38 @@ var fr = {
|
|
|
17849
17873
|
"facets.block.title.tag.default": "Tag",
|
|
17850
17874
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
17851
17875
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
17852
|
-
"language.ca": "
|
|
17853
|
-
"language.cs": "
|
|
17854
|
-
"language.de": "
|
|
17855
|
-
"language.en": "
|
|
17856
|
-
"language.es": "
|
|
17857
|
-
"language.fi": "
|
|
17876
|
+
"language.ca": "Catalan",
|
|
17877
|
+
"language.cs": "Tchèque",
|
|
17878
|
+
"language.de": "Allemand",
|
|
17879
|
+
"language.en": "Anglais",
|
|
17880
|
+
"language.es": "Espagnol",
|
|
17881
|
+
"language.fi": "Finnois",
|
|
17858
17882
|
"language.fr": "Français",
|
|
17859
|
-
"language.is": "
|
|
17860
|
-
"language.it": "
|
|
17861
|
-
"language.ko": "
|
|
17862
|
-
"language.nl": "
|
|
17863
|
-
"language.pt": "
|
|
17864
|
-
"language.ru": "
|
|
17865
|
-
"language.sk": "
|
|
17866
|
-
"language.zh": "
|
|
17867
|
-
"map.add.layer": "",
|
|
17868
|
-
"map.add.layer.catalog": "",
|
|
17869
|
-
"map.add.layer.file": "",
|
|
17870
|
-
"map.add.layer.wfs": "",
|
|
17871
|
-
"map.add.layer.wms": "",
|
|
17872
|
-
"map.addFromFile.placeholder": "",
|
|
17873
|
-
"map.geocoding.placeholder": "",
|
|
17874
|
-
"map.help.addFromFile": "",
|
|
17875
|
-
"map.layer.add": "",
|
|
17876
|
-
"map.layers.available": "",
|
|
17877
|
-
"map.layers.list": "",
|
|
17883
|
+
"language.is": "Islandais",
|
|
17884
|
+
"language.it": "Italien",
|
|
17885
|
+
"language.ko": "Coréen",
|
|
17886
|
+
"language.nl": "Néerlandais",
|
|
17887
|
+
"language.pt": "Portugais",
|
|
17888
|
+
"language.ru": "Russe",
|
|
17889
|
+
"language.sk": "Slovaque",
|
|
17890
|
+
"language.zh": "Chinois",
|
|
17891
|
+
"map.add.layer": "Ajouter une couche",
|
|
17892
|
+
"map.add.layer.catalog": "Du catalogue",
|
|
17893
|
+
"map.add.layer.file": "À partir d'un fichier",
|
|
17894
|
+
"map.add.layer.wfs": "Depuis un service WFS",
|
|
17895
|
+
"map.add.layer.wms": "Depuis un service WMS",
|
|
17896
|
+
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
17897
|
+
"map.geocoding.placeholder": "Rechercher un lieu",
|
|
17898
|
+
"map.help.addFromFile": "Cliquez ou glissez-déposez un fichier pour l'ajouter à la carte (supporte actuellement uniquement le format GeoJSON).",
|
|
17899
|
+
"map.layer.add": "Ajouter",
|
|
17900
|
+
"map.layers.available": "Couches disponibles",
|
|
17901
|
+
"map.layers.list": "Couches",
|
|
17878
17902
|
"map.loading.data": "Chargement des données...",
|
|
17879
|
-
"map.loading.service": "",
|
|
17903
|
+
"map.loading.service": "Chargement du service...",
|
|
17880
17904
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17881
17905
|
"map.select.layer": "Source de données",
|
|
17882
|
-
"map.wfs.urlInput.hint": "",
|
|
17883
|
-
"map.wms.urlInput.hint": "",
|
|
17906
|
+
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
17907
|
+
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
17884
17908
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17885
17909
|
"nav.back": "Retour",
|
|
17886
17910
|
next: next$3,
|
|
@@ -17914,18 +17938,20 @@ var fr = {
|
|
|
17914
17938
|
"record.metadata.author": "Auteur",
|
|
17915
17939
|
"record.metadata.catalog": "Catalogue",
|
|
17916
17940
|
"record.metadata.contact": "Contact",
|
|
17917
|
-
"record.metadata.
|
|
17918
|
-
"record.metadata.details": "
|
|
17941
|
+
"record.metadata.creation": "Date de création",
|
|
17942
|
+
"record.metadata.details": "A propos de la donnée",
|
|
17919
17943
|
"record.metadata.download": "Téléchargements",
|
|
17920
17944
|
"record.metadata.formats": "Formats",
|
|
17921
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17922
17945
|
"record.metadata.keywords": "Mots clés",
|
|
17923
|
-
"record.metadata.
|
|
17946
|
+
"record.metadata.languages": "Langues",
|
|
17947
|
+
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
17924
17948
|
"record.metadata.links": "Liens",
|
|
17925
17949
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17926
|
-
"record.metadata.
|
|
17950
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17927
17951
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17928
17952
|
"record.metadata.preview": "Aperçu",
|
|
17953
|
+
"record.metadata.producer": "Producteur de la donnée",
|
|
17954
|
+
"record.metadata.publication": "Date de publication",
|
|
17929
17955
|
"record.metadata.publications": "données",
|
|
17930
17956
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
17931
17957
|
"record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
|
|
@@ -17947,14 +17973,19 @@ var fr = {
|
|
|
17947
17973
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17948
17974
|
"record.metadata.related": "Voir aussi",
|
|
17949
17975
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17950
|
-
"record.metadata.
|
|
17976
|
+
"record.metadata.status": "Statut",
|
|
17977
|
+
"record.metadata.technical": "Informations techniques",
|
|
17978
|
+
"record.metadata.temporalExtent": "Etendue temporelle",
|
|
17979
|
+
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
17980
|
+
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
17981
|
+
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
17951
17982
|
"record.metadata.title": "Titre",
|
|
17983
|
+
"record.metadata.topics": "Catégories",
|
|
17952
17984
|
"record.metadata.type": "Donnée géographique",
|
|
17953
17985
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17954
17986
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17955
|
-
"record.metadata.
|
|
17956
|
-
"record.metadata.
|
|
17957
|
-
"record.metadata.usage": "Conditions d'utilisation",
|
|
17987
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17988
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17958
17989
|
"record.more.details": "Détails",
|
|
17959
17990
|
"record.tab.chart": "Graphique",
|
|
17960
17991
|
"record.tab.data": "Tableau",
|
|
@@ -17984,6 +18015,7 @@ var fr = {
|
|
|
17984
18015
|
"search.filters.isSpatial": "Données spatiales",
|
|
17985
18016
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17986
18017
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
18018
|
+
"search.filters.keyword": "Mot-clé",
|
|
17987
18019
|
"search.filters.license": "Licence",
|
|
17988
18020
|
"search.filters.license.cc-by": "cc-by",
|
|
17989
18021
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18048,20 +18080,21 @@ var it = {
|
|
|
18048
18080
|
"chart.type.line": "grafico a linee",
|
|
18049
18081
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18050
18082
|
"chart.type.pie": "grafico a torta",
|
|
18083
|
+
"dashboard.createRecord": "Crea un record",
|
|
18051
18084
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18052
18085
|
"dashboard.records.all": "Catalogo",
|
|
18053
18086
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18054
18087
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18055
18088
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18056
18089
|
"dashboard.records.myRecords": "I miei dati",
|
|
18057
|
-
"dashboard.records.noRecord": "Nessun dati per questa organizzazione",
|
|
18058
|
-
"dashboard.records.noUser": "Nessun utente per questa organizzazione",
|
|
18059
18090
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18060
18091
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18061
18092
|
"dashboard.records.userDetail": "Nome",
|
|
18062
18093
|
"dashboard.records.userEmail": "Email",
|
|
18063
18094
|
"dashboard.records.username": "Nome utente",
|
|
18064
18095
|
"dashboard.records.users": "utenti",
|
|
18096
|
+
"dashboard.results.listMetadata": "Elenco dei metadati",
|
|
18097
|
+
"dashboard.results.listResources": "Elenco delle risorse",
|
|
18065
18098
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18066
18099
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18067
18100
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18175,6 +18208,8 @@ var it = {
|
|
|
18175
18208
|
"downloads.format.unknown": "sconosciuto",
|
|
18176
18209
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18177
18210
|
dropFile: dropFile$2,
|
|
18211
|
+
"editor.record.publish": "",
|
|
18212
|
+
"editor.record.upToDate": "",
|
|
18178
18213
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
18179
18214
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
18180
18215
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -18188,38 +18223,38 @@ var it = {
|
|
|
18188
18223
|
"facets.block.title.tag.default": "Tag",
|
|
18189
18224
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
18190
18225
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
18191
|
-
"language.ca": "
|
|
18192
|
-
"language.cs": "
|
|
18193
|
-
"language.de": "
|
|
18194
|
-
"language.en": "
|
|
18195
|
-
"language.es": "
|
|
18196
|
-
"language.fi": "
|
|
18197
|
-
"language.fr": "
|
|
18198
|
-
"language.is": "
|
|
18226
|
+
"language.ca": "Catalano",
|
|
18227
|
+
"language.cs": "Ceco",
|
|
18228
|
+
"language.de": "Tedesco",
|
|
18229
|
+
"language.en": "Inglese",
|
|
18230
|
+
"language.es": "Spagnolo",
|
|
18231
|
+
"language.fi": "Finlandese",
|
|
18232
|
+
"language.fr": "Francese",
|
|
18233
|
+
"language.is": "Islandese",
|
|
18199
18234
|
"language.it": "Italiano",
|
|
18200
|
-
"language.ko": "
|
|
18201
|
-
"language.nl": "
|
|
18202
|
-
"language.pt": "
|
|
18203
|
-
"language.ru": "
|
|
18204
|
-
"language.sk": "
|
|
18205
|
-
"language.zh": "
|
|
18235
|
+
"language.ko": "Coreano",
|
|
18236
|
+
"language.nl": "Olandese",
|
|
18237
|
+
"language.pt": "Portoghese",
|
|
18238
|
+
"language.ru": "Russo",
|
|
18239
|
+
"language.sk": "Slovacco",
|
|
18240
|
+
"language.zh": "Cinese",
|
|
18206
18241
|
"map.add.layer": "Aggiungere un layer",
|
|
18207
18242
|
"map.add.layer.catalog": "Dal catalogo",
|
|
18208
18243
|
"map.add.layer.file": "Da un file",
|
|
18209
18244
|
"map.add.layer.wfs": "Da un WFS",
|
|
18210
18245
|
"map.add.layer.wms": "Da un WMS",
|
|
18211
|
-
"map.addFromFile.placeholder": "",
|
|
18212
|
-
"map.geocoding.placeholder": "",
|
|
18213
|
-
"map.help.addFromFile": "",
|
|
18214
|
-
"map.layer.add": "",
|
|
18215
|
-
"map.layers.available": "",
|
|
18246
|
+
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
18247
|
+
"map.geocoding.placeholder": "Cerca un luogo",
|
|
18248
|
+
"map.help.addFromFile": "Clicca o trascina un file per aggiungerlo alla mappa (attualmente supporta solo il formato GeoJSON)",
|
|
18249
|
+
"map.layer.add": "Aggiungi",
|
|
18250
|
+
"map.layers.available": "Layer disponibili",
|
|
18216
18251
|
"map.layers.list": "Layers",
|
|
18217
18252
|
"map.loading.data": "Caricamento dati...",
|
|
18218
|
-
"map.loading.service": "",
|
|
18253
|
+
"map.loading.service": "Caricamento del servizio...",
|
|
18219
18254
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18220
18255
|
"map.select.layer": "Sorgente dati",
|
|
18221
|
-
"map.wfs.urlInput.hint": "",
|
|
18222
|
-
"map.wms.urlInput.hint": "",
|
|
18256
|
+
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
18257
|
+
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
18223
18258
|
"multiselect.filter.placeholder": "Cerca",
|
|
18224
18259
|
"nav.back": "Indietro",
|
|
18225
18260
|
next: next$2,
|
|
@@ -18253,18 +18288,20 @@ var it = {
|
|
|
18253
18288
|
"record.metadata.author": "Autore",
|
|
18254
18289
|
"record.metadata.catalog": "Catalogo",
|
|
18255
18290
|
"record.metadata.contact": "Contatto",
|
|
18256
|
-
"record.metadata.
|
|
18257
|
-
"record.metadata.details": "
|
|
18291
|
+
"record.metadata.creation": "Data di creazione",
|
|
18292
|
+
"record.metadata.details": "A proposito del dati",
|
|
18258
18293
|
"record.metadata.download": "Download",
|
|
18259
18294
|
"record.metadata.formats": "Formati",
|
|
18260
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18261
18295
|
"record.metadata.keywords": "Parole chiave",
|
|
18262
|
-
"record.metadata.
|
|
18296
|
+
"record.metadata.languages": "Lingue",
|
|
18297
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
18263
18298
|
"record.metadata.links": "Collegamenti",
|
|
18264
18299
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18265
|
-
"record.metadata.
|
|
18300
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18266
18301
|
"record.metadata.owner": "Catalogo originale",
|
|
18267
18302
|
"record.metadata.preview": "Anteprima",
|
|
18303
|
+
"record.metadata.producer": "Produttore dei dati",
|
|
18304
|
+
"record.metadata.publication": "Data di pubblicazione",
|
|
18268
18305
|
"record.metadata.publications": "pubblicazioni",
|
|
18269
18306
|
"record.metadata.quality": "Qualità dei metadati",
|
|
18270
18307
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
@@ -18286,14 +18323,19 @@ var it = {
|
|
|
18286
18323
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18287
18324
|
"record.metadata.related": "Vedi anche",
|
|
18288
18325
|
"record.metadata.sheet": "Origine del metadata",
|
|
18289
|
-
"record.metadata.
|
|
18326
|
+
"record.metadata.status": "Stato",
|
|
18327
|
+
"record.metadata.technical": "Informazioni tecniche",
|
|
18328
|
+
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
18329
|
+
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
18330
|
+
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
18331
|
+
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
18290
18332
|
"record.metadata.title": "Titolo",
|
|
18333
|
+
"record.metadata.topics": "Categorie",
|
|
18291
18334
|
"record.metadata.type": "Dati geografici",
|
|
18292
18335
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18293
18336
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18294
|
-
"record.metadata.
|
|
18295
|
-
"record.metadata.
|
|
18296
|
-
"record.metadata.usage": "Condizioni d'uso",
|
|
18337
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18338
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18297
18339
|
"record.more.details": "Dettagli",
|
|
18298
18340
|
"record.tab.chart": "Grafico",
|
|
18299
18341
|
"record.tab.data": "Tabella",
|
|
@@ -18323,6 +18365,7 @@ var it = {
|
|
|
18323
18365
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18324
18366
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18325
18367
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18368
|
+
"search.filters.keyword": "Parola chiave",
|
|
18326
18369
|
"search.filters.license": "Licenza",
|
|
18327
18370
|
"search.filters.license.cc-by": "cc-by",
|
|
18328
18371
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18387,20 +18430,21 @@ var nl = {
|
|
|
18387
18430
|
"chart.type.line": "lijndiagram",
|
|
18388
18431
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18389
18432
|
"chart.type.pie": "cirkeldiagram",
|
|
18433
|
+
"dashboard.createRecord": "",
|
|
18390
18434
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18391
18435
|
"dashboard.records.all": "Catalogus",
|
|
18392
18436
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18393
18437
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18394
18438
|
"dashboard.records.myOrg": "Organisatie",
|
|
18395
18439
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18396
|
-
"dashboard.records.noRecord": "",
|
|
18397
|
-
"dashboard.records.noUser": "",
|
|
18398
18440
|
"dashboard.records.publishedRecords": "",
|
|
18399
18441
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18400
18442
|
"dashboard.records.userDetail": "",
|
|
18401
18443
|
"dashboard.records.userEmail": "",
|
|
18402
18444
|
"dashboard.records.username": "",
|
|
18403
18445
|
"dashboard.records.users": "",
|
|
18446
|
+
"dashboard.results.listMetadata": "",
|
|
18447
|
+
"dashboard.results.listResources": "",
|
|
18404
18448
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18405
18449
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18406
18450
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18514,6 +18558,8 @@ var nl = {
|
|
|
18514
18558
|
"downloads.format.unknown": "",
|
|
18515
18559
|
"downloads.wfs.featuretype.not.found": "",
|
|
18516
18560
|
dropFile: dropFile$1,
|
|
18561
|
+
"editor.record.publish": "",
|
|
18562
|
+
"editor.record.upToDate": "",
|
|
18517
18563
|
"externalviewer.dataset.unnamed": "",
|
|
18518
18564
|
"facets.block.title.OrgForResource": "",
|
|
18519
18565
|
"facets.block.title.availableInServices": "",
|
|
@@ -18527,21 +18573,21 @@ var nl = {
|
|
|
18527
18573
|
"facets.block.title.tag.default": "",
|
|
18528
18574
|
"facets.block.title.th_regions_tree.default": "",
|
|
18529
18575
|
"favorite.not.authenticated.tooltip": "",
|
|
18530
|
-
"language.ca": "
|
|
18531
|
-
"language.cs": "
|
|
18532
|
-
"language.de": "
|
|
18533
|
-
"language.en": "
|
|
18534
|
-
"language.es": "
|
|
18535
|
-
"language.fi": "
|
|
18536
|
-
"language.fr": "
|
|
18537
|
-
"language.is": "
|
|
18538
|
-
"language.it": "
|
|
18539
|
-
"language.ko": "
|
|
18576
|
+
"language.ca": "Catalaans",
|
|
18577
|
+
"language.cs": "Tsjechisch",
|
|
18578
|
+
"language.de": "Duits",
|
|
18579
|
+
"language.en": "Engels",
|
|
18580
|
+
"language.es": "Spaans",
|
|
18581
|
+
"language.fi": "Fins",
|
|
18582
|
+
"language.fr": "Frans",
|
|
18583
|
+
"language.is": "IJslands",
|
|
18584
|
+
"language.it": "Italiaans",
|
|
18585
|
+
"language.ko": "Koreaans",
|
|
18540
18586
|
"language.nl": "Nederlands",
|
|
18541
|
-
"language.pt": "
|
|
18542
|
-
"language.ru": "
|
|
18543
|
-
"language.sk": "
|
|
18544
|
-
"language.zh": "
|
|
18587
|
+
"language.pt": "Portugees",
|
|
18588
|
+
"language.ru": "Russisch",
|
|
18589
|
+
"language.sk": "Slowaaks",
|
|
18590
|
+
"language.zh": "Chinees",
|
|
18545
18591
|
"map.add.layer": "",
|
|
18546
18592
|
"map.add.layer.catalog": "",
|
|
18547
18593
|
"map.add.layer.file": "",
|
|
@@ -18592,18 +18638,20 @@ var nl = {
|
|
|
18592
18638
|
"record.metadata.author": "",
|
|
18593
18639
|
"record.metadata.catalog": "",
|
|
18594
18640
|
"record.metadata.contact": "",
|
|
18595
|
-
"record.metadata.
|
|
18641
|
+
"record.metadata.creation": "",
|
|
18596
18642
|
"record.metadata.details": "",
|
|
18597
18643
|
"record.metadata.download": "",
|
|
18598
18644
|
"record.metadata.formats": "",
|
|
18599
|
-
"record.metadata.isOpenData": "",
|
|
18600
18645
|
"record.metadata.keywords": "",
|
|
18646
|
+
"record.metadata.languages": "",
|
|
18601
18647
|
"record.metadata.lastUpdate": "",
|
|
18602
18648
|
"record.metadata.links": "",
|
|
18603
18649
|
"record.metadata.noUsage": "",
|
|
18604
|
-
"record.metadata.
|
|
18650
|
+
"record.metadata.otherConstraints": "",
|
|
18605
18651
|
"record.metadata.owner": "",
|
|
18606
18652
|
"record.metadata.preview": "",
|
|
18653
|
+
"record.metadata.producer": "",
|
|
18654
|
+
"record.metadata.publication": "",
|
|
18607
18655
|
"record.metadata.publications": "",
|
|
18608
18656
|
"record.metadata.quality": "",
|
|
18609
18657
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18625,12 +18673,17 @@ var nl = {
|
|
|
18625
18673
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18626
18674
|
"record.metadata.related": "",
|
|
18627
18675
|
"record.metadata.sheet": "",
|
|
18628
|
-
"record.metadata.
|
|
18676
|
+
"record.metadata.status": "",
|
|
18677
|
+
"record.metadata.technical": "",
|
|
18678
|
+
"record.metadata.temporalExtent": "",
|
|
18679
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
18680
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
18681
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18629
18682
|
"record.metadata.title": "",
|
|
18683
|
+
"record.metadata.topics": "",
|
|
18630
18684
|
"record.metadata.type": "",
|
|
18631
18685
|
"record.metadata.uniqueId": "",
|
|
18632
18686
|
"record.metadata.updateFrequency": "",
|
|
18633
|
-
"record.metadata.updateStatus": "",
|
|
18634
18687
|
"record.metadata.updatedOn": "",
|
|
18635
18688
|
"record.metadata.usage": "",
|
|
18636
18689
|
"record.more.details": "",
|
|
@@ -18662,6 +18715,7 @@ var nl = {
|
|
|
18662
18715
|
"search.filters.isSpatial": "",
|
|
18663
18716
|
"search.filters.isSpatial.no": "",
|
|
18664
18717
|
"search.filters.isSpatial.yes": "",
|
|
18718
|
+
"search.filters.keyword": "",
|
|
18665
18719
|
"search.filters.license": "",
|
|
18666
18720
|
"search.filters.license.cc-by": "",
|
|
18667
18721
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18726,20 +18780,21 @@ var pt = {
|
|
|
18726
18780
|
"chart.type.line": "gráfico de linha",
|
|
18727
18781
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18728
18782
|
"chart.type.pie": "gráfico de pizza",
|
|
18783
|
+
"dashboard.createRecord": "",
|
|
18729
18784
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18730
18785
|
"dashboard.records.all": "Catálogo",
|
|
18731
18786
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18732
18787
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18733
18788
|
"dashboard.records.myOrg": "Organização",
|
|
18734
18789
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18735
|
-
"dashboard.records.noRecord": "",
|
|
18736
|
-
"dashboard.records.noUser": "",
|
|
18737
18790
|
"dashboard.records.publishedRecords": "",
|
|
18738
18791
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18739
18792
|
"dashboard.records.userDetail": "",
|
|
18740
18793
|
"dashboard.records.userEmail": "",
|
|
18741
18794
|
"dashboard.records.username": "",
|
|
18742
18795
|
"dashboard.records.users": "",
|
|
18796
|
+
"dashboard.results.listMetadata": "",
|
|
18797
|
+
"dashboard.results.listResources": "",
|
|
18743
18798
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18744
18799
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18745
18800
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18853,6 +18908,8 @@ var pt = {
|
|
|
18853
18908
|
"downloads.format.unknown": "",
|
|
18854
18909
|
"downloads.wfs.featuretype.not.found": "",
|
|
18855
18910
|
dropFile: dropFile,
|
|
18911
|
+
"editor.record.publish": "",
|
|
18912
|
+
"editor.record.upToDate": "",
|
|
18856
18913
|
"externalviewer.dataset.unnamed": "",
|
|
18857
18914
|
"facets.block.title.OrgForResource": "",
|
|
18858
18915
|
"facets.block.title.availableInServices": "",
|
|
@@ -18866,21 +18923,21 @@ var pt = {
|
|
|
18866
18923
|
"facets.block.title.tag.default": "",
|
|
18867
18924
|
"facets.block.title.th_regions_tree.default": "",
|
|
18868
18925
|
"favorite.not.authenticated.tooltip": "",
|
|
18869
|
-
"language.ca": "
|
|
18870
|
-
"language.cs": "
|
|
18871
|
-
"language.de": "
|
|
18872
|
-
"language.en": "
|
|
18873
|
-
"language.es": "
|
|
18874
|
-
"language.fi": "
|
|
18875
|
-
"language.fr": "
|
|
18876
|
-
"language.is": "
|
|
18926
|
+
"language.ca": "Catalão",
|
|
18927
|
+
"language.cs": "Tcheco",
|
|
18928
|
+
"language.de": "Alemão",
|
|
18929
|
+
"language.en": "Inglês",
|
|
18930
|
+
"language.es": "Espanhol",
|
|
18931
|
+
"language.fi": "Finlandês",
|
|
18932
|
+
"language.fr": "Francês",
|
|
18933
|
+
"language.is": "Islandês",
|
|
18877
18934
|
"language.it": "Italiano",
|
|
18878
|
-
"language.ko": "
|
|
18879
|
-
"language.nl": "
|
|
18935
|
+
"language.ko": "Coreano",
|
|
18936
|
+
"language.nl": "Holandês",
|
|
18880
18937
|
"language.pt": "Português",
|
|
18881
|
-
"language.ru": "
|
|
18882
|
-
"language.sk": "
|
|
18883
|
-
"language.zh": "
|
|
18938
|
+
"language.ru": "Russo",
|
|
18939
|
+
"language.sk": "Eslovaco",
|
|
18940
|
+
"language.zh": "Chinês",
|
|
18884
18941
|
"map.add.layer": "",
|
|
18885
18942
|
"map.add.layer.catalog": "",
|
|
18886
18943
|
"map.add.layer.file": "",
|
|
@@ -18931,18 +18988,20 @@ var pt = {
|
|
|
18931
18988
|
"record.metadata.author": "",
|
|
18932
18989
|
"record.metadata.catalog": "",
|
|
18933
18990
|
"record.metadata.contact": "",
|
|
18934
|
-
"record.metadata.
|
|
18991
|
+
"record.metadata.creation": "",
|
|
18935
18992
|
"record.metadata.details": "",
|
|
18936
18993
|
"record.metadata.download": "",
|
|
18937
18994
|
"record.metadata.formats": "",
|
|
18938
|
-
"record.metadata.isOpenData": "",
|
|
18939
18995
|
"record.metadata.keywords": "",
|
|
18996
|
+
"record.metadata.languages": "",
|
|
18940
18997
|
"record.metadata.lastUpdate": "",
|
|
18941
18998
|
"record.metadata.links": "",
|
|
18942
18999
|
"record.metadata.noUsage": "",
|
|
18943
|
-
"record.metadata.
|
|
19000
|
+
"record.metadata.otherConstraints": "",
|
|
18944
19001
|
"record.metadata.owner": "",
|
|
18945
19002
|
"record.metadata.preview": "",
|
|
19003
|
+
"record.metadata.producer": "",
|
|
19004
|
+
"record.metadata.publication": "",
|
|
18946
19005
|
"record.metadata.publications": "",
|
|
18947
19006
|
"record.metadata.quality": "",
|
|
18948
19007
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18964,12 +19023,17 @@ var pt = {
|
|
|
18964
19023
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18965
19024
|
"record.metadata.related": "",
|
|
18966
19025
|
"record.metadata.sheet": "",
|
|
18967
|
-
"record.metadata.
|
|
19026
|
+
"record.metadata.status": "",
|
|
19027
|
+
"record.metadata.technical": "",
|
|
19028
|
+
"record.metadata.temporalExtent": "",
|
|
19029
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
19030
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
19031
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18968
19032
|
"record.metadata.title": "",
|
|
19033
|
+
"record.metadata.topics": "",
|
|
18969
19034
|
"record.metadata.type": "",
|
|
18970
19035
|
"record.metadata.uniqueId": "",
|
|
18971
19036
|
"record.metadata.updateFrequency": "",
|
|
18972
|
-
"record.metadata.updateStatus": "",
|
|
18973
19037
|
"record.metadata.updatedOn": "",
|
|
18974
19038
|
"record.metadata.usage": "",
|
|
18975
19039
|
"record.more.details": "",
|
|
@@ -19001,6 +19065,7 @@ var pt = {
|
|
|
19001
19065
|
"search.filters.isSpatial": "",
|
|
19002
19066
|
"search.filters.isSpatial.no": "",
|
|
19003
19067
|
"search.filters.isSpatial.yes": "",
|
|
19068
|
+
"search.filters.keyword": "",
|
|
19004
19069
|
"search.filters.license": "",
|
|
19005
19070
|
"search.filters.license.cc-by": "",
|
|
19006
19071
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19109,8 +19174,8 @@ class Gn4FieldMapper {
|
|
|
19109
19174
|
},
|
|
19110
19175
|
cl_topic: (output, source) => ({
|
|
19111
19176
|
...output,
|
|
19112
|
-
|
|
19113
|
-
...(output.
|
|
19177
|
+
topics: [
|
|
19178
|
+
...(output.topics || []),
|
|
19114
19179
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19115
19180
|
],
|
|
19116
19181
|
}),
|
|
@@ -19134,6 +19199,18 @@ class Gn4FieldMapper {
|
|
|
19134
19199
|
...output,
|
|
19135
19200
|
recordUpdated: toDate(selectField(source, 'changeDate')),
|
|
19136
19201
|
}),
|
|
19202
|
+
publicationDateForResource: (output, source) => ({
|
|
19203
|
+
...output,
|
|
19204
|
+
recordPublished: toDate(selectField(source, 'publicationDateForResource')),
|
|
19205
|
+
}),
|
|
19206
|
+
resourceLanguage: (output, source) => {
|
|
19207
|
+
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
19208
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
19209
|
+
return {
|
|
19210
|
+
...output,
|
|
19211
|
+
languages,
|
|
19212
|
+
};
|
|
19213
|
+
},
|
|
19137
19214
|
link: (output, source) => {
|
|
19138
19215
|
const rawLinks = getAsArray(selectField(source, 'link'));
|
|
19139
19216
|
const distributions = rawLinks
|
|
@@ -19165,31 +19242,22 @@ class Gn4FieldMapper {
|
|
|
19165
19242
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19166
19243
|
}, output);
|
|
19167
19244
|
},
|
|
19168
|
-
|
|
19245
|
+
allKeywords: (output, source) => ({
|
|
19169
19246
|
...output,
|
|
19170
|
-
keywords:
|
|
19247
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19171
19248
|
}),
|
|
19172
19249
|
inspireTheme: (output, source) => ({
|
|
19173
19250
|
...output,
|
|
19174
|
-
|
|
19175
|
-
...(output.
|
|
19251
|
+
topics: [
|
|
19252
|
+
...(output.topics || []),
|
|
19176
19253
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19177
19254
|
],
|
|
19178
19255
|
}),
|
|
19179
|
-
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19180
|
-
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19181
|
-
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('
|
|
19182
|
-
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19183
|
-
licenseObject: (output, source) => (
|
|
19184
|
-
...output,
|
|
19185
|
-
licenses: getAsArray(selectField(source, 'licenseObject')).map((license) => {
|
|
19186
|
-
const link = getAsUrl(selectField(license, 'link'));
|
|
19187
|
-
return {
|
|
19188
|
-
text: selectTranslatedValue(license, this.lang3),
|
|
19189
|
-
...(link ? { link } : {}),
|
|
19190
|
-
};
|
|
19191
|
-
}),
|
|
19192
|
-
}),
|
|
19256
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19257
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19258
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19259
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19260
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19193
19261
|
lineageObject: (output, source) => ({
|
|
19194
19262
|
...output,
|
|
19195
19263
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19235,8 +19303,8 @@ class Gn4FieldMapper {
|
|
|
19235
19303
|
],
|
|
19236
19304
|
};
|
|
19237
19305
|
},
|
|
19238
|
-
|
|
19239
|
-
const ranges = getAsArray(selectField(source, '
|
|
19306
|
+
resourceTemporalExtentDateRange: (output, source) => {
|
|
19307
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalExtentDateRange'));
|
|
19240
19308
|
return {
|
|
19241
19309
|
...output,
|
|
19242
19310
|
temporalExtents: ranges.map((range) => {
|
|
@@ -19251,31 +19319,42 @@ class Gn4FieldMapper {
|
|
|
19251
19319
|
},
|
|
19252
19320
|
};
|
|
19253
19321
|
this.genericField = (output) => output;
|
|
19254
|
-
this.constraintField = (
|
|
19255
|
-
|
|
19256
|
-
|
|
19257
|
-
|
|
19258
|
-
|
|
19259
|
-
|
|
19260
|
-
|
|
19261
|
-
|
|
19262
|
-
|
|
19263
|
-
|
|
19264
|
-
|
|
19265
|
-
|
|
19266
|
-
|
|
19267
|
-
|
|
19268
|
-
|
|
19269
|
-
|
|
19270
|
-
|
|
19271
|
-
|
|
19272
|
-
|
|
19273
|
-
|
|
19274
|
-
|
|
19275
|
-
|
|
19276
|
-
|
|
19277
|
-
}
|
|
19278
|
-
|
|
19322
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19323
|
+
let outputField;
|
|
19324
|
+
switch (type) {
|
|
19325
|
+
case 'license':
|
|
19326
|
+
outputField = 'licenses';
|
|
19327
|
+
break;
|
|
19328
|
+
case 'legal':
|
|
19329
|
+
outputField = 'legalConstraints';
|
|
19330
|
+
break;
|
|
19331
|
+
case 'security':
|
|
19332
|
+
outputField = 'securityConstraints';
|
|
19333
|
+
break;
|
|
19334
|
+
case 'other':
|
|
19335
|
+
outputField = 'otherConstraints';
|
|
19336
|
+
break;
|
|
19337
|
+
}
|
|
19338
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19339
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19340
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19341
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19342
|
+
return {
|
|
19343
|
+
text,
|
|
19344
|
+
...(url ? { url } : {}),
|
|
19345
|
+
};
|
|
19346
|
+
}));
|
|
19347
|
+
const result = {
|
|
19348
|
+
...output,
|
|
19349
|
+
[outputField]: outputArray,
|
|
19350
|
+
};
|
|
19351
|
+
// avoid legal constraints being duplicates of licenses
|
|
19352
|
+
if ('legalConstraints' in result &&
|
|
19353
|
+
(type === 'legal' || type === 'license')) {
|
|
19354
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19355
|
+
}
|
|
19356
|
+
return result;
|
|
19357
|
+
};
|
|
19279
19358
|
this.mapLink = (sourceLink) => {
|
|
19280
19359
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19281
19360
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19323,17 +19402,6 @@ class Gn4FieldMapper {
|
|
|
19323
19402
|
extras: { ...(output.extras || {}), ...value },
|
|
19324
19403
|
});
|
|
19325
19404
|
}
|
|
19326
|
-
getConstraintsType(indexField) {
|
|
19327
|
-
switch (indexField) {
|
|
19328
|
-
case 'MD_LegalConstraintsUseLimitationObject':
|
|
19329
|
-
return 'legal';
|
|
19330
|
-
case 'MD_SecurityConstraintsUseLimitationObject':
|
|
19331
|
-
return 'security';
|
|
19332
|
-
case 'MD_ConstraintsUseLimitationObject':
|
|
19333
|
-
default:
|
|
19334
|
-
return 'other';
|
|
19335
|
-
}
|
|
19336
|
-
}
|
|
19337
19405
|
getMappingFn(fieldName) {
|
|
19338
19406
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19339
19407
|
}
|
|
@@ -19393,17 +19461,20 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19393
19461
|
status: null,
|
|
19394
19462
|
lineage: null,
|
|
19395
19463
|
recordUpdated: null,
|
|
19464
|
+
recordPublished: null,
|
|
19396
19465
|
ownerOrganization: null,
|
|
19397
19466
|
licenses: [],
|
|
19467
|
+
legalConstraints: [],
|
|
19468
|
+
securityConstraints: [],
|
|
19469
|
+
otherConstraints: [],
|
|
19398
19470
|
contacts: [],
|
|
19399
19471
|
contactsForResource: [],
|
|
19400
|
-
accessConstraints: [],
|
|
19401
19472
|
keywords: [],
|
|
19402
|
-
|
|
19403
|
-
useLimitations: [],
|
|
19473
|
+
topics: [],
|
|
19404
19474
|
spatialExtents: [],
|
|
19405
19475
|
temporalExtents: [],
|
|
19406
19476
|
overviews: [],
|
|
19477
|
+
languages: [],
|
|
19407
19478
|
};
|
|
19408
19479
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19409
19480
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -19563,7 +19634,7 @@ class ElasticsearchService {
|
|
|
19563
19634
|
},
|
|
19564
19635
|
};
|
|
19565
19636
|
}
|
|
19566
|
-
getRelatedRecordPayload(title, uuid, size = 6, _source = ES_SOURCE_SUMMARY) {
|
|
19637
|
+
getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
|
|
19567
19638
|
return {
|
|
19568
19639
|
query: {
|
|
19569
19640
|
bool: {
|
|
@@ -20168,11 +20239,18 @@ class OrganizationsFromMetadataService {
|
|
|
20168
20239
|
if (!allContactOrgs.length)
|
|
20169
20240
|
return of(record);
|
|
20170
20241
|
const ownerOrganization = allContactOrgs[0];
|
|
20171
|
-
|
|
20242
|
+
// read the owner group as well to have a fallback logo
|
|
20243
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20244
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20245
|
+
return group.id === Number(groupId);
|
|
20246
|
+
})));
|
|
20247
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20172
20248
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20249
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20173
20250
|
return {
|
|
20174
20251
|
...record,
|
|
20175
20252
|
ownerOrganization: {
|
|
20253
|
+
logoUrl,
|
|
20176
20254
|
...ownerOrganization,
|
|
20177
20255
|
...recordOrganisation,
|
|
20178
20256
|
},
|
|
@@ -20437,36 +20515,23 @@ class SelectionService {
|
|
|
20437
20515
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20438
20516
|
}
|
|
20439
20517
|
selectRecords(records) {
|
|
20440
|
-
const newIds =
|
|
20441
|
-
|
|
20442
|
-
newIds.push(record.uniqueIdentifier);
|
|
20443
|
-
});
|
|
20444
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds);
|
|
20445
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20518
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20519
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20446
20520
|
this.addIdsToSelected(newIds);
|
|
20447
|
-
})
|
|
20521
|
+
});
|
|
20448
20522
|
}
|
|
20449
20523
|
deselectRecords(records) {
|
|
20450
|
-
const idsToBeRemoved =
|
|
20451
|
-
|
|
20452
|
-
idsToBeRemoved.push(record.uniqueIdentifier);
|
|
20453
|
-
});
|
|
20454
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved);
|
|
20455
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20524
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20525
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20456
20526
|
this.removeIdsFromSelected(idsToBeRemoved);
|
|
20457
|
-
}), map$2(() => undefined));
|
|
20458
|
-
}
|
|
20459
|
-
clearSelection() {
|
|
20460
|
-
const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID);
|
|
20461
|
-
let currentSelection;
|
|
20462
|
-
this.subscription = currentSelectedResponse.subscribe((value) => {
|
|
20463
|
-
currentSelection = [...value];
|
|
20464
20527
|
});
|
|
20465
|
-
|
|
20466
|
-
|
|
20467
|
-
|
|
20528
|
+
}
|
|
20529
|
+
async clearSelection() {
|
|
20530
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20531
|
+
const currentSelection = Array.from(response);
|
|
20532
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20468
20533
|
this.removeIdsFromSelected(currentSelection);
|
|
20469
|
-
})
|
|
20534
|
+
});
|
|
20470
20535
|
}
|
|
20471
20536
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, deps: [{ token: SelectionsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20472
20537
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20496,12 +20561,21 @@ class Gn4PlatformMapper {
|
|
|
20496
20561
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20497
20562
|
return { ...apiUser, id: id.toString() };
|
|
20498
20563
|
}
|
|
20499
|
-
thesaurusFromApi(thesaurus) {
|
|
20564
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20500
20565
|
return thesaurus.map((keyword) => {
|
|
20501
|
-
|
|
20566
|
+
let key = keyword.uri;
|
|
20567
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20568
|
+
if (key.indexOf('@@@') > -1) {
|
|
20569
|
+
key = key.split('@@@')[1];
|
|
20570
|
+
}
|
|
20571
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20572
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20573
|
+
? keyword.definitions[lang3]
|
|
20574
|
+
: keyword.definition;
|
|
20502
20575
|
return {
|
|
20503
|
-
key
|
|
20504
|
-
label
|
|
20576
|
+
key,
|
|
20577
|
+
label,
|
|
20578
|
+
description,
|
|
20505
20579
|
};
|
|
20506
20580
|
});
|
|
20507
20581
|
}
|
|
@@ -20514,13 +20588,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20514
20588
|
|
|
20515
20589
|
const minApiVersion = '4.2.2';
|
|
20516
20590
|
class Gn4PlatformService {
|
|
20517
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20591
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20518
20592
|
this.siteApiService = siteApiService;
|
|
20519
20593
|
this.meApi = meApi;
|
|
20520
20594
|
this.usersApi = usersApi;
|
|
20521
20595
|
this.mapper = mapper;
|
|
20522
20596
|
this.toolsApiService = toolsApiService;
|
|
20523
20597
|
this.registriesApiService = registriesApiService;
|
|
20598
|
+
this.langService = langService;
|
|
20524
20599
|
this.type = 'GeoNetwork';
|
|
20525
20600
|
this.keyTranslations$ = this.toolsApiService
|
|
20526
20601
|
.getTranslationsPackage1('gnui')
|
|
@@ -20534,6 +20609,11 @@ class Gn4PlatformService {
|
|
|
20534
20609
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20535
20610
|
}
|
|
20536
20611
|
}), shareReplay(1));
|
|
20612
|
+
/**
|
|
20613
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20614
|
+
* @private
|
|
20615
|
+
*/
|
|
20616
|
+
this.thesauri = {};
|
|
20537
20617
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20538
20618
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20539
20619
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20560,19 +20640,36 @@ class Gn4PlatformService {
|
|
|
20560
20640
|
return this.users$;
|
|
20561
20641
|
}
|
|
20562
20642
|
translateKey(key) {
|
|
20643
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20644
|
+
if (key.match(/^https?:\/\//)) {
|
|
20645
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20646
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20647
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20648
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20649
|
+
for (const item of thesaurus) {
|
|
20650
|
+
if (item.key === key)
|
|
20651
|
+
return item.label;
|
|
20652
|
+
}
|
|
20653
|
+
return key;
|
|
20654
|
+
}));
|
|
20655
|
+
}
|
|
20563
20656
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20564
20657
|
}
|
|
20565
|
-
|
|
20566
|
-
|
|
20567
|
-
.
|
|
20568
|
-
|
|
20658
|
+
getThesaurusByUri(uri) {
|
|
20659
|
+
if (this.thesauri[uri]) {
|
|
20660
|
+
return this.thesauri[uri];
|
|
20661
|
+
}
|
|
20662
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20663
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20664
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20665
|
+
return this.thesauri[uri];
|
|
20569
20666
|
}
|
|
20570
|
-
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 }); }
|
|
20667
|
+
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 }); }
|
|
20571
20668
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20572
20669
|
}
|
|
20573
20670
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20574
20671
|
type: Injectable
|
|
20575
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20672
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20576
20673
|
|
|
20577
20674
|
function provideGn4() {
|
|
20578
20675
|
return [
|
|
@@ -20608,7 +20705,7 @@ const MAP_FEATURE_KEY = 'map';
|
|
|
20608
20705
|
const initialMapState = {
|
|
20609
20706
|
layers: [],
|
|
20610
20707
|
};
|
|
20611
|
-
const reducer$
|
|
20708
|
+
const reducer$3 = createReducer(initialMapState, on(addLayer, (state, action) => {
|
|
20612
20709
|
const layers = [...state.layers];
|
|
20613
20710
|
const layerWithInfo = { ...action.layer, loading: false, error: null };
|
|
20614
20711
|
if (!('atIndex' in action))
|
|
@@ -20657,7 +20754,7 @@ const reducer$2 = createReducer(initialMapState, on(addLayer, (state, action) =>
|
|
|
20657
20754
|
: layer),
|
|
20658
20755
|
})));
|
|
20659
20756
|
function mapReducer(state, action) {
|
|
20660
|
-
return reducer$
|
|
20757
|
+
return reducer$3(state, action);
|
|
20661
20758
|
}
|
|
20662
20759
|
|
|
20663
20760
|
// Lookup the 'Map' feature state managed by NgRx
|
|
@@ -21120,6 +21217,38 @@ function createFuzzyFilter(pattern) {
|
|
|
21120
21217
|
};
|
|
21121
21218
|
}
|
|
21122
21219
|
|
|
21220
|
+
function getTemporalRangeUnion(ranges) {
|
|
21221
|
+
let earliestStartDate = Infinity;
|
|
21222
|
+
let latestEndDate = -Infinity;
|
|
21223
|
+
if (ranges.length) {
|
|
21224
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
21225
|
+
const rangeStart = ranges[i].start
|
|
21226
|
+
? new Date(ranges[i].start).getTime()
|
|
21227
|
+
: -Infinity;
|
|
21228
|
+
const rangeEnd = ranges[i].end
|
|
21229
|
+
? new Date(ranges[i].end).getTime()
|
|
21230
|
+
: Infinity;
|
|
21231
|
+
if (rangeStart < earliestStartDate) {
|
|
21232
|
+
earliestStartDate = rangeStart;
|
|
21233
|
+
}
|
|
21234
|
+
if (rangeEnd > latestEndDate) {
|
|
21235
|
+
latestEndDate = rangeEnd;
|
|
21236
|
+
}
|
|
21237
|
+
}
|
|
21238
|
+
return {
|
|
21239
|
+
start: earliestStartDate !== -Infinity
|
|
21240
|
+
? new Date(earliestStartDate).toLocaleDateString()
|
|
21241
|
+
: undefined,
|
|
21242
|
+
end: latestEndDate !== Infinity
|
|
21243
|
+
? new Date(latestEndDate).toLocaleDateString()
|
|
21244
|
+
: undefined,
|
|
21245
|
+
};
|
|
21246
|
+
}
|
|
21247
|
+
else {
|
|
21248
|
+
return undefined;
|
|
21249
|
+
}
|
|
21250
|
+
}
|
|
21251
|
+
|
|
21123
21252
|
marker('downloads.wfs.featuretype.not.found');
|
|
21124
21253
|
const FORMATS = {
|
|
21125
21254
|
csv: {
|
|
@@ -22650,6 +22779,9 @@ class MapContextService {
|
|
|
22650
22779
|
if (mapConfig) {
|
|
22651
22780
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22652
22781
|
}
|
|
22782
|
+
else {
|
|
22783
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22784
|
+
}
|
|
22653
22785
|
if (!mapContext.view?.extent &&
|
|
22654
22786
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22655
22787
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22760,6 +22892,11 @@ class MapContextService {
|
|
|
22760
22892
|
}
|
|
22761
22893
|
return view;
|
|
22762
22894
|
}
|
|
22895
|
+
addDefaultBaselayerContext(layers) {
|
|
22896
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22897
|
+
? layers
|
|
22898
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22899
|
+
}
|
|
22763
22900
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22764
22901
|
return {
|
|
22765
22902
|
...mapContext,
|
|
@@ -23306,11 +23443,11 @@ class ThumbnailComponent {
|
|
|
23306
23443
|
}
|
|
23307
23444
|
}
|
|
23308
23445
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, deps: [{ token: THUMBNAIL_PLACEHOLDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23446
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23310
23447
|
}
|
|
23311
23448
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23312
23449
|
type: Component,
|
|
23313
|
-
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23450
|
+
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23314
23451
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23315
23452
|
type: Optional
|
|
23316
23453
|
}, {
|
|
@@ -23438,8 +23575,7 @@ class MetadataQualityComponent {
|
|
|
23438
23575
|
: this.calculatedQualityScore;
|
|
23439
23576
|
}
|
|
23440
23577
|
get calculatedQualityScore() {
|
|
23441
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23442
|
-
this.items.length);
|
|
23578
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23443
23579
|
}
|
|
23444
23580
|
showMenu() {
|
|
23445
23581
|
this.isMenuShown = true;
|
|
@@ -23457,7 +23593,7 @@ class MetadataQualityComponent {
|
|
|
23457
23593
|
this.items = [];
|
|
23458
23594
|
this.add('title', !!this.metadata?.title);
|
|
23459
23595
|
this.add('description', !!this.metadata?.abstract);
|
|
23460
|
-
this.add('topic', this.metadata?.
|
|
23596
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23461
23597
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23462
23598
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23463
23599
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23771,11 +23907,11 @@ class BadgeComponent {
|
|
|
23771
23907
|
this.clickable = false;
|
|
23772
23908
|
}
|
|
23773
23909
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23774
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable
|
|
23910
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23775
23911
|
}
|
|
23776
23912
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
23777
23913
|
type: Component,
|
|
23778
|
-
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable
|
|
23914
|
+
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
23779
23915
|
}], propDecorators: { clickable: [{
|
|
23780
23916
|
type: Input
|
|
23781
23917
|
}] } });
|
|
@@ -23905,6 +24041,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23905
24041
|
type: Input
|
|
23906
24042
|
}] } });
|
|
23907
24043
|
|
|
24044
|
+
class MarkdownParserComponent {
|
|
24045
|
+
get parsedMarkdown() {
|
|
24046
|
+
return marked.parse(this.textContent);
|
|
24047
|
+
}
|
|
24048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24049
|
+
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 }); }
|
|
24050
|
+
}
|
|
24051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24052
|
+
type: Component,
|
|
24053
|
+
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"] }]
|
|
24054
|
+
}], propDecorators: { textContent: [{
|
|
24055
|
+
type: Input
|
|
24056
|
+
}] } });
|
|
24057
|
+
|
|
23908
24058
|
class ContentGhostComponent {
|
|
23909
24059
|
constructor() {
|
|
23910
24060
|
this.ghostClass = '';
|
|
@@ -24044,14 +24194,16 @@ class MaxLinesComponent {
|
|
|
24044
24194
|
return result;
|
|
24045
24195
|
}
|
|
24046
24196
|
ngOnDestroy() {
|
|
24197
|
+
if (!this.observer)
|
|
24198
|
+
return;
|
|
24047
24199
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
24048
24200
|
}
|
|
24049
24201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24050
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24202
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24051
24203
|
}
|
|
24052
24204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
24053
24205
|
type: Component,
|
|
24054
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24206
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24055
24207
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
24056
24208
|
type: Input
|
|
24057
24209
|
}], container: [{
|
|
@@ -24059,36 +24211,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24059
24211
|
args: ['container']
|
|
24060
24212
|
}] } });
|
|
24061
24213
|
|
|
24062
|
-
class MarkdownParserComponent {
|
|
24063
|
-
get parsedMarkdown() {
|
|
24064
|
-
return marked.parse(this.textContent);
|
|
24065
|
-
}
|
|
24066
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24067
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24068
|
-
}
|
|
24069
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24070
|
-
type: Component,
|
|
24071
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
24072
|
-
}], propDecorators: { textContent: [{
|
|
24073
|
-
type: Input
|
|
24074
|
-
}] } });
|
|
24075
|
-
|
|
24076
24214
|
class MetadataInfoComponent {
|
|
24077
24215
|
constructor() {
|
|
24078
24216
|
this.keyword = new EventEmitter();
|
|
24079
24217
|
}
|
|
24080
24218
|
get hasUsage() {
|
|
24081
24219
|
return (this.metadata.extras?.isOpenData === true ||
|
|
24082
|
-
this.metadata.
|
|
24083
|
-
|
|
24220
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24221
|
+
this.legalConstraints.length > 0) ||
|
|
24222
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24223
|
+
this.otherConstraints.length > 0) ||
|
|
24224
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24225
|
+
}
|
|
24226
|
+
get legalConstraints() {
|
|
24227
|
+
let array = [];
|
|
24228
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24229
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24230
|
+
}
|
|
24231
|
+
return array;
|
|
24084
24232
|
}
|
|
24085
|
-
get
|
|
24233
|
+
get otherConstraints() {
|
|
24086
24234
|
let array = [];
|
|
24087
|
-
if (this.metadata.
|
|
24088
|
-
array = array.concat(this.metadata.
|
|
24235
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24236
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24089
24237
|
}
|
|
24090
|
-
|
|
24091
|
-
|
|
24238
|
+
return array;
|
|
24239
|
+
}
|
|
24240
|
+
get licenses() {
|
|
24241
|
+
let array = [];
|
|
24242
|
+
if (this.metadata.licenses?.length) {
|
|
24243
|
+
array = array.concat(this.metadata.licenses
|
|
24244
|
+
.filter((c) => c.text)
|
|
24245
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
24092
24246
|
}
|
|
24093
24247
|
return array;
|
|
24094
24248
|
}
|
|
@@ -24104,22 +24258,28 @@ class MetadataInfoComponent {
|
|
|
24104
24258
|
return undefined;
|
|
24105
24259
|
}
|
|
24106
24260
|
}
|
|
24107
|
-
|
|
24108
|
-
|
|
24261
|
+
get temporalExtent() {
|
|
24262
|
+
const temporalExtents = this.metadata.temporalExtents;
|
|
24263
|
+
return getTemporalRangeUnion(temporalExtents);
|
|
24109
24264
|
}
|
|
24110
|
-
|
|
24111
|
-
this.
|
|
24265
|
+
get shownOrganization() {
|
|
24266
|
+
return this.metadata.ownerOrganization;
|
|
24112
24267
|
}
|
|
24113
|
-
|
|
24114
|
-
|
|
24115
|
-
|
|
24268
|
+
get resourceContact() {
|
|
24269
|
+
return this.metadata.contactsForResource?.[0];
|
|
24270
|
+
}
|
|
24271
|
+
fieldReady(propName) {
|
|
24272
|
+
return !this.incomplete || propName in this.metadata;
|
|
24273
|
+
}
|
|
24274
|
+
onKeywordClick(keyword) {
|
|
24275
|
+
this.keyword.emit(keyword);
|
|
24116
24276
|
}
|
|
24117
24277
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"py-4 px-6 rounded bg-gray-100 text-gray-700 flex flex-wrap gap-2\">\n <gn-ui-badge *ngIf=\"metadata.extras?.isOpenData\">\n <span translate>record.metadata.isOpenData</span>\n </gn-ui-badge>\n <span\n class=\"text-primary font-medium\"\n *ngFor=\"let usage of usages\"\n gnUiLinkify\n >\n {{ usage }}\n </span>\n <span class=\"text-primary font-medium noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24278
|
+
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 <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24119
24279
|
}
|
|
24120
24280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24121
24281
|
type: Component,
|
|
24122
|
-
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-
|
|
24282
|
+
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 <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\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"] }]
|
|
24123
24283
|
}], propDecorators: { metadata: [{
|
|
24124
24284
|
type: Input
|
|
24125
24285
|
}], incomplete: [{
|
|
@@ -24159,23 +24319,23 @@ class ButtonComponent {
|
|
|
24159
24319
|
this.extraClass = '';
|
|
24160
24320
|
this.buttonClick = new EventEmitter();
|
|
24161
24321
|
}
|
|
24162
|
-
// btn-classes are explicited to allow tailwind recognize them and add it in css.
|
|
24163
24322
|
set type(value) {
|
|
24323
|
+
// btn-classes are written in full to be picked up by tailwind
|
|
24164
24324
|
switch (value) {
|
|
24165
24325
|
case 'primary':
|
|
24166
|
-
this.btnClass = 'btn-primary';
|
|
24326
|
+
this.btnClass = 'gn-ui-btn-primary';
|
|
24167
24327
|
break;
|
|
24168
24328
|
case 'secondary':
|
|
24169
|
-
this.btnClass = 'btn-secondary';
|
|
24329
|
+
this.btnClass = 'gn-ui-btn-secondary';
|
|
24170
24330
|
break;
|
|
24171
24331
|
case 'outline':
|
|
24172
|
-
this.btnClass = 'btn-outline';
|
|
24332
|
+
this.btnClass = 'gn-ui-btn-outline';
|
|
24173
24333
|
break;
|
|
24174
24334
|
case 'light':
|
|
24175
|
-
this.btnClass = 'btn-light';
|
|
24335
|
+
this.btnClass = 'gn-ui-btn-light';
|
|
24176
24336
|
break;
|
|
24177
24337
|
default:
|
|
24178
|
-
this.btnClass = 'btn-default';
|
|
24338
|
+
this.btnClass = 'gn-ui-btn-default';
|
|
24179
24339
|
break;
|
|
24180
24340
|
}
|
|
24181
24341
|
}
|
|
@@ -24188,11 +24348,11 @@ class ButtonComponent {
|
|
|
24188
24348
|
propagateToDocumentOnly(event);
|
|
24189
24349
|
}
|
|
24190
24350
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24191
|
-
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
|
|
24351
|
+
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]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24192
24352
|
}
|
|
24193
24353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24194
24354
|
type: Component,
|
|
24195
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n
|
|
24355
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n" }]
|
|
24196
24356
|
}], propDecorators: { type: [{
|
|
24197
24357
|
type: Input
|
|
24198
24358
|
}], disabled: [{
|
|
@@ -24472,11 +24632,11 @@ class CarouselComponent {
|
|
|
24472
24632
|
this.emblaApi.scrollTo(stepIndex);
|
|
24473
24633
|
}
|
|
24474
24634
|
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 }); }
|
|
24475
|
-
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 }); }
|
|
24635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24476
24636
|
}
|
|
24477
24637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24478
24638
|
type: Component,
|
|
24479
|
-
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"] }]
|
|
24639
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24480
24640
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24481
24641
|
type: Input
|
|
24482
24642
|
}], stepsContainerClass: [{
|
|
@@ -24520,6 +24680,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24520
24680
|
}]
|
|
24521
24681
|
}] });
|
|
24522
24682
|
|
|
24683
|
+
class InteractiveTableColumnComponent {
|
|
24684
|
+
constructor() {
|
|
24685
|
+
this.grow = false;
|
|
24686
|
+
this.sortable = false;
|
|
24687
|
+
this.activeSort = null;
|
|
24688
|
+
this.sortChange = new EventEmitter();
|
|
24689
|
+
}
|
|
24690
|
+
handleSortChange() {
|
|
24691
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24692
|
+
this.sortChange.emit(this.activeSort);
|
|
24693
|
+
}
|
|
24694
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24695
|
+
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 }); }
|
|
24696
|
+
}
|
|
24697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24698
|
+
type: Component,
|
|
24699
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24700
|
+
}], propDecorators: { header: [{
|
|
24701
|
+
type: ContentChild,
|
|
24702
|
+
args: ['header']
|
|
24703
|
+
}], cell: [{
|
|
24704
|
+
type: ContentChild,
|
|
24705
|
+
args: ['cell']
|
|
24706
|
+
}], grow: [{
|
|
24707
|
+
type: Input
|
|
24708
|
+
}], sortable: [{
|
|
24709
|
+
type: Input
|
|
24710
|
+
}], activeSort: [{
|
|
24711
|
+
type: Input
|
|
24712
|
+
}], sortChange: [{
|
|
24713
|
+
type: Output
|
|
24714
|
+
}] } });
|
|
24715
|
+
|
|
24716
|
+
class InteractiveTableComponent {
|
|
24717
|
+
constructor() {
|
|
24718
|
+
this.items = [];
|
|
24719
|
+
this.itemClick = new EventEmitter();
|
|
24720
|
+
}
|
|
24721
|
+
get gridStyle() {
|
|
24722
|
+
return {
|
|
24723
|
+
'grid-template-columns': this.columns
|
|
24724
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24725
|
+
.join(' '),
|
|
24726
|
+
};
|
|
24727
|
+
}
|
|
24728
|
+
handleRowClick(item) {
|
|
24729
|
+
this.itemClick.emit(item);
|
|
24730
|
+
}
|
|
24731
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24732
|
+
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 }); }
|
|
24733
|
+
}
|
|
24734
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24735
|
+
type: Component,
|
|
24736
|
+
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"] }]
|
|
24737
|
+
}], propDecorators: { columns: [{
|
|
24738
|
+
type: ContentChildren,
|
|
24739
|
+
args: [InteractiveTableColumnComponent]
|
|
24740
|
+
}], items: [{
|
|
24741
|
+
type: Input
|
|
24742
|
+
}], itemClick: [{
|
|
24743
|
+
type: Output
|
|
24744
|
+
}] } });
|
|
24745
|
+
|
|
24523
24746
|
class LinkCardComponent {
|
|
24524
24747
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24525
24748
|
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 }); }
|
|
@@ -24565,11 +24788,11 @@ class MetadataContactComponent {
|
|
|
24565
24788
|
this.organizationClick.emit(this.shownOrganization);
|
|
24566
24789
|
}
|
|
24567
24790
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24568
|
-
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
|
|
24791
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24569
24792
|
}
|
|
24570
24793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24571
24794
|
type: Component,
|
|
24572
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24795
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24573
24796
|
}], propDecorators: { metadata: [{
|
|
24574
24797
|
type: Input
|
|
24575
24798
|
}], organizationClick: [{
|
|
@@ -24793,11 +25016,11 @@ class DropdownSelectorComponent {
|
|
|
24793
25016
|
}
|
|
24794
25017
|
}
|
|
24795
25018
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24796
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25019
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24797
25020
|
}
|
|
24798
25021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24799
25022
|
type: Component,
|
|
24800
|
-
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25023
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24801
25024
|
}], propDecorators: { title: [{
|
|
24802
25025
|
type: Input
|
|
24803
25026
|
}], showTitle: [{
|
|
@@ -24973,11 +25196,11 @@ class DropdownMultiselectComponent {
|
|
|
24973
25196
|
this.setFocus();
|
|
24974
25197
|
}
|
|
24975
25198
|
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 }); }
|
|
24976
|
-
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,
|
|
25199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24977
25200
|
}
|
|
24978
25201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24979
25202
|
type: Component,
|
|
24980
|
-
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,
|
|
25203
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24981
25204
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24982
25205
|
type: Input
|
|
24983
25206
|
}], choices: [{
|
|
@@ -25131,11 +25354,11 @@ class TextAreaComponent {
|
|
|
25131
25354
|
this.rawChange.next(value);
|
|
25132
25355
|
}
|
|
25133
25356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25134
|
-
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"] }); }
|
|
25357
|
+
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"] }); }
|
|
25135
25358
|
}
|
|
25136
25359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25137
25360
|
type: Component,
|
|
25138
|
-
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"] }]
|
|
25361
|
+
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"] }]
|
|
25139
25362
|
}], propDecorators: { value: [{
|
|
25140
25363
|
type: Input
|
|
25141
25364
|
}], placeholder: [{
|
|
@@ -25236,11 +25459,11 @@ class AutocompleteComponent {
|
|
|
25236
25459
|
}
|
|
25237
25460
|
}
|
|
25238
25461
|
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 }); }
|
|
25239
|
-
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(
|
|
25462
|
+
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 }); }
|
|
25240
25463
|
}
|
|
25241
25464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25242
25465
|
type: Component,
|
|
25243
|
-
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(
|
|
25466
|
+
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"] }]
|
|
25244
25467
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25245
25468
|
type: Input
|
|
25246
25469
|
}], action: [{
|
|
@@ -25405,11 +25628,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25405
25628
|
|
|
25406
25629
|
class NavigationButtonComponent {
|
|
25407
25630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25408
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25631
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25409
25632
|
}
|
|
25410
25633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25411
25634
|
type: Component,
|
|
25412
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25635
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
25413
25636
|
}], propDecorators: { label: [{
|
|
25414
25637
|
type: Input
|
|
25415
25638
|
}], icon: [{
|
|
@@ -25542,7 +25765,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25542
25765
|
|
|
25543
25766
|
class FormFieldComponent {
|
|
25544
25767
|
set value(v) {
|
|
25545
|
-
this.formControl.setValue(v
|
|
25768
|
+
this.formControl.setValue(v, {
|
|
25769
|
+
emitEvent: false,
|
|
25770
|
+
});
|
|
25546
25771
|
}
|
|
25547
25772
|
constructor() {
|
|
25548
25773
|
this.formControl = new FormControl();
|
|
@@ -25616,11 +25841,11 @@ class CheckboxComponent {
|
|
|
25616
25841
|
this.changed.emit(this.checked);
|
|
25617
25842
|
}
|
|
25618
25843
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25619
|
-
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
|
|
25844
|
+
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 }); }
|
|
25620
25845
|
}
|
|
25621
25846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25622
25847
|
type: Component,
|
|
25623
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25848
|
+
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"] }]
|
|
25624
25849
|
}], propDecorators: { type: [{
|
|
25625
25850
|
type: Input
|
|
25626
25851
|
}], checked: [{
|
|
@@ -25705,12 +25930,13 @@ class EditableLabelDirective {
|
|
|
25705
25930
|
}
|
|
25706
25931
|
}
|
|
25707
25932
|
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 }); }
|
|
25708
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25933
|
+
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 }); }
|
|
25709
25934
|
}
|
|
25710
25935
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25711
25936
|
type: Directive,
|
|
25712
25937
|
args: [{
|
|
25713
25938
|
selector: '[gnUiEditableLabel]',
|
|
25939
|
+
standalone: true,
|
|
25714
25940
|
}]
|
|
25715
25941
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25716
25942
|
type: Output
|
|
@@ -25722,10 +25948,8 @@ class UiInputsModule {
|
|
|
25722
25948
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25723
25949
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25724
25950
|
AutocompleteComponent,
|
|
25725
|
-
ButtonComponent,
|
|
25726
25951
|
TextInputComponent,
|
|
25727
25952
|
DragAndDropFileInputComponent,
|
|
25728
|
-
TextAreaComponent,
|
|
25729
25953
|
ChipsInputComponent,
|
|
25730
25954
|
NavigationButtonComponent,
|
|
25731
25955
|
StarToggleComponent,
|
|
@@ -25743,8 +25967,7 @@ class UiInputsModule {
|
|
|
25743
25967
|
CopyTextButtonComponent,
|
|
25744
25968
|
CheckboxComponent,
|
|
25745
25969
|
SearchInputComponent,
|
|
25746
|
-
DateRangePickerComponent,
|
|
25747
|
-
EditableLabelDirective], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25970
|
+
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25748
25971
|
FormsModule,
|
|
25749
25972
|
ReactiveFormsModule,
|
|
25750
25973
|
TagInputModule,
|
|
@@ -25758,7 +25981,10 @@ class UiInputsModule {
|
|
|
25758
25981
|
MatFormFieldModule,
|
|
25759
25982
|
MatInputModule,
|
|
25760
25983
|
MatDatepickerModule,
|
|
25761
|
-
MatNativeDateModule
|
|
25984
|
+
MatNativeDateModule,
|
|
25985
|
+
EditableLabelDirective,
|
|
25986
|
+
TextAreaComponent,
|
|
25987
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25762
25988
|
AutocompleteComponent,
|
|
25763
25989
|
ButtonComponent,
|
|
25764
25990
|
TextInputComponent,
|
|
@@ -25800,10 +26026,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25800
26026
|
declarations: [
|
|
25801
26027
|
DropdownSelectorComponent,
|
|
25802
26028
|
AutocompleteComponent,
|
|
25803
|
-
ButtonComponent,
|
|
25804
26029
|
TextInputComponent,
|
|
25805
26030
|
DragAndDropFileInputComponent,
|
|
25806
|
-
TextAreaComponent,
|
|
25807
26031
|
ChipsInputComponent,
|
|
25808
26032
|
NavigationButtonComponent,
|
|
25809
26033
|
StarToggleComponent,
|
|
@@ -25822,7 +26046,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25822
26046
|
CheckboxComponent,
|
|
25823
26047
|
SearchInputComponent,
|
|
25824
26048
|
DateRangePickerComponent,
|
|
25825
|
-
EditableLabelDirective,
|
|
25826
26049
|
],
|
|
25827
26050
|
imports: [
|
|
25828
26051
|
CommonModule,
|
|
@@ -25842,6 +26065,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25842
26065
|
MatInputModule,
|
|
25843
26066
|
MatDatepickerModule,
|
|
25844
26067
|
MatNativeDateModule,
|
|
26068
|
+
EditableLabelDirective,
|
|
26069
|
+
TextAreaComponent,
|
|
26070
|
+
ButtonComponent,
|
|
25845
26071
|
],
|
|
25846
26072
|
exports: [
|
|
25847
26073
|
DropdownSelectorComponent,
|
|
@@ -25961,7 +26187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25961
26187
|
|
|
25962
26188
|
const DEFAULT_PARAMS = {
|
|
25963
26189
|
OFFSET: '',
|
|
25964
|
-
LIMIT: '',
|
|
26190
|
+
LIMIT: '-1',
|
|
25965
26191
|
FORMAT: 'json',
|
|
25966
26192
|
};
|
|
25967
26193
|
class RecordApiFormComponent {
|
|
@@ -25990,6 +26216,8 @@ class RecordApiFormComponent {
|
|
|
25990
26216
|
}
|
|
25991
26217
|
return outputUrl;
|
|
25992
26218
|
}));
|
|
26219
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
26220
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
25993
26221
|
}
|
|
25994
26222
|
set apiLink(value) {
|
|
25995
26223
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -25999,10 +26227,11 @@ class RecordApiFormComponent {
|
|
|
25999
26227
|
this.offset$.next(value);
|
|
26000
26228
|
}
|
|
26001
26229
|
setLimit(value) {
|
|
26002
|
-
|
|
26230
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26231
|
+
this.limit$.next(newLimit);
|
|
26003
26232
|
}
|
|
26004
26233
|
setFormat(value) {
|
|
26005
|
-
this.format$.next(value);
|
|
26234
|
+
this.format$.next(String(value));
|
|
26006
26235
|
}
|
|
26007
26236
|
resetUrl() {
|
|
26008
26237
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -26010,11 +26239,11 @@ class RecordApiFormComponent {
|
|
|
26010
26239
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26011
26240
|
}
|
|
26012
26241
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26013
|
-
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 (
|
|
26242
|
+
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 }); }
|
|
26014
26243
|
}
|
|
26015
26244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26016
26245
|
type: Component,
|
|
26017
|
-
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 (
|
|
26246
|
+
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"] }]
|
|
26018
26247
|
}], propDecorators: { apiLink: [{
|
|
26019
26248
|
type: Input
|
|
26020
26249
|
}] } });
|
|
@@ -26027,11 +26256,11 @@ class ImageOverlayPreviewComponent {
|
|
|
26027
26256
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
26028
26257
|
}
|
|
26029
26258
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26030
|
-
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-
|
|
26259
|
+
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"] }] }); }
|
|
26031
26260
|
}
|
|
26032
26261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
26033
26262
|
type: Component,
|
|
26034
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26263
|
+
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" }]
|
|
26035
26264
|
}], propDecorators: { imageUrl: [{
|
|
26036
26265
|
type: Input
|
|
26037
26266
|
}], isPlaceholderShown: [{
|
|
@@ -26060,7 +26289,6 @@ class UiElementsModule {
|
|
|
26060
26289
|
PaginationButtonsComponent,
|
|
26061
26290
|
MaxLinesComponent,
|
|
26062
26291
|
RecordApiFormComponent,
|
|
26063
|
-
MarkdownParserComponent,
|
|
26064
26292
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
26065
26293
|
MatIconModule,
|
|
26066
26294
|
MatTooltipModule,
|
|
@@ -26069,7 +26297,8 @@ class UiElementsModule {
|
|
|
26069
26297
|
RouterModule,
|
|
26070
26298
|
UiInputsModule,
|
|
26071
26299
|
FormsModule,
|
|
26072
|
-
NgOptimizedImage
|
|
26300
|
+
NgOptimizedImage,
|
|
26301
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26073
26302
|
ContentGhostComponent,
|
|
26074
26303
|
DownloadItemComponent,
|
|
26075
26304
|
DownloadsListComponent,
|
|
@@ -26116,6 +26345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26116
26345
|
UiInputsModule,
|
|
26117
26346
|
FormsModule,
|
|
26118
26347
|
NgOptimizedImage,
|
|
26348
|
+
MarkdownParserComponent,
|
|
26119
26349
|
],
|
|
26120
26350
|
declarations: [
|
|
26121
26351
|
MetadataInfoComponent,
|
|
@@ -26138,7 +26368,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26138
26368
|
PaginationButtonsComponent,
|
|
26139
26369
|
MaxLinesComponent,
|
|
26140
26370
|
RecordApiFormComponent,
|
|
26141
|
-
MarkdownParserComponent,
|
|
26142
26371
|
ImageOverlayPreviewComponent,
|
|
26143
26372
|
],
|
|
26144
26373
|
exports: [
|
|
@@ -26167,143 +26396,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26167
26396
|
}]
|
|
26168
26397
|
}] });
|
|
26169
26398
|
|
|
26170
|
-
class RecordTableComponent {
|
|
26171
|
-
constructor() {
|
|
26172
|
-
this.selectedRecords = [];
|
|
26173
|
-
this.records = [];
|
|
26174
|
-
this.recordClick = new EventEmitter();
|
|
26175
|
-
this.recordsSelect = new EventEmitter();
|
|
26176
|
-
this.recordsDeselect = new EventEmitter();
|
|
26177
|
-
this.sortByChange = new EventEmitter();
|
|
26178
|
-
}
|
|
26179
|
-
dateToString(date) {
|
|
26180
|
-
return date?.toLocaleDateString(undefined, {
|
|
26181
|
-
year: 'numeric',
|
|
26182
|
-
month: 'long',
|
|
26183
|
-
day: 'numeric',
|
|
26184
|
-
timeZone: 'UTC',
|
|
26185
|
-
});
|
|
26186
|
-
}
|
|
26187
|
-
getStatus(isPublishedToAll) {
|
|
26188
|
-
return isPublishedToAll ? 'published' : 'not published';
|
|
26189
|
-
}
|
|
26190
|
-
formatUserInfo(userInfo) {
|
|
26191
|
-
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
26192
|
-
if (infos && infos.length === 4) {
|
|
26193
|
-
return `${infos[2]} ${infos[1]}`;
|
|
26194
|
-
}
|
|
26195
|
-
return undefined;
|
|
26196
|
-
}
|
|
26197
|
-
getRecordFormats(record) {
|
|
26198
|
-
if (record.kind === 'service' || !('distributions' in record)) {
|
|
26199
|
-
return [];
|
|
26200
|
-
}
|
|
26201
|
-
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
26202
|
-
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
26203
|
-
return formats;
|
|
26204
|
-
}
|
|
26205
|
-
getBadgeColor(format) {
|
|
26206
|
-
return getBadgeColor(format);
|
|
26207
|
-
}
|
|
26208
|
-
getOrderForColumn(col) {
|
|
26209
|
-
if (!this.sortBy) {
|
|
26210
|
-
return null;
|
|
26211
|
-
}
|
|
26212
|
-
let order = null;
|
|
26213
|
-
const sortedArray = Array.isArray(this.sortBy[0])
|
|
26214
|
-
? this.sortBy
|
|
26215
|
-
: [this.sortBy];
|
|
26216
|
-
sortedArray.forEach((sortedCol) => {
|
|
26217
|
-
if (sortedCol[1] === col) {
|
|
26218
|
-
order = sortedCol[0];
|
|
26219
|
-
}
|
|
26220
|
-
});
|
|
26221
|
-
return order;
|
|
26222
|
-
}
|
|
26223
|
-
setSortBy(col) {
|
|
26224
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26225
|
-
let newOrder;
|
|
26226
|
-
if (sortOrder) {
|
|
26227
|
-
newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
|
|
26228
|
-
}
|
|
26229
|
-
else {
|
|
26230
|
-
newOrder = 'asc';
|
|
26231
|
-
}
|
|
26232
|
-
this.sortByChange.emit([newOrder, col]);
|
|
26233
|
-
this.sortBy = [newOrder, col];
|
|
26234
|
-
}
|
|
26235
|
-
isSortedBy(col, order) {
|
|
26236
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26237
|
-
return sortOrder === order;
|
|
26238
|
-
}
|
|
26239
|
-
isChecked(record) {
|
|
26240
|
-
if (this.selectedRecords.includes(record.uniqueIdentifier)) {
|
|
26241
|
-
return true;
|
|
26242
|
-
}
|
|
26243
|
-
return false;
|
|
26244
|
-
}
|
|
26245
|
-
handleRecordSelectedChange(selected, record) {
|
|
26246
|
-
if (!selected) {
|
|
26247
|
-
this.recordsDeselect.emit([record]);
|
|
26248
|
-
this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
|
|
26249
|
-
}
|
|
26250
|
-
else {
|
|
26251
|
-
this.recordsSelect.emit([record]);
|
|
26252
|
-
this.selectedRecords.push(record.uniqueIdentifier);
|
|
26253
|
-
}
|
|
26254
|
-
}
|
|
26255
|
-
selectAll() {
|
|
26256
|
-
if (this.isAllSelected()) {
|
|
26257
|
-
this.recordsDeselect.emit(this.records);
|
|
26258
|
-
this.selectedRecords = [];
|
|
26259
|
-
}
|
|
26260
|
-
else {
|
|
26261
|
-
this.recordsSelect.emit(this.records);
|
|
26262
|
-
this.selectedRecords = this.records.map((record) => {
|
|
26263
|
-
return record.uniqueIdentifier;
|
|
26264
|
-
});
|
|
26265
|
-
}
|
|
26266
|
-
}
|
|
26267
|
-
isAllSelected() {
|
|
26268
|
-
if (this.selectedRecords.length === this.records.length) {
|
|
26269
|
-
const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
|
|
26270
|
-
if (allRecords.length === this.records.length) {
|
|
26271
|
-
return true;
|
|
26272
|
-
}
|
|
26273
|
-
}
|
|
26274
|
-
return false;
|
|
26275
|
-
}
|
|
26276
|
-
isSomeSelected() {
|
|
26277
|
-
if (this.selectedRecords.length > 0 &&
|
|
26278
|
-
this.selectedRecords.length < this.records.length) {
|
|
26279
|
-
return true;
|
|
26280
|
-
}
|
|
26281
|
-
return false;
|
|
26282
|
-
}
|
|
26283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26284
|
-
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)=\"recordsSelect.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)=\"recordsSelect.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"] }] }); }
|
|
26285
|
-
}
|
|
26286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
26287
|
-
type: Component,
|
|
26288
|
-
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)=\"recordsSelect.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)=\"recordsSelect.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"] }]
|
|
26289
|
-
}], propDecorators: { selectedRecords: [{
|
|
26290
|
-
type: Input
|
|
26291
|
-
}], records: [{
|
|
26292
|
-
type: Input
|
|
26293
|
-
}], totalHits: [{
|
|
26294
|
-
type: Input
|
|
26295
|
-
}], sortBy: [{
|
|
26296
|
-
type: Input
|
|
26297
|
-
}], recordClick: [{
|
|
26298
|
-
type: Output
|
|
26299
|
-
}], recordsSelect: [{
|
|
26300
|
-
type: Output
|
|
26301
|
-
}], recordsDeselect: [{
|
|
26302
|
-
type: Output
|
|
26303
|
-
}], sortByChange: [{
|
|
26304
|
-
type: Output
|
|
26305
|
-
}] } });
|
|
26306
|
-
|
|
26307
26399
|
class UiSearchModule {
|
|
26308
26400
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26309
26401
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26316,8 +26408,7 @@ class UiSearchModule {
|
|
|
26316
26408
|
ResultsHitsNumberComponent,
|
|
26317
26409
|
ResultsListItemComponent,
|
|
26318
26410
|
RecordPreviewFeedComponent,
|
|
26319
|
-
RecordPreviewRowComponent,
|
|
26320
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26411
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26321
26412
|
FacetsModule$1,
|
|
26322
26413
|
FormsModule,
|
|
26323
26414
|
ReactiveFormsModule,
|
|
@@ -26328,7 +26419,8 @@ class UiSearchModule {
|
|
|
26328
26419
|
UiElementsModule,
|
|
26329
26420
|
MatIconModule,
|
|
26330
26421
|
MatCheckboxModule,
|
|
26331
|
-
RouterLink
|
|
26422
|
+
RouterLink,
|
|
26423
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26332
26424
|
RecordPreviewCardComponent,
|
|
26333
26425
|
RecordPreviewTextComponent,
|
|
26334
26426
|
RecordPreviewTitleComponent,
|
|
@@ -26338,8 +26430,7 @@ class UiSearchModule {
|
|
|
26338
26430
|
RecordPreviewComponent,
|
|
26339
26431
|
ResultsHitsNumberComponent,
|
|
26340
26432
|
RecordPreviewFeedComponent,
|
|
26341
|
-
RecordPreviewRowComponent
|
|
26342
|
-
RecordTableComponent] }); }
|
|
26433
|
+
RecordPreviewRowComponent] }); }
|
|
26343
26434
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26344
26435
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26345
26436
|
], imports: [CommonModule,
|
|
@@ -26354,7 +26445,8 @@ class UiSearchModule {
|
|
|
26354
26445
|
UiInputsModule,
|
|
26355
26446
|
UiElementsModule,
|
|
26356
26447
|
MatIconModule,
|
|
26357
|
-
MatCheckboxModule,
|
|
26448
|
+
MatCheckboxModule,
|
|
26449
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26358
26450
|
}
|
|
26359
26451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26360
26452
|
type: NgModule,
|
|
@@ -26371,7 +26463,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26371
26463
|
ResultsListItemComponent,
|
|
26372
26464
|
RecordPreviewFeedComponent,
|
|
26373
26465
|
RecordPreviewRowComponent,
|
|
26374
|
-
RecordTableComponent,
|
|
26375
26466
|
],
|
|
26376
26467
|
imports: [
|
|
26377
26468
|
CommonModule,
|
|
@@ -26388,6 +26479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26388
26479
|
MatIconModule,
|
|
26389
26480
|
MatCheckboxModule,
|
|
26390
26481
|
RouterLink,
|
|
26482
|
+
InteractiveTableComponent,
|
|
26391
26483
|
],
|
|
26392
26484
|
exports: [
|
|
26393
26485
|
RecordPreviewListComponent,
|
|
@@ -26401,7 +26493,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26401
26493
|
ResultsHitsNumberComponent,
|
|
26402
26494
|
RecordPreviewFeedComponent,
|
|
26403
26495
|
RecordPreviewRowComponent,
|
|
26404
|
-
RecordTableComponent,
|
|
26405
26496
|
],
|
|
26406
26497
|
providers: [
|
|
26407
26498
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -26680,7 +26771,7 @@ const initSearch = () => {
|
|
|
26680
26771
|
const initialState = {
|
|
26681
26772
|
[DEFAULT_SEARCH_KEY]: initSearch(),
|
|
26682
26773
|
};
|
|
26683
|
-
function reducer$
|
|
26774
|
+
function reducer$2(state = initialState, action) {
|
|
26684
26775
|
const { id } = action;
|
|
26685
26776
|
if (id) {
|
|
26686
26777
|
let stateSearch = state[id] || initSearch();
|
|
@@ -26960,6 +27051,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26960
27051
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26961
27052
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26962
27053
|
|
|
27054
|
+
// this geometry will be used to filter & boost results accordingly
|
|
27055
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
27056
|
+
|
|
26963
27057
|
class SearchFacade {
|
|
26964
27058
|
constructor(store, filterGeometry) {
|
|
26965
27059
|
this.store = store;
|
|
@@ -27064,6 +27158,7 @@ class SearchFacade {
|
|
|
27064
27158
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
27065
27159
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
27066
27160
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
27161
|
+
return this;
|
|
27067
27162
|
}
|
|
27068
27163
|
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 }); }
|
|
27069
27164
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27448,8 +27543,11 @@ class FuzzySearchComponent {
|
|
|
27448
27543
|
this.searchService.updateFilters({ any });
|
|
27449
27544
|
}
|
|
27450
27545
|
}
|
|
27451
|
-
handleInputCleared() {
|
|
27452
|
-
this.
|
|
27546
|
+
async handleInputCleared() {
|
|
27547
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27548
|
+
if (currentSearchFilters.any) {
|
|
27549
|
+
this.searchService.updateFilters({ any: '' });
|
|
27550
|
+
}
|
|
27453
27551
|
}
|
|
27454
27552
|
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 }); }
|
|
27455
27553
|
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 }); }
|
|
@@ -27529,6 +27627,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27529
27627
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27530
27628
|
}] }]; } });
|
|
27531
27629
|
|
|
27630
|
+
// expects the replacement key ${uuid}
|
|
27631
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27632
|
+
|
|
27532
27633
|
class FavoriteStarComponent {
|
|
27533
27634
|
set record(value) {
|
|
27534
27635
|
this.record_ = value;
|
|
@@ -27612,11 +27713,11 @@ class FavoriteStarComponent {
|
|
|
27612
27713
|
});
|
|
27613
27714
|
}
|
|
27614
27715
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27615
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row
|
|
27716
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27616
27717
|
}
|
|
27617
27718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27618
27719
|
type: Component,
|
|
27619
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row
|
|
27720
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27620
27721
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27621
27722
|
type: Input
|
|
27622
27723
|
}], record: [{
|
|
@@ -27790,9 +27891,11 @@ class SearchEffects {
|
|
|
27790
27891
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27791
27892
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27792
27893
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27793
|
-
return of([state, favorites,
|
|
27894
|
+
return of([state, favorites, undefined]);
|
|
27794
27895
|
}
|
|
27795
27896
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27897
|
+
if (!geom)
|
|
27898
|
+
return;
|
|
27796
27899
|
try {
|
|
27797
27900
|
const trace = valid$1(geom, true);
|
|
27798
27901
|
if (trace?.length > 0) {
|
|
@@ -27804,7 +27907,7 @@ class SearchEffects {
|
|
|
27804
27907
|
throw new Error();
|
|
27805
27908
|
}
|
|
27806
27909
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27807
|
-
return of([state, favorites,
|
|
27910
|
+
return of([state, favorites, undefined]);
|
|
27808
27911
|
}));
|
|
27809
27912
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27810
27913
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -27903,10 +28006,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27903
28006
|
class AbstractSearchField {
|
|
27904
28007
|
}
|
|
27905
28008
|
class SimpleSearchField {
|
|
27906
|
-
constructor(esFieldName, order = 'asc',
|
|
28009
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27907
28010
|
this.esFieldName = esFieldName;
|
|
27908
|
-
this.order = order;
|
|
27909
28011
|
this.injector = injector;
|
|
28012
|
+
this.order = order;
|
|
28013
|
+
this.orderType = orderType;
|
|
27910
28014
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27911
28015
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27912
28016
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27917,12 +28021,12 @@ class SimpleSearchField {
|
|
|
27917
28021
|
type: 'terms',
|
|
27918
28022
|
field: this.esFieldName,
|
|
27919
28023
|
limit: 1000,
|
|
27920
|
-
sort: [this.order,
|
|
28024
|
+
sort: [this.order, this.orderType],
|
|
27921
28025
|
},
|
|
27922
28026
|
};
|
|
27923
28027
|
}
|
|
27924
28028
|
async getBucketLabel(bucket) {
|
|
27925
|
-
return bucket.term;
|
|
28029
|
+
return bucket.term.toString();
|
|
27926
28030
|
}
|
|
27927
28031
|
getAvailableValues() {
|
|
27928
28032
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27950,9 +28054,13 @@ class SimpleSearchField {
|
|
|
27950
28054
|
return of(values);
|
|
27951
28055
|
}
|
|
27952
28056
|
}
|
|
27953
|
-
class
|
|
27954
|
-
constructor() {
|
|
27955
|
-
super(
|
|
28057
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
28058
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28059
|
+
super(esFieldName, injector, order, orderType);
|
|
28060
|
+
this.esFieldName = esFieldName;
|
|
28061
|
+
this.injector = injector;
|
|
28062
|
+
this.order = order;
|
|
28063
|
+
this.orderType = orderType;
|
|
27956
28064
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27957
28065
|
}
|
|
27958
28066
|
async getTranslation(key) {
|
|
@@ -27962,26 +28070,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27962
28070
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27963
28071
|
}
|
|
27964
28072
|
getAvailableValues() {
|
|
28073
|
+
if (this.orderType === 'count')
|
|
28074
|
+
return super.getAvailableValues();
|
|
27965
28075
|
// sort values by alphabetical order
|
|
27966
28076
|
return super
|
|
27967
28077
|
.getAvailableValues()
|
|
27968
28078
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27969
28079
|
}
|
|
27970
28080
|
}
|
|
27971
|
-
|
|
27972
|
-
|
|
27973
|
-
|
|
27974
|
-
|
|
28081
|
+
/**
|
|
28082
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
28083
|
+
* to the defined METADATA_LANGUAGE token
|
|
28084
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
28085
|
+
*/
|
|
28086
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
28087
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28088
|
+
super(esFieldName, injector, order, orderType);
|
|
28089
|
+
this.esFieldName = esFieldName;
|
|
28090
|
+
this.injector = injector;
|
|
28091
|
+
this.order = order;
|
|
28092
|
+
this.orderType = orderType;
|
|
27975
28093
|
this.langService = this.injector.get(LangService);
|
|
27976
|
-
this.
|
|
27977
|
-
|
|
27978
|
-
|
|
27979
|
-
|
|
27980
|
-
|
|
27981
|
-
}
|
|
27982
|
-
|
|
27983
|
-
|
|
27984
|
-
|
|
28094
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
28095
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
28096
|
+
// permalinks that might not work for different users
|
|
28097
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
28098
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
28099
|
+
}
|
|
28100
|
+
else {
|
|
28101
|
+
this.esFieldName += '.default';
|
|
28102
|
+
}
|
|
27985
28103
|
}
|
|
27986
28104
|
}
|
|
27987
28105
|
class FullTextSearchField {
|
|
@@ -28001,7 +28119,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
28001
28119
|
marker('search.filters.isSpatial.no');
|
|
28002
28120
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
28003
28121
|
constructor(injector) {
|
|
28004
|
-
super('isSpatial', 'asc'
|
|
28122
|
+
super('isSpatial', injector, 'asc');
|
|
28005
28123
|
this.translateService = this.injector.get(TranslateService);
|
|
28006
28124
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
28007
28125
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -28051,7 +28169,7 @@ marker('search.filters.license.unknown');
|
|
|
28051
28169
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
28052
28170
|
class LicenseSearchField extends SimpleSearchField {
|
|
28053
28171
|
constructor(injector) {
|
|
28054
|
-
super('license', 'asc'
|
|
28172
|
+
super('license', injector, 'asc');
|
|
28055
28173
|
this.translateService = this.injector.get(TranslateService);
|
|
28056
28174
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
28057
28175
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -28135,7 +28253,7 @@ class OrganizationSearchField {
|
|
|
28135
28253
|
}
|
|
28136
28254
|
class OwnerSearchField extends SimpleSearchField {
|
|
28137
28255
|
constructor(injector) {
|
|
28138
|
-
super('owner', 'asc'
|
|
28256
|
+
super('owner', injector, 'asc');
|
|
28139
28257
|
}
|
|
28140
28258
|
getAvailableValues() {
|
|
28141
28259
|
return of([]);
|
|
@@ -28144,6 +28262,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
28144
28262
|
|
|
28145
28263
|
marker('search.filters.format');
|
|
28146
28264
|
marker('search.filters.inspireKeyword');
|
|
28265
|
+
marker('search.filters.keyword');
|
|
28147
28266
|
marker('search.filters.isSpatial');
|
|
28148
28267
|
marker('search.filters.license');
|
|
28149
28268
|
marker('search.filters.publicationYear');
|
|
@@ -28161,13 +28280,14 @@ class FieldsService {
|
|
|
28161
28280
|
this.injector = injector;
|
|
28162
28281
|
this.fields = {
|
|
28163
28282
|
publisher: new OrganizationSearchField(this.injector),
|
|
28164
|
-
format: new SimpleSearchField('format', 'asc'
|
|
28165
|
-
resourceType: new
|
|
28166
|
-
representationType: new
|
|
28167
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
28168
|
-
topic: new
|
|
28169
|
-
inspireKeyword: new
|
|
28170
|
-
|
|
28283
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28284
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28285
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28286
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28287
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28288
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28289
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28290
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
28171
28291
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
28172
28292
|
q: new FullTextSearchField(),
|
|
28173
28293
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28241,10 +28361,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28241
28361
|
type: Input
|
|
28242
28362
|
}] } });
|
|
28243
28363
|
|
|
28244
|
-
// this geometry will be used to filter & boost results accordingly
|
|
28245
|
-
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
28246
|
-
// expects the replacement key ${uuid}
|
|
28247
|
-
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
28248
28364
|
class FeatureSearchModule {
|
|
28249
28365
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28250
28366
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28279,7 +28395,7 @@ class FeatureSearchModule {
|
|
|
28279
28395
|
},
|
|
28280
28396
|
], imports: [CommonModule,
|
|
28281
28397
|
TranslateModule.forChild(),
|
|
28282
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28398
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28283
28399
|
initialState,
|
|
28284
28400
|
}),
|
|
28285
28401
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28309,7 +28425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28309
28425
|
imports: [
|
|
28310
28426
|
CommonModule,
|
|
28311
28427
|
TranslateModule.forChild(),
|
|
28312
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28428
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28313
28429
|
initialState,
|
|
28314
28430
|
}),
|
|
28315
28431
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28343,6 +28459,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28343
28459
|
}]
|
|
28344
28460
|
}] });
|
|
28345
28461
|
|
|
28462
|
+
class ResultsTableComponent {
|
|
28463
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28464
|
+
this.searchFacade = searchFacade;
|
|
28465
|
+
this.searchService = searchService;
|
|
28466
|
+
this.selectionService = selectionService;
|
|
28467
|
+
this.recordClick = new EventEmitter();
|
|
28468
|
+
this.records$ = this.searchFacade.results$;
|
|
28469
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28470
|
+
}
|
|
28471
|
+
dateToString(date) {
|
|
28472
|
+
return date?.toLocaleDateString(undefined, {
|
|
28473
|
+
year: 'numeric',
|
|
28474
|
+
month: 'long',
|
|
28475
|
+
day: 'numeric',
|
|
28476
|
+
timeZone: 'UTC',
|
|
28477
|
+
});
|
|
28478
|
+
}
|
|
28479
|
+
getStatus(isPublishedToAll) {
|
|
28480
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28481
|
+
}
|
|
28482
|
+
getRecordFormats(record) {
|
|
28483
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28484
|
+
return [];
|
|
28485
|
+
}
|
|
28486
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28487
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28488
|
+
return formats;
|
|
28489
|
+
}
|
|
28490
|
+
formatUserInfo(userInfo) {
|
|
28491
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28492
|
+
if (infos && infos.length === 4) {
|
|
28493
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28494
|
+
}
|
|
28495
|
+
return undefined;
|
|
28496
|
+
}
|
|
28497
|
+
getBadgeColor(format) {
|
|
28498
|
+
return getBadgeColor(format);
|
|
28499
|
+
}
|
|
28500
|
+
handleRecordClick(item) {
|
|
28501
|
+
this.recordClick.emit(item);
|
|
28502
|
+
}
|
|
28503
|
+
setSortBy(col, order) {
|
|
28504
|
+
this.searchService.setSortBy([order, col]);
|
|
28505
|
+
}
|
|
28506
|
+
isSortedBy(col) {
|
|
28507
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28508
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28509
|
+
? sortOrder
|
|
28510
|
+
: [sortOrder];
|
|
28511
|
+
for (const sort of sortArray) {
|
|
28512
|
+
if (sort[1] === col) {
|
|
28513
|
+
return sort[0];
|
|
28514
|
+
}
|
|
28515
|
+
}
|
|
28516
|
+
return null;
|
|
28517
|
+
}));
|
|
28518
|
+
}
|
|
28519
|
+
isChecked(record) {
|
|
28520
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28521
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28522
|
+
}));
|
|
28523
|
+
}
|
|
28524
|
+
handleRecordSelectedChange(selected, record) {
|
|
28525
|
+
if (!selected) {
|
|
28526
|
+
this.selectionService.deselectRecords([record]);
|
|
28527
|
+
}
|
|
28528
|
+
else {
|
|
28529
|
+
this.selectionService.selectRecords([record]);
|
|
28530
|
+
}
|
|
28531
|
+
}
|
|
28532
|
+
async toggleSelectAll() {
|
|
28533
|
+
const records = await firstValueFrom(this.records$);
|
|
28534
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28535
|
+
this.selectionService.deselectRecords(records);
|
|
28536
|
+
}
|
|
28537
|
+
else {
|
|
28538
|
+
this.selectionService.selectRecords(records);
|
|
28539
|
+
}
|
|
28540
|
+
}
|
|
28541
|
+
isAllSelected() {
|
|
28542
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28543
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28544
|
+
}));
|
|
28545
|
+
}
|
|
28546
|
+
isSomeSelected() {
|
|
28547
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28548
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28549
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28550
|
+
return !allSelected && someSelected;
|
|
28551
|
+
}));
|
|
28552
|
+
}
|
|
28553
|
+
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 }); }
|
|
28554
|
+
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"] }] }); }
|
|
28555
|
+
}
|
|
28556
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28557
|
+
type: Component,
|
|
28558
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28559
|
+
CommonModule,
|
|
28560
|
+
UiInputsModule,
|
|
28561
|
+
InteractiveTableComponent,
|
|
28562
|
+
InteractiveTableColumnComponent,
|
|
28563
|
+
MatIconModule,
|
|
28564
|
+
TranslateModule,
|
|
28565
|
+
], 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" }]
|
|
28566
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28567
|
+
type: Output
|
|
28568
|
+
}] } });
|
|
28569
|
+
|
|
28346
28570
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28347
28571
|
get mapLinks() {
|
|
28348
28572
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28970,11 +29194,11 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28970
29194
|
...state,
|
|
28971
29195
|
chartConfig,
|
|
28972
29196
|
})), on(close, (state) => {
|
|
28973
|
-
// eslint-disable-next-line
|
|
29197
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28974
29198
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28975
29199
|
return stateWithoutMd;
|
|
28976
29200
|
}));
|
|
28977
|
-
function reducer(state, action) {
|
|
29201
|
+
function reducer$1(state, action) {
|
|
28978
29202
|
return mdViewReducer(state, action);
|
|
28979
29203
|
}
|
|
28980
29204
|
|
|
@@ -30924,11 +31148,11 @@ class LanguageSwitcherComponent {
|
|
|
30924
31148
|
this.translate.use(value);
|
|
30925
31149
|
}
|
|
30926
31150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30927
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30928
31152
|
}
|
|
30929
31153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30930
31154
|
type: Component,
|
|
30931
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31155
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30932
31156
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30933
31157
|
type: Optional
|
|
30934
31158
|
}, {
|
|
@@ -31209,13 +31433,6 @@ class MyOrgService {
|
|
|
31209
31433
|
constructor(platformService, orgService) {
|
|
31210
31434
|
this.platformService = platformService;
|
|
31211
31435
|
this.orgService = orgService;
|
|
31212
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
31213
|
-
orgName: '',
|
|
31214
|
-
logoUrl: '',
|
|
31215
|
-
recordCount: 0,
|
|
31216
|
-
userCount: 0,
|
|
31217
|
-
userList: [],
|
|
31218
|
-
});
|
|
31219
31436
|
this.myOrgData$ = combineLatest([
|
|
31220
31437
|
this.platformService.getMe(),
|
|
31221
31438
|
this.platformService.getUsers(),
|
|
@@ -31234,7 +31451,7 @@ class MyOrgService {
|
|
|
31234
31451
|
userList,
|
|
31235
31452
|
userCount,
|
|
31236
31453
|
};
|
|
31237
|
-
}));
|
|
31454
|
+
}), shareReplay(1));
|
|
31238
31455
|
}
|
|
31239
31456
|
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 }); }
|
|
31240
31457
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -31262,18 +31479,18 @@ class DataViewPermalinkComponent {
|
|
|
31262
31479
|
if (config) {
|
|
31263
31480
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
31264
31481
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
31265
|
-
url.
|
|
31266
|
-
|
|
31267
|
-
|
|
31268
|
-
|
|
31269
|
-
|
|
31270
|
-
|
|
31271
|
-
|
|
31272
|
-
|
|
31273
|
-
|
|
31274
|
-
|
|
31275
|
-
|
|
31276
|
-
|
|
31482
|
+
url.searchParams.set('v', `${this.version}`);
|
|
31483
|
+
url.searchParams.append('e', `gn-dataset-view-chart`);
|
|
31484
|
+
url.searchParams.append('a', `api-url=${this.config.basePath}`);
|
|
31485
|
+
url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
|
|
31486
|
+
url.searchParams.append('a', `primary-color=#0f4395`);
|
|
31487
|
+
url.searchParams.append('a', `secondary-color=#8bc832`);
|
|
31488
|
+
url.searchParams.append('a', `main-color=#555`);
|
|
31489
|
+
url.searchParams.append('a', `background-color=#fdfbff`);
|
|
31490
|
+
url.searchParams.append('a', `aggregation=${aggregation}`);
|
|
31491
|
+
url.searchParams.append('a', `x-property=${xProperty}`);
|
|
31492
|
+
url.searchParams.append('a', `y-property=${yProperty}`);
|
|
31493
|
+
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
31277
31494
|
return url.toString();
|
|
31278
31495
|
}
|
|
31279
31496
|
return '';
|
|
@@ -31380,7 +31597,7 @@ class FeatureRecordModule {
|
|
|
31380
31597
|
DataViewWebComponentComponent,
|
|
31381
31598
|
DataViewShareComponent] }); }
|
|
31382
31599
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
31383
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31600
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31384
31601
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31385
31602
|
UiLayoutModule,
|
|
31386
31603
|
FeatureMapModule,
|
|
@@ -31408,7 +31625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31408
31625
|
],
|
|
31409
31626
|
imports: [
|
|
31410
31627
|
CommonModule,
|
|
31411
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31628
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31412
31629
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31413
31630
|
UiLayoutModule,
|
|
31414
31631
|
FeatureMapModule,
|
|
@@ -31434,6 +31651,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31434
31651
|
}]
|
|
31435
31652
|
}] });
|
|
31436
31653
|
|
|
31654
|
+
const openRecord = createAction('[Editor] Open record', props());
|
|
31655
|
+
const updateRecordField = createAction('[Editor] Update record field', props());
|
|
31656
|
+
const markRecordAsChanged = createAction('[Editor] Mark record as changed');
|
|
31657
|
+
const saveRecord = createAction('[Editor] Save record');
|
|
31658
|
+
const saveRecordSuccess = createAction('[Editor] Save record success');
|
|
31659
|
+
const saveRecordFailure = createAction('[Editor] Save record failure', props());
|
|
31660
|
+
|
|
31661
|
+
const DEFAULT_FIELDS = [
|
|
31662
|
+
{
|
|
31663
|
+
model: 'title',
|
|
31664
|
+
formFieldConfig: {
|
|
31665
|
+
labelKey: 'Metadata title',
|
|
31666
|
+
type: 'text',
|
|
31667
|
+
},
|
|
31668
|
+
},
|
|
31669
|
+
{
|
|
31670
|
+
model: 'abstract',
|
|
31671
|
+
formFieldConfig: {
|
|
31672
|
+
labelKey: 'Abstract',
|
|
31673
|
+
type: 'rich',
|
|
31674
|
+
},
|
|
31675
|
+
},
|
|
31676
|
+
{
|
|
31677
|
+
model: 'uniqueIdentifier',
|
|
31678
|
+
formFieldConfig: {
|
|
31679
|
+
labelKey: 'Unique identifier',
|
|
31680
|
+
type: 'text',
|
|
31681
|
+
locked: true,
|
|
31682
|
+
},
|
|
31683
|
+
},
|
|
31684
|
+
{
|
|
31685
|
+
model: 'recordUpdated',
|
|
31686
|
+
formFieldConfig: {
|
|
31687
|
+
labelKey: 'Record Updated',
|
|
31688
|
+
type: 'text',
|
|
31689
|
+
locked: true,
|
|
31690
|
+
},
|
|
31691
|
+
onSaveProcess: '${dateNow()}',
|
|
31692
|
+
},
|
|
31693
|
+
];
|
|
31694
|
+
|
|
31695
|
+
const EDITOR_FEATURE_KEY = 'editor';
|
|
31696
|
+
const initialEditorState = {
|
|
31697
|
+
record: null,
|
|
31698
|
+
saving: false,
|
|
31699
|
+
saveError: null,
|
|
31700
|
+
changedSinceSave: false,
|
|
31701
|
+
fieldsConfig: DEFAULT_FIELDS,
|
|
31702
|
+
};
|
|
31703
|
+
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record }) => ({
|
|
31704
|
+
...state,
|
|
31705
|
+
changedSinceSave: false,
|
|
31706
|
+
record,
|
|
31707
|
+
})), on(saveRecord, (state) => ({
|
|
31708
|
+
...state,
|
|
31709
|
+
saving: true,
|
|
31710
|
+
saveError: null,
|
|
31711
|
+
})), on(saveRecordSuccess, (state) => ({
|
|
31712
|
+
...state,
|
|
31713
|
+
saving: false,
|
|
31714
|
+
saveError: null,
|
|
31715
|
+
changedSinceSave: false,
|
|
31716
|
+
})), on(saveRecordFailure, (state, { error }) => ({
|
|
31717
|
+
...state,
|
|
31718
|
+
saving: false,
|
|
31719
|
+
saveError: error,
|
|
31720
|
+
})), on(updateRecordField, (state, { field, value }) => ({
|
|
31721
|
+
...state,
|
|
31722
|
+
record: {
|
|
31723
|
+
...state.record,
|
|
31724
|
+
[field]: value,
|
|
31725
|
+
},
|
|
31726
|
+
})), on(markRecordAsChanged, (state) => ({
|
|
31727
|
+
...state,
|
|
31728
|
+
changedSinceSave: true,
|
|
31729
|
+
})));
|
|
31730
|
+
function editorReducer(state, action) {
|
|
31731
|
+
return reducer(state, action);
|
|
31732
|
+
}
|
|
31733
|
+
|
|
31734
|
+
const selectEditorState = createFeatureSelector(EDITOR_FEATURE_KEY);
|
|
31735
|
+
const selectRecord = createSelector(selectEditorState, (state) => state.record);
|
|
31736
|
+
const selectRecordSaving = createSelector(selectEditorState, (state) => state.saving);
|
|
31737
|
+
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
31738
|
+
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
31739
|
+
const selectRecordFieldsConfig = createSelector(selectEditorState, (state) => state.fieldsConfig);
|
|
31740
|
+
const selectRecordFields = createSelector(selectEditorState, (state) => state.fieldsConfig.map((fieldConfig) => ({
|
|
31741
|
+
config: fieldConfig,
|
|
31742
|
+
value: state.record?.[fieldConfig.model] || null,
|
|
31743
|
+
})));
|
|
31744
|
+
|
|
31745
|
+
class EditorFacade {
|
|
31746
|
+
constructor() {
|
|
31747
|
+
this.store = inject(Store);
|
|
31748
|
+
this.record$ = this.store.pipe(select(selectRecord));
|
|
31749
|
+
this.saving$ = this.store.pipe(select(selectRecordSaving));
|
|
31750
|
+
this.saveError$ = this.store.pipe(select(selectRecordSaveError));
|
|
31751
|
+
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
31752
|
+
this.recordFields$ = this.store.pipe(select(selectRecordFields));
|
|
31753
|
+
}
|
|
31754
|
+
openRecord(record) {
|
|
31755
|
+
this.store.dispatch(openRecord({ record }));
|
|
31756
|
+
}
|
|
31757
|
+
saveRecord() {
|
|
31758
|
+
this.store.dispatch(saveRecord());
|
|
31759
|
+
}
|
|
31760
|
+
updateRecordField(field, value) {
|
|
31761
|
+
this.store.dispatch(updateRecordField({ field, value }));
|
|
31762
|
+
}
|
|
31763
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31764
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade }); }
|
|
31765
|
+
}
|
|
31766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade, decorators: [{
|
|
31767
|
+
type: Injectable
|
|
31768
|
+
}] });
|
|
31769
|
+
|
|
31437
31770
|
class WizardService {
|
|
31438
31771
|
constructor(translateService) {
|
|
31439
31772
|
this.translateService = translateService;
|
|
@@ -31795,6 +32128,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31795
32128
|
args: [{ selector: 'gn-ui-wizard-summarize', template: "<div>\n <div class=\"text-2xl font-bold title\">\n {{ title | uppercase }}\n </div>\n <div class=\"text-lg font-bold pt-2 abstract\">\n {{ abstract }}\n </div>\n <div class=\"text-lg font-normal\">\n <span translate>datafeeder.wizardSummarize.createdAt</span>\n <span class=\"date\">{{ createdDate }}</span> -\n <span translate>datafeeder.wizardSummarize.scale</span>\n <span class=\"scale\">{{ scale }}</span>\n </div>\n <div class=\"text-lg italic font-normal description\">\n {{ description }}\n </div>\n <div class=\"text-sm font-medium pt-4 tags\">\n <span class=\"icon-tag pr-2\"></span>\n {{ tags }}\n </div>\n</div>\n", styles: [".icon-tag:before{font-size:18px}\n"] }]
|
|
31796
32129
|
}], ctorParameters: function () { return [{ type: WizardService }, { type: i1$1.TranslateService }]; } });
|
|
31797
32130
|
|
|
32131
|
+
function evaluate(expression) {
|
|
32132
|
+
if (expression.match(/^\${.*}$/)) {
|
|
32133
|
+
return evaluate(expression.slice(2, -1));
|
|
32134
|
+
}
|
|
32135
|
+
const operator = expression.split('(')[0];
|
|
32136
|
+
switch (operator) {
|
|
32137
|
+
case 'dateNow':
|
|
32138
|
+
return () => new Date();
|
|
32139
|
+
default:
|
|
32140
|
+
throw new Error(`Unknown operator: ${operator}`);
|
|
32141
|
+
}
|
|
32142
|
+
}
|
|
32143
|
+
|
|
32144
|
+
class EditorService {
|
|
32145
|
+
constructor(http, apiConfiguration) {
|
|
32146
|
+
this.http = http;
|
|
32147
|
+
this.apiConfiguration = apiConfiguration;
|
|
32148
|
+
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
32149
|
+
}
|
|
32150
|
+
// TODO: use the catalog repository instead
|
|
32151
|
+
loadRecordByUuid(uuid) {
|
|
32152
|
+
return this.http
|
|
32153
|
+
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
32154
|
+
responseType: 'text',
|
|
32155
|
+
headers: {
|
|
32156
|
+
Accept: 'application/xml',
|
|
32157
|
+
},
|
|
32158
|
+
})
|
|
32159
|
+
.pipe(map$1((response) => toModel(response.toString())));
|
|
32160
|
+
}
|
|
32161
|
+
// returns the record as it was when saved
|
|
32162
|
+
saveRecord(record, fieldsConfig) {
|
|
32163
|
+
const savedRecord = { ...record };
|
|
32164
|
+
// run onSave processes
|
|
32165
|
+
for (const field of fieldsConfig) {
|
|
32166
|
+
if (field.onSaveProcess && field.model) {
|
|
32167
|
+
const evaluator = evaluate(field.onSaveProcess);
|
|
32168
|
+
savedRecord[field.model] = evaluator({
|
|
32169
|
+
config: field,
|
|
32170
|
+
value: record[field.model],
|
|
32171
|
+
});
|
|
32172
|
+
}
|
|
32173
|
+
}
|
|
32174
|
+
// TODO: use the catalog repository instead
|
|
32175
|
+
return this.http
|
|
32176
|
+
.put(`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`, toXml(savedRecord), {
|
|
32177
|
+
headers: {
|
|
32178
|
+
'Content-Type': 'application/xml',
|
|
32179
|
+
},
|
|
32180
|
+
withCredentials: true,
|
|
32181
|
+
})
|
|
32182
|
+
.pipe(map$1(() => savedRecord));
|
|
32183
|
+
}
|
|
32184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32185
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
32186
|
+
}
|
|
32187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
32188
|
+
type: Injectable,
|
|
32189
|
+
args: [{
|
|
32190
|
+
providedIn: 'root',
|
|
32191
|
+
}]
|
|
32192
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: Configuration, decorators: [{
|
|
32193
|
+
type: Optional
|
|
32194
|
+
}, {
|
|
32195
|
+
type: Inject,
|
|
32196
|
+
args: [Configuration]
|
|
32197
|
+
}] }]; } });
|
|
32198
|
+
|
|
32199
|
+
class EditorEffects {
|
|
32200
|
+
constructor() {
|
|
32201
|
+
this.actions$ = inject(Actions);
|
|
32202
|
+
this.editorService = inject(EditorService);
|
|
32203
|
+
this.store = inject(Store);
|
|
32204
|
+
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectRecordFieldsConfig)), switchMap$1(([, record, fieldsConfig]) => this.editorService.saveRecord(record, fieldsConfig).pipe(switchMap$1((newRecord) => of(saveRecordSuccess(), openRecord({ record: newRecord }))), catchError((error) => of(saveRecordFailure({
|
|
32205
|
+
error: error.message,
|
|
32206
|
+
})))))));
|
|
32207
|
+
this.markAsChanged$ = createEffect(() => this.actions$.pipe(ofType(updateRecordField), map$1(() => markRecordAsChanged())));
|
|
32208
|
+
}
|
|
32209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32210
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects }); }
|
|
32211
|
+
}
|
|
32212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects, decorators: [{
|
|
32213
|
+
type: Injectable
|
|
32214
|
+
}] });
|
|
32215
|
+
|
|
31798
32216
|
class FeatureEditorModule {
|
|
31799
32217
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31800
32218
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, declarations: [WizardComponent,
|
|
@@ -31805,8 +32223,8 @@ class FeatureEditorModule {
|
|
|
31805
32223
|
MatNativeDateModule,
|
|
31806
32224
|
MatFormFieldModule,
|
|
31807
32225
|
HttpClientModule,
|
|
31808
|
-
HttpClientXsrfModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
31809
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, imports: [CommonModule,
|
|
32226
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$8.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
32227
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade], imports: [CommonModule,
|
|
31810
32228
|
UiInputsModule,
|
|
31811
32229
|
UiWidgetsModule,
|
|
31812
32230
|
TranslateModule.forChild(),
|
|
@@ -31814,7 +32232,9 @@ class FeatureEditorModule {
|
|
|
31814
32232
|
MatNativeDateModule,
|
|
31815
32233
|
MatFormFieldModule,
|
|
31816
32234
|
HttpClientModule,
|
|
31817
|
-
HttpClientXsrfModule
|
|
32235
|
+
HttpClientXsrfModule,
|
|
32236
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32237
|
+
EffectsModule.forFeature([EditorEffects])] }); }
|
|
31818
32238
|
}
|
|
31819
32239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, decorators: [{
|
|
31820
32240
|
type: NgModule,
|
|
@@ -31834,105 +32254,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31834
32254
|
MatFormFieldModule,
|
|
31835
32255
|
HttpClientModule,
|
|
31836
32256
|
HttpClientXsrfModule,
|
|
32257
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32258
|
+
EffectsModule.forFeature([EditorEffects]),
|
|
31837
32259
|
],
|
|
31838
32260
|
exports: [WizardComponent, WizardSummarizeComponent],
|
|
32261
|
+
providers: [EditorFacade],
|
|
31839
32262
|
}]
|
|
31840
32263
|
}] });
|
|
31841
32264
|
|
|
31842
|
-
class EditorService {
|
|
31843
|
-
constructor(http, apiConfiguration) {
|
|
31844
|
-
this.http = http;
|
|
31845
|
-
this.apiConfiguration = apiConfiguration;
|
|
31846
|
-
this.record$ = new BehaviorSubject(null);
|
|
31847
|
-
this.fieldsConfig = [
|
|
31848
|
-
{
|
|
31849
|
-
model: 'title',
|
|
31850
|
-
labelKey: 'Metadata title',
|
|
31851
|
-
type: 'text',
|
|
31852
|
-
},
|
|
31853
|
-
{
|
|
31854
|
-
model: 'abstract',
|
|
31855
|
-
labelKey: 'Abstract',
|
|
31856
|
-
type: 'rich',
|
|
31857
|
-
},
|
|
31858
|
-
{
|
|
31859
|
-
model: 'uniqueIdentifier',
|
|
31860
|
-
labelKey: 'Unique identifier',
|
|
31861
|
-
type: 'text',
|
|
31862
|
-
locked: true,
|
|
31863
|
-
},
|
|
31864
|
-
];
|
|
31865
|
-
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
31866
|
-
this.fields$ = this.record$.pipe(map$1((record) => this.fieldsConfig.map((fieldConfig) => ({
|
|
31867
|
-
config: fieldConfig,
|
|
31868
|
-
value: record?.[fieldConfig.model] || null,
|
|
31869
|
-
}))));
|
|
31870
|
-
this.saving$ = new BehaviorSubject(false);
|
|
31871
|
-
}
|
|
31872
|
-
loadRecordByUuid(uuid) {
|
|
31873
|
-
return this.http
|
|
31874
|
-
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
31875
|
-
responseType: 'text',
|
|
31876
|
-
headers: {
|
|
31877
|
-
Accept: 'application/xml',
|
|
31878
|
-
},
|
|
31879
|
-
})
|
|
31880
|
-
.pipe(map$1((response) => toModel(response.toString())));
|
|
31881
|
-
}
|
|
31882
|
-
saveCurrentRecord() {
|
|
31883
|
-
return this.record$.pipe(take(1), tap$1((record) => {
|
|
31884
|
-
if (!record)
|
|
31885
|
-
throw new Error('Save record failed: no record currently open');
|
|
31886
|
-
this.saving$.next(true);
|
|
31887
|
-
}), switchMap$1((record) => this.http.put(`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`, toXml(record), {
|
|
31888
|
-
headers: {
|
|
31889
|
-
'Content-Type': 'application/xml',
|
|
31890
|
-
},
|
|
31891
|
-
withCredentials: true,
|
|
31892
|
-
})), map$1(() => undefined), finalize(() => {
|
|
31893
|
-
this.saving$.next(false);
|
|
31894
|
-
}));
|
|
31895
|
-
}
|
|
31896
|
-
setCurrentRecord(record) {
|
|
31897
|
-
this.record$.next(record);
|
|
31898
|
-
}
|
|
31899
|
-
updateRecordField(fieldName, value) {
|
|
31900
|
-
this.record$
|
|
31901
|
-
.pipe(take(1), map$1((record) => ({ ...record, [fieldName]: value })))
|
|
31902
|
-
.subscribe((record) => this.record$.next(record));
|
|
31903
|
-
}
|
|
31904
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31905
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
31906
|
-
}
|
|
31907
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
31908
|
-
type: Injectable,
|
|
31909
|
-
args: [{
|
|
31910
|
-
providedIn: 'root',
|
|
31911
|
-
}]
|
|
31912
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: Configuration, decorators: [{
|
|
31913
|
-
type: Optional
|
|
31914
|
-
}, {
|
|
31915
|
-
type: Inject,
|
|
31916
|
-
args: [Configuration]
|
|
31917
|
-
}] }]; } });
|
|
31918
|
-
|
|
31919
32265
|
class RecordFormComponent {
|
|
31920
|
-
constructor(
|
|
31921
|
-
this.
|
|
32266
|
+
constructor(facade) {
|
|
32267
|
+
this.facade = facade;
|
|
32268
|
+
this.fields$ = this.facade.recordFields$;
|
|
31922
32269
|
}
|
|
31923
|
-
handleFieldValueChange(
|
|
31924
|
-
|
|
32270
|
+
handleFieldValueChange(field, newValue) {
|
|
32271
|
+
if (!field.config.model) {
|
|
32272
|
+
return;
|
|
32273
|
+
}
|
|
32274
|
+
this.facade.updateRecordField(field.config.model, newValue);
|
|
31925
32275
|
}
|
|
31926
32276
|
fieldTracker(index, field) {
|
|
31927
32277
|
return field.config.model;
|
|
31928
32278
|
}
|
|
31929
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token:
|
|
31930
|
-
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 <
|
|
32279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32280
|
+
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 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "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 }); }
|
|
31931
32281
|
}
|
|
31932
32282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31933
32283
|
type: Component,
|
|
31934
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <
|
|
31935
|
-
}], ctorParameters: function () { return [{ type:
|
|
32284
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
32285
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
31936
32286
|
|
|
31937
32287
|
const ROUTER_STATE_KEY = 'router';
|
|
31938
32288
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
@@ -32299,5 +32649,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32299
32649
|
* Generated bundle index. Do not edit.
|
|
32300
32650
|
*/
|
|
32301
32651
|
|
|
32302
|
-
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, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, 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, 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,
|
|
32652
|
+
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, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, editorReducer, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer, updateRecordField };
|
|
32303
32653
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|