geonetwork-ui 2.2.0-dev.5b8d393f → 2.2.0-dev.6332307a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +27 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +64 -61
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +7 -4
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +25 -17
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +55 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
- package/esm2022/libs/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/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 +3 -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-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 +3 -4
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +2 -2
- 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/max-lines/max-lines.component.mjs +5 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +47 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +4 -4
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/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 +6 -6
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/util/i18n/src/index.mjs +1 -2
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
- package/esm2022/translations/de.json +35 -26
- package/esm2022/translations/en.json +35 -26
- package/esm2022/translations/es.json +29 -20
- package/esm2022/translations/fr.json +48 -39
- package/esm2022/translations/it.json +42 -33
- package/esm2022/translations/nl.json +30 -21
- package/esm2022/translations/pt.json +29 -20
- package/fesm2022/geonetwork-ui.mjs +744 -560
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +7 -6
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -12
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
- package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/search.model.d.ts +1 -1
- 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/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 +2 -0
- package/libs/feature/search/src/index.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-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 +0 -1
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -6
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
- package/libs/ui/inputs/src/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/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/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
- package/libs/util/i18n/src/index.d.ts +0 -1
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
- package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +63 -8
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +57 -9
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +229 -24
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +29 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +99 -76
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
- package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +30 -21
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +120 -63
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +177 -97
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
- package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +25 -14
- package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/search/search.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
- package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
- package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
- package/src/libs/feature/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 +2 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
- 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.html +104 -127
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -1
- package/src/libs/feature/search/src/lib/state/effects.ts +1 -1
- 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/max-lines/max-lines.component.html +5 -1
- package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +157 -42
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -15
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
- package/src/libs/util/i18n/src/index.ts +0 -1
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
- package/tailwind.base.css +2 -2
- package/translations/de.json +35 -26
- package/translations/en.json +35 -26
- package/translations/es.json +29 -20
- package/translations/fr.json +48 -39
- package/translations/it.json +42 -33
- package/translations/nl.json +30 -21
- package/translations/pt.json +29 -20
- package/translations/sk.json +30 -21
- 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/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/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
|
@@ -5,10 +5,10 @@ import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Compo
|
|
|
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';
|
|
@@ -587,6 +587,20 @@ function matchMimeType(format) {
|
|
|
587
587
|
return format || null;
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
591
|
+
if (!typeCode)
|
|
592
|
+
return 'other';
|
|
593
|
+
switch (typeCode) {
|
|
594
|
+
case 'theme':
|
|
595
|
+
case 'place':
|
|
596
|
+
case 'temporal':
|
|
597
|
+
case 'other':
|
|
598
|
+
return typeCode;
|
|
599
|
+
default:
|
|
600
|
+
return 'other';
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
590
604
|
function extractCharacterString() {
|
|
591
605
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
592
606
|
}
|
|
@@ -649,28 +663,32 @@ function extractStatus() {
|
|
|
649
663
|
return pipe(findChildElement('gmd:MD_ProgressCode'), readAttribute('codeListValue'), map(getStatusFromStatusCode));
|
|
650
664
|
}
|
|
651
665
|
// from gmd:resourceConstraints
|
|
652
|
-
function
|
|
653
|
-
|
|
654
|
-
|
|
666
|
+
function extractLegalConstraints() {
|
|
667
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') === -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
668
|
+
...(url && { url }),
|
|
655
669
|
text,
|
|
656
|
-
type: 'other',
|
|
657
670
|
})));
|
|
658
|
-
|
|
671
|
+
}
|
|
672
|
+
// from gmd:resourceConstraints
|
|
673
|
+
function extractSecurityConstraints() {
|
|
674
|
+
return pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
675
|
+
...(url && { url }),
|
|
659
676
|
text,
|
|
660
|
-
type: 'security',
|
|
661
677
|
})));
|
|
662
|
-
return pipe(combine(getOtherConstraints, getSecurityConstraints), flattenArray());
|
|
663
678
|
}
|
|
664
679
|
// from gmd:resourceConstraints
|
|
665
|
-
function
|
|
666
|
-
return pipe(
|
|
680
|
+
function extractOtherConstraints() {
|
|
681
|
+
return pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
682
|
+
...(url && { url }),
|
|
683
|
+
text,
|
|
684
|
+
})));
|
|
667
685
|
}
|
|
668
686
|
// from gmd:resourceConstraints
|
|
669
687
|
function extractLicenses() {
|
|
670
|
-
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(
|
|
688
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
671
689
|
...(url && { url }),
|
|
672
690
|
text,
|
|
673
|
-
})))
|
|
691
|
+
})));
|
|
674
692
|
}
|
|
675
693
|
// from gmd:MD_Distribution
|
|
676
694
|
function extractDatasetDistributions() {
|
|
@@ -814,6 +832,9 @@ function readOwnerOrganization(rootEl) {
|
|
|
814
832
|
function readRecordUpdated(rootEl) {
|
|
815
833
|
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
816
834
|
}
|
|
835
|
+
function readRecordPublished(rootEl) {
|
|
836
|
+
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
837
|
+
}
|
|
817
838
|
function readTitle(rootEl) {
|
|
818
839
|
return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
819
840
|
}
|
|
@@ -829,31 +850,55 @@ function readDatasetUpdated(rootEl) {
|
|
|
829
850
|
function readContacts(rootEl) {
|
|
830
851
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
831
852
|
}
|
|
832
|
-
|
|
833
|
-
|
|
853
|
+
// from gmd:thesaurusName
|
|
854
|
+
function readThesaurus(rootEl) {
|
|
855
|
+
if (!rootEl)
|
|
856
|
+
return null;
|
|
857
|
+
const findIdentifier = findNestedElement('gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code');
|
|
858
|
+
const id = pipe(findIdentifier, extractCharacterString())(rootEl);
|
|
859
|
+
const url = pipe(findIdentifier, extractUrl())(rootEl);
|
|
860
|
+
const name = pipe(findNestedElement('gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
861
|
+
return {
|
|
862
|
+
id,
|
|
863
|
+
...(name && { name }),
|
|
864
|
+
...(url && { url }),
|
|
865
|
+
};
|
|
834
866
|
}
|
|
835
|
-
|
|
836
|
-
|
|
867
|
+
// from gmd:MD_Keywords
|
|
868
|
+
function readKeywordGroup(rootEl) {
|
|
869
|
+
const type = pipe(findChildrenElement('gmd:MD_KeywordTypeCode'), mapArray(readAttribute('codeListValue')), map((values) => getKeywordTypeFromKeywordTypeCode(values[0])))(rootEl);
|
|
870
|
+
const thesaurus = pipe(findNestedElement('gmd:thesaurusName'), readThesaurus)(rootEl);
|
|
871
|
+
return pipe(findChildrenElement('gmd:keyword'), mapArray((el) => {
|
|
872
|
+
const label = extractCharacterString()(el);
|
|
873
|
+
return {
|
|
874
|
+
...(thesaurus ? { thesaurus } : {}),
|
|
875
|
+
label,
|
|
876
|
+
type,
|
|
877
|
+
};
|
|
878
|
+
}))(rootEl);
|
|
837
879
|
}
|
|
838
|
-
function
|
|
839
|
-
return
|
|
880
|
+
function readKeywords(rootEl) {
|
|
881
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
840
882
|
}
|
|
841
883
|
function readStatus(rootEl) {
|
|
842
884
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
843
885
|
}
|
|
844
886
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
845
|
-
function
|
|
846
|
-
return pipe(getConstraints, mapArray(
|
|
887
|
+
function readLegalConstraints(rootEl) {
|
|
888
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
847
889
|
}
|
|
848
|
-
function
|
|
849
|
-
return pipe(getConstraints, mapArray(
|
|
890
|
+
function readSecurityConstraints(rootEl) {
|
|
891
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
892
|
+
}
|
|
893
|
+
function readOtherConstraints(rootEl) {
|
|
894
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
850
895
|
}
|
|
851
896
|
function readLicenses(rootEl) {
|
|
852
897
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
853
898
|
}
|
|
854
899
|
// not used yet
|
|
855
900
|
function readIsoTopics(rootEl) {
|
|
856
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
901
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
857
902
|
}
|
|
858
903
|
function readSpatialRepresentation(rootEl) {
|
|
859
904
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1069,33 +1114,50 @@ function updateCitationDate(date, type) {
|
|
|
1069
1114
|
function appendCitationDate(date, type) {
|
|
1070
1115
|
return appendChildren(pipe(createElement('gmd:date'), createChild('gmd:CI_Date'), appendChildren(pipe(createElement('gmd:date'), writeDateTime(date)), pipe(createElement('gmd:dateType'), createChild('gmd:CI_DateTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'), addAttribute('codeListValue', type)))));
|
|
1071
1116
|
}
|
|
1072
|
-
function removeKeywords(
|
|
1073
|
-
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1117
|
+
function removeKeywords() {
|
|
1118
|
+
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')));
|
|
1119
|
+
}
|
|
1120
|
+
// returns a <gmd:thesaurusName> element
|
|
1121
|
+
function createThesaurus(thesaurus) {
|
|
1122
|
+
return pipe(createElement('gmd:thesaurusName'), createChild('gmd:CI_Citation'), appendChildren(pipe(createElement('gmd:title'), writeCharacterString(thesaurus.name || thesaurus.id)), pipe(createElement('gmd:identifier'), createChild('gmd:MD_Identifier'), appendChildren(pipe(createElement('gmd:code'), thesaurus.url
|
|
1123
|
+
? writeAnchor(thesaurus.url, thesaurus.id)
|
|
1124
|
+
: writeCharacterString(thesaurus.id))))));
|
|
1125
|
+
}
|
|
1126
|
+
function appendKeywords(keywords) {
|
|
1127
|
+
const keywordsByThesaurus = keywords.reduce((acc, keyword) => {
|
|
1128
|
+
const thesaurusId = keyword.thesaurus?.id;
|
|
1129
|
+
const type = keyword.type;
|
|
1130
|
+
let existingGroup = acc.find((group) => group[0].thesaurus
|
|
1131
|
+
? group[0].thesaurus.id === thesaurusId
|
|
1132
|
+
: group[0].type === type);
|
|
1133
|
+
if (!existingGroup) {
|
|
1134
|
+
existingGroup = [];
|
|
1135
|
+
acc.push(existingGroup);
|
|
1136
|
+
}
|
|
1137
|
+
existingGroup.push(keyword);
|
|
1138
|
+
return acc;
|
|
1139
|
+
}, []);
|
|
1140
|
+
return appendChildren(...keywordsByThesaurus.map((keywords) => pipe(createElement('gmd:descriptiveKeywords'), createChild('gmd:MD_Keywords'), appendChildren(pipe(createElement('gmd:type'), createChild('gmd:MD_KeywordTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_KeywordTypeCode'), addAttribute('codeListValue', keywords[0].type))), keywords[0].thesaurus
|
|
1141
|
+
? appendChildren(createThesaurus(keywords[0].thesaurus))
|
|
1142
|
+
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword.label)))))));
|
|
1143
|
+
}
|
|
1144
|
+
function createConstraint(constraint, type) {
|
|
1145
|
+
if (type === 'security') {
|
|
1090
1146
|
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_SecurityConstraints'), appendChildren(pipe(createElement('gmd:classification'), createChild('gmd:MD_ClassificationCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ClassificationCode'), addAttribute('codeListValue', 'restricted')), pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1091
1147
|
}
|
|
1092
|
-
|
|
1148
|
+
else if (type === 'legal') {
|
|
1149
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_LegalConstraints'), appendChildren(pipe(createElement('gmd:accessConstraints'), createChild('gmd:MD_RestrictionCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'), addAttribute('codeListValue', 'otherRestrictions')), pipe(createElement('gmd:otherConstraints'), writeCharacterString(constraint.text))));
|
|
1150
|
+
}
|
|
1151
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1093
1152
|
}
|
|
1094
|
-
function
|
|
1153
|
+
function removeOtherConstraints() {
|
|
1095
1154
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1096
1155
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return pipe(
|
|
1156
|
+
function removeSecurityConstraints() {
|
|
1157
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1158
|
+
}
|
|
1159
|
+
function removeLegalConstraints() {
|
|
1160
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.every((code) => code !== 'license')))));
|
|
1099
1161
|
}
|
|
1100
1162
|
function removeLicenses() {
|
|
1101
1163
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.some((code) => code === 'license')))));
|
|
@@ -1194,19 +1256,22 @@ function writeContacts(record, rootEl) {
|
|
|
1194
1256
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1195
1257
|
}
|
|
1196
1258
|
function writeKeywords(record, rootEl) {
|
|
1197
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1198
|
-
}
|
|
1199
|
-
function writeThemes(record, rootEl) {
|
|
1200
|
-
pipe(findOrCreateIdentification(), removeKeywords('theme'), appendKeywords(record.themes, 'theme'))(rootEl);
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1201
1260
|
}
|
|
1202
|
-
function
|
|
1203
|
-
pipe(findOrCreateIdentification(),
|
|
1261
|
+
function writeTopics(record, rootEl) {
|
|
1262
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:topicCategory'), appendChildren(...record.topics.map((topic) => pipe(createElement('gmd:topicCategory'), createChild('gmd:MD_TopicCategoryCode'), setTextContent(topic)))))(rootEl);
|
|
1204
1263
|
}
|
|
1205
1264
|
function writeLicenses(record, rootEl) {
|
|
1206
1265
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1207
1266
|
}
|
|
1208
|
-
function
|
|
1209
|
-
pipe(findOrCreateIdentification(),
|
|
1267
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1268
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1269
|
+
}
|
|
1270
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1271
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1272
|
+
}
|
|
1273
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1274
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1210
1275
|
}
|
|
1211
1276
|
function writeUpdateFrequency(record, rootEl) {
|
|
1212
1277
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1302,14 +1367,14 @@ function toModel(xml) {
|
|
|
1302
1367
|
const contacts = readContacts(rootEl);
|
|
1303
1368
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1304
1369
|
const recordCreated = recordUpdated;
|
|
1370
|
+
const recordPublished = readRecordPublished(rootEl);
|
|
1305
1371
|
const keywords = readKeywords(rootEl);
|
|
1306
|
-
const
|
|
1307
|
-
const
|
|
1308
|
-
const
|
|
1372
|
+
const topics = readIsoTopics(rootEl);
|
|
1373
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1374
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1375
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1309
1376
|
const licenses = readLicenses(rootEl);
|
|
1310
1377
|
const overviews = readOverviews(rootEl);
|
|
1311
|
-
// not used yet
|
|
1312
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1313
1378
|
if (kind === 'dataset') {
|
|
1314
1379
|
const status = readStatus(rootEl);
|
|
1315
1380
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1323,8 +1388,10 @@ function toModel(xml) {
|
|
|
1323
1388
|
return {
|
|
1324
1389
|
uniqueIdentifier,
|
|
1325
1390
|
kind,
|
|
1391
|
+
languages: [],
|
|
1326
1392
|
recordCreated,
|
|
1327
1393
|
recordUpdated,
|
|
1394
|
+
recordPublished,
|
|
1328
1395
|
status,
|
|
1329
1396
|
title,
|
|
1330
1397
|
abstract,
|
|
@@ -1332,10 +1399,11 @@ function toModel(xml) {
|
|
|
1332
1399
|
contacts,
|
|
1333
1400
|
contactsForResource: [],
|
|
1334
1401
|
keywords,
|
|
1335
|
-
|
|
1336
|
-
accessConstraints,
|
|
1337
|
-
useLimitations,
|
|
1402
|
+
topics,
|
|
1338
1403
|
licenses,
|
|
1404
|
+
legalConstraints,
|
|
1405
|
+
securityConstraints,
|
|
1406
|
+
otherConstraints,
|
|
1339
1407
|
...(datasetCreated && { datasetCreated }),
|
|
1340
1408
|
...(datasetUpdated && { datasetUpdated }),
|
|
1341
1409
|
lineage,
|
|
@@ -1352,17 +1420,20 @@ function toModel(xml) {
|
|
|
1352
1420
|
return {
|
|
1353
1421
|
uniqueIdentifier,
|
|
1354
1422
|
kind,
|
|
1423
|
+
languages: [],
|
|
1355
1424
|
recordCreated,
|
|
1356
1425
|
recordUpdated,
|
|
1426
|
+
recordPublished,
|
|
1357
1427
|
title,
|
|
1358
1428
|
abstract,
|
|
1359
1429
|
ownerOrganization,
|
|
1360
1430
|
contacts,
|
|
1361
1431
|
keywords,
|
|
1362
|
-
|
|
1363
|
-
accessConstraints,
|
|
1364
|
-
useLimitations,
|
|
1432
|
+
topics,
|
|
1365
1433
|
licenses,
|
|
1434
|
+
legalConstraints,
|
|
1435
|
+
securityConstraints,
|
|
1436
|
+
otherConstraints,
|
|
1366
1437
|
overviews,
|
|
1367
1438
|
onlineResources,
|
|
1368
1439
|
};
|
|
@@ -1387,10 +1458,12 @@ function toXml(record, originalXml) {
|
|
|
1387
1458
|
writeAbstract(record, rootEl);
|
|
1388
1459
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1389
1460
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1390
|
-
fieldChanged('
|
|
1391
|
-
fieldChanged('
|
|
1461
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1462
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1463
|
+
fieldChanged('securityConstraints') &&
|
|
1464
|
+
writeSecurityConstraints(record, rootEl);
|
|
1392
1465
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1393
|
-
fieldChanged('
|
|
1466
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1394
1467
|
if (record.kind === 'dataset') {
|
|
1395
1468
|
writeStatus(record, rootEl);
|
|
1396
1469
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1457,6 +1530,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1457
1530
|
...(phone && { phone }),
|
|
1458
1531
|
};
|
|
1459
1532
|
};
|
|
1533
|
+
const mapKeywords = (thesauri, language) => {
|
|
1534
|
+
const keywords = [];
|
|
1535
|
+
for (const thesaurusId in thesauri) {
|
|
1536
|
+
const rawThesaurus = thesauri[thesaurusId];
|
|
1537
|
+
let thesaurus = null;
|
|
1538
|
+
if (rawThesaurus.id) {
|
|
1539
|
+
const thesaurusSource = { ...rawThesaurus };
|
|
1540
|
+
const url = getAsUrl(selectField(thesaurusSource, 'link'));
|
|
1541
|
+
const name = selectField(thesaurusSource, 'title');
|
|
1542
|
+
thesaurus = {
|
|
1543
|
+
id: rawThesaurus.id,
|
|
1544
|
+
...(name && { name }),
|
|
1545
|
+
...(url && { url }),
|
|
1546
|
+
};
|
|
1547
|
+
}
|
|
1548
|
+
for (const keyword of rawThesaurus.keywords) {
|
|
1549
|
+
keywords.push({
|
|
1550
|
+
label: selectTranslatedValue(keyword, language),
|
|
1551
|
+
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
1552
|
+
...(thesaurus && { thesaurus }),
|
|
1553
|
+
});
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
return keywords;
|
|
1557
|
+
};
|
|
1460
1558
|
|
|
1461
1559
|
/**
|
|
1462
1560
|
* Custom HttpParameterCodec
|
|
@@ -16443,6 +16541,23 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
16443
16541
|
chi: 'zh',
|
|
16444
16542
|
slo: 'sk',
|
|
16445
16543
|
};
|
|
16544
|
+
const LANGUAGE_NAMES = {
|
|
16545
|
+
en: 'English',
|
|
16546
|
+
nl: 'Nederlands',
|
|
16547
|
+
fr: 'Français',
|
|
16548
|
+
de: 'Deutsch',
|
|
16549
|
+
ko: '한국어',
|
|
16550
|
+
es: 'Español',
|
|
16551
|
+
cs: 'Čeština',
|
|
16552
|
+
ca: 'Català',
|
|
16553
|
+
fi: 'Suomi',
|
|
16554
|
+
is: 'Íslenska',
|
|
16555
|
+
it: 'Italiano',
|
|
16556
|
+
pt: 'Português',
|
|
16557
|
+
ru: 'Русский',
|
|
16558
|
+
zh: '中文',
|
|
16559
|
+
sk: 'Slovenčina',
|
|
16560
|
+
};
|
|
16446
16561
|
// Caution: changing this can break language selection from third parties!
|
|
16447
16562
|
const LANGUAGE_STORAGE_KEY = 'geonetwork-ui-language';
|
|
16448
16563
|
const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
|
|
@@ -16543,133 +16658,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
16543
16658
|
}]
|
|
16544
16659
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
16545
16660
|
|
|
16546
|
-
// IMPORTANT:
|
|
16547
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/test-translate-loader.service.ts
|
|
16548
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16549
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16550
|
-
class TestTranslateLoader extends TranslateLoader {
|
|
16551
|
-
constructor(_translations = {}) {
|
|
16552
|
-
super();
|
|
16553
|
-
this._translations = _translations;
|
|
16554
|
-
}
|
|
16555
|
-
/**
|
|
16556
|
-
* Returns an {Observable} of translations for the specified language. If the
|
|
16557
|
-
* language is not recognized, an empty translations object will be returned.
|
|
16558
|
-
*
|
|
16559
|
-
* @param language the language for which the translations should be retrieved.
|
|
16560
|
-
* @returns the translations for the specified
|
|
16561
|
-
* language or an empty set of translations if the language is not recognized.
|
|
16562
|
-
*/
|
|
16563
|
-
getTranslation(language) {
|
|
16564
|
-
return of(this._translations[language] || {});
|
|
16565
|
-
}
|
|
16566
|
-
}
|
|
16567
|
-
|
|
16568
|
-
// IMPORTANT:
|
|
16569
|
-
// This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/testing.module.ts
|
|
16570
|
-
// because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
|
|
16571
|
-
// FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
|
|
16572
|
-
/**
|
|
16573
|
-
* The TranslateTestingModule provides the {TranslateModule} as well as a
|
|
16574
|
-
* {TranslateService} configured to return translations specific for the
|
|
16575
|
-
* test environment.
|
|
16576
|
-
*
|
|
16577
|
-
* @export
|
|
16578
|
-
*/
|
|
16579
|
-
class TranslateTestingModule {
|
|
16580
|
-
constructor() {
|
|
16581
|
-
this._translations = {};
|
|
16582
|
-
}
|
|
16583
|
-
static withTranslations(languageOrTranslations, translations) {
|
|
16584
|
-
const translateTestingModule = new TranslateTestingModule();
|
|
16585
|
-
if (typeof languageOrTranslations === 'string') {
|
|
16586
|
-
return translateTestingModule.withTranslations(languageOrTranslations, translations);
|
|
16587
|
-
}
|
|
16588
|
-
return translateTestingModule.withTranslations(languageOrTranslations);
|
|
16589
|
-
}
|
|
16590
|
-
get ngModule() {
|
|
16591
|
-
return TranslateTestingModule;
|
|
16592
|
-
}
|
|
16593
|
-
get providers() {
|
|
16594
|
-
const translateService = new TranslateService(null, new TestTranslateLoader(this._translations), this._compiler || new TranslateFakeCompiler(), new TranslateDefaultParser(), new FakeMissingTranslationHandler(), true, true, false, this._defaultLanguage);
|
|
16595
|
-
return [
|
|
16596
|
-
{
|
|
16597
|
-
provide: TranslateService,
|
|
16598
|
-
useValue: translateService,
|
|
16599
|
-
},
|
|
16600
|
-
];
|
|
16601
|
-
}
|
|
16602
|
-
withTranslations(languageOrTranslations, translations) {
|
|
16603
|
-
if (typeof languageOrTranslations === 'string' && translations) {
|
|
16604
|
-
this.addTranslations(languageOrTranslations, translations);
|
|
16605
|
-
this._defaultLanguage = languageOrTranslations;
|
|
16606
|
-
}
|
|
16607
|
-
else if (languageOrTranslations) {
|
|
16608
|
-
Object.keys(languageOrTranslations).forEach((language) => this.addTranslations(language, languageOrTranslations[language]));
|
|
16609
|
-
}
|
|
16610
|
-
return this;
|
|
16611
|
-
}
|
|
16612
|
-
/**
|
|
16613
|
-
* Updates the {TranslationTestingModule} to provide a {TranslateService} that will
|
|
16614
|
-
* use the provided {TranslateCompiler} to translate the test translations.
|
|
16615
|
-
*
|
|
16616
|
-
* @example
|
|
16617
|
-
*
|
|
16618
|
-
* TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
|
|
16619
|
-
* .withCompiler(new TranslateMessageFormatCompiler());
|
|
16620
|
-
*
|
|
16621
|
-
* @param compiler the compiler to use to compile the test translations.
|
|
16622
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16623
|
-
* @memberof TranslateTestingModule
|
|
16624
|
-
*/
|
|
16625
|
-
withCompiler(compiler) {
|
|
16626
|
-
this._compiler = compiler;
|
|
16627
|
-
return this;
|
|
16628
|
-
}
|
|
16629
|
-
/**
|
|
16630
|
-
* Updates the {TranslateTestingModule} to use the provided language as the default language.
|
|
16631
|
-
* By default, the default language will be set to the first language provided.
|
|
16632
|
-
*
|
|
16633
|
-
* @example
|
|
16634
|
-
*
|
|
16635
|
-
* TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
|
|
16636
|
-
* .withTranslations('en', ENGLISH_TRANSLATIONS)
|
|
16637
|
-
* .withDefaultLanguage('en');
|
|
16638
|
-
*
|
|
16639
|
-
* @param language the new default language for translations.
|
|
16640
|
-
* @returns the instance that can be used to chain additional configuration.
|
|
16641
|
-
* @memberof TranslateTestingModule
|
|
16642
|
-
*/
|
|
16643
|
-
withDefaultLanguage(language) {
|
|
16644
|
-
this._defaultLanguage = language || this._defaultLanguage;
|
|
16645
|
-
return this;
|
|
16646
|
-
}
|
|
16647
|
-
addTranslations(language, translations) {
|
|
16648
|
-
if (!this._defaultLanguage) {
|
|
16649
|
-
this._defaultLanguage = language;
|
|
16650
|
-
}
|
|
16651
|
-
if (this._translations[language]) {
|
|
16652
|
-
this._translations[language] = {
|
|
16653
|
-
...this._translations[language],
|
|
16654
|
-
...translations,
|
|
16655
|
-
};
|
|
16656
|
-
}
|
|
16657
|
-
else {
|
|
16658
|
-
this._translations[language] = translations;
|
|
16659
|
-
}
|
|
16660
|
-
}
|
|
16661
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16662
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule], exports: [TranslateModule] }); }
|
|
16663
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule, TranslateModule] }); }
|
|
16664
|
-
}
|
|
16665
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, decorators: [{
|
|
16666
|
-
type: NgModule,
|
|
16667
|
-
args: [{
|
|
16668
|
-
imports: [TranslateModule],
|
|
16669
|
-
exports: [TranslateModule],
|
|
16670
|
-
}]
|
|
16671
|
-
}] });
|
|
16672
|
-
|
|
16673
16661
|
var dropFile$6 = "Datei ablegen";
|
|
16674
16662
|
var next$6 = "weiter";
|
|
16675
16663
|
var previous$6 = "zurück";
|
|
@@ -16692,20 +16680,21 @@ var de = {
|
|
|
16692
16680
|
"chart.type.line": "Liniendiagramm",
|
|
16693
16681
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16694
16682
|
"chart.type.pie": "Kreisdiagramm",
|
|
16683
|
+
"dashboard.createRecord": "Neuer Eintrag",
|
|
16695
16684
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16696
16685
|
"dashboard.records.all": "Katalog",
|
|
16697
16686
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
16698
16687
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
16699
16688
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
16700
16689
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
16701
|
-
"dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
|
|
16702
|
-
"dashboard.records.noUser": "Keine Benutzer für diese Organisation",
|
|
16703
16690
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
16704
16691
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
16705
16692
|
"dashboard.records.userDetail": "Name",
|
|
16706
16693
|
"dashboard.records.userEmail": "E-Mail",
|
|
16707
16694
|
"dashboard.records.username": "Benutzername",
|
|
16708
16695
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16696
|
+
"dashboard.results.listMetadata": "Metadaten anzeigen",
|
|
16697
|
+
"dashboard.results.listResources": "Ressourcen anzeigen",
|
|
16709
16698
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16710
16699
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16711
16700
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16832,28 +16821,28 @@ var de = {
|
|
|
16832
16821
|
"facets.block.title.tag.default": "Stichwort",
|
|
16833
16822
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
16834
16823
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
|
|
16835
|
-
"language.ca": "
|
|
16836
|
-
"language.cs": "
|
|
16824
|
+
"language.ca": "Katalanisch",
|
|
16825
|
+
"language.cs": "Tschechisch",
|
|
16837
16826
|
"language.de": "Deutsch",
|
|
16838
|
-
"language.en": "
|
|
16839
|
-
"language.es": "
|
|
16840
|
-
"language.fi": "
|
|
16841
|
-
"language.fr": "
|
|
16842
|
-
"language.is": "
|
|
16843
|
-
"language.it": "
|
|
16844
|
-
"language.ko": "
|
|
16845
|
-
"language.nl": "
|
|
16846
|
-
"language.pt": "
|
|
16847
|
-
"language.ru": "
|
|
16848
|
-
"language.sk": "
|
|
16849
|
-
"language.zh": "
|
|
16827
|
+
"language.en": "Englisch",
|
|
16828
|
+
"language.es": "Spanisch",
|
|
16829
|
+
"language.fi": "Finnisch",
|
|
16830
|
+
"language.fr": "Französisch",
|
|
16831
|
+
"language.is": "Isländisch",
|
|
16832
|
+
"language.it": "Italienisch",
|
|
16833
|
+
"language.ko": "Koreanisch",
|
|
16834
|
+
"language.nl": "Niederländisch",
|
|
16835
|
+
"language.pt": "Portugiesisch",
|
|
16836
|
+
"language.ru": "Russisch",
|
|
16837
|
+
"language.sk": "Slowakisch",
|
|
16838
|
+
"language.zh": "Chinesisch",
|
|
16850
16839
|
"map.add.layer": "Eine Ebene hinzufügen",
|
|
16851
16840
|
"map.add.layer.catalog": "Aus dem Katalog",
|
|
16852
16841
|
"map.add.layer.file": "Aus einer Datei",
|
|
16853
16842
|
"map.add.layer.wfs": "Aus WFS",
|
|
16854
16843
|
"map.add.layer.wms": "Aus WMS",
|
|
16855
16844
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16856
|
-
"map.geocoding.placeholder": "",
|
|
16845
|
+
"map.geocoding.placeholder": "Nach einem Ort suchen",
|
|
16857
16846
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16858
16847
|
"map.layer.add": "Hinzufügen",
|
|
16859
16848
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -16897,18 +16886,20 @@ var de = {
|
|
|
16897
16886
|
"record.metadata.author": "Autor",
|
|
16898
16887
|
"record.metadata.catalog": "Katalog",
|
|
16899
16888
|
"record.metadata.contact": "Kontakt",
|
|
16900
|
-
"record.metadata.
|
|
16901
|
-
"record.metadata.details": "
|
|
16889
|
+
"record.metadata.creation": "Erstellungsdatum",
|
|
16890
|
+
"record.metadata.details": "Über die Daten",
|
|
16902
16891
|
"record.metadata.download": "Downloads",
|
|
16903
16892
|
"record.metadata.formats": "Formate",
|
|
16904
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16905
16893
|
"record.metadata.keywords": "Stichworte",
|
|
16906
|
-
"record.metadata.
|
|
16894
|
+
"record.metadata.languages": "Sprachen",
|
|
16895
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
16907
16896
|
"record.metadata.links": "Links",
|
|
16908
16897
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16909
|
-
"record.metadata.
|
|
16910
|
-
"record.metadata.owner": "",
|
|
16898
|
+
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
16899
|
+
"record.metadata.owner": "Herkunftskatalog",
|
|
16911
16900
|
"record.metadata.preview": "Vorschau",
|
|
16901
|
+
"record.metadata.producer": "Datenproduzent",
|
|
16902
|
+
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
16912
16903
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16913
16904
|
"record.metadata.quality": "Metadatenqualität",
|
|
16914
16905
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
@@ -16930,12 +16921,17 @@ var de = {
|
|
|
16930
16921
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16931
16922
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16932
16923
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16933
|
-
"record.metadata.
|
|
16924
|
+
"record.metadata.status": "Status",
|
|
16925
|
+
"record.metadata.technical": "Technische Informationen",
|
|
16926
|
+
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
16927
|
+
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
16928
|
+
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
16929
|
+
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
16934
16930
|
"record.metadata.title": "Titel",
|
|
16931
|
+
"record.metadata.topics": "Kategorien",
|
|
16935
16932
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16936
16933
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16937
16934
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16938
|
-
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16939
16935
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
16940
16936
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
16941
16937
|
"record.more.details": "Weitere Details",
|
|
@@ -16967,6 +16963,7 @@ var de = {
|
|
|
16967
16963
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16968
16964
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16969
16965
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16966
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16970
16967
|
"search.filters.license": "Lizenz",
|
|
16971
16968
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16972
16969
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -16997,7 +16994,7 @@ var de = {
|
|
|
16997
16994
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16998
16995
|
"table.select.data": "Datenquelle",
|
|
16999
16996
|
"tooltip.html.copy": "HTML kopieren",
|
|
17000
|
-
"tooltip.id.copy": "",
|
|
16997
|
+
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17001
16998
|
"tooltip.url.copy": "URL kopieren",
|
|
17002
16999
|
"tooltip.url.open": "URL öffnen",
|
|
17003
17000
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17031,20 +17028,21 @@ var en = {
|
|
|
17031
17028
|
"chart.type.line": "line chart",
|
|
17032
17029
|
"chart.type.lineSmooth": "smooth line chart",
|
|
17033
17030
|
"chart.type.pie": "pie chart",
|
|
17031
|
+
"dashboard.createRecord": "New record",
|
|
17034
17032
|
"dashboard.labels.mySpace": "My space",
|
|
17035
|
-
"dashboard.records.all": "
|
|
17033
|
+
"dashboard.records.all": "Metadata records",
|
|
17036
17034
|
"dashboard.records.myDraft": "My drafts",
|
|
17037
17035
|
"dashboard.records.myLibrary": "My library",
|
|
17038
17036
|
"dashboard.records.myOrg": "Organization",
|
|
17039
17037
|
"dashboard.records.myRecords": "My Records",
|
|
17040
|
-
"dashboard.records.noRecord": "No record for this organization",
|
|
17041
|
-
"dashboard.records.noUser": "No users for this organization",
|
|
17042
17038
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
17043
17039
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
17044
17040
|
"dashboard.records.userDetail": "Name",
|
|
17045
17041
|
"dashboard.records.userEmail": "Email",
|
|
17046
17042
|
"dashboard.records.username": "Username",
|
|
17047
17043
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
17044
|
+
"dashboard.results.listMetadata": "Show metadata",
|
|
17045
|
+
"dashboard.results.listResources": "Show resources",
|
|
17048
17046
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
17049
17047
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Gathering dataset \n information",
|
|
17050
17048
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
@@ -17171,21 +17169,21 @@ var en = {
|
|
|
17171
17169
|
"facets.block.title.tag.default": "Tag",
|
|
17172
17170
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
17173
17171
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
17174
|
-
"language.ca": "
|
|
17175
|
-
"language.cs": "
|
|
17176
|
-
"language.de": "
|
|
17172
|
+
"language.ca": "Catalan",
|
|
17173
|
+
"language.cs": "Czech",
|
|
17174
|
+
"language.de": "German",
|
|
17177
17175
|
"language.en": "English",
|
|
17178
|
-
"language.es": "
|
|
17179
|
-
"language.fi": "
|
|
17180
|
-
"language.fr": "
|
|
17181
|
-
"language.is": "
|
|
17182
|
-
"language.it": "
|
|
17183
|
-
"language.ko": "
|
|
17184
|
-
"language.nl": "
|
|
17185
|
-
"language.pt": "
|
|
17186
|
-
"language.ru": "
|
|
17187
|
-
"language.sk": "
|
|
17188
|
-
"language.zh": "
|
|
17176
|
+
"language.es": "Spanish",
|
|
17177
|
+
"language.fi": "Finnish",
|
|
17178
|
+
"language.fr": "French",
|
|
17179
|
+
"language.is": "Icelandic",
|
|
17180
|
+
"language.it": "Italian",
|
|
17181
|
+
"language.ko": "Korean",
|
|
17182
|
+
"language.nl": "Dutch",
|
|
17183
|
+
"language.pt": "Portuguese",
|
|
17184
|
+
"language.ru": "Russian",
|
|
17185
|
+
"language.sk": "Slovak",
|
|
17186
|
+
"language.zh": "Chinese",
|
|
17189
17187
|
"map.add.layer": "Add a layer",
|
|
17190
17188
|
"map.add.layer.catalog": "From the catalog",
|
|
17191
17189
|
"map.add.layer.file": "From a file",
|
|
@@ -17236,18 +17234,20 @@ var en = {
|
|
|
17236
17234
|
"record.metadata.author": "Author",
|
|
17237
17235
|
"record.metadata.catalog": "Catalog",
|
|
17238
17236
|
"record.metadata.contact": "Contact",
|
|
17239
|
-
"record.metadata.
|
|
17240
|
-
"record.metadata.details": "
|
|
17237
|
+
"record.metadata.creation": "Date of creation",
|
|
17238
|
+
"record.metadata.details": "About the data",
|
|
17241
17239
|
"record.metadata.download": "Downloads",
|
|
17242
17240
|
"record.metadata.formats": "Formats",
|
|
17243
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17244
17241
|
"record.metadata.keywords": "Keywords",
|
|
17245
|
-
"record.metadata.
|
|
17242
|
+
"record.metadata.languages": "Languages",
|
|
17243
|
+
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
17246
17244
|
"record.metadata.links": "Links",
|
|
17247
17245
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17248
|
-
"record.metadata.
|
|
17246
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17249
17247
|
"record.metadata.owner": "Catalog of origin",
|
|
17250
17248
|
"record.metadata.preview": "Preview",
|
|
17249
|
+
"record.metadata.producer": "Data producer",
|
|
17250
|
+
"record.metadata.publication": "Date of publication",
|
|
17251
17251
|
"record.metadata.publications": "publications",
|
|
17252
17252
|
"record.metadata.quality": "Metadata Quality",
|
|
17253
17253
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
@@ -17269,14 +17269,19 @@ var en = {
|
|
|
17269
17269
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17270
17270
|
"record.metadata.related": "Related records",
|
|
17271
17271
|
"record.metadata.sheet": "Original metadata",
|
|
17272
|
-
"record.metadata.
|
|
17272
|
+
"record.metadata.status": "Status",
|
|
17273
|
+
"record.metadata.technical": "Technical information",
|
|
17274
|
+
"record.metadata.temporalExtent": "Temporal extent",
|
|
17275
|
+
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
17276
|
+
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
17277
|
+
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
17273
17278
|
"record.metadata.title": "Title",
|
|
17279
|
+
"record.metadata.topics": "Categories",
|
|
17274
17280
|
"record.metadata.type": "Geographical dataset",
|
|
17275
17281
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17276
17282
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17277
|
-
"record.metadata.
|
|
17278
|
-
"record.metadata.
|
|
17279
|
-
"record.metadata.usage": "Usage & constraints",
|
|
17283
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17284
|
+
"record.metadata.usage": "License and Conditions",
|
|
17280
17285
|
"record.more.details": "Read more",
|
|
17281
17286
|
"record.tab.chart": "Chart",
|
|
17282
17287
|
"record.tab.data": "Table",
|
|
@@ -17306,6 +17311,7 @@ var en = {
|
|
|
17306
17311
|
"search.filters.isSpatial": "Is spatial data",
|
|
17307
17312
|
"search.filters.isSpatial.no": "non spatial",
|
|
17308
17313
|
"search.filters.isSpatial.yes": "spatial",
|
|
17314
|
+
"search.filters.keyword": "Keyword",
|
|
17309
17315
|
"search.filters.license": "License",
|
|
17310
17316
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17311
17317
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17370,20 +17376,21 @@ var es = {
|
|
|
17370
17376
|
"chart.type.line": "gráfico de líneas",
|
|
17371
17377
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
17372
17378
|
"chart.type.pie": "gráfico circular",
|
|
17379
|
+
"dashboard.createRecord": "",
|
|
17373
17380
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
17374
17381
|
"dashboard.records.all": "Catálogo",
|
|
17375
17382
|
"dashboard.records.myDraft": "Mis borradores",
|
|
17376
17383
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
17377
17384
|
"dashboard.records.myOrg": "Organización",
|
|
17378
17385
|
"dashboard.records.myRecords": "Mis Registros",
|
|
17379
|
-
"dashboard.records.noRecord": "",
|
|
17380
|
-
"dashboard.records.noUser": "",
|
|
17381
17386
|
"dashboard.records.publishedRecords": "",
|
|
17382
17387
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
17383
17388
|
"dashboard.records.userDetail": "",
|
|
17384
17389
|
"dashboard.records.userEmail": "",
|
|
17385
17390
|
"dashboard.records.username": "",
|
|
17386
17391
|
"dashboard.records.users": "",
|
|
17392
|
+
"dashboard.results.listMetadata": "",
|
|
17393
|
+
"dashboard.results.listResources": "",
|
|
17387
17394
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
17388
17395
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
17389
17396
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -17510,21 +17517,21 @@ var es = {
|
|
|
17510
17517
|
"facets.block.title.tag.default": "",
|
|
17511
17518
|
"facets.block.title.th_regions_tree.default": "",
|
|
17512
17519
|
"favorite.not.authenticated.tooltip": "",
|
|
17513
|
-
"language.ca": "
|
|
17514
|
-
"language.cs": "
|
|
17515
|
-
"language.de": "
|
|
17516
|
-
"language.en": "
|
|
17520
|
+
"language.ca": "Catalán",
|
|
17521
|
+
"language.cs": "Checo",
|
|
17522
|
+
"language.de": "Alemán",
|
|
17523
|
+
"language.en": "Inglés",
|
|
17517
17524
|
"language.es": "Español",
|
|
17518
|
-
"language.fi": "
|
|
17519
|
-
"language.fr": "
|
|
17520
|
-
"language.is": "
|
|
17525
|
+
"language.fi": "Finlandés",
|
|
17526
|
+
"language.fr": "Francés",
|
|
17527
|
+
"language.is": "Islandés",
|
|
17521
17528
|
"language.it": "Italiano",
|
|
17522
|
-
"language.ko": "
|
|
17523
|
-
"language.nl": "
|
|
17524
|
-
"language.pt": "
|
|
17525
|
-
"language.ru": "
|
|
17526
|
-
"language.sk": "
|
|
17527
|
-
"language.zh": "
|
|
17529
|
+
"language.ko": "Coreano",
|
|
17530
|
+
"language.nl": "Neerlandés",
|
|
17531
|
+
"language.pt": "Portugués",
|
|
17532
|
+
"language.ru": "Ruso",
|
|
17533
|
+
"language.sk": "Eslovaco",
|
|
17534
|
+
"language.zh": "Chino",
|
|
17528
17535
|
"map.add.layer": "",
|
|
17529
17536
|
"map.add.layer.catalog": "",
|
|
17530
17537
|
"map.add.layer.file": "",
|
|
@@ -17575,18 +17582,20 @@ var es = {
|
|
|
17575
17582
|
"record.metadata.author": "",
|
|
17576
17583
|
"record.metadata.catalog": "",
|
|
17577
17584
|
"record.metadata.contact": "",
|
|
17578
|
-
"record.metadata.
|
|
17585
|
+
"record.metadata.creation": "",
|
|
17579
17586
|
"record.metadata.details": "",
|
|
17580
17587
|
"record.metadata.download": "",
|
|
17581
17588
|
"record.metadata.formats": "",
|
|
17582
|
-
"record.metadata.isOpenData": "",
|
|
17583
17589
|
"record.metadata.keywords": "",
|
|
17590
|
+
"record.metadata.languages": "",
|
|
17584
17591
|
"record.metadata.lastUpdate": "",
|
|
17585
17592
|
"record.metadata.links": "",
|
|
17586
17593
|
"record.metadata.noUsage": "",
|
|
17587
|
-
"record.metadata.
|
|
17594
|
+
"record.metadata.otherConstraints": "",
|
|
17588
17595
|
"record.metadata.owner": "",
|
|
17589
17596
|
"record.metadata.preview": "",
|
|
17597
|
+
"record.metadata.producer": "",
|
|
17598
|
+
"record.metadata.publication": "",
|
|
17590
17599
|
"record.metadata.publications": "",
|
|
17591
17600
|
"record.metadata.quality": "",
|
|
17592
17601
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -17608,12 +17617,17 @@ var es = {
|
|
|
17608
17617
|
"record.metadata.quality.updateFrequency.success": "",
|
|
17609
17618
|
"record.metadata.related": "",
|
|
17610
17619
|
"record.metadata.sheet": "",
|
|
17611
|
-
"record.metadata.
|
|
17620
|
+
"record.metadata.status": "",
|
|
17621
|
+
"record.metadata.technical": "",
|
|
17622
|
+
"record.metadata.temporalExtent": "",
|
|
17623
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
17624
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
17625
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
17612
17626
|
"record.metadata.title": "",
|
|
17627
|
+
"record.metadata.topics": "",
|
|
17613
17628
|
"record.metadata.type": "",
|
|
17614
17629
|
"record.metadata.uniqueId": "",
|
|
17615
17630
|
"record.metadata.updateFrequency": "",
|
|
17616
|
-
"record.metadata.updateStatus": "",
|
|
17617
17631
|
"record.metadata.updatedOn": "",
|
|
17618
17632
|
"record.metadata.usage": "",
|
|
17619
17633
|
"record.more.details": "",
|
|
@@ -17645,6 +17659,7 @@ var es = {
|
|
|
17645
17659
|
"search.filters.isSpatial": "",
|
|
17646
17660
|
"search.filters.isSpatial.no": "",
|
|
17647
17661
|
"search.filters.isSpatial.yes": "",
|
|
17662
|
+
"search.filters.keyword": "",
|
|
17648
17663
|
"search.filters.license": "",
|
|
17649
17664
|
"search.filters.license.cc-by": "",
|
|
17650
17665
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17709,20 +17724,21 @@ var fr = {
|
|
|
17709
17724
|
"chart.type.line": "ligne",
|
|
17710
17725
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17711
17726
|
"chart.type.pie": "camembert",
|
|
17727
|
+
"dashboard.createRecord": "Nouvel enregistrement",
|
|
17712
17728
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17713
17729
|
"dashboard.records.all": "Catalogue",
|
|
17714
17730
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
17715
17731
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
17716
17732
|
"dashboard.records.myOrg": "Mon organisation",
|
|
17717
17733
|
"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
17734
|
"dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
|
|
17721
17735
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
17722
17736
|
"dashboard.records.userDetail": "Nom",
|
|
17723
17737
|
"dashboard.records.userEmail": "Email",
|
|
17724
17738
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17725
17739
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17740
|
+
"dashboard.results.listMetadata": "Afficher les métadonnées",
|
|
17741
|
+
"dashboard.results.listResources": "Afficher les ressources",
|
|
17726
17742
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17727
17743
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17728
17744
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17849,38 +17865,38 @@ var fr = {
|
|
|
17849
17865
|
"facets.block.title.tag.default": "Tag",
|
|
17850
17866
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
17851
17867
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
17852
|
-
"language.ca": "
|
|
17853
|
-
"language.cs": "
|
|
17854
|
-
"language.de": "
|
|
17855
|
-
"language.en": "
|
|
17856
|
-
"language.es": "
|
|
17857
|
-
"language.fi": "
|
|
17868
|
+
"language.ca": "Catalan",
|
|
17869
|
+
"language.cs": "Tchèque",
|
|
17870
|
+
"language.de": "Allemand",
|
|
17871
|
+
"language.en": "Anglais",
|
|
17872
|
+
"language.es": "Espagnol",
|
|
17873
|
+
"language.fi": "Finnois",
|
|
17858
17874
|
"language.fr": "Français",
|
|
17859
|
-
"language.is": "
|
|
17860
|
-
"language.it": "
|
|
17861
|
-
"language.ko": "
|
|
17862
|
-
"language.nl": "
|
|
17863
|
-
"language.pt": "
|
|
17864
|
-
"language.ru": "
|
|
17865
|
-
"language.sk": "
|
|
17866
|
-
"language.zh": "
|
|
17867
|
-
"map.add.layer": "",
|
|
17868
|
-
"map.add.layer.catalog": "",
|
|
17869
|
-
"map.add.layer.file": "",
|
|
17870
|
-
"map.add.layer.wfs": "",
|
|
17871
|
-
"map.add.layer.wms": "",
|
|
17872
|
-
"map.addFromFile.placeholder": "",
|
|
17873
|
-
"map.geocoding.placeholder": "",
|
|
17874
|
-
"map.help.addFromFile": "",
|
|
17875
|
-
"map.layer.add": "",
|
|
17876
|
-
"map.layers.available": "",
|
|
17877
|
-
"map.layers.list": "",
|
|
17875
|
+
"language.is": "Islandais",
|
|
17876
|
+
"language.it": "Italien",
|
|
17877
|
+
"language.ko": "Coréen",
|
|
17878
|
+
"language.nl": "Néerlandais",
|
|
17879
|
+
"language.pt": "Portugais",
|
|
17880
|
+
"language.ru": "Russe",
|
|
17881
|
+
"language.sk": "Slovaque",
|
|
17882
|
+
"language.zh": "Chinois",
|
|
17883
|
+
"map.add.layer": "Ajouter une couche",
|
|
17884
|
+
"map.add.layer.catalog": "Du catalogue",
|
|
17885
|
+
"map.add.layer.file": "À partir d'un fichier",
|
|
17886
|
+
"map.add.layer.wfs": "Depuis un service WFS",
|
|
17887
|
+
"map.add.layer.wms": "Depuis un service WMS",
|
|
17888
|
+
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
17889
|
+
"map.geocoding.placeholder": "Rechercher un lieu",
|
|
17890
|
+
"map.help.addFromFile": "Cliquez ou glissez-déposez un fichier pour l'ajouter à la carte (supporte actuellement uniquement le format GeoJSON).",
|
|
17891
|
+
"map.layer.add": "Ajouter",
|
|
17892
|
+
"map.layers.available": "Couches disponibles",
|
|
17893
|
+
"map.layers.list": "Couches",
|
|
17878
17894
|
"map.loading.data": "Chargement des données...",
|
|
17879
|
-
"map.loading.service": "",
|
|
17895
|
+
"map.loading.service": "Chargement du service...",
|
|
17880
17896
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17881
17897
|
"map.select.layer": "Source de données",
|
|
17882
|
-
"map.wfs.urlInput.hint": "",
|
|
17883
|
-
"map.wms.urlInput.hint": "",
|
|
17898
|
+
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
17899
|
+
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
17884
17900
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17885
17901
|
"nav.back": "Retour",
|
|
17886
17902
|
next: next$3,
|
|
@@ -17914,18 +17930,20 @@ var fr = {
|
|
|
17914
17930
|
"record.metadata.author": "Auteur",
|
|
17915
17931
|
"record.metadata.catalog": "Catalogue",
|
|
17916
17932
|
"record.metadata.contact": "Contact",
|
|
17917
|
-
"record.metadata.
|
|
17918
|
-
"record.metadata.details": "
|
|
17933
|
+
"record.metadata.creation": "Date de création",
|
|
17934
|
+
"record.metadata.details": "A propos de la donnée",
|
|
17919
17935
|
"record.metadata.download": "Téléchargements",
|
|
17920
17936
|
"record.metadata.formats": "Formats",
|
|
17921
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17922
17937
|
"record.metadata.keywords": "Mots clés",
|
|
17923
|
-
"record.metadata.
|
|
17938
|
+
"record.metadata.languages": "Langues",
|
|
17939
|
+
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
17924
17940
|
"record.metadata.links": "Liens",
|
|
17925
17941
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17926
|
-
"record.metadata.
|
|
17942
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17927
17943
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17928
17944
|
"record.metadata.preview": "Aperçu",
|
|
17945
|
+
"record.metadata.producer": "Producteur de la donnée",
|
|
17946
|
+
"record.metadata.publication": "Date de publication",
|
|
17929
17947
|
"record.metadata.publications": "données",
|
|
17930
17948
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
17931
17949
|
"record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
|
|
@@ -17947,14 +17965,19 @@ var fr = {
|
|
|
17947
17965
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17948
17966
|
"record.metadata.related": "Voir aussi",
|
|
17949
17967
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17950
|
-
"record.metadata.
|
|
17968
|
+
"record.metadata.status": "Statut",
|
|
17969
|
+
"record.metadata.technical": "Informations techniques",
|
|
17970
|
+
"record.metadata.temporalExtent": "Etendue temporelle",
|
|
17971
|
+
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
17972
|
+
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
17973
|
+
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
17951
17974
|
"record.metadata.title": "Titre",
|
|
17975
|
+
"record.metadata.topics": "Catégories",
|
|
17952
17976
|
"record.metadata.type": "Donnée géographique",
|
|
17953
17977
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17954
17978
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17955
|
-
"record.metadata.
|
|
17956
|
-
"record.metadata.
|
|
17957
|
-
"record.metadata.usage": "Conditions d'utilisation",
|
|
17979
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17980
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17958
17981
|
"record.more.details": "Détails",
|
|
17959
17982
|
"record.tab.chart": "Graphique",
|
|
17960
17983
|
"record.tab.data": "Tableau",
|
|
@@ -17984,6 +18007,7 @@ var fr = {
|
|
|
17984
18007
|
"search.filters.isSpatial": "Données spatiales",
|
|
17985
18008
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17986
18009
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
18010
|
+
"search.filters.keyword": "Mot-clé",
|
|
17987
18011
|
"search.filters.license": "Licence",
|
|
17988
18012
|
"search.filters.license.cc-by": "cc-by",
|
|
17989
18013
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18048,20 +18072,21 @@ var it = {
|
|
|
18048
18072
|
"chart.type.line": "grafico a linee",
|
|
18049
18073
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
18050
18074
|
"chart.type.pie": "grafico a torta",
|
|
18075
|
+
"dashboard.createRecord": "Crea un record",
|
|
18051
18076
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18052
18077
|
"dashboard.records.all": "Catalogo",
|
|
18053
18078
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18054
18079
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18055
18080
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
18056
18081
|
"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
18082
|
"dashboard.records.publishedRecords": "dati pubblicati",
|
|
18060
18083
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
18061
18084
|
"dashboard.records.userDetail": "Nome",
|
|
18062
18085
|
"dashboard.records.userEmail": "Email",
|
|
18063
18086
|
"dashboard.records.username": "Nome utente",
|
|
18064
18087
|
"dashboard.records.users": "utenti",
|
|
18088
|
+
"dashboard.results.listMetadata": "Elenco dei metadati",
|
|
18089
|
+
"dashboard.results.listResources": "Elenco delle risorse",
|
|
18065
18090
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
18066
18091
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
18067
18092
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18188,38 +18213,38 @@ var it = {
|
|
|
18188
18213
|
"facets.block.title.tag.default": "Tag",
|
|
18189
18214
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
18190
18215
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
18191
|
-
"language.ca": "
|
|
18192
|
-
"language.cs": "
|
|
18193
|
-
"language.de": "
|
|
18194
|
-
"language.en": "
|
|
18195
|
-
"language.es": "
|
|
18196
|
-
"language.fi": "
|
|
18197
|
-
"language.fr": "
|
|
18198
|
-
"language.is": "
|
|
18216
|
+
"language.ca": "Catalano",
|
|
18217
|
+
"language.cs": "Ceco",
|
|
18218
|
+
"language.de": "Tedesco",
|
|
18219
|
+
"language.en": "Inglese",
|
|
18220
|
+
"language.es": "Spagnolo",
|
|
18221
|
+
"language.fi": "Finlandese",
|
|
18222
|
+
"language.fr": "Francese",
|
|
18223
|
+
"language.is": "Islandese",
|
|
18199
18224
|
"language.it": "Italiano",
|
|
18200
|
-
"language.ko": "
|
|
18201
|
-
"language.nl": "
|
|
18202
|
-
"language.pt": "
|
|
18203
|
-
"language.ru": "
|
|
18204
|
-
"language.sk": "
|
|
18205
|
-
"language.zh": "
|
|
18225
|
+
"language.ko": "Coreano",
|
|
18226
|
+
"language.nl": "Olandese",
|
|
18227
|
+
"language.pt": "Portoghese",
|
|
18228
|
+
"language.ru": "Russo",
|
|
18229
|
+
"language.sk": "Slovacco",
|
|
18230
|
+
"language.zh": "Cinese",
|
|
18206
18231
|
"map.add.layer": "Aggiungere un layer",
|
|
18207
18232
|
"map.add.layer.catalog": "Dal catalogo",
|
|
18208
18233
|
"map.add.layer.file": "Da un file",
|
|
18209
18234
|
"map.add.layer.wfs": "Da un WFS",
|
|
18210
18235
|
"map.add.layer.wms": "Da un WMS",
|
|
18211
|
-
"map.addFromFile.placeholder": "",
|
|
18212
|
-
"map.geocoding.placeholder": "",
|
|
18213
|
-
"map.help.addFromFile": "",
|
|
18214
|
-
"map.layer.add": "",
|
|
18215
|
-
"map.layers.available": "",
|
|
18236
|
+
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
18237
|
+
"map.geocoding.placeholder": "Cerca un luogo",
|
|
18238
|
+
"map.help.addFromFile": "Clicca o trascina un file per aggiungerlo alla mappa (attualmente supporta solo il formato GeoJSON)",
|
|
18239
|
+
"map.layer.add": "Aggiungi",
|
|
18240
|
+
"map.layers.available": "Layer disponibili",
|
|
18216
18241
|
"map.layers.list": "Layers",
|
|
18217
18242
|
"map.loading.data": "Caricamento dati...",
|
|
18218
|
-
"map.loading.service": "",
|
|
18243
|
+
"map.loading.service": "Caricamento del servizio...",
|
|
18219
18244
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18220
18245
|
"map.select.layer": "Sorgente dati",
|
|
18221
|
-
"map.wfs.urlInput.hint": "",
|
|
18222
|
-
"map.wms.urlInput.hint": "",
|
|
18246
|
+
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
18247
|
+
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
18223
18248
|
"multiselect.filter.placeholder": "Cerca",
|
|
18224
18249
|
"nav.back": "Indietro",
|
|
18225
18250
|
next: next$2,
|
|
@@ -18253,18 +18278,20 @@ var it = {
|
|
|
18253
18278
|
"record.metadata.author": "Autore",
|
|
18254
18279
|
"record.metadata.catalog": "Catalogo",
|
|
18255
18280
|
"record.metadata.contact": "Contatto",
|
|
18256
|
-
"record.metadata.
|
|
18257
|
-
"record.metadata.details": "
|
|
18281
|
+
"record.metadata.creation": "Data di creazione",
|
|
18282
|
+
"record.metadata.details": "A proposito del dati",
|
|
18258
18283
|
"record.metadata.download": "Download",
|
|
18259
18284
|
"record.metadata.formats": "Formati",
|
|
18260
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18261
18285
|
"record.metadata.keywords": "Parole chiave",
|
|
18262
|
-
"record.metadata.
|
|
18286
|
+
"record.metadata.languages": "Lingue",
|
|
18287
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
18263
18288
|
"record.metadata.links": "Collegamenti",
|
|
18264
18289
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18265
|
-
"record.metadata.
|
|
18290
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18266
18291
|
"record.metadata.owner": "Catalogo originale",
|
|
18267
18292
|
"record.metadata.preview": "Anteprima",
|
|
18293
|
+
"record.metadata.producer": "Produttore dei dati",
|
|
18294
|
+
"record.metadata.publication": "Data di pubblicazione",
|
|
18268
18295
|
"record.metadata.publications": "pubblicazioni",
|
|
18269
18296
|
"record.metadata.quality": "Qualità dei metadati",
|
|
18270
18297
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
@@ -18286,14 +18313,19 @@ var it = {
|
|
|
18286
18313
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18287
18314
|
"record.metadata.related": "Vedi anche",
|
|
18288
18315
|
"record.metadata.sheet": "Origine del metadata",
|
|
18289
|
-
"record.metadata.
|
|
18316
|
+
"record.metadata.status": "Stato",
|
|
18317
|
+
"record.metadata.technical": "Informazioni tecniche",
|
|
18318
|
+
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
18319
|
+
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
18320
|
+
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
18321
|
+
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
18290
18322
|
"record.metadata.title": "Titolo",
|
|
18323
|
+
"record.metadata.topics": "Categorie",
|
|
18291
18324
|
"record.metadata.type": "Dati geografici",
|
|
18292
18325
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18293
18326
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18294
|
-
"record.metadata.
|
|
18295
|
-
"record.metadata.
|
|
18296
|
-
"record.metadata.usage": "Condizioni d'uso",
|
|
18327
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18328
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18297
18329
|
"record.more.details": "Dettagli",
|
|
18298
18330
|
"record.tab.chart": "Grafico",
|
|
18299
18331
|
"record.tab.data": "Tabella",
|
|
@@ -18323,6 +18355,7 @@ var it = {
|
|
|
18323
18355
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18324
18356
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18325
18357
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18358
|
+
"search.filters.keyword": "Parola chiave",
|
|
18326
18359
|
"search.filters.license": "Licenza",
|
|
18327
18360
|
"search.filters.license.cc-by": "cc-by",
|
|
18328
18361
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18387,20 +18420,21 @@ var nl = {
|
|
|
18387
18420
|
"chart.type.line": "lijndiagram",
|
|
18388
18421
|
"chart.type.lineSmooth": "glad lijndiagram",
|
|
18389
18422
|
"chart.type.pie": "cirkeldiagram",
|
|
18423
|
+
"dashboard.createRecord": "",
|
|
18390
18424
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
18391
18425
|
"dashboard.records.all": "Catalogus",
|
|
18392
18426
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
18393
18427
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
18394
18428
|
"dashboard.records.myOrg": "Organisatie",
|
|
18395
18429
|
"dashboard.records.myRecords": "Mijn Records",
|
|
18396
|
-
"dashboard.records.noRecord": "",
|
|
18397
|
-
"dashboard.records.noUser": "",
|
|
18398
18430
|
"dashboard.records.publishedRecords": "",
|
|
18399
18431
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
18400
18432
|
"dashboard.records.userDetail": "",
|
|
18401
18433
|
"dashboard.records.userEmail": "",
|
|
18402
18434
|
"dashboard.records.username": "",
|
|
18403
18435
|
"dashboard.records.users": "",
|
|
18436
|
+
"dashboard.results.listMetadata": "",
|
|
18437
|
+
"dashboard.results.listResources": "",
|
|
18404
18438
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18405
18439
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18406
18440
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18527,21 +18561,21 @@ var nl = {
|
|
|
18527
18561
|
"facets.block.title.tag.default": "",
|
|
18528
18562
|
"facets.block.title.th_regions_tree.default": "",
|
|
18529
18563
|
"favorite.not.authenticated.tooltip": "",
|
|
18530
|
-
"language.ca": "
|
|
18531
|
-
"language.cs": "
|
|
18532
|
-
"language.de": "
|
|
18533
|
-
"language.en": "
|
|
18534
|
-
"language.es": "
|
|
18535
|
-
"language.fi": "
|
|
18536
|
-
"language.fr": "
|
|
18537
|
-
"language.is": "
|
|
18538
|
-
"language.it": "
|
|
18539
|
-
"language.ko": "
|
|
18564
|
+
"language.ca": "Catalaans",
|
|
18565
|
+
"language.cs": "Tsjechisch",
|
|
18566
|
+
"language.de": "Duits",
|
|
18567
|
+
"language.en": "Engels",
|
|
18568
|
+
"language.es": "Spaans",
|
|
18569
|
+
"language.fi": "Fins",
|
|
18570
|
+
"language.fr": "Frans",
|
|
18571
|
+
"language.is": "IJslands",
|
|
18572
|
+
"language.it": "Italiaans",
|
|
18573
|
+
"language.ko": "Koreaans",
|
|
18540
18574
|
"language.nl": "Nederlands",
|
|
18541
|
-
"language.pt": "
|
|
18542
|
-
"language.ru": "
|
|
18543
|
-
"language.sk": "
|
|
18544
|
-
"language.zh": "
|
|
18575
|
+
"language.pt": "Portugees",
|
|
18576
|
+
"language.ru": "Russisch",
|
|
18577
|
+
"language.sk": "Slowaaks",
|
|
18578
|
+
"language.zh": "Chinees",
|
|
18545
18579
|
"map.add.layer": "",
|
|
18546
18580
|
"map.add.layer.catalog": "",
|
|
18547
18581
|
"map.add.layer.file": "",
|
|
@@ -18592,18 +18626,20 @@ var nl = {
|
|
|
18592
18626
|
"record.metadata.author": "",
|
|
18593
18627
|
"record.metadata.catalog": "",
|
|
18594
18628
|
"record.metadata.contact": "",
|
|
18595
|
-
"record.metadata.
|
|
18629
|
+
"record.metadata.creation": "",
|
|
18596
18630
|
"record.metadata.details": "",
|
|
18597
18631
|
"record.metadata.download": "",
|
|
18598
18632
|
"record.metadata.formats": "",
|
|
18599
|
-
"record.metadata.isOpenData": "",
|
|
18600
18633
|
"record.metadata.keywords": "",
|
|
18634
|
+
"record.metadata.languages": "",
|
|
18601
18635
|
"record.metadata.lastUpdate": "",
|
|
18602
18636
|
"record.metadata.links": "",
|
|
18603
18637
|
"record.metadata.noUsage": "",
|
|
18604
|
-
"record.metadata.
|
|
18638
|
+
"record.metadata.otherConstraints": "",
|
|
18605
18639
|
"record.metadata.owner": "",
|
|
18606
18640
|
"record.metadata.preview": "",
|
|
18641
|
+
"record.metadata.producer": "",
|
|
18642
|
+
"record.metadata.publication": "",
|
|
18607
18643
|
"record.metadata.publications": "",
|
|
18608
18644
|
"record.metadata.quality": "",
|
|
18609
18645
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18625,12 +18661,17 @@ var nl = {
|
|
|
18625
18661
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18626
18662
|
"record.metadata.related": "",
|
|
18627
18663
|
"record.metadata.sheet": "",
|
|
18628
|
-
"record.metadata.
|
|
18664
|
+
"record.metadata.status": "",
|
|
18665
|
+
"record.metadata.technical": "",
|
|
18666
|
+
"record.metadata.temporalExtent": "",
|
|
18667
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
18668
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
18669
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18629
18670
|
"record.metadata.title": "",
|
|
18671
|
+
"record.metadata.topics": "",
|
|
18630
18672
|
"record.metadata.type": "",
|
|
18631
18673
|
"record.metadata.uniqueId": "",
|
|
18632
18674
|
"record.metadata.updateFrequency": "",
|
|
18633
|
-
"record.metadata.updateStatus": "",
|
|
18634
18675
|
"record.metadata.updatedOn": "",
|
|
18635
18676
|
"record.metadata.usage": "",
|
|
18636
18677
|
"record.more.details": "",
|
|
@@ -18662,6 +18703,7 @@ var nl = {
|
|
|
18662
18703
|
"search.filters.isSpatial": "",
|
|
18663
18704
|
"search.filters.isSpatial.no": "",
|
|
18664
18705
|
"search.filters.isSpatial.yes": "",
|
|
18706
|
+
"search.filters.keyword": "",
|
|
18665
18707
|
"search.filters.license": "",
|
|
18666
18708
|
"search.filters.license.cc-by": "",
|
|
18667
18709
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18726,20 +18768,21 @@ var pt = {
|
|
|
18726
18768
|
"chart.type.line": "gráfico de linha",
|
|
18727
18769
|
"chart.type.lineSmooth": "gráfico de linha suave",
|
|
18728
18770
|
"chart.type.pie": "gráfico de pizza",
|
|
18771
|
+
"dashboard.createRecord": "",
|
|
18729
18772
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
18730
18773
|
"dashboard.records.all": "Catálogo",
|
|
18731
18774
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
18732
18775
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
18733
18776
|
"dashboard.records.myOrg": "Organização",
|
|
18734
18777
|
"dashboard.records.myRecords": "Meus Registros",
|
|
18735
|
-
"dashboard.records.noRecord": "",
|
|
18736
|
-
"dashboard.records.noUser": "",
|
|
18737
18778
|
"dashboard.records.publishedRecords": "",
|
|
18738
18779
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
18739
18780
|
"dashboard.records.userDetail": "",
|
|
18740
18781
|
"dashboard.records.userEmail": "",
|
|
18741
18782
|
"dashboard.records.username": "",
|
|
18742
18783
|
"dashboard.records.users": "",
|
|
18784
|
+
"dashboard.results.listMetadata": "",
|
|
18785
|
+
"dashboard.results.listResources": "",
|
|
18743
18786
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "",
|
|
18744
18787
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "",
|
|
18745
18788
|
"datafeeder.analysisProgressBar.illustration.samplingData": "",
|
|
@@ -18866,21 +18909,21 @@ var pt = {
|
|
|
18866
18909
|
"facets.block.title.tag.default": "",
|
|
18867
18910
|
"facets.block.title.th_regions_tree.default": "",
|
|
18868
18911
|
"favorite.not.authenticated.tooltip": "",
|
|
18869
|
-
"language.ca": "
|
|
18870
|
-
"language.cs": "
|
|
18871
|
-
"language.de": "
|
|
18872
|
-
"language.en": "
|
|
18873
|
-
"language.es": "
|
|
18874
|
-
"language.fi": "
|
|
18875
|
-
"language.fr": "
|
|
18876
|
-
"language.is": "
|
|
18912
|
+
"language.ca": "Catalão",
|
|
18913
|
+
"language.cs": "Tcheco",
|
|
18914
|
+
"language.de": "Alemão",
|
|
18915
|
+
"language.en": "Inglês",
|
|
18916
|
+
"language.es": "Espanhol",
|
|
18917
|
+
"language.fi": "Finlandês",
|
|
18918
|
+
"language.fr": "Francês",
|
|
18919
|
+
"language.is": "Islandês",
|
|
18877
18920
|
"language.it": "Italiano",
|
|
18878
|
-
"language.ko": "
|
|
18879
|
-
"language.nl": "
|
|
18921
|
+
"language.ko": "Coreano",
|
|
18922
|
+
"language.nl": "Holandês",
|
|
18880
18923
|
"language.pt": "Português",
|
|
18881
|
-
"language.ru": "
|
|
18882
|
-
"language.sk": "
|
|
18883
|
-
"language.zh": "
|
|
18924
|
+
"language.ru": "Russo",
|
|
18925
|
+
"language.sk": "Eslovaco",
|
|
18926
|
+
"language.zh": "Chinês",
|
|
18884
18927
|
"map.add.layer": "",
|
|
18885
18928
|
"map.add.layer.catalog": "",
|
|
18886
18929
|
"map.add.layer.file": "",
|
|
@@ -18931,18 +18974,20 @@ var pt = {
|
|
|
18931
18974
|
"record.metadata.author": "",
|
|
18932
18975
|
"record.metadata.catalog": "",
|
|
18933
18976
|
"record.metadata.contact": "",
|
|
18934
|
-
"record.metadata.
|
|
18977
|
+
"record.metadata.creation": "",
|
|
18935
18978
|
"record.metadata.details": "",
|
|
18936
18979
|
"record.metadata.download": "",
|
|
18937
18980
|
"record.metadata.formats": "",
|
|
18938
|
-
"record.metadata.isOpenData": "",
|
|
18939
18981
|
"record.metadata.keywords": "",
|
|
18982
|
+
"record.metadata.languages": "",
|
|
18940
18983
|
"record.metadata.lastUpdate": "",
|
|
18941
18984
|
"record.metadata.links": "",
|
|
18942
18985
|
"record.metadata.noUsage": "",
|
|
18943
|
-
"record.metadata.
|
|
18986
|
+
"record.metadata.otherConstraints": "",
|
|
18944
18987
|
"record.metadata.owner": "",
|
|
18945
18988
|
"record.metadata.preview": "",
|
|
18989
|
+
"record.metadata.producer": "",
|
|
18990
|
+
"record.metadata.publication": "",
|
|
18946
18991
|
"record.metadata.publications": "",
|
|
18947
18992
|
"record.metadata.quality": "",
|
|
18948
18993
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18964,12 +19009,17 @@ var pt = {
|
|
|
18964
19009
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18965
19010
|
"record.metadata.related": "",
|
|
18966
19011
|
"record.metadata.sheet": "",
|
|
18967
|
-
"record.metadata.
|
|
19012
|
+
"record.metadata.status": "",
|
|
19013
|
+
"record.metadata.technical": "",
|
|
19014
|
+
"record.metadata.temporalExtent": "",
|
|
19015
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
19016
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
19017
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18968
19018
|
"record.metadata.title": "",
|
|
19019
|
+
"record.metadata.topics": "",
|
|
18969
19020
|
"record.metadata.type": "",
|
|
18970
19021
|
"record.metadata.uniqueId": "",
|
|
18971
19022
|
"record.metadata.updateFrequency": "",
|
|
18972
|
-
"record.metadata.updateStatus": "",
|
|
18973
19023
|
"record.metadata.updatedOn": "",
|
|
18974
19024
|
"record.metadata.usage": "",
|
|
18975
19025
|
"record.more.details": "",
|
|
@@ -19001,6 +19051,7 @@ var pt = {
|
|
|
19001
19051
|
"search.filters.isSpatial": "",
|
|
19002
19052
|
"search.filters.isSpatial.no": "",
|
|
19003
19053
|
"search.filters.isSpatial.yes": "",
|
|
19054
|
+
"search.filters.keyword": "",
|
|
19004
19055
|
"search.filters.license": "",
|
|
19005
19056
|
"search.filters.license.cc-by": "",
|
|
19006
19057
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19109,8 +19160,8 @@ class Gn4FieldMapper {
|
|
|
19109
19160
|
},
|
|
19110
19161
|
cl_topic: (output, source) => ({
|
|
19111
19162
|
...output,
|
|
19112
|
-
|
|
19113
|
-
...(output.
|
|
19163
|
+
topics: [
|
|
19164
|
+
...(output.topics || []),
|
|
19114
19165
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19115
19166
|
],
|
|
19116
19167
|
}),
|
|
@@ -19134,6 +19185,18 @@ class Gn4FieldMapper {
|
|
|
19134
19185
|
...output,
|
|
19135
19186
|
recordUpdated: toDate(selectField(source, 'changeDate')),
|
|
19136
19187
|
}),
|
|
19188
|
+
publicationDateForResource: (output, source) => ({
|
|
19189
|
+
...output,
|
|
19190
|
+
recordPublished: toDate(selectField(source, 'publicationDateForResource')),
|
|
19191
|
+
}),
|
|
19192
|
+
resourceLanguage: (output, source) => {
|
|
19193
|
+
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
19194
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
19195
|
+
return {
|
|
19196
|
+
...output,
|
|
19197
|
+
languages,
|
|
19198
|
+
};
|
|
19199
|
+
},
|
|
19137
19200
|
link: (output, source) => {
|
|
19138
19201
|
const rawLinks = getAsArray(selectField(source, 'link'));
|
|
19139
19202
|
const distributions = rawLinks
|
|
@@ -19165,31 +19228,22 @@ class Gn4FieldMapper {
|
|
|
19165
19228
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19166
19229
|
}, output);
|
|
19167
19230
|
},
|
|
19168
|
-
|
|
19231
|
+
allKeywords: (output, source) => ({
|
|
19169
19232
|
...output,
|
|
19170
|
-
keywords:
|
|
19233
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19171
19234
|
}),
|
|
19172
19235
|
inspireTheme: (output, source) => ({
|
|
19173
19236
|
...output,
|
|
19174
|
-
|
|
19175
|
-
...(output.
|
|
19237
|
+
topics: [
|
|
19238
|
+
...(output.topics || []),
|
|
19176
19239
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19177
19240
|
],
|
|
19178
19241
|
}),
|
|
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
|
-
}),
|
|
19242
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19243
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19244
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19245
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19246
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19193
19247
|
lineageObject: (output, source) => ({
|
|
19194
19248
|
...output,
|
|
19195
19249
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19235,8 +19289,8 @@ class Gn4FieldMapper {
|
|
|
19235
19289
|
],
|
|
19236
19290
|
};
|
|
19237
19291
|
},
|
|
19238
|
-
|
|
19239
|
-
const ranges = getAsArray(selectField(source, '
|
|
19292
|
+
resourceTemporalExtentDateRange: (output, source) => {
|
|
19293
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalExtentDateRange'));
|
|
19240
19294
|
return {
|
|
19241
19295
|
...output,
|
|
19242
19296
|
temporalExtents: ranges.map((range) => {
|
|
@@ -19251,31 +19305,42 @@ class Gn4FieldMapper {
|
|
|
19251
19305
|
},
|
|
19252
19306
|
};
|
|
19253
19307
|
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
|
-
|
|
19308
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19309
|
+
let outputField;
|
|
19310
|
+
switch (type) {
|
|
19311
|
+
case 'license':
|
|
19312
|
+
outputField = 'licenses';
|
|
19313
|
+
break;
|
|
19314
|
+
case 'legal':
|
|
19315
|
+
outputField = 'legalConstraints';
|
|
19316
|
+
break;
|
|
19317
|
+
case 'security':
|
|
19318
|
+
outputField = 'securityConstraints';
|
|
19319
|
+
break;
|
|
19320
|
+
case 'other':
|
|
19321
|
+
outputField = 'otherConstraints';
|
|
19322
|
+
break;
|
|
19323
|
+
}
|
|
19324
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19325
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19326
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19327
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19328
|
+
return {
|
|
19329
|
+
text,
|
|
19330
|
+
...(url ? { url } : {}),
|
|
19331
|
+
};
|
|
19332
|
+
}));
|
|
19333
|
+
const result = {
|
|
19334
|
+
...output,
|
|
19335
|
+
[outputField]: outputArray,
|
|
19336
|
+
};
|
|
19337
|
+
// avoid legal constraints being duplicates of licenses
|
|
19338
|
+
if ('legalConstraints' in result &&
|
|
19339
|
+
(type === 'legal' || type === 'license')) {
|
|
19340
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19341
|
+
}
|
|
19342
|
+
return result;
|
|
19343
|
+
};
|
|
19279
19344
|
this.mapLink = (sourceLink) => {
|
|
19280
19345
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19281
19346
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19323,17 +19388,6 @@ class Gn4FieldMapper {
|
|
|
19323
19388
|
extras: { ...(output.extras || {}), ...value },
|
|
19324
19389
|
});
|
|
19325
19390
|
}
|
|
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
19391
|
getMappingFn(fieldName) {
|
|
19338
19392
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19339
19393
|
}
|
|
@@ -19393,17 +19447,20 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19393
19447
|
status: null,
|
|
19394
19448
|
lineage: null,
|
|
19395
19449
|
recordUpdated: null,
|
|
19450
|
+
recordPublished: null,
|
|
19396
19451
|
ownerOrganization: null,
|
|
19397
19452
|
licenses: [],
|
|
19453
|
+
legalConstraints: [],
|
|
19454
|
+
securityConstraints: [],
|
|
19455
|
+
otherConstraints: [],
|
|
19398
19456
|
contacts: [],
|
|
19399
19457
|
contactsForResource: [],
|
|
19400
|
-
accessConstraints: [],
|
|
19401
19458
|
keywords: [],
|
|
19402
|
-
|
|
19403
|
-
useLimitations: [],
|
|
19459
|
+
topics: [],
|
|
19404
19460
|
spatialExtents: [],
|
|
19405
19461
|
temporalExtents: [],
|
|
19406
19462
|
overviews: [],
|
|
19463
|
+
languages: [],
|
|
19407
19464
|
};
|
|
19408
19465
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19409
19466
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -19563,7 +19620,7 @@ class ElasticsearchService {
|
|
|
19563
19620
|
},
|
|
19564
19621
|
};
|
|
19565
19622
|
}
|
|
19566
|
-
getRelatedRecordPayload(title, uuid, size = 6, _source = ES_SOURCE_SUMMARY) {
|
|
19623
|
+
getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
|
|
19567
19624
|
return {
|
|
19568
19625
|
query: {
|
|
19569
19626
|
bool: {
|
|
@@ -20168,11 +20225,18 @@ class OrganizationsFromMetadataService {
|
|
|
20168
20225
|
if (!allContactOrgs.length)
|
|
20169
20226
|
return of(record);
|
|
20170
20227
|
const ownerOrganization = allContactOrgs[0];
|
|
20171
|
-
|
|
20228
|
+
// read the owner group as well to have a fallback logo
|
|
20229
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20230
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20231
|
+
return group.id === Number(groupId);
|
|
20232
|
+
})));
|
|
20233
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20172
20234
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20235
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20173
20236
|
return {
|
|
20174
20237
|
...record,
|
|
20175
20238
|
ownerOrganization: {
|
|
20239
|
+
logoUrl,
|
|
20176
20240
|
...ownerOrganization,
|
|
20177
20241
|
...recordOrganisation,
|
|
20178
20242
|
},
|
|
@@ -20483,12 +20547,21 @@ class Gn4PlatformMapper {
|
|
|
20483
20547
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20484
20548
|
return { ...apiUser, id: id.toString() };
|
|
20485
20549
|
}
|
|
20486
|
-
thesaurusFromApi(thesaurus) {
|
|
20550
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20487
20551
|
return thesaurus.map((keyword) => {
|
|
20488
|
-
|
|
20552
|
+
let key = keyword.uri;
|
|
20553
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20554
|
+
if (key.indexOf('@@@') > -1) {
|
|
20555
|
+
key = key.split('@@@')[1];
|
|
20556
|
+
}
|
|
20557
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20558
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20559
|
+
? keyword.definitions[lang3]
|
|
20560
|
+
: keyword.definition;
|
|
20489
20561
|
return {
|
|
20490
|
-
key
|
|
20491
|
-
label
|
|
20562
|
+
key,
|
|
20563
|
+
label,
|
|
20564
|
+
description,
|
|
20492
20565
|
};
|
|
20493
20566
|
});
|
|
20494
20567
|
}
|
|
@@ -20501,13 +20574,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20501
20574
|
|
|
20502
20575
|
const minApiVersion = '4.2.2';
|
|
20503
20576
|
class Gn4PlatformService {
|
|
20504
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20577
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20505
20578
|
this.siteApiService = siteApiService;
|
|
20506
20579
|
this.meApi = meApi;
|
|
20507
20580
|
this.usersApi = usersApi;
|
|
20508
20581
|
this.mapper = mapper;
|
|
20509
20582
|
this.toolsApiService = toolsApiService;
|
|
20510
20583
|
this.registriesApiService = registriesApiService;
|
|
20584
|
+
this.langService = langService;
|
|
20511
20585
|
this.type = 'GeoNetwork';
|
|
20512
20586
|
this.keyTranslations$ = this.toolsApiService
|
|
20513
20587
|
.getTranslationsPackage1('gnui')
|
|
@@ -20521,6 +20595,11 @@ class Gn4PlatformService {
|
|
|
20521
20595
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20522
20596
|
}
|
|
20523
20597
|
}), shareReplay(1));
|
|
20598
|
+
/**
|
|
20599
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20600
|
+
* @private
|
|
20601
|
+
*/
|
|
20602
|
+
this.thesauri = {};
|
|
20524
20603
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20525
20604
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20526
20605
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20547,19 +20626,36 @@ class Gn4PlatformService {
|
|
|
20547
20626
|
return this.users$;
|
|
20548
20627
|
}
|
|
20549
20628
|
translateKey(key) {
|
|
20629
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20630
|
+
if (key.match(/^https?:\/\//)) {
|
|
20631
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20632
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20633
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20634
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20635
|
+
for (const item of thesaurus) {
|
|
20636
|
+
if (item.key === key)
|
|
20637
|
+
return item.label;
|
|
20638
|
+
}
|
|
20639
|
+
return key;
|
|
20640
|
+
}));
|
|
20641
|
+
}
|
|
20550
20642
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20551
20643
|
}
|
|
20552
|
-
|
|
20553
|
-
|
|
20554
|
-
.
|
|
20555
|
-
|
|
20644
|
+
getThesaurusByUri(uri) {
|
|
20645
|
+
if (this.thesauri[uri]) {
|
|
20646
|
+
return this.thesauri[uri];
|
|
20647
|
+
}
|
|
20648
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20649
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20650
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20651
|
+
return this.thesauri[uri];
|
|
20556
20652
|
}
|
|
20557
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20653
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20558
20654
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20559
20655
|
}
|
|
20560
20656
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20561
20657
|
type: Injectable
|
|
20562
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20658
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20563
20659
|
|
|
20564
20660
|
function provideGn4() {
|
|
20565
20661
|
return [
|
|
@@ -21107,6 +21203,38 @@ function createFuzzyFilter(pattern) {
|
|
|
21107
21203
|
};
|
|
21108
21204
|
}
|
|
21109
21205
|
|
|
21206
|
+
function getTemporalRangeUnion(ranges) {
|
|
21207
|
+
let earliestStartDate = Infinity;
|
|
21208
|
+
let latestEndDate = -Infinity;
|
|
21209
|
+
if (ranges.length) {
|
|
21210
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
21211
|
+
const rangeStart = ranges[i].start
|
|
21212
|
+
? new Date(ranges[i].start).getTime()
|
|
21213
|
+
: -Infinity;
|
|
21214
|
+
const rangeEnd = ranges[i].end
|
|
21215
|
+
? new Date(ranges[i].end).getTime()
|
|
21216
|
+
: Infinity;
|
|
21217
|
+
if (rangeStart < earliestStartDate) {
|
|
21218
|
+
earliestStartDate = rangeStart;
|
|
21219
|
+
}
|
|
21220
|
+
if (rangeEnd > latestEndDate) {
|
|
21221
|
+
latestEndDate = rangeEnd;
|
|
21222
|
+
}
|
|
21223
|
+
}
|
|
21224
|
+
return {
|
|
21225
|
+
start: earliestStartDate !== -Infinity
|
|
21226
|
+
? new Date(earliestStartDate).toLocaleDateString()
|
|
21227
|
+
: undefined,
|
|
21228
|
+
end: latestEndDate !== Infinity
|
|
21229
|
+
? new Date(latestEndDate).toLocaleDateString()
|
|
21230
|
+
: undefined,
|
|
21231
|
+
};
|
|
21232
|
+
}
|
|
21233
|
+
else {
|
|
21234
|
+
return undefined;
|
|
21235
|
+
}
|
|
21236
|
+
}
|
|
21237
|
+
|
|
21110
21238
|
marker('downloads.wfs.featuretype.not.found');
|
|
21111
21239
|
const FORMATS = {
|
|
21112
21240
|
csv: {
|
|
@@ -22637,6 +22765,9 @@ class MapContextService {
|
|
|
22637
22765
|
if (mapConfig) {
|
|
22638
22766
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22639
22767
|
}
|
|
22768
|
+
else {
|
|
22769
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22770
|
+
}
|
|
22640
22771
|
if (!mapContext.view?.extent &&
|
|
22641
22772
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22642
22773
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22747,6 +22878,11 @@ class MapContextService {
|
|
|
22747
22878
|
}
|
|
22748
22879
|
return view;
|
|
22749
22880
|
}
|
|
22881
|
+
addDefaultBaselayerContext(layers) {
|
|
22882
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22883
|
+
? layers
|
|
22884
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22885
|
+
}
|
|
22750
22886
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22751
22887
|
return {
|
|
22752
22888
|
...mapContext,
|
|
@@ -23293,11 +23429,11 @@ class ThumbnailComponent {
|
|
|
23293
23429
|
}
|
|
23294
23430
|
}
|
|
23295
23431
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, deps: [{ token: THUMBNAIL_PLACEHOLDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23296
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23297
23433
|
}
|
|
23298
23434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23299
23435
|
type: Component,
|
|
23300
|
-
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23436
|
+
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23301
23437
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23302
23438
|
type: Optional
|
|
23303
23439
|
}, {
|
|
@@ -23425,8 +23561,7 @@ class MetadataQualityComponent {
|
|
|
23425
23561
|
: this.calculatedQualityScore;
|
|
23426
23562
|
}
|
|
23427
23563
|
get calculatedQualityScore() {
|
|
23428
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23429
|
-
this.items.length);
|
|
23564
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23430
23565
|
}
|
|
23431
23566
|
showMenu() {
|
|
23432
23567
|
this.isMenuShown = true;
|
|
@@ -23444,7 +23579,7 @@ class MetadataQualityComponent {
|
|
|
23444
23579
|
this.items = [];
|
|
23445
23580
|
this.add('title', !!this.metadata?.title);
|
|
23446
23581
|
this.add('description', !!this.metadata?.abstract);
|
|
23447
|
-
this.add('topic', this.metadata?.
|
|
23582
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23448
23583
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23449
23584
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23450
23585
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23892,6 +24027,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23892
24027
|
type: Input
|
|
23893
24028
|
}] } });
|
|
23894
24029
|
|
|
24030
|
+
class MarkdownParserComponent {
|
|
24031
|
+
get parsedMarkdown() {
|
|
24032
|
+
return marked.parse(this.textContent);
|
|
24033
|
+
}
|
|
24034
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24035
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24036
|
+
}
|
|
24037
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24038
|
+
type: Component,
|
|
24039
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
24040
|
+
}], propDecorators: { textContent: [{
|
|
24041
|
+
type: Input
|
|
24042
|
+
}] } });
|
|
24043
|
+
|
|
23895
24044
|
class ContentGhostComponent {
|
|
23896
24045
|
constructor() {
|
|
23897
24046
|
this.ghostClass = '';
|
|
@@ -24031,14 +24180,16 @@ class MaxLinesComponent {
|
|
|
24031
24180
|
return result;
|
|
24032
24181
|
}
|
|
24033
24182
|
ngOnDestroy() {
|
|
24183
|
+
if (!this.observer)
|
|
24184
|
+
return;
|
|
24034
24185
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
24035
24186
|
}
|
|
24036
24187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24037
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24038
24189
|
}
|
|
24039
24190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
24040
24191
|
type: Component,
|
|
24041
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24192
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24042
24193
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
24043
24194
|
type: Input
|
|
24044
24195
|
}], container: [{
|
|
@@ -24046,36 +24197,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24046
24197
|
args: ['container']
|
|
24047
24198
|
}] } });
|
|
24048
24199
|
|
|
24049
|
-
class MarkdownParserComponent {
|
|
24050
|
-
get parsedMarkdown() {
|
|
24051
|
-
return marked.parse(this.textContent);
|
|
24052
|
-
}
|
|
24053
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24054
|
-
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 }); }
|
|
24055
|
-
}
|
|
24056
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24057
|
-
type: Component,
|
|
24058
|
-
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"] }]
|
|
24059
|
-
}], propDecorators: { textContent: [{
|
|
24060
|
-
type: Input
|
|
24061
|
-
}] } });
|
|
24062
|
-
|
|
24063
24200
|
class MetadataInfoComponent {
|
|
24064
24201
|
constructor() {
|
|
24065
24202
|
this.keyword = new EventEmitter();
|
|
24066
24203
|
}
|
|
24067
24204
|
get hasUsage() {
|
|
24068
24205
|
return (this.metadata.extras?.isOpenData === true ||
|
|
24069
|
-
this.metadata.
|
|
24070
|
-
|
|
24206
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24207
|
+
this.legalConstraints.length > 0) ||
|
|
24208
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24209
|
+
this.otherConstraints.length > 0) ||
|
|
24210
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24071
24211
|
}
|
|
24072
|
-
get
|
|
24212
|
+
get legalConstraints() {
|
|
24073
24213
|
let array = [];
|
|
24074
|
-
if (this.metadata.
|
|
24075
|
-
array = array.concat(this.metadata.
|
|
24214
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24215
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24076
24216
|
}
|
|
24077
|
-
|
|
24078
|
-
|
|
24217
|
+
return array;
|
|
24218
|
+
}
|
|
24219
|
+
get otherConstraints() {
|
|
24220
|
+
let array = [];
|
|
24221
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24222
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24223
|
+
}
|
|
24224
|
+
return array;
|
|
24225
|
+
}
|
|
24226
|
+
get licenses() {
|
|
24227
|
+
let array = [];
|
|
24228
|
+
if (this.metadata.licenses?.length) {
|
|
24229
|
+
array = array.concat(this.metadata.licenses
|
|
24230
|
+
.filter((c) => c.text)
|
|
24231
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
24079
24232
|
}
|
|
24080
24233
|
return array;
|
|
24081
24234
|
}
|
|
@@ -24091,22 +24244,28 @@ class MetadataInfoComponent {
|
|
|
24091
24244
|
return undefined;
|
|
24092
24245
|
}
|
|
24093
24246
|
}
|
|
24247
|
+
get temporalExtent() {
|
|
24248
|
+
const temporalExtents = this.metadata.temporalExtents;
|
|
24249
|
+
return getTemporalRangeUnion(temporalExtents);
|
|
24250
|
+
}
|
|
24251
|
+
get shownOrganization() {
|
|
24252
|
+
return this.metadata.ownerOrganization;
|
|
24253
|
+
}
|
|
24254
|
+
get resourceContact() {
|
|
24255
|
+
return this.metadata.contactsForResource?.[0];
|
|
24256
|
+
}
|
|
24094
24257
|
fieldReady(propName) {
|
|
24095
24258
|
return !this.incomplete || propName in this.metadata;
|
|
24096
24259
|
}
|
|
24097
24260
|
onKeywordClick(keyword) {
|
|
24098
24261
|
this.keyword.emit(keyword);
|
|
24099
24262
|
}
|
|
24100
|
-
copyText() {
|
|
24101
|
-
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
24102
|
-
event.target.blur();
|
|
24103
|
-
}
|
|
24104
24263
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"py-4 px-6 rounded bg-gray-100 text-gray-700 flex flex-wrap gap-2\">\n <gn-ui-badge *ngIf=\"metadata.extras?.isOpenData\">\n <span translate>record.metadata.isOpenData</span>\n </gn-ui-badge>\n <span\n class=\"text-primary font-medium\"\n *ngFor=\"let usage of usages\"\n gnUiLinkify\n >\n {{ usage }}\n </span>\n <span class=\"text-primary font-medium noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24264
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24106
24265
|
}
|
|
24107
24266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24108
24267
|
type: Component,
|
|
24109
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-
|
|
24268
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
24110
24269
|
}], propDecorators: { metadata: [{
|
|
24111
24270
|
type: Input
|
|
24112
24271
|
}], incomplete: [{
|
|
@@ -24175,11 +24334,11 @@ class ButtonComponent {
|
|
|
24175
24334
|
propagateToDocumentOnly(event);
|
|
24176
24335
|
}
|
|
24177
24336
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24337
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, isStandalone: true, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24179
24338
|
}
|
|
24180
24339
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24181
24340
|
type: Component,
|
|
24182
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24341
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24183
24342
|
}], propDecorators: { type: [{
|
|
24184
24343
|
type: Input
|
|
24185
24344
|
}], disabled: [{
|
|
@@ -24459,11 +24618,11 @@ class CarouselComponent {
|
|
|
24459
24618
|
this.emblaApi.scrollTo(stepIndex);
|
|
24460
24619
|
}
|
|
24461
24620
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24462
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24621
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24463
24622
|
}
|
|
24464
24623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24465
24624
|
type: Component,
|
|
24466
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24625
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24467
24626
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24468
24627
|
type: Input
|
|
24469
24628
|
}], stepsContainerClass: [{
|
|
@@ -24615,11 +24774,11 @@ class MetadataContactComponent {
|
|
|
24615
24774
|
this.organizationClick.emit(this.shownOrganization);
|
|
24616
24775
|
}
|
|
24617
24776
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24777
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24619
24778
|
}
|
|
24620
24779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24621
24780
|
type: Component,
|
|
24622
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24781
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24623
24782
|
}], propDecorators: { metadata: [{
|
|
24624
24783
|
type: Input
|
|
24625
24784
|
}], organizationClick: [{
|
|
@@ -24843,11 +25002,11 @@ class DropdownSelectorComponent {
|
|
|
24843
25002
|
}
|
|
24844
25003
|
}
|
|
24845
25004
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24846
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25005
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24847
25006
|
}
|
|
24848
25007
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24849
25008
|
type: Component,
|
|
24850
|
-
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25009
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24851
25010
|
}], propDecorators: { title: [{
|
|
24852
25011
|
type: Input
|
|
24853
25012
|
}], showTitle: [{
|
|
@@ -25023,11 +25182,11 @@ class DropdownMultiselectComponent {
|
|
|
25023
25182
|
this.setFocus();
|
|
25024
25183
|
}
|
|
25025
25184
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25026
|
-
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 }); }
|
|
25185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25027
25186
|
}
|
|
25028
25187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
25029
25188
|
type: Component,
|
|
25030
|
-
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" }]
|
|
25189
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
25031
25190
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
25032
25191
|
type: Input
|
|
25033
25192
|
}], choices: [{
|
|
@@ -25181,11 +25340,11 @@ class TextAreaComponent {
|
|
|
25181
25340
|
this.rawChange.next(value);
|
|
25182
25341
|
}
|
|
25183
25342
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25343
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25185
25344
|
}
|
|
25186
25345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25187
25346
|
type: Component,
|
|
25188
|
-
args: [{ selector: 'gn-ui-text-area', template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25347
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25189
25348
|
}], propDecorators: { value: [{
|
|
25190
25349
|
type: Input
|
|
25191
25350
|
}], placeholder: [{
|
|
@@ -25455,11 +25614,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25455
25614
|
|
|
25456
25615
|
class NavigationButtonComponent {
|
|
25457
25616
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25458
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25459
25618
|
}
|
|
25460
25619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25461
25620
|
type: Component,
|
|
25462
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25621
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
25463
25622
|
}], propDecorators: { label: [{
|
|
25464
25623
|
type: Input
|
|
25465
25624
|
}], icon: [{
|
|
@@ -25773,10 +25932,8 @@ class UiInputsModule {
|
|
|
25773
25932
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25774
25933
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25775
25934
|
AutocompleteComponent,
|
|
25776
|
-
ButtonComponent,
|
|
25777
25935
|
TextInputComponent,
|
|
25778
25936
|
DragAndDropFileInputComponent,
|
|
25779
|
-
TextAreaComponent,
|
|
25780
25937
|
ChipsInputComponent,
|
|
25781
25938
|
NavigationButtonComponent,
|
|
25782
25939
|
StarToggleComponent,
|
|
@@ -25809,7 +25966,9 @@ class UiInputsModule {
|
|
|
25809
25966
|
MatInputModule,
|
|
25810
25967
|
MatDatepickerModule,
|
|
25811
25968
|
MatNativeDateModule,
|
|
25812
|
-
EditableLabelDirective
|
|
25969
|
+
EditableLabelDirective,
|
|
25970
|
+
TextAreaComponent,
|
|
25971
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25813
25972
|
AutocompleteComponent,
|
|
25814
25973
|
ButtonComponent,
|
|
25815
25974
|
TextInputComponent,
|
|
@@ -25851,10 +26010,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25851
26010
|
declarations: [
|
|
25852
26011
|
DropdownSelectorComponent,
|
|
25853
26012
|
AutocompleteComponent,
|
|
25854
|
-
ButtonComponent,
|
|
25855
26013
|
TextInputComponent,
|
|
25856
26014
|
DragAndDropFileInputComponent,
|
|
25857
|
-
TextAreaComponent,
|
|
25858
26015
|
ChipsInputComponent,
|
|
25859
26016
|
NavigationButtonComponent,
|
|
25860
26017
|
StarToggleComponent,
|
|
@@ -25893,6 +26050,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25893
26050
|
MatDatepickerModule,
|
|
25894
26051
|
MatNativeDateModule,
|
|
25895
26052
|
EditableLabelDirective,
|
|
26053
|
+
TextAreaComponent,
|
|
26054
|
+
ButtonComponent,
|
|
25896
26055
|
],
|
|
25897
26056
|
exports: [
|
|
25898
26057
|
DropdownSelectorComponent,
|
|
@@ -26012,7 +26171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26012
26171
|
|
|
26013
26172
|
const DEFAULT_PARAMS = {
|
|
26014
26173
|
OFFSET: '',
|
|
26015
|
-
LIMIT: '',
|
|
26174
|
+
LIMIT: '-1',
|
|
26016
26175
|
FORMAT: 'json',
|
|
26017
26176
|
};
|
|
26018
26177
|
class RecordApiFormComponent {
|
|
@@ -26041,6 +26200,8 @@ class RecordApiFormComponent {
|
|
|
26041
26200
|
}
|
|
26042
26201
|
return outputUrl;
|
|
26043
26202
|
}));
|
|
26203
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
26204
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
26044
26205
|
}
|
|
26045
26206
|
set apiLink(value) {
|
|
26046
26207
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -26050,10 +26211,11 @@ class RecordApiFormComponent {
|
|
|
26050
26211
|
this.offset$.next(value);
|
|
26051
26212
|
}
|
|
26052
26213
|
setLimit(value) {
|
|
26053
|
-
|
|
26214
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26215
|
+
this.limit$.next(newLimit);
|
|
26054
26216
|
}
|
|
26055
26217
|
setFormat(value) {
|
|
26056
|
-
this.format$.next(value);
|
|
26218
|
+
this.format$.next(String(value));
|
|
26057
26219
|
}
|
|
26058
26220
|
resetUrl() {
|
|
26059
26221
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -26061,11 +26223,11 @@ class RecordApiFormComponent {
|
|
|
26061
26223
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26062
26224
|
}
|
|
26063
26225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26064
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26065
26227
|
}
|
|
26066
26228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26067
26229
|
type: Component,
|
|
26068
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26230
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
26069
26231
|
}], propDecorators: { apiLink: [{
|
|
26070
26232
|
type: Input
|
|
26071
26233
|
}] } });
|
|
@@ -26111,7 +26273,6 @@ class UiElementsModule {
|
|
|
26111
26273
|
PaginationButtonsComponent,
|
|
26112
26274
|
MaxLinesComponent,
|
|
26113
26275
|
RecordApiFormComponent,
|
|
26114
|
-
MarkdownParserComponent,
|
|
26115
26276
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
26116
26277
|
MatIconModule,
|
|
26117
26278
|
MatTooltipModule,
|
|
@@ -26120,7 +26281,8 @@ class UiElementsModule {
|
|
|
26120
26281
|
RouterModule,
|
|
26121
26282
|
UiInputsModule,
|
|
26122
26283
|
FormsModule,
|
|
26123
|
-
NgOptimizedImage
|
|
26284
|
+
NgOptimizedImage,
|
|
26285
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26124
26286
|
ContentGhostComponent,
|
|
26125
26287
|
DownloadItemComponent,
|
|
26126
26288
|
DownloadsListComponent,
|
|
@@ -26167,6 +26329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26167
26329
|
UiInputsModule,
|
|
26168
26330
|
FormsModule,
|
|
26169
26331
|
NgOptimizedImage,
|
|
26332
|
+
MarkdownParserComponent,
|
|
26170
26333
|
],
|
|
26171
26334
|
declarations: [
|
|
26172
26335
|
MetadataInfoComponent,
|
|
@@ -26189,7 +26352,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26189
26352
|
PaginationButtonsComponent,
|
|
26190
26353
|
MaxLinesComponent,
|
|
26191
26354
|
RecordApiFormComponent,
|
|
26192
|
-
MarkdownParserComponent,
|
|
26193
26355
|
ImageOverlayPreviewComponent,
|
|
26194
26356
|
],
|
|
26195
26357
|
exports: [
|
|
@@ -26873,6 +27035,9 @@ const getFavoritesOnly = createSelector(getSearchStateSearch, (state) => state.p
|
|
|
26873
27035
|
const getError = createSelector(getSearchStateSearch, (state) => state.error);
|
|
26874
27036
|
const getSpatialFilterEnabled = createSelector(getSearchStateSearch, (state) => state.params.useSpatialFilter);
|
|
26875
27037
|
|
|
27038
|
+
// this geometry will be used to filter & boost results accordingly
|
|
27039
|
+
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
27040
|
+
|
|
26876
27041
|
class SearchFacade {
|
|
26877
27042
|
constructor(store, filterGeometry) {
|
|
26878
27043
|
this.store = store;
|
|
@@ -26977,6 +27142,7 @@ class SearchFacade {
|
|
|
26977
27142
|
this.store.dispatch(new SetFilters({}, this.searchId));
|
|
26978
27143
|
this.store.dispatch(new SetSortBy([], this.searchId));
|
|
26979
27144
|
this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
|
|
27145
|
+
return this;
|
|
26980
27146
|
}
|
|
26981
27147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade, deps: [{ token: i1$2.Store }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26982
27148
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
|
|
@@ -27361,8 +27527,11 @@ class FuzzySearchComponent {
|
|
|
27361
27527
|
this.searchService.updateFilters({ any });
|
|
27362
27528
|
}
|
|
27363
27529
|
}
|
|
27364
|
-
handleInputCleared() {
|
|
27365
|
-
this.
|
|
27530
|
+
async handleInputCleared() {
|
|
27531
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27532
|
+
if (currentSearchFilters.any) {
|
|
27533
|
+
this.searchService.updateFilters({ any: '' });
|
|
27534
|
+
}
|
|
27366
27535
|
}
|
|
27367
27536
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27368
27537
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -27442,6 +27611,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27442
27611
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
27443
27612
|
}] }]; } });
|
|
27444
27613
|
|
|
27614
|
+
// expects the replacement key ${uuid}
|
|
27615
|
+
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
27616
|
+
|
|
27445
27617
|
class FavoriteStarComponent {
|
|
27446
27618
|
set record(value) {
|
|
27447
27619
|
this.record_ = value;
|
|
@@ -27525,11 +27697,11 @@ class FavoriteStarComponent {
|
|
|
27525
27697
|
});
|
|
27526
27698
|
}
|
|
27527
27699
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27528
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row
|
|
27700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27529
27701
|
}
|
|
27530
27702
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27531
27703
|
type: Component,
|
|
27532
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row
|
|
27704
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27533
27705
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27534
27706
|
type: Input
|
|
27535
27707
|
}], record: [{
|
|
@@ -27818,10 +27990,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27818
27990
|
class AbstractSearchField {
|
|
27819
27991
|
}
|
|
27820
27992
|
class SimpleSearchField {
|
|
27821
|
-
constructor(esFieldName, order = 'asc',
|
|
27993
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27822
27994
|
this.esFieldName = esFieldName;
|
|
27823
|
-
this.order = order;
|
|
27824
27995
|
this.injector = injector;
|
|
27996
|
+
this.order = order;
|
|
27997
|
+
this.orderType = orderType;
|
|
27825
27998
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27826
27999
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27827
28000
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27832,12 +28005,12 @@ class SimpleSearchField {
|
|
|
27832
28005
|
type: 'terms',
|
|
27833
28006
|
field: this.esFieldName,
|
|
27834
28007
|
limit: 1000,
|
|
27835
|
-
sort: [this.order,
|
|
28008
|
+
sort: [this.order, this.orderType],
|
|
27836
28009
|
},
|
|
27837
28010
|
};
|
|
27838
28011
|
}
|
|
27839
28012
|
async getBucketLabel(bucket) {
|
|
27840
|
-
return bucket.term;
|
|
28013
|
+
return bucket.term.toString();
|
|
27841
28014
|
}
|
|
27842
28015
|
getAvailableValues() {
|
|
27843
28016
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27865,9 +28038,13 @@ class SimpleSearchField {
|
|
|
27865
28038
|
return of(values);
|
|
27866
28039
|
}
|
|
27867
28040
|
}
|
|
27868
|
-
class
|
|
27869
|
-
constructor() {
|
|
27870
|
-
super(
|
|
28041
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
28042
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28043
|
+
super(esFieldName, injector, order, orderType);
|
|
28044
|
+
this.esFieldName = esFieldName;
|
|
28045
|
+
this.injector = injector;
|
|
28046
|
+
this.order = order;
|
|
28047
|
+
this.orderType = orderType;
|
|
27871
28048
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27872
28049
|
}
|
|
27873
28050
|
async getTranslation(key) {
|
|
@@ -27877,26 +28054,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27877
28054
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27878
28055
|
}
|
|
27879
28056
|
getAvailableValues() {
|
|
28057
|
+
if (this.orderType === 'count')
|
|
28058
|
+
return super.getAvailableValues();
|
|
27880
28059
|
// sort values by alphabetical order
|
|
27881
28060
|
return super
|
|
27882
28061
|
.getAvailableValues()
|
|
27883
28062
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27884
28063
|
}
|
|
27885
28064
|
}
|
|
27886
|
-
|
|
27887
|
-
|
|
27888
|
-
|
|
27889
|
-
|
|
28065
|
+
/**
|
|
28066
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
28067
|
+
* to the defined METADATA_LANGUAGE token
|
|
28068
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
28069
|
+
*/
|
|
28070
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
28071
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28072
|
+
super(esFieldName, injector, order, orderType);
|
|
28073
|
+
this.esFieldName = esFieldName;
|
|
28074
|
+
this.injector = injector;
|
|
28075
|
+
this.order = order;
|
|
28076
|
+
this.orderType = orderType;
|
|
27890
28077
|
this.langService = this.injector.get(LangService);
|
|
27891
|
-
this.
|
|
27892
|
-
|
|
27893
|
-
|
|
27894
|
-
|
|
27895
|
-
|
|
27896
|
-
}
|
|
27897
|
-
|
|
27898
|
-
|
|
27899
|
-
|
|
28078
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
28079
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
28080
|
+
// permalinks that might not work for different users
|
|
28081
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
28082
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
28083
|
+
}
|
|
28084
|
+
else {
|
|
28085
|
+
this.esFieldName += '.default';
|
|
28086
|
+
}
|
|
27900
28087
|
}
|
|
27901
28088
|
}
|
|
27902
28089
|
class FullTextSearchField {
|
|
@@ -27916,7 +28103,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
27916
28103
|
marker('search.filters.isSpatial.no');
|
|
27917
28104
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
27918
28105
|
constructor(injector) {
|
|
27919
|
-
super('isSpatial', 'asc'
|
|
28106
|
+
super('isSpatial', injector, 'asc');
|
|
27920
28107
|
this.translateService = this.injector.get(TranslateService);
|
|
27921
28108
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
27922
28109
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -27966,7 +28153,7 @@ marker('search.filters.license.unknown');
|
|
|
27966
28153
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
27967
28154
|
class LicenseSearchField extends SimpleSearchField {
|
|
27968
28155
|
constructor(injector) {
|
|
27969
|
-
super('license', 'asc'
|
|
28156
|
+
super('license', injector, 'asc');
|
|
27970
28157
|
this.translateService = this.injector.get(TranslateService);
|
|
27971
28158
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
27972
28159
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -28050,7 +28237,7 @@ class OrganizationSearchField {
|
|
|
28050
28237
|
}
|
|
28051
28238
|
class OwnerSearchField extends SimpleSearchField {
|
|
28052
28239
|
constructor(injector) {
|
|
28053
|
-
super('owner', 'asc'
|
|
28240
|
+
super('owner', injector, 'asc');
|
|
28054
28241
|
}
|
|
28055
28242
|
getAvailableValues() {
|
|
28056
28243
|
return of([]);
|
|
@@ -28059,6 +28246,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
28059
28246
|
|
|
28060
28247
|
marker('search.filters.format');
|
|
28061
28248
|
marker('search.filters.inspireKeyword');
|
|
28249
|
+
marker('search.filters.keyword');
|
|
28062
28250
|
marker('search.filters.isSpatial');
|
|
28063
28251
|
marker('search.filters.license');
|
|
28064
28252
|
marker('search.filters.publicationYear');
|
|
@@ -28076,13 +28264,14 @@ class FieldsService {
|
|
|
28076
28264
|
this.injector = injector;
|
|
28077
28265
|
this.fields = {
|
|
28078
28266
|
publisher: new OrganizationSearchField(this.injector),
|
|
28079
|
-
format: new SimpleSearchField('format', 'asc'
|
|
28080
|
-
resourceType: new
|
|
28081
|
-
representationType: new
|
|
28082
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
28083
|
-
topic: new
|
|
28084
|
-
inspireKeyword: new
|
|
28085
|
-
|
|
28267
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28268
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28269
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28270
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28271
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28272
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28273
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28274
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
28086
28275
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
28087
28276
|
q: new FullTextSearchField(),
|
|
28088
28277
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28156,10 +28345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28156
28345
|
type: Input
|
|
28157
28346
|
}] } });
|
|
28158
28347
|
|
|
28159
|
-
// this geometry will be used to filter & boost results accordingly
|
|
28160
|
-
const FILTER_GEOMETRY = new InjectionToken('filter-geometry');
|
|
28161
|
-
// expects the replacement key ${uuid}
|
|
28162
|
-
const RECORD_URL_TOKEN = new InjectionToken('record-url-token');
|
|
28163
28348
|
class FeatureSearchModule {
|
|
28164
28349
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28165
28350
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureSearchModule, declarations: [SortByComponent,
|
|
@@ -28265,7 +28450,6 @@ class ResultsTableComponent {
|
|
|
28265
28450
|
this.selectionService = selectionService;
|
|
28266
28451
|
this.recordClick = new EventEmitter();
|
|
28267
28452
|
this.records$ = this.searchFacade.results$;
|
|
28268
|
-
this.recordCount$ = this.searchFacade.resultsHits$;
|
|
28269
28453
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28270
28454
|
}
|
|
28271
28455
|
dateToString(date) {
|
|
@@ -28351,7 +28535,7 @@ class ResultsTableComponent {
|
|
|
28351
28535
|
}));
|
|
28352
28536
|
}
|
|
28353
28537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28354
|
-
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: "<
|
|
28538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28355
28539
|
}
|
|
28356
28540
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28357
28541
|
type: Component,
|
|
@@ -28362,7 +28546,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28362
28546
|
InteractiveTableColumnComponent,
|
|
28363
28547
|
MatIconModule,
|
|
28364
28548
|
TranslateModule,
|
|
28365
|
-
], template: "<
|
|
28549
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28366
28550
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28367
28551
|
type: Output
|
|
28368
28552
|
}] } });
|
|
@@ -28994,7 +29178,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28994
29178
|
...state,
|
|
28995
29179
|
chartConfig,
|
|
28996
29180
|
})), on(close, (state) => {
|
|
28997
|
-
// eslint-disable-next-line
|
|
29181
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28998
29182
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28999
29183
|
return stateWithoutMd;
|
|
29000
29184
|
}));
|
|
@@ -30948,11 +31132,11 @@ class LanguageSwitcherComponent {
|
|
|
30948
31132
|
this.translate.use(value);
|
|
30949
31133
|
}
|
|
30950
31134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30951
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30952
31136
|
}
|
|
30953
31137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30954
31138
|
type: Component,
|
|
30955
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31139
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30956
31140
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30957
31141
|
type: Optional
|
|
30958
31142
|
}, {
|
|
@@ -32316,5 +32500,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32316
32500
|
* Generated bundle index. Do not edit.
|
|
32317
32501
|
*/
|
|
32318
32502
|
|
|
32319
|
-
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,
|
|
32503
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32320
32504
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|