geonetwork-ui 2.2.0-dev.0c467200 → 2.2.0-dev.0c7f1872
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 +49 -58
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +5 -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 +20 -17
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +52 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
- 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/map/src/lib/map-context/map-context.service.mjs +9 -1
- 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/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +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 +3 -3
- package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +3 -2
- 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/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
- package/esm2022/libs/ui/search/src/index.mjs +1 -2
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
- package/esm2022/libs/util/i18n/src/index.mjs +1 -2
- package/esm2022/translations/de.json +7 -5
- package/esm2022/translations/en.json +10 -8
- package/esm2022/translations/es.json +7 -5
- package/esm2022/translations/fr.json +10 -8
- package/esm2022/translations/it.json +9 -7
- package/esm2022/translations/nl.json +7 -5
- package/esm2022/translations/pt.json +7 -5
- package/fesm2022/geonetwork-ui.mjs +662 -593
- 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 +3 -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 +6 -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/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 +18 -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/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/metadata-info/metadata-info.component.d.ts +10 -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/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/package.json +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +61 -8
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +55 -9
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +225 -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 +80 -73
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +4 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +3 -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 +24 -21
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +115 -62
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +169 -95
- 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 +21 -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/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +50 -10
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
- 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/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/metadata-info/metadata-info.component.html +51 -24
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +37 -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.ts +1 -0
- package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +1 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
- package/src/libs/ui/search/src/index.ts +0 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
- package/src/libs/util/i18n/src/index.ts +0 -1
- package/tailwind.base.config.js +3 -0
- package/tailwind.base.css +2 -2
- package/translations/de.json +7 -5
- package/translations/en.json +10 -8
- package/translations/es.json +7 -5
- package/translations/fr.json +10 -8
- package/translations/it.json +9 -7
- package/translations/nl.json +7 -5
- package/translations/pt.json +7 -5
- package/translations/sk.json +7 -5
- 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,18 +1,18 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ElementRef, ViewChildren } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
|
-
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService
|
|
8
|
+
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap as switchMap$1, catchError, take,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, throttleTime, distinctUntilChanged, finalize, first, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, firstValueFrom, fromEvent, timer, from, Subscription, animationFrameScheduler, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
@@ -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() {
|
|
@@ -829,31 +847,55 @@ function readDatasetUpdated(rootEl) {
|
|
|
829
847
|
function readContacts(rootEl) {
|
|
830
848
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
831
849
|
}
|
|
832
|
-
|
|
833
|
-
|
|
850
|
+
// from gmd:thesaurusName
|
|
851
|
+
function readThesaurus(rootEl) {
|
|
852
|
+
if (!rootEl)
|
|
853
|
+
return null;
|
|
854
|
+
const findIdentifier = findNestedElement('gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code');
|
|
855
|
+
const id = pipe(findIdentifier, extractCharacterString())(rootEl);
|
|
856
|
+
const url = pipe(findIdentifier, extractUrl())(rootEl);
|
|
857
|
+
const name = pipe(findNestedElement('gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
858
|
+
return {
|
|
859
|
+
id,
|
|
860
|
+
...(name && { name }),
|
|
861
|
+
...(url && { url }),
|
|
862
|
+
};
|
|
834
863
|
}
|
|
835
|
-
|
|
836
|
-
|
|
864
|
+
// from gmd:MD_Keywords
|
|
865
|
+
function readKeywordGroup(rootEl) {
|
|
866
|
+
const type = pipe(findChildrenElement('gmd:MD_KeywordTypeCode'), mapArray(readAttribute('codeListValue')), map((values) => getKeywordTypeFromKeywordTypeCode(values[0])))(rootEl);
|
|
867
|
+
const thesaurus = pipe(findNestedElement('gmd:thesaurusName'), readThesaurus)(rootEl);
|
|
868
|
+
return pipe(findChildrenElement('gmd:keyword'), mapArray((el) => {
|
|
869
|
+
const label = extractCharacterString()(el);
|
|
870
|
+
return {
|
|
871
|
+
...(thesaurus ? { thesaurus } : {}),
|
|
872
|
+
label,
|
|
873
|
+
type,
|
|
874
|
+
};
|
|
875
|
+
}))(rootEl);
|
|
837
876
|
}
|
|
838
|
-
function
|
|
839
|
-
return
|
|
877
|
+
function readKeywords(rootEl) {
|
|
878
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
840
879
|
}
|
|
841
880
|
function readStatus(rootEl) {
|
|
842
881
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
843
882
|
}
|
|
844
883
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
845
|
-
function
|
|
846
|
-
return pipe(getConstraints, mapArray(
|
|
884
|
+
function readLegalConstraints(rootEl) {
|
|
885
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
847
886
|
}
|
|
848
|
-
function
|
|
849
|
-
return pipe(getConstraints, mapArray(
|
|
887
|
+
function readSecurityConstraints(rootEl) {
|
|
888
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
889
|
+
}
|
|
890
|
+
function readOtherConstraints(rootEl) {
|
|
891
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
850
892
|
}
|
|
851
893
|
function readLicenses(rootEl) {
|
|
852
894
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
853
895
|
}
|
|
854
896
|
// not used yet
|
|
855
897
|
function readIsoTopics(rootEl) {
|
|
856
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
898
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
857
899
|
}
|
|
858
900
|
function readSpatialRepresentation(rootEl) {
|
|
859
901
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1069,33 +1111,50 @@ function updateCitationDate(date, type) {
|
|
|
1069
1111
|
function appendCitationDate(date, type) {
|
|
1070
1112
|
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
1113
|
}
|
|
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
|
-
|
|
1114
|
+
function removeKeywords() {
|
|
1115
|
+
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')));
|
|
1116
|
+
}
|
|
1117
|
+
// returns a <gmd:thesaurusName> element
|
|
1118
|
+
function createThesaurus(thesaurus) {
|
|
1119
|
+
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
|
|
1120
|
+
? writeAnchor(thesaurus.url, thesaurus.id)
|
|
1121
|
+
: writeCharacterString(thesaurus.id))))));
|
|
1122
|
+
}
|
|
1123
|
+
function appendKeywords(keywords) {
|
|
1124
|
+
const keywordsByThesaurus = keywords.reduce((acc, keyword) => {
|
|
1125
|
+
const thesaurusId = keyword.thesaurus?.id;
|
|
1126
|
+
const type = keyword.type;
|
|
1127
|
+
let existingGroup = acc.find((group) => group[0].thesaurus
|
|
1128
|
+
? group[0].thesaurus.id === thesaurusId
|
|
1129
|
+
: group[0].type === type);
|
|
1130
|
+
if (!existingGroup) {
|
|
1131
|
+
existingGroup = [];
|
|
1132
|
+
acc.push(existingGroup);
|
|
1133
|
+
}
|
|
1134
|
+
existingGroup.push(keyword);
|
|
1135
|
+
return acc;
|
|
1136
|
+
}, []);
|
|
1137
|
+
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
|
|
1138
|
+
? appendChildren(createThesaurus(keywords[0].thesaurus))
|
|
1139
|
+
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword.label)))))));
|
|
1140
|
+
}
|
|
1141
|
+
function createConstraint(constraint, type) {
|
|
1142
|
+
if (type === 'security') {
|
|
1090
1143
|
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
1144
|
}
|
|
1092
|
-
|
|
1145
|
+
else if (type === 'legal') {
|
|
1146
|
+
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))));
|
|
1147
|
+
}
|
|
1148
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1093
1149
|
}
|
|
1094
|
-
function
|
|
1150
|
+
function removeOtherConstraints() {
|
|
1095
1151
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1096
1152
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return pipe(
|
|
1153
|
+
function removeSecurityConstraints() {
|
|
1154
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1155
|
+
}
|
|
1156
|
+
function removeLegalConstraints() {
|
|
1157
|
+
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
1158
|
}
|
|
1100
1159
|
function removeLicenses() {
|
|
1101
1160
|
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 +1253,22 @@ function writeContacts(record, rootEl) {
|
|
|
1194
1253
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1195
1254
|
}
|
|
1196
1255
|
function writeKeywords(record, rootEl) {
|
|
1197
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1198
|
-
}
|
|
1199
|
-
function writeThemes(record, rootEl) {
|
|
1200
|
-
pipe(findOrCreateIdentification(), removeKeywords('theme'), appendKeywords(record.themes, 'theme'))(rootEl);
|
|
1256
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1201
1257
|
}
|
|
1202
|
-
function
|
|
1203
|
-
pipe(findOrCreateIdentification(),
|
|
1258
|
+
function writeTopics(record, rootEl) {
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:topicCategory'), appendChildren(...record.topics.map((topic) => pipe(createElement('gmd:topicCategory'), createChild('gmd:MD_TopicCategoryCode'), setTextContent(topic)))))(rootEl);
|
|
1204
1260
|
}
|
|
1205
1261
|
function writeLicenses(record, rootEl) {
|
|
1206
1262
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1207
1263
|
}
|
|
1208
|
-
function
|
|
1209
|
-
pipe(findOrCreateIdentification(),
|
|
1264
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1265
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1266
|
+
}
|
|
1267
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1268
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1269
|
+
}
|
|
1270
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1271
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1210
1272
|
}
|
|
1211
1273
|
function writeUpdateFrequency(record, rootEl) {
|
|
1212
1274
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1303,13 +1365,12 @@ function toModel(xml) {
|
|
|
1303
1365
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1304
1366
|
const recordCreated = recordUpdated;
|
|
1305
1367
|
const keywords = readKeywords(rootEl);
|
|
1306
|
-
const
|
|
1307
|
-
const
|
|
1308
|
-
const
|
|
1368
|
+
const topics = readIsoTopics(rootEl);
|
|
1369
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1370
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1371
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1309
1372
|
const licenses = readLicenses(rootEl);
|
|
1310
1373
|
const overviews = readOverviews(rootEl);
|
|
1311
|
-
// not used yet
|
|
1312
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1313
1374
|
if (kind === 'dataset') {
|
|
1314
1375
|
const status = readStatus(rootEl);
|
|
1315
1376
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1332,10 +1393,11 @@ function toModel(xml) {
|
|
|
1332
1393
|
contacts,
|
|
1333
1394
|
contactsForResource: [],
|
|
1334
1395
|
keywords,
|
|
1335
|
-
|
|
1336
|
-
accessConstraints,
|
|
1337
|
-
useLimitations,
|
|
1396
|
+
topics,
|
|
1338
1397
|
licenses,
|
|
1398
|
+
legalConstraints,
|
|
1399
|
+
securityConstraints,
|
|
1400
|
+
otherConstraints,
|
|
1339
1401
|
...(datasetCreated && { datasetCreated }),
|
|
1340
1402
|
...(datasetUpdated && { datasetUpdated }),
|
|
1341
1403
|
lineage,
|
|
@@ -1359,10 +1421,11 @@ function toModel(xml) {
|
|
|
1359
1421
|
ownerOrganization,
|
|
1360
1422
|
contacts,
|
|
1361
1423
|
keywords,
|
|
1362
|
-
|
|
1363
|
-
accessConstraints,
|
|
1364
|
-
useLimitations,
|
|
1424
|
+
topics,
|
|
1365
1425
|
licenses,
|
|
1426
|
+
legalConstraints,
|
|
1427
|
+
securityConstraints,
|
|
1428
|
+
otherConstraints,
|
|
1366
1429
|
overviews,
|
|
1367
1430
|
onlineResources,
|
|
1368
1431
|
};
|
|
@@ -1387,10 +1450,12 @@ function toXml(record, originalXml) {
|
|
|
1387
1450
|
writeAbstract(record, rootEl);
|
|
1388
1451
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1389
1452
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1390
|
-
fieldChanged('
|
|
1391
|
-
fieldChanged('
|
|
1453
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1454
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1455
|
+
fieldChanged('securityConstraints') &&
|
|
1456
|
+
writeSecurityConstraints(record, rootEl);
|
|
1392
1457
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1393
|
-
fieldChanged('
|
|
1458
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1394
1459
|
if (record.kind === 'dataset') {
|
|
1395
1460
|
writeStatus(record, rootEl);
|
|
1396
1461
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1457,6 +1522,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1457
1522
|
...(phone && { phone }),
|
|
1458
1523
|
};
|
|
1459
1524
|
};
|
|
1525
|
+
const mapKeywords = (thesauri, language) => {
|
|
1526
|
+
const keywords = [];
|
|
1527
|
+
for (const thesaurusId in thesauri) {
|
|
1528
|
+
const rawThesaurus = thesauri[thesaurusId];
|
|
1529
|
+
let thesaurus = null;
|
|
1530
|
+
if (rawThesaurus.id) {
|
|
1531
|
+
const thesaurusSource = { ...rawThesaurus };
|
|
1532
|
+
const url = getAsUrl(selectField(thesaurusSource, 'link'));
|
|
1533
|
+
const name = selectField(thesaurusSource, 'title');
|
|
1534
|
+
thesaurus = {
|
|
1535
|
+
id: rawThesaurus.id,
|
|
1536
|
+
...(name && { name }),
|
|
1537
|
+
...(url && { url }),
|
|
1538
|
+
};
|
|
1539
|
+
}
|
|
1540
|
+
for (const keyword of rawThesaurus.keywords) {
|
|
1541
|
+
keywords.push({
|
|
1542
|
+
label: selectTranslatedValue(keyword, language),
|
|
1543
|
+
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
1544
|
+
...(thesaurus && { thesaurus }),
|
|
1545
|
+
});
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
return keywords;
|
|
1549
|
+
};
|
|
1460
1550
|
|
|
1461
1551
|
/**
|
|
1462
1552
|
* Custom HttpParameterCodec
|
|
@@ -16543,133 +16633,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16543
16633
|
}]
|
|
16544
16634
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16545
16635
|
|
|
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
16636
|
var dropFile$6 = "Datei ablegen";
|
|
16674
16637
|
var next$6 = "weiter";
|
|
16675
16638
|
var previous$6 = "zurück";
|
|
@@ -16692,20 +16655,21 @@ var de = {
|
|
|
16692
16655
|
"chart.type.line": "Liniendiagramm",
|
|
16693
16656
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16694
16657
|
"chart.type.pie": "Kreisdiagramm",
|
|
16658
|
+
"dashboard.createRecord": "",
|
|
16695
16659
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16696
16660
|
"dashboard.records.all": "Katalog",
|
|
16697
16661
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16698
16662
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16699
16663
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
16700
16664
|
"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
16665
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16704
16666
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16705
16667
|
"dashboard.records.userDetail": "Name",
|
|
16706
16668
|
"dashboard.records.userEmail": "E-Mail",
|
|
16707
16669
|
"dashboard.records.username": "Benutzername",
|
|
16708
16670
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16671
|
+
"dashboard.results.listMetadata": "",
|
|
16672
|
+
"dashboard.results.listResources": "",
|
|
16709
16673
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16710
16674
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16711
16675
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16897,16 +16861,15 @@ var de = {
|
|
|
16897
16861
|
"record.metadata.author": "Autor",
|
|
16898
16862
|
"record.metadata.catalog": "Katalog",
|
|
16899
16863
|
"record.metadata.contact": "Kontakt",
|
|
16900
|
-
"record.metadata.createdOn": "Erstellt am",
|
|
16901
16864
|
"record.metadata.details": "Technische Informationen",
|
|
16902
16865
|
"record.metadata.download": "Downloads",
|
|
16903
16866
|
"record.metadata.formats": "Formate",
|
|
16904
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16905
16867
|
"record.metadata.keywords": "Stichworte",
|
|
16906
16868
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am",
|
|
16907
16869
|
"record.metadata.links": "Links",
|
|
16908
16870
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16909
16871
|
"record.metadata.origin": "Über die Daten",
|
|
16872
|
+
"record.metadata.otherConstraints": "",
|
|
16910
16873
|
"record.metadata.owner": "",
|
|
16911
16874
|
"record.metadata.preview": "Vorschau",
|
|
16912
16875
|
"record.metadata.publications": "Veröffentlichungen",
|
|
@@ -16930,8 +16893,9 @@ var de = {
|
|
|
16930
16893
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16931
16894
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16932
16895
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16933
|
-
"record.metadata.
|
|
16896
|
+
"record.metadata.status": "",
|
|
16934
16897
|
"record.metadata.title": "Titel",
|
|
16898
|
+
"record.metadata.topics": "Kategorien",
|
|
16935
16899
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16936
16900
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16937
16901
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
@@ -16967,6 +16931,7 @@ var de = {
|
|
|
16967
16931
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16968
16932
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16969
16933
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16934
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16970
16935
|
"search.filters.license": "Lizenz",
|
|
16971
16936
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16972
16937
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17031,20 +16996,21 @@ var en = {
|
|
|
17031
16996
|
"chart.type.line": "line chart",
|
|
17032
16997
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17033
16998
|
"chart.type.pie": "pie chart",
|
|
16999
|
+
"dashboard.createRecord": "New record",
|
|
17034
17000
|
"dashboard.labels.mySpace": "My space",
|
|
17035
|
-
"dashboard.records.all": "
|
|
17001
|
+
"dashboard.records.all": "Metadata records",
|
|
17036
17002
|
"dashboard.records.myDraft": "My drafts",
|
|
17037
17003
|
"dashboard.records.myLibrary": "My library",
|
|
17038
17004
|
"dashboard.records.myOrg": "Organization",
|
|
17039
17005
|
"dashboard.records.myRecords": "My Records",
|
|
17040
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17041
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17042
17006
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17043
17007
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17044
17008
|
"dashboard.records.userDetail": "Name",
|
|
17045
17009
|
"dashboard.records.userEmail": "Email",
|
|
17046
17010
|
"dashboard.records.username": "Username",
|
|
17047
17011
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
17012
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
17013
|
+
"dashboard.results.listResources": "Show resources",
|
|
17048
17014
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17049
17015
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17050
17016
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17236,16 +17202,15 @@ var en = {
|
|
|
17236
17202
|
"record.metadata.author": "Author",
|
|
17237
17203
|
"record.metadata.catalog": "Catalog",
|
|
17238
17204
|
"record.metadata.contact": "Contact",
|
|
17239
|
-
"record.metadata.createdOn": "Created on",
|
|
17240
17205
|
"record.metadata.details": "Technical information",
|
|
17241
17206
|
"record.metadata.download": "Downloads",
|
|
17242
17207
|
"record.metadata.formats": "Formats",
|
|
17243
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17244
17208
|
"record.metadata.keywords": "Keywords",
|
|
17245
17209
|
"record.metadata.lastUpdate": "Last updated on",
|
|
17246
17210
|
"record.metadata.links": "Links",
|
|
17247
17211
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17248
17212
|
"record.metadata.origin": "About the data",
|
|
17213
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17249
17214
|
"record.metadata.owner": "Catalog of origin",
|
|
17250
17215
|
"record.metadata.preview": "Preview",
|
|
17251
17216
|
"record.metadata.publications": "publications",
|
|
@@ -17269,14 +17234,15 @@ var en = {
|
|
|
17269
17234
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17270
17235
|
"record.metadata.related": "Related records",
|
|
17271
17236
|
"record.metadata.sheet": "Original metadata",
|
|
17272
|
-
"record.metadata.
|
|
17237
|
+
"record.metadata.status": "Status",
|
|
17273
17238
|
"record.metadata.title": "Title",
|
|
17239
|
+
"record.metadata.topics": "Categories",
|
|
17274
17240
|
"record.metadata.type": "Geographical dataset",
|
|
17275
17241
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17276
17242
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17277
17243
|
"record.metadata.updateStatus": "Data Update Status",
|
|
17278
|
-
"record.metadata.updatedOn": "
|
|
17279
|
-
"record.metadata.usage": "
|
|
17244
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17245
|
+
"record.metadata.usage": "License and Conditions",
|
|
17280
17246
|
"record.more.details": "Read more",
|
|
17281
17247
|
"record.tab.chart": "Chart",
|
|
17282
17248
|
"record.tab.data": "Table",
|
|
@@ -17306,6 +17272,7 @@ var en = {
|
|
|
17306
17272
|
"search.filters.isSpatial": "Is spatial data",
|
|
17307
17273
|
"search.filters.isSpatial.no": "non spatial",
|
|
17308
17274
|
"search.filters.isSpatial.yes": "spatial",
|
|
17275
|
+
"search.filters.keyword": "Keyword",
|
|
17309
17276
|
"search.filters.license": "License",
|
|
17310
17277
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17311
17278
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17370,20 +17337,21 @@ var es = {
|
|
|
17370
17337
|
"chart.type.line": "gráfico de líneas",
|
|
17371
17338
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17372
17339
|
"chart.type.pie": "gráfico circular",
|
|
17340
|
+
"dashboard.createRecord": "",
|
|
17373
17341
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17374
17342
|
"dashboard.records.all": "Catálogo",
|
|
17375
17343
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17376
17344
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17377
17345
|
"dashboard.records.myOrg": "Organización",
|
|
17378
17346
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17379
|
-
"dashboard.records.noRecord": "",
|
|
17380
|
-
"dashboard.records.noUser": "",
|
|
17381
17347
|
"dashboard.records.publishedRecords": "",
|
|
17382
17348
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17383
17349
|
"dashboard.records.userDetail": "",
|
|
17384
17350
|
"dashboard.records.userEmail": "",
|
|
17385
17351
|
"dashboard.records.username": "",
|
|
17386
17352
|
"dashboard.records.users": "",
|
|
17353
|
+
"dashboard.results.listMetadata": "",
|
|
17354
|
+
"dashboard.results.listResources": "",
|
|
17387
17355
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17388
17356
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17389
17357
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17575,16 +17543,15 @@ var es = {
|
|
|
17575
17543
|
"record.metadata.author": "",
|
|
17576
17544
|
"record.metadata.catalog": "",
|
|
17577
17545
|
"record.metadata.contact": "",
|
|
17578
|
-
"record.metadata.createdOn": "",
|
|
17579
17546
|
"record.metadata.details": "",
|
|
17580
17547
|
"record.metadata.download": "",
|
|
17581
17548
|
"record.metadata.formats": "",
|
|
17582
|
-
"record.metadata.isOpenData": "",
|
|
17583
17549
|
"record.metadata.keywords": "",
|
|
17584
17550
|
"record.metadata.lastUpdate": "",
|
|
17585
17551
|
"record.metadata.links": "",
|
|
17586
17552
|
"record.metadata.noUsage": "",
|
|
17587
17553
|
"record.metadata.origin": "",
|
|
17554
|
+
"record.metadata.otherConstraints": "",
|
|
17588
17555
|
"record.metadata.owner": "",
|
|
17589
17556
|
"record.metadata.preview": "",
|
|
17590
17557
|
"record.metadata.publications": "",
|
|
@@ -17608,8 +17575,9 @@ var es = {
|
|
|
17608
17575
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17609
17576
|
"record.metadata.related": "",
|
|
17610
17577
|
"record.metadata.sheet": "",
|
|
17611
|
-
"record.metadata.
|
|
17578
|
+
"record.metadata.status": "",
|
|
17612
17579
|
"record.metadata.title": "",
|
|
17580
|
+
"record.metadata.topics": "",
|
|
17613
17581
|
"record.metadata.type": "",
|
|
17614
17582
|
"record.metadata.uniqueId": "",
|
|
17615
17583
|
"record.metadata.updateFrequency": "",
|
|
@@ -17645,6 +17613,7 @@ var es = {
|
|
|
17645
17613
|
"search.filters.isSpatial": "",
|
|
17646
17614
|
"search.filters.isSpatial.no": "",
|
|
17647
17615
|
"search.filters.isSpatial.yes": "",
|
|
17616
|
+
"search.filters.keyword": "",
|
|
17648
17617
|
"search.filters.license": "",
|
|
17649
17618
|
"search.filters.license.cc-by": "",
|
|
17650
17619
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17709,20 +17678,21 @@ var fr = {
|
|
|
17709
17678
|
"chart.type.line": "ligne",
|
|
17710
17679
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17711
17680
|
"chart.type.pie": "camembert",
|
|
17681
|
+
"dashboard.createRecord": "",
|
|
17712
17682
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17713
17683
|
"dashboard.records.all": "Catalogue",
|
|
17714
17684
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17715
17685
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17716
17686
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17717
17687
|
"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
17688
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17721
17689
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17722
17690
|
"dashboard.records.userDetail": "Nom",
|
|
17723
17691
|
"dashboard.records.userEmail": "Email",
|
|
17724
17692
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17725
17693
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17694
|
+
"dashboard.results.listMetadata": "",
|
|
17695
|
+
"dashboard.results.listResources": "",
|
|
17726
17696
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17727
17697
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17728
17698
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17804,7 +17774,7 @@ var fr = {
|
|
|
17804
17774
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17805
17775
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17806
17776
|
"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
|
|
17777
|
+
"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
17778
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17809
17779
|
"datahub.news.feed": "Fil d'activité",
|
|
17810
17780
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17914,16 +17884,15 @@ var fr = {
|
|
|
17914
17884
|
"record.metadata.author": "Auteur",
|
|
17915
17885
|
"record.metadata.catalog": "Catalogue",
|
|
17916
17886
|
"record.metadata.contact": "Contact",
|
|
17917
|
-
"record.metadata.createdOn": "Créé le",
|
|
17918
17887
|
"record.metadata.details": "Informations techniques",
|
|
17919
17888
|
"record.metadata.download": "Téléchargements",
|
|
17920
17889
|
"record.metadata.formats": "Formats",
|
|
17921
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17922
17890
|
"record.metadata.keywords": "Mots clés",
|
|
17923
17891
|
"record.metadata.lastUpdate": "Mis à jour le",
|
|
17924
17892
|
"record.metadata.links": "Liens",
|
|
17925
17893
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17926
17894
|
"record.metadata.origin": "À propos des données",
|
|
17895
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17927
17896
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17928
17897
|
"record.metadata.preview": "Aperçu",
|
|
17929
17898
|
"record.metadata.publications": "données",
|
|
@@ -17947,14 +17916,15 @@ var fr = {
|
|
|
17947
17916
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17948
17917
|
"record.metadata.related": "Voir aussi",
|
|
17949
17918
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17950
|
-
"record.metadata.
|
|
17919
|
+
"record.metadata.status": "",
|
|
17951
17920
|
"record.metadata.title": "Titre",
|
|
17921
|
+
"record.metadata.topics": "Catégories",
|
|
17952
17922
|
"record.metadata.type": "Donnée géographique",
|
|
17953
17923
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17954
17924
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17955
17925
|
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17956
|
-
"record.metadata.updatedOn": "
|
|
17957
|
-
"record.metadata.usage": "
|
|
17926
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17927
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17958
17928
|
"record.more.details": "Détails",
|
|
17959
17929
|
"record.tab.chart": "Graphique",
|
|
17960
17930
|
"record.tab.data": "Tableau",
|
|
@@ -17984,6 +17954,7 @@ var fr = {
|
|
|
17984
17954
|
"search.filters.isSpatial": "Données spatiales",
|
|
17985
17955
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17986
17956
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
17957
|
+
"search.filters.keyword": "Mot-clé",
|
|
17987
17958
|
"search.filters.license": "Licence",
|
|
17988
17959
|
"search.filters.license.cc-by": "cc-by",
|
|
17989
17960
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18048,20 +18019,21 @@ var it = {
|
|
|
18048
18019
|
"chart.type.line": "grafico a linee",
|
|
18049
18020
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18050
18021
|
"chart.type.pie": "grafico a torta",
|
|
18022
|
+
"dashboard.createRecord": "",
|
|
18051
18023
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18052
18024
|
"dashboard.records.all": "Catalogo",
|
|
18053
18025
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18054
18026
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18055
18027
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18056
18028
|
"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
18029
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18060
18030
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18061
18031
|
"dashboard.records.userDetail": "Nome",
|
|
18062
18032
|
"dashboard.records.userEmail": "Email",
|
|
18063
18033
|
"dashboard.records.username": "Nome utente",
|
|
18064
18034
|
"dashboard.records.users": "utenti",
|
|
18035
|
+
"dashboard.results.listMetadata": "",
|
|
18036
|
+
"dashboard.results.listResources": "",
|
|
18065
18037
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18066
18038
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18067
18039
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18253,16 +18225,15 @@ var it = {
|
|
|
18253
18225
|
"record.metadata.author": "Autore",
|
|
18254
18226
|
"record.metadata.catalog": "Catalogo",
|
|
18255
18227
|
"record.metadata.contact": "Contatto",
|
|
18256
|
-
"record.metadata.createdOn": "Creato il",
|
|
18257
18228
|
"record.metadata.details": "Informazioni tecniche",
|
|
18258
18229
|
"record.metadata.download": "Download",
|
|
18259
18230
|
"record.metadata.formats": "Formati",
|
|
18260
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18261
18231
|
"record.metadata.keywords": "Parole chiave",
|
|
18262
18232
|
"record.metadata.lastUpdate": "Ultimo aggiornamento",
|
|
18263
18233
|
"record.metadata.links": "Collegamenti",
|
|
18264
18234
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18265
18235
|
"record.metadata.origin": "Informazioni sui dati",
|
|
18236
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18266
18237
|
"record.metadata.owner": "Catalogo originale",
|
|
18267
18238
|
"record.metadata.preview": "Anteprima",
|
|
18268
18239
|
"record.metadata.publications": "pubblicazioni",
|
|
@@ -18286,14 +18257,15 @@ var it = {
|
|
|
18286
18257
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18287
18258
|
"record.metadata.related": "Vedi anche",
|
|
18288
18259
|
"record.metadata.sheet": "Origine del metadata",
|
|
18289
|
-
"record.metadata.
|
|
18260
|
+
"record.metadata.status": "",
|
|
18290
18261
|
"record.metadata.title": "Titolo",
|
|
18262
|
+
"record.metadata.topics": "Categorie",
|
|
18291
18263
|
"record.metadata.type": "Dati geografici",
|
|
18292
18264
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18293
18265
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18294
18266
|
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18295
|
-
"record.metadata.updatedOn": "Ultimo aggiornamento
|
|
18296
|
-
"record.metadata.usage": "
|
|
18267
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18268
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18297
18269
|
"record.more.details": "Dettagli",
|
|
18298
18270
|
"record.tab.chart": "Grafico",
|
|
18299
18271
|
"record.tab.data": "Tabella",
|
|
@@ -18323,6 +18295,7 @@ var it = {
|
|
|
18323
18295
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18324
18296
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18325
18297
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18298
|
+
"search.filters.keyword": "Parola chiave",
|
|
18326
18299
|
"search.filters.license": "Licenza",
|
|
18327
18300
|
"search.filters.license.cc-by": "cc-by",
|
|
18328
18301
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18387,20 +18360,21 @@ var nl = {
|
|
|
18387
18360
|
"chart.type.line": "lijndiagram",
|
|
18388
18361
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18389
18362
|
"chart.type.pie": "cirkeldiagram",
|
|
18363
|
+
"dashboard.createRecord": "",
|
|
18390
18364
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18391
18365
|
"dashboard.records.all": "Catalogus",
|
|
18392
18366
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18393
18367
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18394
18368
|
"dashboard.records.myOrg": "Organisatie",
|
|
18395
18369
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18396
|
-
"dashboard.records.noRecord": "",
|
|
18397
|
-
"dashboard.records.noUser": "",
|
|
18398
18370
|
"dashboard.records.publishedRecords": "",
|
|
18399
18371
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18400
18372
|
"dashboard.records.userDetail": "",
|
|
18401
18373
|
"dashboard.records.userEmail": "",
|
|
18402
18374
|
"dashboard.records.username": "",
|
|
18403
18375
|
"dashboard.records.users": "",
|
|
18376
|
+
"dashboard.results.listMetadata": "",
|
|
18377
|
+
"dashboard.results.listResources": "",
|
|
18404
18378
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18405
18379
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18406
18380
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18592,16 +18566,15 @@ var nl = {
|
|
|
18592
18566
|
"record.metadata.author": "",
|
|
18593
18567
|
"record.metadata.catalog": "",
|
|
18594
18568
|
"record.metadata.contact": "",
|
|
18595
|
-
"record.metadata.createdOn": "",
|
|
18596
18569
|
"record.metadata.details": "",
|
|
18597
18570
|
"record.metadata.download": "",
|
|
18598
18571
|
"record.metadata.formats": "",
|
|
18599
|
-
"record.metadata.isOpenData": "",
|
|
18600
18572
|
"record.metadata.keywords": "",
|
|
18601
18573
|
"record.metadata.lastUpdate": "",
|
|
18602
18574
|
"record.metadata.links": "",
|
|
18603
18575
|
"record.metadata.noUsage": "",
|
|
18604
18576
|
"record.metadata.origin": "",
|
|
18577
|
+
"record.metadata.otherConstraints": "",
|
|
18605
18578
|
"record.metadata.owner": "",
|
|
18606
18579
|
"record.metadata.preview": "",
|
|
18607
18580
|
"record.metadata.publications": "",
|
|
@@ -18625,8 +18598,9 @@ var nl = {
|
|
|
18625
18598
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18626
18599
|
"record.metadata.related": "",
|
|
18627
18600
|
"record.metadata.sheet": "",
|
|
18628
|
-
"record.metadata.
|
|
18601
|
+
"record.metadata.status": "",
|
|
18629
18602
|
"record.metadata.title": "",
|
|
18603
|
+
"record.metadata.topics": "",
|
|
18630
18604
|
"record.metadata.type": "",
|
|
18631
18605
|
"record.metadata.uniqueId": "",
|
|
18632
18606
|
"record.metadata.updateFrequency": "",
|
|
@@ -18662,6 +18636,7 @@ var nl = {
|
|
|
18662
18636
|
"search.filters.isSpatial": "",
|
|
18663
18637
|
"search.filters.isSpatial.no": "",
|
|
18664
18638
|
"search.filters.isSpatial.yes": "",
|
|
18639
|
+
"search.filters.keyword": "",
|
|
18665
18640
|
"search.filters.license": "",
|
|
18666
18641
|
"search.filters.license.cc-by": "",
|
|
18667
18642
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18726,20 +18701,21 @@ var pt = {
|
|
|
18726
18701
|
"chart.type.line": "gráfico de linha",
|
|
18727
18702
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18728
18703
|
"chart.type.pie": "gráfico de pizza",
|
|
18704
|
+
"dashboard.createRecord": "",
|
|
18729
18705
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18730
18706
|
"dashboard.records.all": "Catálogo",
|
|
18731
18707
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18732
18708
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18733
18709
|
"dashboard.records.myOrg": "Organização",
|
|
18734
18710
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18735
|
-
"dashboard.records.noRecord": "",
|
|
18736
|
-
"dashboard.records.noUser": "",
|
|
18737
18711
|
"dashboard.records.publishedRecords": "",
|
|
18738
18712
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18739
18713
|
"dashboard.records.userDetail": "",
|
|
18740
18714
|
"dashboard.records.userEmail": "",
|
|
18741
18715
|
"dashboard.records.username": "",
|
|
18742
18716
|
"dashboard.records.users": "",
|
|
18717
|
+
"dashboard.results.listMetadata": "",
|
|
18718
|
+
"dashboard.results.listResources": "",
|
|
18743
18719
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18744
18720
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18745
18721
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18931,16 +18907,15 @@ var pt = {
|
|
|
18931
18907
|
"record.metadata.author": "",
|
|
18932
18908
|
"record.metadata.catalog": "",
|
|
18933
18909
|
"record.metadata.contact": "",
|
|
18934
|
-
"record.metadata.createdOn": "",
|
|
18935
18910
|
"record.metadata.details": "",
|
|
18936
18911
|
"record.metadata.download": "",
|
|
18937
18912
|
"record.metadata.formats": "",
|
|
18938
|
-
"record.metadata.isOpenData": "",
|
|
18939
18913
|
"record.metadata.keywords": "",
|
|
18940
18914
|
"record.metadata.lastUpdate": "",
|
|
18941
18915
|
"record.metadata.links": "",
|
|
18942
18916
|
"record.metadata.noUsage": "",
|
|
18943
18917
|
"record.metadata.origin": "",
|
|
18918
|
+
"record.metadata.otherConstraints": "",
|
|
18944
18919
|
"record.metadata.owner": "",
|
|
18945
18920
|
"record.metadata.preview": "",
|
|
18946
18921
|
"record.metadata.publications": "",
|
|
@@ -18964,8 +18939,9 @@ var pt = {
|
|
|
18964
18939
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18965
18940
|
"record.metadata.related": "",
|
|
18966
18941
|
"record.metadata.sheet": "",
|
|
18967
|
-
"record.metadata.
|
|
18942
|
+
"record.metadata.status": "",
|
|
18968
18943
|
"record.metadata.title": "",
|
|
18944
|
+
"record.metadata.topics": "",
|
|
18969
18945
|
"record.metadata.type": "",
|
|
18970
18946
|
"record.metadata.uniqueId": "",
|
|
18971
18947
|
"record.metadata.updateFrequency": "",
|
|
@@ -19001,6 +18977,7 @@ var pt = {
|
|
|
19001
18977
|
"search.filters.isSpatial": "",
|
|
19002
18978
|
"search.filters.isSpatial.no": "",
|
|
19003
18979
|
"search.filters.isSpatial.yes": "",
|
|
18980
|
+
"search.filters.keyword": "",
|
|
19004
18981
|
"search.filters.license": "",
|
|
19005
18982
|
"search.filters.license.cc-by": "",
|
|
19006
18983
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19109,8 +19086,8 @@ class Gn4FieldMapper {
|
|
|
19109
19086
|
},
|
|
19110
19087
|
cl_topic: (output, source) => ({
|
|
19111
19088
|
...output,
|
|
19112
|
-
|
|
19113
|
-
...(output.
|
|
19089
|
+
topics: [
|
|
19090
|
+
...(output.topics || []),
|
|
19114
19091
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19115
19092
|
],
|
|
19116
19093
|
}),
|
|
@@ -19165,31 +19142,22 @@ class Gn4FieldMapper {
|
|
|
19165
19142
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19166
19143
|
}, output);
|
|
19167
19144
|
},
|
|
19168
|
-
|
|
19145
|
+
allKeywords: (output, source) => ({
|
|
19169
19146
|
...output,
|
|
19170
|
-
keywords:
|
|
19147
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19171
19148
|
}),
|
|
19172
19149
|
inspireTheme: (output, source) => ({
|
|
19173
19150
|
...output,
|
|
19174
|
-
|
|
19175
|
-
...(output.
|
|
19151
|
+
topics: [
|
|
19152
|
+
...(output.topics || []),
|
|
19176
19153
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19177
19154
|
],
|
|
19178
19155
|
}),
|
|
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
|
-
}),
|
|
19156
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19157
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19158
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19159
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19160
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19193
19161
|
lineageObject: (output, source) => ({
|
|
19194
19162
|
...output,
|
|
19195
19163
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19251,31 +19219,42 @@ class Gn4FieldMapper {
|
|
|
19251
19219
|
},
|
|
19252
19220
|
};
|
|
19253
19221
|
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
|
-
|
|
19222
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19223
|
+
let outputField;
|
|
19224
|
+
switch (type) {
|
|
19225
|
+
case 'license':
|
|
19226
|
+
outputField = 'licenses';
|
|
19227
|
+
break;
|
|
19228
|
+
case 'legal':
|
|
19229
|
+
outputField = 'legalConstraints';
|
|
19230
|
+
break;
|
|
19231
|
+
case 'security':
|
|
19232
|
+
outputField = 'securityConstraints';
|
|
19233
|
+
break;
|
|
19234
|
+
case 'other':
|
|
19235
|
+
outputField = 'otherConstraints';
|
|
19236
|
+
break;
|
|
19237
|
+
}
|
|
19238
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19239
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19240
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19241
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19242
|
+
return {
|
|
19243
|
+
text,
|
|
19244
|
+
...(url ? { url } : {}),
|
|
19245
|
+
};
|
|
19246
|
+
}));
|
|
19247
|
+
const result = {
|
|
19248
|
+
...output,
|
|
19249
|
+
[outputField]: outputArray,
|
|
19250
|
+
};
|
|
19251
|
+
// avoid legal constraints being duplicates of licenses
|
|
19252
|
+
if ('legalConstraints' in result &&
|
|
19253
|
+
(type === 'legal' || type === 'license')) {
|
|
19254
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19255
|
+
}
|
|
19256
|
+
return result;
|
|
19257
|
+
};
|
|
19279
19258
|
this.mapLink = (sourceLink) => {
|
|
19280
19259
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19281
19260
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19323,17 +19302,6 @@ class Gn4FieldMapper {
|
|
|
19323
19302
|
extras: { ...(output.extras || {}), ...value },
|
|
19324
19303
|
});
|
|
19325
19304
|
}
|
|
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
19305
|
getMappingFn(fieldName) {
|
|
19338
19306
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19339
19307
|
}
|
|
@@ -19395,12 +19363,13 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19395
19363
|
recordUpdated: null,
|
|
19396
19364
|
ownerOrganization: null,
|
|
19397
19365
|
licenses: [],
|
|
19366
|
+
legalConstraints: [],
|
|
19367
|
+
securityConstraints: [],
|
|
19368
|
+
otherConstraints: [],
|
|
19398
19369
|
contacts: [],
|
|
19399
19370
|
contactsForResource: [],
|
|
19400
|
-
accessConstraints: [],
|
|
19401
19371
|
keywords: [],
|
|
19402
|
-
|
|
19403
|
-
useLimitations: [],
|
|
19372
|
+
topics: [],
|
|
19404
19373
|
spatialExtents: [],
|
|
19405
19374
|
temporalExtents: [],
|
|
19406
19375
|
overviews: [],
|
|
@@ -20168,11 +20137,18 @@ class OrganizationsFromMetadataService {
|
|
|
20168
20137
|
if (!allContactOrgs.length)
|
|
20169
20138
|
return of(record);
|
|
20170
20139
|
const ownerOrganization = allContactOrgs[0];
|
|
20171
|
-
|
|
20140
|
+
// read the owner group as well to have a fallback logo
|
|
20141
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20142
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20143
|
+
return group.id === Number(groupId);
|
|
20144
|
+
})));
|
|
20145
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20172
20146
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20147
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20173
20148
|
return {
|
|
20174
20149
|
...record,
|
|
20175
20150
|
ownerOrganization: {
|
|
20151
|
+
logoUrl,
|
|
20176
20152
|
...ownerOrganization,
|
|
20177
20153
|
...recordOrganisation,
|
|
20178
20154
|
},
|
|
@@ -20437,36 +20413,23 @@ class SelectionService {
|
|
|
20437
20413
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20438
20414
|
}
|
|
20439
20415
|
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(() => {
|
|
20416
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20417
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20446
20418
|
this.addIdsToSelected(newIds);
|
|
20447
|
-
})
|
|
20419
|
+
});
|
|
20448
20420
|
}
|
|
20449
20421
|
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(() => {
|
|
20422
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20423
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20456
20424
|
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
20425
|
});
|
|
20465
|
-
|
|
20466
|
-
|
|
20467
|
-
|
|
20426
|
+
}
|
|
20427
|
+
async clearSelection() {
|
|
20428
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20429
|
+
const currentSelection = Array.from(response);
|
|
20430
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20468
20431
|
this.removeIdsFromSelected(currentSelection);
|
|
20469
|
-
})
|
|
20432
|
+
});
|
|
20470
20433
|
}
|
|
20471
20434
|
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
20435
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20496,12 +20459,21 @@ class Gn4PlatformMapper {
|
|
|
20496
20459
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20497
20460
|
return { ...apiUser, id: id.toString() };
|
|
20498
20461
|
}
|
|
20499
|
-
thesaurusFromApi(thesaurus) {
|
|
20462
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20500
20463
|
return thesaurus.map((keyword) => {
|
|
20501
|
-
|
|
20464
|
+
let key = keyword.uri;
|
|
20465
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20466
|
+
if (key.indexOf('@@@') > -1) {
|
|
20467
|
+
key = key.split('@@@')[1];
|
|
20468
|
+
}
|
|
20469
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20470
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20471
|
+
? keyword.definitions[lang3]
|
|
20472
|
+
: keyword.definition;
|
|
20502
20473
|
return {
|
|
20503
|
-
key
|
|
20504
|
-
label
|
|
20474
|
+
key,
|
|
20475
|
+
label,
|
|
20476
|
+
description,
|
|
20505
20477
|
};
|
|
20506
20478
|
});
|
|
20507
20479
|
}
|
|
@@ -20514,13 +20486,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20514
20486
|
|
|
20515
20487
|
const minApiVersion = '4.2.2';
|
|
20516
20488
|
class Gn4PlatformService {
|
|
20517
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20489
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20518
20490
|
this.siteApiService = siteApiService;
|
|
20519
20491
|
this.meApi = meApi;
|
|
20520
20492
|
this.usersApi = usersApi;
|
|
20521
20493
|
this.mapper = mapper;
|
|
20522
20494
|
this.toolsApiService = toolsApiService;
|
|
20523
20495
|
this.registriesApiService = registriesApiService;
|
|
20496
|
+
this.langService = langService;
|
|
20524
20497
|
this.type = 'GeoNetwork';
|
|
20525
20498
|
this.keyTranslations$ = this.toolsApiService
|
|
20526
20499
|
.getTranslationsPackage1('gnui')
|
|
@@ -20534,6 +20507,11 @@ class Gn4PlatformService {
|
|
|
20534
20507
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20535
20508
|
}
|
|
20536
20509
|
}), shareReplay(1));
|
|
20510
|
+
/**
|
|
20511
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20512
|
+
* @private
|
|
20513
|
+
*/
|
|
20514
|
+
this.thesauri = {};
|
|
20537
20515
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20538
20516
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20539
20517
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20560,19 +20538,36 @@ class Gn4PlatformService {
|
|
|
20560
20538
|
return this.users$;
|
|
20561
20539
|
}
|
|
20562
20540
|
translateKey(key) {
|
|
20541
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20542
|
+
if (key.match(/^https?:\/\//)) {
|
|
20543
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20544
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20545
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20546
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20547
|
+
for (const item of thesaurus) {
|
|
20548
|
+
if (item.key === key)
|
|
20549
|
+
return item.label;
|
|
20550
|
+
}
|
|
20551
|
+
return key;
|
|
20552
|
+
}));
|
|
20553
|
+
}
|
|
20563
20554
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20564
20555
|
}
|
|
20565
|
-
|
|
20566
|
-
|
|
20567
|
-
.
|
|
20568
|
-
|
|
20556
|
+
getThesaurusByUri(uri) {
|
|
20557
|
+
if (this.thesauri[uri]) {
|
|
20558
|
+
return this.thesauri[uri];
|
|
20559
|
+
}
|
|
20560
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20561
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20562
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20563
|
+
return this.thesauri[uri];
|
|
20569
20564
|
}
|
|
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 }); }
|
|
20565
|
+
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
20566
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20572
20567
|
}
|
|
20573
20568
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20574
20569
|
type: Injectable
|
|
20575
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20570
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20576
20571
|
|
|
20577
20572
|
function provideGn4() {
|
|
20578
20573
|
return [
|
|
@@ -22650,6 +22645,9 @@ class MapContextService {
|
|
|
22650
22645
|
if (mapConfig) {
|
|
22651
22646
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22652
22647
|
}
|
|
22648
|
+
else {
|
|
22649
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22650
|
+
}
|
|
22653
22651
|
if (!mapContext.view?.extent &&
|
|
22654
22652
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22655
22653
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22760,6 +22758,11 @@ class MapContextService {
|
|
|
22760
22758
|
}
|
|
22761
22759
|
return view;
|
|
22762
22760
|
}
|
|
22761
|
+
addDefaultBaselayerContext(layers) {
|
|
22762
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22763
|
+
? layers
|
|
22764
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22765
|
+
}
|
|
22763
22766
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22764
22767
|
return {
|
|
22765
22768
|
...mapContext,
|
|
@@ -23306,11 +23309,11 @@ class ThumbnailComponent {
|
|
|
23306
23309
|
}
|
|
23307
23310
|
}
|
|
23308
23311
|
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 }); }
|
|
23312
|
+
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
23313
|
}
|
|
23311
23314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23312
23315
|
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" }]
|
|
23316
|
+
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
23317
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23315
23318
|
type: Optional
|
|
23316
23319
|
}, {
|
|
@@ -23438,8 +23441,7 @@ class MetadataQualityComponent {
|
|
|
23438
23441
|
: this.calculatedQualityScore;
|
|
23439
23442
|
}
|
|
23440
23443
|
get calculatedQualityScore() {
|
|
23441
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23442
|
-
this.items.length);
|
|
23444
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23443
23445
|
}
|
|
23444
23446
|
showMenu() {
|
|
23445
23447
|
this.isMenuShown = true;
|
|
@@ -23457,7 +23459,7 @@ class MetadataQualityComponent {
|
|
|
23457
23459
|
this.items = [];
|
|
23458
23460
|
this.add('title', !!this.metadata?.title);
|
|
23459
23461
|
this.add('description', !!this.metadata?.abstract);
|
|
23460
|
-
this.add('topic', this.metadata?.
|
|
23462
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23461
23463
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23462
23464
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23463
23465
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23905,6 +23907,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23905
23907
|
type: Input
|
|
23906
23908
|
}] } });
|
|
23907
23909
|
|
|
23910
|
+
class MarkdownParserComponent {
|
|
23911
|
+
get parsedMarkdown() {
|
|
23912
|
+
return marked.parse(this.textContent);
|
|
23913
|
+
}
|
|
23914
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23915
|
+
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 }); }
|
|
23916
|
+
}
|
|
23917
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23918
|
+
type: Component,
|
|
23919
|
+
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"] }]
|
|
23920
|
+
}], propDecorators: { textContent: [{
|
|
23921
|
+
type: Input
|
|
23922
|
+
}] } });
|
|
23923
|
+
|
|
23908
23924
|
class ContentGhostComponent {
|
|
23909
23925
|
constructor() {
|
|
23910
23926
|
this.ghostClass = '';
|
|
@@ -24059,36 +24075,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24059
24075
|
args: ['container']
|
|
24060
24076
|
}] } });
|
|
24061
24077
|
|
|
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
24078
|
class MetadataInfoComponent {
|
|
24077
24079
|
constructor() {
|
|
24078
24080
|
this.keyword = new EventEmitter();
|
|
24079
24081
|
}
|
|
24080
24082
|
get hasUsage() {
|
|
24081
24083
|
return (this.metadata.extras?.isOpenData === true ||
|
|
24082
|
-
this.metadata.
|
|
24083
|
-
|
|
24084
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24085
|
+
this.legalConstraints.length > 0) ||
|
|
24086
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24087
|
+
this.otherConstraints.length > 0) ||
|
|
24088
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24084
24089
|
}
|
|
24085
|
-
get
|
|
24090
|
+
get legalConstraints() {
|
|
24086
24091
|
let array = [];
|
|
24087
|
-
if (this.metadata.
|
|
24088
|
-
array = array.concat(this.metadata.
|
|
24092
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24093
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24089
24094
|
}
|
|
24090
|
-
|
|
24091
|
-
|
|
24095
|
+
return array;
|
|
24096
|
+
}
|
|
24097
|
+
get otherConstraints() {
|
|
24098
|
+
let array = [];
|
|
24099
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24100
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24101
|
+
}
|
|
24102
|
+
return array;
|
|
24103
|
+
}
|
|
24104
|
+
get licenses() {
|
|
24105
|
+
let array = [];
|
|
24106
|
+
if (this.metadata.licenses?.length) {
|
|
24107
|
+
array = array.concat(this.metadata.licenses
|
|
24108
|
+
.filter((c) => c.text)
|
|
24109
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
24092
24110
|
}
|
|
24093
24111
|
return array;
|
|
24094
24112
|
}
|
|
@@ -24110,16 +24128,12 @@ class MetadataInfoComponent {
|
|
|
24110
24128
|
onKeywordClick(keyword) {
|
|
24111
24129
|
this.keyword.emit(keyword);
|
|
24112
24130
|
}
|
|
24113
|
-
copyText() {
|
|
24114
|
-
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
24115
|
-
event.target.blur();
|
|
24116
|
-
}
|
|
24117
24131
|
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
|
|
24132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words text-gray-900\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "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
24133
|
}
|
|
24120
24134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24121
24135
|
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-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
|
|
24136
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words text-gray-900\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
24123
24137
|
}], propDecorators: { metadata: [{
|
|
24124
24138
|
type: Input
|
|
24125
24139
|
}], incomplete: [{
|
|
@@ -24188,11 +24202,11 @@ class ButtonComponent {
|
|
|
24188
24202
|
propagateToDocumentOnly(event);
|
|
24189
24203
|
}
|
|
24190
24204
|
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 class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, isStandalone: true, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24192
24206
|
}
|
|
24193
24207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24194
24208
|
type: Component,
|
|
24195
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24209
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24196
24210
|
}], propDecorators: { type: [{
|
|
24197
24211
|
type: Input
|
|
24198
24212
|
}], disabled: [{
|
|
@@ -24520,6 +24534,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24520
24534
|
}]
|
|
24521
24535
|
}] });
|
|
24522
24536
|
|
|
24537
|
+
class InteractiveTableColumnComponent {
|
|
24538
|
+
constructor() {
|
|
24539
|
+
this.grow = false;
|
|
24540
|
+
this.sortable = false;
|
|
24541
|
+
this.activeSort = null;
|
|
24542
|
+
this.sortChange = new EventEmitter();
|
|
24543
|
+
}
|
|
24544
|
+
handleSortChange() {
|
|
24545
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24546
|
+
this.sortChange.emit(this.activeSort);
|
|
24547
|
+
}
|
|
24548
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24549
|
+
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 }); }
|
|
24550
|
+
}
|
|
24551
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24552
|
+
type: Component,
|
|
24553
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24554
|
+
}], propDecorators: { header: [{
|
|
24555
|
+
type: ContentChild,
|
|
24556
|
+
args: ['header']
|
|
24557
|
+
}], cell: [{
|
|
24558
|
+
type: ContentChild,
|
|
24559
|
+
args: ['cell']
|
|
24560
|
+
}], grow: [{
|
|
24561
|
+
type: Input
|
|
24562
|
+
}], sortable: [{
|
|
24563
|
+
type: Input
|
|
24564
|
+
}], activeSort: [{
|
|
24565
|
+
type: Input
|
|
24566
|
+
}], sortChange: [{
|
|
24567
|
+
type: Output
|
|
24568
|
+
}] } });
|
|
24569
|
+
|
|
24570
|
+
class InteractiveTableComponent {
|
|
24571
|
+
constructor() {
|
|
24572
|
+
this.items = [];
|
|
24573
|
+
this.itemClick = new EventEmitter();
|
|
24574
|
+
}
|
|
24575
|
+
get gridStyle() {
|
|
24576
|
+
return {
|
|
24577
|
+
'grid-template-columns': this.columns
|
|
24578
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24579
|
+
.join(' '),
|
|
24580
|
+
};
|
|
24581
|
+
}
|
|
24582
|
+
handleRowClick(item) {
|
|
24583
|
+
this.itemClick.emit(item);
|
|
24584
|
+
}
|
|
24585
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24586
|
+
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 }); }
|
|
24587
|
+
}
|
|
24588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24589
|
+
type: Component,
|
|
24590
|
+
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"] }]
|
|
24591
|
+
}], propDecorators: { columns: [{
|
|
24592
|
+
type: ContentChildren,
|
|
24593
|
+
args: [InteractiveTableColumnComponent]
|
|
24594
|
+
}], items: [{
|
|
24595
|
+
type: Input
|
|
24596
|
+
}], itemClick: [{
|
|
24597
|
+
type: Output
|
|
24598
|
+
}] } });
|
|
24599
|
+
|
|
24523
24600
|
class LinkCardComponent {
|
|
24524
24601
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24525
24602
|
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 }); }
|
|
@@ -24973,11 +25050,11 @@ class DropdownMultiselectComponent {
|
|
|
24973
25050
|
this.setFocus();
|
|
24974
25051
|
}
|
|
24975
25052
|
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,
|
|
25053
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24977
25054
|
}
|
|
24978
25055
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24979
25056
|
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,
|
|
25057
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24981
25058
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24982
25059
|
type: Input
|
|
24983
25060
|
}], choices: [{
|
|
@@ -25131,11 +25208,11 @@ class TextAreaComponent {
|
|
|
25131
25208
|
this.rawChange.next(value);
|
|
25132
25209
|
}
|
|
25133
25210
|
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"] }); }
|
|
25211
|
+
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
25212
|
}
|
|
25136
25213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25137
25214
|
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"] }]
|
|
25215
|
+
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
25216
|
}], propDecorators: { value: [{
|
|
25140
25217
|
type: Input
|
|
25141
25218
|
}], placeholder: [{
|
|
@@ -25236,11 +25313,11 @@ class AutocompleteComponent {
|
|
|
25236
25313
|
}
|
|
25237
25314
|
}
|
|
25238
25315
|
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(
|
|
25316
|
+
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
25317
|
}
|
|
25241
25318
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25242
25319
|
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(
|
|
25320
|
+
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
25321
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25245
25322
|
type: Input
|
|
25246
25323
|
}], action: [{
|
|
@@ -25405,11 +25482,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25405
25482
|
|
|
25406
25483
|
class NavigationButtonComponent {
|
|
25407
25484
|
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
|
|
25485
|
+
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
25486
|
}
|
|
25410
25487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25411
25488
|
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
|
|
25489
|
+
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
25490
|
}], propDecorators: { label: [{
|
|
25414
25491
|
type: Input
|
|
25415
25492
|
}], icon: [{
|
|
@@ -25616,11 +25693,11 @@ class CheckboxComponent {
|
|
|
25616
25693
|
this.changed.emit(this.checked);
|
|
25617
25694
|
}
|
|
25618
25695
|
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
|
|
25696
|
+
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
25697
|
}
|
|
25621
25698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25622
25699
|
type: Component,
|
|
25623
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25700
|
+
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
25701
|
}], propDecorators: { type: [{
|
|
25625
25702
|
type: Input
|
|
25626
25703
|
}], checked: [{
|
|
@@ -25705,12 +25782,13 @@ class EditableLabelDirective {
|
|
|
25705
25782
|
}
|
|
25706
25783
|
}
|
|
25707
25784
|
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 }); }
|
|
25785
|
+
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
25786
|
}
|
|
25710
25787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25711
25788
|
type: Directive,
|
|
25712
25789
|
args: [{
|
|
25713
25790
|
selector: '[gnUiEditableLabel]',
|
|
25791
|
+
standalone: true,
|
|
25714
25792
|
}]
|
|
25715
25793
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25716
25794
|
type: Output
|
|
@@ -25722,10 +25800,8 @@ class UiInputsModule {
|
|
|
25722
25800
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25723
25801
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25724
25802
|
AutocompleteComponent,
|
|
25725
|
-
ButtonComponent,
|
|
25726
25803
|
TextInputComponent,
|
|
25727
25804
|
DragAndDropFileInputComponent,
|
|
25728
|
-
TextAreaComponent,
|
|
25729
25805
|
ChipsInputComponent,
|
|
25730
25806
|
NavigationButtonComponent,
|
|
25731
25807
|
StarToggleComponent,
|
|
@@ -25743,8 +25819,7 @@ class UiInputsModule {
|
|
|
25743
25819
|
CopyTextButtonComponent,
|
|
25744
25820
|
CheckboxComponent,
|
|
25745
25821
|
SearchInputComponent,
|
|
25746
|
-
DateRangePickerComponent,
|
|
25747
|
-
EditableLabelDirective], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25822
|
+
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25748
25823
|
FormsModule,
|
|
25749
25824
|
ReactiveFormsModule,
|
|
25750
25825
|
TagInputModule,
|
|
@@ -25758,7 +25833,10 @@ class UiInputsModule {
|
|
|
25758
25833
|
MatFormFieldModule,
|
|
25759
25834
|
MatInputModule,
|
|
25760
25835
|
MatDatepickerModule,
|
|
25761
|
-
MatNativeDateModule
|
|
25836
|
+
MatNativeDateModule,
|
|
25837
|
+
EditableLabelDirective,
|
|
25838
|
+
TextAreaComponent,
|
|
25839
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25762
25840
|
AutocompleteComponent,
|
|
25763
25841
|
ButtonComponent,
|
|
25764
25842
|
TextInputComponent,
|
|
@@ -25800,10 +25878,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25800
25878
|
declarations: [
|
|
25801
25879
|
DropdownSelectorComponent,
|
|
25802
25880
|
AutocompleteComponent,
|
|
25803
|
-
ButtonComponent,
|
|
25804
25881
|
TextInputComponent,
|
|
25805
25882
|
DragAndDropFileInputComponent,
|
|
25806
|
-
TextAreaComponent,
|
|
25807
25883
|
ChipsInputComponent,
|
|
25808
25884
|
NavigationButtonComponent,
|
|
25809
25885
|
StarToggleComponent,
|
|
@@ -25822,7 +25898,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25822
25898
|
CheckboxComponent,
|
|
25823
25899
|
SearchInputComponent,
|
|
25824
25900
|
DateRangePickerComponent,
|
|
25825
|
-
EditableLabelDirective,
|
|
25826
25901
|
],
|
|
25827
25902
|
imports: [
|
|
25828
25903
|
CommonModule,
|
|
@@ -25842,6 +25917,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25842
25917
|
MatInputModule,
|
|
25843
25918
|
MatDatepickerModule,
|
|
25844
25919
|
MatNativeDateModule,
|
|
25920
|
+
EditableLabelDirective,
|
|
25921
|
+
TextAreaComponent,
|
|
25922
|
+
ButtonComponent,
|
|
25845
25923
|
],
|
|
25846
25924
|
exports: [
|
|
25847
25925
|
DropdownSelectorComponent,
|
|
@@ -25961,7 +26039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25961
26039
|
|
|
25962
26040
|
const DEFAULT_PARAMS = {
|
|
25963
26041
|
OFFSET: '',
|
|
25964
|
-
LIMIT: '',
|
|
26042
|
+
LIMIT: '-1',
|
|
25965
26043
|
FORMAT: 'json',
|
|
25966
26044
|
};
|
|
25967
26045
|
class RecordApiFormComponent {
|
|
@@ -25990,6 +26068,8 @@ class RecordApiFormComponent {
|
|
|
25990
26068
|
}
|
|
25991
26069
|
return outputUrl;
|
|
25992
26070
|
}));
|
|
26071
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
26072
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
25993
26073
|
}
|
|
25994
26074
|
set apiLink(value) {
|
|
25995
26075
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -25999,10 +26079,11 @@ class RecordApiFormComponent {
|
|
|
25999
26079
|
this.offset$.next(value);
|
|
26000
26080
|
}
|
|
26001
26081
|
setLimit(value) {
|
|
26002
|
-
|
|
26082
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26083
|
+
this.limit$.next(newLimit);
|
|
26003
26084
|
}
|
|
26004
26085
|
setFormat(value) {
|
|
26005
|
-
this.format$.next(value);
|
|
26086
|
+
this.format$.next(String(value));
|
|
26006
26087
|
}
|
|
26007
26088
|
resetUrl() {
|
|
26008
26089
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -26010,11 +26091,11 @@ class RecordApiFormComponent {
|
|
|
26010
26091
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26011
26092
|
}
|
|
26012
26093
|
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 (
|
|
26094
|
+
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
26095
|
}
|
|
26015
26096
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26016
26097
|
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 (
|
|
26098
|
+
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
26099
|
}], propDecorators: { apiLink: [{
|
|
26019
26100
|
type: Input
|
|
26020
26101
|
}] } });
|
|
@@ -26060,7 +26141,6 @@ class UiElementsModule {
|
|
|
26060
26141
|
PaginationButtonsComponent,
|
|
26061
26142
|
MaxLinesComponent,
|
|
26062
26143
|
RecordApiFormComponent,
|
|
26063
|
-
MarkdownParserComponent,
|
|
26064
26144
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
26065
26145
|
MatIconModule,
|
|
26066
26146
|
MatTooltipModule,
|
|
@@ -26069,7 +26149,8 @@ class UiElementsModule {
|
|
|
26069
26149
|
RouterModule,
|
|
26070
26150
|
UiInputsModule,
|
|
26071
26151
|
FormsModule,
|
|
26072
|
-
NgOptimizedImage
|
|
26152
|
+
NgOptimizedImage,
|
|
26153
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26073
26154
|
ContentGhostComponent,
|
|
26074
26155
|
DownloadItemComponent,
|
|
26075
26156
|
DownloadsListComponent,
|
|
@@ -26116,6 +26197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26116
26197
|
UiInputsModule,
|
|
26117
26198
|
FormsModule,
|
|
26118
26199
|
NgOptimizedImage,
|
|
26200
|
+
MarkdownParserComponent,
|
|
26119
26201
|
],
|
|
26120
26202
|
declarations: [
|
|
26121
26203
|
MetadataInfoComponent,
|
|
@@ -26138,7 +26220,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26138
26220
|
PaginationButtonsComponent,
|
|
26139
26221
|
MaxLinesComponent,
|
|
26140
26222
|
RecordApiFormComponent,
|
|
26141
|
-
MarkdownParserComponent,
|
|
26142
26223
|
ImageOverlayPreviewComponent,
|
|
26143
26224
|
],
|
|
26144
26225
|
exports: [
|
|
@@ -26167,143 +26248,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26167
26248
|
}]
|
|
26168
26249
|
}] });
|
|
26169
26250
|
|
|
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
26251
|
class UiSearchModule {
|
|
26308
26252
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26309
26253
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26316,8 +26260,7 @@ class UiSearchModule {
|
|
|
26316
26260
|
ResultsHitsNumberComponent,
|
|
26317
26261
|
ResultsListItemComponent,
|
|
26318
26262
|
RecordPreviewFeedComponent,
|
|
26319
|
-
RecordPreviewRowComponent,
|
|
26320
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26263
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26321
26264
|
FacetsModule$1,
|
|
26322
26265
|
FormsModule,
|
|
26323
26266
|
ReactiveFormsModule,
|
|
@@ -26328,7 +26271,8 @@ class UiSearchModule {
|
|
|
26328
26271
|
UiElementsModule,
|
|
26329
26272
|
MatIconModule,
|
|
26330
26273
|
MatCheckboxModule,
|
|
26331
|
-
RouterLink
|
|
26274
|
+
RouterLink,
|
|
26275
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26332
26276
|
RecordPreviewCardComponent,
|
|
26333
26277
|
RecordPreviewTextComponent,
|
|
26334
26278
|
RecordPreviewTitleComponent,
|
|
@@ -26338,8 +26282,7 @@ class UiSearchModule {
|
|
|
26338
26282
|
RecordPreviewComponent,
|
|
26339
26283
|
ResultsHitsNumberComponent,
|
|
26340
26284
|
RecordPreviewFeedComponent,
|
|
26341
|
-
RecordPreviewRowComponent
|
|
26342
|
-
RecordTableComponent] }); }
|
|
26285
|
+
RecordPreviewRowComponent] }); }
|
|
26343
26286
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26344
26287
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26345
26288
|
], imports: [CommonModule,
|
|
@@ -26354,7 +26297,8 @@ class UiSearchModule {
|
|
|
26354
26297
|
UiInputsModule,
|
|
26355
26298
|
UiElementsModule,
|
|
26356
26299
|
MatIconModule,
|
|
26357
|
-
MatCheckboxModule,
|
|
26300
|
+
MatCheckboxModule,
|
|
26301
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26358
26302
|
}
|
|
26359
26303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26360
26304
|
type: NgModule,
|
|
@@ -26371,7 +26315,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26371
26315
|
ResultsListItemComponent,
|
|
26372
26316
|
RecordPreviewFeedComponent,
|
|
26373
26317
|
RecordPreviewRowComponent,
|
|
26374
|
-
RecordTableComponent,
|
|
26375
26318
|
],
|
|
26376
26319
|
imports: [
|
|
26377
26320
|
CommonModule,
|
|
@@ -26388,6 +26331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26388
26331
|
MatIconModule,
|
|
26389
26332
|
MatCheckboxModule,
|
|
26390
26333
|
RouterLink,
|
|
26334
|
+
InteractiveTableComponent,
|
|
26391
26335
|
],
|
|
26392
26336
|
exports: [
|
|
26393
26337
|
RecordPreviewListComponent,
|
|
@@ -26401,7 +26345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26401
26345
|
ResultsHitsNumberComponent,
|
|
26402
26346
|
RecordPreviewFeedComponent,
|
|
26403
26347
|
RecordPreviewRowComponent,
|
|
26404
|
-
RecordTableComponent,
|
|
26405
26348
|
],
|
|
26406
26349
|
providers: [
|
|
26407
26350
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -26960,6 +26903,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26960
26903
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26961
26904
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26962
26905
|
|
|
26906
|
+
// this geometry will be used to filter & boost results accordingly
|
|
26907
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
26908
|
+
|
|
26963
26909
|
class SearchFacade {
|
|
26964
26910
|
constructor(store, filterGeometry) {
|
|
26965
26911
|
this.store = store;
|
|
@@ -27064,6 +27010,7 @@ class SearchFacade {
|
|
|
27064
27010
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
27065
27011
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
27066
27012
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
27013
|
+
return this;
|
|
27067
27014
|
}
|
|
27068
27015
|
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
27016
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27448,8 +27395,11 @@ class FuzzySearchComponent {
|
|
|
27448
27395
|
this.searchService.updateFilters({ any });
|
|
27449
27396
|
}
|
|
27450
27397
|
}
|
|
27451
|
-
handleInputCleared() {
|
|
27452
|
-
this.
|
|
27398
|
+
async handleInputCleared() {
|
|
27399
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27400
|
+
if (currentSearchFilters.any) {
|
|
27401
|
+
this.searchService.updateFilters({ any: '' });
|
|
27402
|
+
}
|
|
27453
27403
|
}
|
|
27454
27404
|
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
27405
|
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 +27479,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27529
27479
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27530
27480
|
}] }]; } });
|
|
27531
27481
|
|
|
27482
|
+
// expects the replacement key ${uuid}
|
|
27483
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27484
|
+
|
|
27532
27485
|
class FavoriteStarComponent {
|
|
27533
27486
|
set record(value) {
|
|
27534
27487
|
this.record_ = value;
|
|
@@ -27612,11 +27565,11 @@ class FavoriteStarComponent {
|
|
|
27612
27565
|
});
|
|
27613
27566
|
}
|
|
27614
27567
|
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
|
|
27568
|
+
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
27569
|
}
|
|
27617
27570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27618
27571
|
type: Component,
|
|
27619
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row
|
|
27572
|
+
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
27573
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27621
27574
|
type: Input
|
|
27622
27575
|
}], record: [{
|
|
@@ -27790,9 +27743,11 @@ class SearchEffects {
|
|
|
27790
27743
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27791
27744
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27792
27745
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27793
|
-
return of([state, favorites,
|
|
27746
|
+
return of([state, favorites, undefined]);
|
|
27794
27747
|
}
|
|
27795
27748
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27749
|
+
if (!geom)
|
|
27750
|
+
return;
|
|
27796
27751
|
try {
|
|
27797
27752
|
const trace = valid$1(geom, true);
|
|
27798
27753
|
if (trace?.length > 0) {
|
|
@@ -27804,7 +27759,7 @@ class SearchEffects {
|
|
|
27804
27759
|
throw new Error();
|
|
27805
27760
|
}
|
|
27806
27761
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27807
|
-
return of([state, favorites,
|
|
27762
|
+
return of([state, favorites, undefined]);
|
|
27808
27763
|
}));
|
|
27809
27764
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27810
27765
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -27903,10 +27858,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27903
27858
|
class AbstractSearchField {
|
|
27904
27859
|
}
|
|
27905
27860
|
class SimpleSearchField {
|
|
27906
|
-
constructor(esFieldName, order = 'asc',
|
|
27861
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27907
27862
|
this.esFieldName = esFieldName;
|
|
27908
|
-
this.order = order;
|
|
27909
27863
|
this.injector = injector;
|
|
27864
|
+
this.order = order;
|
|
27865
|
+
this.orderType = orderType;
|
|
27910
27866
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27911
27867
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27912
27868
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27917,12 +27873,12 @@ class SimpleSearchField {
|
|
|
27917
27873
|
type: 'terms',
|
|
27918
27874
|
field: this.esFieldName,
|
|
27919
27875
|
limit: 1000,
|
|
27920
|
-
sort: [this.order,
|
|
27876
|
+
sort: [this.order, this.orderType],
|
|
27921
27877
|
},
|
|
27922
27878
|
};
|
|
27923
27879
|
}
|
|
27924
27880
|
async getBucketLabel(bucket) {
|
|
27925
|
-
return bucket.term;
|
|
27881
|
+
return bucket.term.toString();
|
|
27926
27882
|
}
|
|
27927
27883
|
getAvailableValues() {
|
|
27928
27884
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27950,9 +27906,13 @@ class SimpleSearchField {
|
|
|
27950
27906
|
return of(values);
|
|
27951
27907
|
}
|
|
27952
27908
|
}
|
|
27953
|
-
class
|
|
27954
|
-
constructor() {
|
|
27955
|
-
super(
|
|
27909
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
27910
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27911
|
+
super(esFieldName, injector, order, orderType);
|
|
27912
|
+
this.esFieldName = esFieldName;
|
|
27913
|
+
this.injector = injector;
|
|
27914
|
+
this.order = order;
|
|
27915
|
+
this.orderType = orderType;
|
|
27956
27916
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27957
27917
|
}
|
|
27958
27918
|
async getTranslation(key) {
|
|
@@ -27962,26 +27922,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27962
27922
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27963
27923
|
}
|
|
27964
27924
|
getAvailableValues() {
|
|
27925
|
+
if (this.orderType === 'count')
|
|
27926
|
+
return super.getAvailableValues();
|
|
27965
27927
|
// sort values by alphabetical order
|
|
27966
27928
|
return super
|
|
27967
27929
|
.getAvailableValues()
|
|
27968
27930
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27969
27931
|
}
|
|
27970
27932
|
}
|
|
27971
|
-
|
|
27972
|
-
|
|
27973
|
-
|
|
27974
|
-
|
|
27933
|
+
/**
|
|
27934
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
27935
|
+
* to the defined METADATA_LANGUAGE token
|
|
27936
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
27937
|
+
*/
|
|
27938
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
27939
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27940
|
+
super(esFieldName, injector, order, orderType);
|
|
27941
|
+
this.esFieldName = esFieldName;
|
|
27942
|
+
this.injector = injector;
|
|
27943
|
+
this.order = order;
|
|
27944
|
+
this.orderType = orderType;
|
|
27975
27945
|
this.langService = this.injector.get(LangService);
|
|
27976
|
-
this.
|
|
27977
|
-
|
|
27978
|
-
|
|
27979
|
-
|
|
27980
|
-
|
|
27981
|
-
}
|
|
27982
|
-
|
|
27983
|
-
|
|
27984
|
-
|
|
27946
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
27947
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
27948
|
+
// permalinks that might not work for different users
|
|
27949
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
27950
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
27951
|
+
}
|
|
27952
|
+
else {
|
|
27953
|
+
this.esFieldName += '.default';
|
|
27954
|
+
}
|
|
27985
27955
|
}
|
|
27986
27956
|
}
|
|
27987
27957
|
class FullTextSearchField {
|
|
@@ -28001,7 +27971,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
28001
27971
|
marker('search.filters.isSpatial.no');
|
|
28002
27972
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
28003
27973
|
constructor(injector) {
|
|
28004
|
-
super('isSpatial', 'asc'
|
|
27974
|
+
super('isSpatial', injector, 'asc');
|
|
28005
27975
|
this.translateService = this.injector.get(TranslateService);
|
|
28006
27976
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
28007
27977
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -28051,7 +28021,7 @@ marker('search.filters.license.unknown');
|
|
|
28051
28021
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
28052
28022
|
class LicenseSearchField extends SimpleSearchField {
|
|
28053
28023
|
constructor(injector) {
|
|
28054
|
-
super('license', 'asc'
|
|
28024
|
+
super('license', injector, 'asc');
|
|
28055
28025
|
this.translateService = this.injector.get(TranslateService);
|
|
28056
28026
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
28057
28027
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -28135,7 +28105,7 @@ class OrganizationSearchField {
|
|
|
28135
28105
|
}
|
|
28136
28106
|
class OwnerSearchField extends SimpleSearchField {
|
|
28137
28107
|
constructor(injector) {
|
|
28138
|
-
super('owner', 'asc'
|
|
28108
|
+
super('owner', injector, 'asc');
|
|
28139
28109
|
}
|
|
28140
28110
|
getAvailableValues() {
|
|
28141
28111
|
return of([]);
|
|
@@ -28144,6 +28114,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
28144
28114
|
|
|
28145
28115
|
marker('search.filters.format');
|
|
28146
28116
|
marker('search.filters.inspireKeyword');
|
|
28117
|
+
marker('search.filters.keyword');
|
|
28147
28118
|
marker('search.filters.isSpatial');
|
|
28148
28119
|
marker('search.filters.license');
|
|
28149
28120
|
marker('search.filters.publicationYear');
|
|
@@ -28161,13 +28132,14 @@ class FieldsService {
|
|
|
28161
28132
|
this.injector = injector;
|
|
28162
28133
|
this.fields = {
|
|
28163
28134
|
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
|
-
|
|
28135
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28136
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28137
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28138
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28139
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28140
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28141
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28142
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
28171
28143
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
28172
28144
|
q: new FullTextSearchField(),
|
|
28173
28145
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28241,10 +28213,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28241
28213
|
type: Input
|
|
28242
28214
|
}] } });
|
|
28243
28215
|
|
|
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
28216
|
class FeatureSearchModule {
|
|
28249
28217
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28250
28218
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28343,6 +28311,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28343
28311
|
}]
|
|
28344
28312
|
}] });
|
|
28345
28313
|
|
|
28314
|
+
class ResultsTableComponent {
|
|
28315
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28316
|
+
this.searchFacade = searchFacade;
|
|
28317
|
+
this.searchService = searchService;
|
|
28318
|
+
this.selectionService = selectionService;
|
|
28319
|
+
this.recordClick = new EventEmitter();
|
|
28320
|
+
this.records$ = this.searchFacade.results$;
|
|
28321
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28322
|
+
}
|
|
28323
|
+
dateToString(date) {
|
|
28324
|
+
return date?.toLocaleDateString(undefined, {
|
|
28325
|
+
year: 'numeric',
|
|
28326
|
+
month: 'long',
|
|
28327
|
+
day: 'numeric',
|
|
28328
|
+
timeZone: 'UTC',
|
|
28329
|
+
});
|
|
28330
|
+
}
|
|
28331
|
+
getStatus(isPublishedToAll) {
|
|
28332
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28333
|
+
}
|
|
28334
|
+
getRecordFormats(record) {
|
|
28335
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28336
|
+
return [];
|
|
28337
|
+
}
|
|
28338
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28339
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28340
|
+
return formats;
|
|
28341
|
+
}
|
|
28342
|
+
formatUserInfo(userInfo) {
|
|
28343
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28344
|
+
if (infos && infos.length === 4) {
|
|
28345
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28346
|
+
}
|
|
28347
|
+
return undefined;
|
|
28348
|
+
}
|
|
28349
|
+
getBadgeColor(format) {
|
|
28350
|
+
return getBadgeColor(format);
|
|
28351
|
+
}
|
|
28352
|
+
handleRecordClick(item) {
|
|
28353
|
+
this.recordClick.emit(item);
|
|
28354
|
+
}
|
|
28355
|
+
setSortBy(col, order) {
|
|
28356
|
+
this.searchService.setSortBy([order, col]);
|
|
28357
|
+
}
|
|
28358
|
+
isSortedBy(col) {
|
|
28359
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28360
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28361
|
+
? sortOrder
|
|
28362
|
+
: [sortOrder];
|
|
28363
|
+
for (const sort of sortArray) {
|
|
28364
|
+
if (sort[1] === col) {
|
|
28365
|
+
return sort[0];
|
|
28366
|
+
}
|
|
28367
|
+
}
|
|
28368
|
+
return null;
|
|
28369
|
+
}));
|
|
28370
|
+
}
|
|
28371
|
+
isChecked(record) {
|
|
28372
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28373
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28374
|
+
}));
|
|
28375
|
+
}
|
|
28376
|
+
handleRecordSelectedChange(selected, record) {
|
|
28377
|
+
if (!selected) {
|
|
28378
|
+
this.selectionService.deselectRecords([record]);
|
|
28379
|
+
}
|
|
28380
|
+
else {
|
|
28381
|
+
this.selectionService.selectRecords([record]);
|
|
28382
|
+
}
|
|
28383
|
+
}
|
|
28384
|
+
async toggleSelectAll() {
|
|
28385
|
+
const records = await firstValueFrom(this.records$);
|
|
28386
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28387
|
+
this.selectionService.deselectRecords(records);
|
|
28388
|
+
}
|
|
28389
|
+
else {
|
|
28390
|
+
this.selectionService.selectRecords(records);
|
|
28391
|
+
}
|
|
28392
|
+
}
|
|
28393
|
+
isAllSelected() {
|
|
28394
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28395
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28396
|
+
}));
|
|
28397
|
+
}
|
|
28398
|
+
isSomeSelected() {
|
|
28399
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28400
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28401
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28402
|
+
return !allSelected && someSelected;
|
|
28403
|
+
}));
|
|
28404
|
+
}
|
|
28405
|
+
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 }); }
|
|
28406
|
+
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"] }] }); }
|
|
28407
|
+
}
|
|
28408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28409
|
+
type: Component,
|
|
28410
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28411
|
+
CommonModule,
|
|
28412
|
+
UiInputsModule,
|
|
28413
|
+
InteractiveTableComponent,
|
|
28414
|
+
InteractiveTableColumnComponent,
|
|
28415
|
+
MatIconModule,
|
|
28416
|
+
TranslateModule,
|
|
28417
|
+
], 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" }]
|
|
28418
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28419
|
+
type: Output
|
|
28420
|
+
}] } });
|
|
28421
|
+
|
|
28346
28422
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28347
28423
|
get mapLinks() {
|
|
28348
28424
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28970,7 +29046,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28970
29046
|
...state,
|
|
28971
29047
|
chartConfig,
|
|
28972
29048
|
})), on(close, (state) => {
|
|
28973
|
-
// eslint-disable-next-line
|
|
29049
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28974
29050
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28975
29051
|
return stateWithoutMd;
|
|
28976
29052
|
}));
|
|
@@ -30924,11 +31000,11 @@ class LanguageSwitcherComponent {
|
|
|
30924
31000
|
this.translate.use(value);
|
|
30925
31001
|
}
|
|
30926
31002
|
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 [extraBtnClass]=\"'flex justify-items-center
|
|
31003
|
+
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]=\"'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
31004
|
}
|
|
30929
31005
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30930
31006
|
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 [extraBtnClass]=\"'flex justify-items-center
|
|
31007
|
+
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]=\"'flex justify-items-center !pl-2 !py-1'\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30932
31008
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30933
31009
|
type: Optional
|
|
30934
31010
|
}, {
|
|
@@ -31209,13 +31285,6 @@ class MyOrgService {
|
|
|
31209
31285
|
constructor(platformService, orgService) {
|
|
31210
31286
|
this.platformService = platformService;
|
|
31211
31287
|
this.orgService = orgService;
|
|
31212
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
31213
|
-
orgName: '',
|
|
31214
|
-
logoUrl: '',
|
|
31215
|
-
recordCount: 0,
|
|
31216
|
-
userCount: 0,
|
|
31217
|
-
userList: [],
|
|
31218
|
-
});
|
|
31219
31288
|
this.myOrgData$ = combineLatest([
|
|
31220
31289
|
this.platformService.getMe(),
|
|
31221
31290
|
this.platformService.getUsers(),
|
|
@@ -31234,7 +31303,7 @@ class MyOrgService {
|
|
|
31234
31303
|
userList,
|
|
31235
31304
|
userCount,
|
|
31236
31305
|
};
|
|
31237
|
-
}));
|
|
31306
|
+
}), shareReplay(1));
|
|
31238
31307
|
}
|
|
31239
31308
|
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
31309
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -32299,5 +32368,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32299
32368
|
* Generated bundle index. Do not edit.
|
|
32300
32369
|
*/
|
|
32301
32370
|
|
|
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,
|
|
32371
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32303
32372
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|