geonetwork-ui 2.2.0-dev.6695ae4d → 2.2.0-dev.70a9dc16
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 +23 -11
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +4 -2
- 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 +12 -9
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +33 -8
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +31 -14
- 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/thesaurus/thesaurus.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/index.mjs +6 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +8 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +26 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +30 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +42 -0
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +13 -0
- package/esm2022/libs/feature/editor/src/lib/expressions.mjs +13 -0
- package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +16 -4
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +34 -0
- package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +15 -11
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +22 -44
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -13
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
- 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 +19 -7
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
- 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 +9 -9
- 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/form-field/form-field.component.mjs +4 -2
- package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +1 -1
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -6
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
- package/esm2022/translations/de.json +37 -27
- package/esm2022/translations/en.json +29 -19
- package/esm2022/translations/es.json +26 -16
- package/esm2022/translations/fr.json +47 -37
- package/esm2022/translations/it.json +41 -31
- package/esm2022/translations/nl.json +27 -17
- package/esm2022/translations/pt.json +26 -16
- package/fesm2022/geonetwork-ui.mjs +835 -409
- 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.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 +3 -3
- 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 +1 -1
- 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 +16 -2
- package/libs/common/domain/src/lib/model/record/metadata.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/editor/src/index.d.ts +5 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +23 -0
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +15 -0
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +19 -0
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts +2 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +18 -0
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +15 -0
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/expressions.d.ts +4 -0
- package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -1
- package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +3 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/models/fields.model.d.ts +15 -0
- package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts +10 -5
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -13
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/search/src/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 +9 -3
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/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/form-field/form-field.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts +0 -1
- package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -40
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +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 +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +57 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +52 -6
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +207 -20
- 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 +30 -11
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +3 -1
- 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 +11 -9
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +58 -20
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +86 -38
- 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 +20 -3
- 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/editor/src/index.ts +5 -0
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +24 -0
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +49 -0
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +30 -0
- package/src/libs/feature/editor/src/lib/+state/editor.models.ts +1 -0
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +68 -0
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +39 -0
- package/src/libs/feature/editor/src/lib/expressions.ts +16 -0
- package/src/libs/feature/editor/src/lib/feature-editor.module.ts +11 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +35 -0
- package/src/libs/feature/editor/src/lib/models/fields.model.ts +29 -0
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.html +9 -7
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +11 -5
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +34 -73
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +12 -12
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
- 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.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 +113 -25
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +20 -3
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
- 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.css +0 -5
- package/src/libs/ui/inputs/src/lib/button/button.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +7 -6
- package/src/libs/ui/inputs/src/lib/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/form-field/form-field.component.ts +3 -1
- package/src/libs/ui/inputs/src/lib/form-field/form-field.model.ts +0 -1
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
- package/tailwind.base.css +44 -15
- package/translations/de.json +37 -27
- package/translations/en.json +29 -19
- package/translations/es.json +26 -16
- package/translations/fr.json +47 -37
- package/translations/it.json +41 -31
- package/translations/nl.json +27 -17
- package/translations/pt.json +26 -16
- package/translations/sk.json +118 -108
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren, inject } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap as switchMap$1, catchError, take,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, throttleTime, distinctUntilChanged, finalize, first, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
15
|
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, firstValueFrom, fromEvent, timer, from, Subscription, animationFrameScheduler, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
|
-
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
18
|
+
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
19
19
|
import Map$1 from 'ol/Map';
|
|
20
20
|
import * as i2 from '@angular/material/icon';
|
|
21
21
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -75,7 +75,7 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
|
75
75
|
import { MatInputModule } from '@angular/material/input';
|
|
76
76
|
import * as basicLightbox from 'basiclightbox';
|
|
77
77
|
import * as i1$8 from '@ngrx/effects';
|
|
78
|
-
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
78
|
+
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
79
79
|
import tippy from 'tippy.js';
|
|
80
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
81
|
import { Polygon } from 'ol/geom';
|
|
@@ -587,6 +587,20 @@ function matchMimeType(format) {
|
|
|
587
587
|
return format || null;
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
591
|
+
if (!typeCode)
|
|
592
|
+
return 'other';
|
|
593
|
+
switch (typeCode) {
|
|
594
|
+
case 'theme':
|
|
595
|
+
case 'place':
|
|
596
|
+
case 'temporal':
|
|
597
|
+
case 'other':
|
|
598
|
+
return typeCode;
|
|
599
|
+
default:
|
|
600
|
+
return 'other';
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
590
604
|
function extractCharacterString() {
|
|
591
605
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
592
606
|
}
|
|
@@ -818,6 +832,9 @@ function readOwnerOrganization(rootEl) {
|
|
|
818
832
|
function readRecordUpdated(rootEl) {
|
|
819
833
|
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
820
834
|
}
|
|
835
|
+
function readRecordPublished(rootEl) {
|
|
836
|
+
return pipe(findChildElement('gmd:dateStamp'), extractDateTime())(rootEl);
|
|
837
|
+
}
|
|
821
838
|
function readTitle(rootEl) {
|
|
822
839
|
return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
823
840
|
}
|
|
@@ -833,14 +850,35 @@ function readDatasetUpdated(rootEl) {
|
|
|
833
850
|
function readContacts(rootEl) {
|
|
834
851
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
835
852
|
}
|
|
836
|
-
|
|
837
|
-
|
|
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
|
+
};
|
|
838
866
|
}
|
|
839
|
-
|
|
840
|
-
|
|
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);
|
|
841
879
|
}
|
|
842
|
-
function
|
|
843
|
-
return
|
|
880
|
+
function readKeywords(rootEl) {
|
|
881
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
844
882
|
}
|
|
845
883
|
function readStatus(rootEl) {
|
|
846
884
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
@@ -860,7 +898,7 @@ function readLicenses(rootEl) {
|
|
|
860
898
|
}
|
|
861
899
|
// not used yet
|
|
862
900
|
function readIsoTopics(rootEl) {
|
|
863
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
901
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
864
902
|
}
|
|
865
903
|
function readSpatialRepresentation(rootEl) {
|
|
866
904
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1076,15 +1114,32 @@ function updateCitationDate(date, type) {
|
|
|
1076
1114
|
function appendCitationDate(date, type) {
|
|
1077
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)))));
|
|
1078
1116
|
}
|
|
1079
|
-
function removeKeywords(
|
|
1080
|
-
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
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)))))));
|
|
1088
1143
|
}
|
|
1089
1144
|
function createConstraint(constraint, type) {
|
|
1090
1145
|
if (type === 'security') {
|
|
@@ -1201,10 +1256,10 @@ function writeContacts(record, rootEl) {
|
|
|
1201
1256
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1202
1257
|
}
|
|
1203
1258
|
function writeKeywords(record, rootEl) {
|
|
1204
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1205
1260
|
}
|
|
1206
|
-
function
|
|
1207
|
-
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);
|
|
1208
1263
|
}
|
|
1209
1264
|
function writeLicenses(record, rootEl) {
|
|
1210
1265
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
@@ -1312,15 +1367,14 @@ function toModel(xml) {
|
|
|
1312
1367
|
const contacts = readContacts(rootEl);
|
|
1313
1368
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1314
1369
|
const recordCreated = recordUpdated;
|
|
1370
|
+
const recordPublished = readRecordPublished(rootEl);
|
|
1315
1371
|
const keywords = readKeywords(rootEl);
|
|
1316
|
-
const
|
|
1372
|
+
const topics = readIsoTopics(rootEl);
|
|
1317
1373
|
const legalConstraints = readLegalConstraints(rootEl);
|
|
1318
1374
|
const otherConstraints = readOtherConstraints(rootEl);
|
|
1319
1375
|
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1320
1376
|
const licenses = readLicenses(rootEl);
|
|
1321
1377
|
const overviews = readOverviews(rootEl);
|
|
1322
|
-
// not used yet
|
|
1323
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1324
1378
|
if (kind === 'dataset') {
|
|
1325
1379
|
const status = readStatus(rootEl);
|
|
1326
1380
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1334,8 +1388,10 @@ function toModel(xml) {
|
|
|
1334
1388
|
return {
|
|
1335
1389
|
uniqueIdentifier,
|
|
1336
1390
|
kind,
|
|
1391
|
+
languages: [],
|
|
1337
1392
|
recordCreated,
|
|
1338
1393
|
recordUpdated,
|
|
1394
|
+
recordPublished,
|
|
1339
1395
|
status,
|
|
1340
1396
|
title,
|
|
1341
1397
|
abstract,
|
|
@@ -1343,7 +1399,7 @@ function toModel(xml) {
|
|
|
1343
1399
|
contacts,
|
|
1344
1400
|
contactsForResource: [],
|
|
1345
1401
|
keywords,
|
|
1346
|
-
|
|
1402
|
+
topics,
|
|
1347
1403
|
licenses,
|
|
1348
1404
|
legalConstraints,
|
|
1349
1405
|
securityConstraints,
|
|
@@ -1364,14 +1420,16 @@ function toModel(xml) {
|
|
|
1364
1420
|
return {
|
|
1365
1421
|
uniqueIdentifier,
|
|
1366
1422
|
kind,
|
|
1423
|
+
languages: [],
|
|
1367
1424
|
recordCreated,
|
|
1368
1425
|
recordUpdated,
|
|
1426
|
+
recordPublished,
|
|
1369
1427
|
title,
|
|
1370
1428
|
abstract,
|
|
1371
1429
|
ownerOrganization,
|
|
1372
1430
|
contacts,
|
|
1373
1431
|
keywords,
|
|
1374
|
-
|
|
1432
|
+
topics,
|
|
1375
1433
|
licenses,
|
|
1376
1434
|
legalConstraints,
|
|
1377
1435
|
securityConstraints,
|
|
@@ -1400,7 +1458,7 @@ function toXml(record, originalXml) {
|
|
|
1400
1458
|
writeAbstract(record, rootEl);
|
|
1401
1459
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1402
1460
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1403
|
-
fieldChanged('
|
|
1461
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1404
1462
|
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1405
1463
|
fieldChanged('securityConstraints') &&
|
|
1406
1464
|
writeSecurityConstraints(record, rootEl);
|
|
@@ -1472,6 +1530,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1472
1530
|
...(phone && { phone }),
|
|
1473
1531
|
};
|
|
1474
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
|
+
};
|
|
1475
1558
|
|
|
1476
1559
|
/**
|
|
1477
1560
|
* Custom HttpParameterCodec
|
|
@@ -16458,6 +16541,23 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
16458
16541
|
chi: 'zh',
|
|
16459
16542
|
slo: 'sk',
|
|
16460
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
|
+
};
|
|
16461
16561
|
// Caution: changing this can break language selection from third parties!
|
|
16462
16562
|
const LANGUAGE_STORAGE_KEY = 'geonetwork-ui-language';
|
|
16463
16563
|
const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
|
|
@@ -16580,7 +16680,7 @@ var de = {
|
|
|
16580
16680
|
"chart.type.line": "Liniendiagramm",
|
|
16581
16681
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
16582
16682
|
"chart.type.pie": "Kreisdiagramm",
|
|
16583
|
-
"dashboard.createRecord": "",
|
|
16683
|
+
"dashboard.createRecord": "Neuer Eintrag",
|
|
16584
16684
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
16585
16685
|
"dashboard.records.all": "Katalog",
|
|
16586
16686
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
@@ -16593,8 +16693,8 @@ var de = {
|
|
|
16593
16693
|
"dashboard.records.userEmail": "E-Mail",
|
|
16594
16694
|
"dashboard.records.username": "Benutzername",
|
|
16595
16695
|
"dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
|
|
16596
|
-
"dashboard.results.listMetadata": "",
|
|
16597
|
-
"dashboard.results.listResources": "",
|
|
16696
|
+
"dashboard.results.listMetadata": "Metadaten anzeigen",
|
|
16697
|
+
"dashboard.results.listResources": "Ressourcen anzeigen",
|
|
16598
16698
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
|
|
16599
16699
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
|
|
16600
16700
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
|
|
@@ -16708,6 +16808,8 @@ var de = {
|
|
|
16708
16808
|
"downloads.format.unknown": "unbekannt",
|
|
16709
16809
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
16710
16810
|
dropFile: dropFile$6,
|
|
16811
|
+
"editor.record.publish": "",
|
|
16812
|
+
"editor.record.upToDate": "",
|
|
16711
16813
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
16712
16814
|
"facets.block.title.OrgForResource": "Organisation",
|
|
16713
16815
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -16721,28 +16823,28 @@ var de = {
|
|
|
16721
16823
|
"facets.block.title.tag.default": "Stichwort",
|
|
16722
16824
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
16723
16825
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
|
|
16724
|
-
"language.ca": "
|
|
16725
|
-
"language.cs": "
|
|
16826
|
+
"language.ca": "Katalanisch",
|
|
16827
|
+
"language.cs": "Tschechisch",
|
|
16726
16828
|
"language.de": "Deutsch",
|
|
16727
|
-
"language.en": "
|
|
16728
|
-
"language.es": "
|
|
16729
|
-
"language.fi": "
|
|
16730
|
-
"language.fr": "
|
|
16731
|
-
"language.is": "
|
|
16732
|
-
"language.it": "
|
|
16733
|
-
"language.ko": "
|
|
16734
|
-
"language.nl": "
|
|
16735
|
-
"language.pt": "
|
|
16736
|
-
"language.ru": "
|
|
16737
|
-
"language.sk": "
|
|
16738
|
-
"language.zh": "
|
|
16829
|
+
"language.en": "Englisch",
|
|
16830
|
+
"language.es": "Spanisch",
|
|
16831
|
+
"language.fi": "Finnisch",
|
|
16832
|
+
"language.fr": "Französisch",
|
|
16833
|
+
"language.is": "Isländisch",
|
|
16834
|
+
"language.it": "Italienisch",
|
|
16835
|
+
"language.ko": "Koreanisch",
|
|
16836
|
+
"language.nl": "Niederländisch",
|
|
16837
|
+
"language.pt": "Portugiesisch",
|
|
16838
|
+
"language.ru": "Russisch",
|
|
16839
|
+
"language.sk": "Slowakisch",
|
|
16840
|
+
"language.zh": "Chinesisch",
|
|
16739
16841
|
"map.add.layer": "Eine Ebene hinzufügen",
|
|
16740
16842
|
"map.add.layer.catalog": "Aus dem Katalog",
|
|
16741
16843
|
"map.add.layer.file": "Aus einer Datei",
|
|
16742
16844
|
"map.add.layer.wfs": "Aus WFS",
|
|
16743
16845
|
"map.add.layer.wms": "Aus WMS",
|
|
16744
16846
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16745
|
-
"map.geocoding.placeholder": "",
|
|
16847
|
+
"map.geocoding.placeholder": "Nach einem Ort suchen",
|
|
16746
16848
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16747
16849
|
"map.layer.add": "Hinzufügen",
|
|
16748
16850
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -16786,17 +16888,20 @@ var de = {
|
|
|
16786
16888
|
"record.metadata.author": "Autor",
|
|
16787
16889
|
"record.metadata.catalog": "Katalog",
|
|
16788
16890
|
"record.metadata.contact": "Kontakt",
|
|
16789
|
-
"record.metadata.
|
|
16891
|
+
"record.metadata.creation": "Erstellungsdatum",
|
|
16892
|
+
"record.metadata.details": "Über die Daten",
|
|
16790
16893
|
"record.metadata.download": "Downloads",
|
|
16791
16894
|
"record.metadata.formats": "Formate",
|
|
16792
16895
|
"record.metadata.keywords": "Stichworte",
|
|
16793
|
-
"record.metadata.
|
|
16896
|
+
"record.metadata.languages": "Sprachen",
|
|
16897
|
+
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
16794
16898
|
"record.metadata.links": "Links",
|
|
16795
16899
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16796
|
-
"record.metadata.
|
|
16797
|
-
"record.metadata.
|
|
16798
|
-
"record.metadata.owner": "",
|
|
16900
|
+
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
16901
|
+
"record.metadata.owner": "Herkunftskatalog",
|
|
16799
16902
|
"record.metadata.preview": "Vorschau",
|
|
16903
|
+
"record.metadata.producer": "Datenproduzent",
|
|
16904
|
+
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
16800
16905
|
"record.metadata.publications": "Veröffentlichungen",
|
|
16801
16906
|
"record.metadata.quality": "Metadatenqualität",
|
|
16802
16907
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
@@ -16818,13 +16923,17 @@ var de = {
|
|
|
16818
16923
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
16819
16924
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16820
16925
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16821
|
-
"record.metadata.status": "",
|
|
16822
|
-
"record.metadata.
|
|
16926
|
+
"record.metadata.status": "Status",
|
|
16927
|
+
"record.metadata.technical": "Technische Informationen",
|
|
16928
|
+
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
16929
|
+
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
16930
|
+
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
16931
|
+
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
16823
16932
|
"record.metadata.title": "Titel",
|
|
16933
|
+
"record.metadata.topics": "Kategorien",
|
|
16824
16934
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16825
16935
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16826
16936
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
16827
|
-
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
16828
16937
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
16829
16938
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
16830
16939
|
"record.more.details": "Weitere Details",
|
|
@@ -16856,6 +16965,7 @@ var de = {
|
|
|
16856
16965
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16857
16966
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16858
16967
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16968
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16859
16969
|
"search.filters.license": "Lizenz",
|
|
16860
16970
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16861
16971
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -16886,7 +16996,7 @@ var de = {
|
|
|
16886
16996
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16887
16997
|
"table.select.data": "Datenquelle",
|
|
16888
16998
|
"tooltip.html.copy": "HTML kopieren",
|
|
16889
|
-
"tooltip.id.copy": "",
|
|
16999
|
+
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
16890
17000
|
"tooltip.url.copy": "URL kopieren",
|
|
16891
17001
|
"tooltip.url.open": "URL öffnen",
|
|
16892
17002
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17048,6 +17158,8 @@ var en = {
|
|
|
17048
17158
|
"downloads.format.unknown": "unknown",
|
|
17049
17159
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17050
17160
|
dropFile: dropFile$5,
|
|
17161
|
+
"editor.record.publish": "Publish this record",
|
|
17162
|
+
"editor.record.upToDate": "This record is up to date",
|
|
17051
17163
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17052
17164
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17053
17165
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -17061,21 +17173,21 @@ var en = {
|
|
|
17061
17173
|
"facets.block.title.tag.default": "Tag",
|
|
17062
17174
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
17063
17175
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
17064
|
-
"language.ca": "
|
|
17065
|
-
"language.cs": "
|
|
17066
|
-
"language.de": "
|
|
17176
|
+
"language.ca": "Catalan",
|
|
17177
|
+
"language.cs": "Czech",
|
|
17178
|
+
"language.de": "German",
|
|
17067
17179
|
"language.en": "English",
|
|
17068
|
-
"language.es": "
|
|
17069
|
-
"language.fi": "
|
|
17070
|
-
"language.fr": "
|
|
17071
|
-
"language.is": "
|
|
17072
|
-
"language.it": "
|
|
17073
|
-
"language.ko": "
|
|
17074
|
-
"language.nl": "
|
|
17075
|
-
"language.pt": "
|
|
17076
|
-
"language.ru": "
|
|
17077
|
-
"language.sk": "
|
|
17078
|
-
"language.zh": "
|
|
17180
|
+
"language.es": "Spanish",
|
|
17181
|
+
"language.fi": "Finnish",
|
|
17182
|
+
"language.fr": "French",
|
|
17183
|
+
"language.is": "Icelandic",
|
|
17184
|
+
"language.it": "Italian",
|
|
17185
|
+
"language.ko": "Korean",
|
|
17186
|
+
"language.nl": "Dutch",
|
|
17187
|
+
"language.pt": "Portuguese",
|
|
17188
|
+
"language.ru": "Russian",
|
|
17189
|
+
"language.sk": "Slovak",
|
|
17190
|
+
"language.zh": "Chinese",
|
|
17079
17191
|
"map.add.layer": "Add a layer",
|
|
17080
17192
|
"map.add.layer.catalog": "From the catalog",
|
|
17081
17193
|
"map.add.layer.file": "From a file",
|
|
@@ -17126,17 +17238,20 @@ var en = {
|
|
|
17126
17238
|
"record.metadata.author": "Author",
|
|
17127
17239
|
"record.metadata.catalog": "Catalog",
|
|
17128
17240
|
"record.metadata.contact": "Contact",
|
|
17129
|
-
"record.metadata.
|
|
17241
|
+
"record.metadata.creation": "Date of creation",
|
|
17242
|
+
"record.metadata.details": "About the data",
|
|
17130
17243
|
"record.metadata.download": "Downloads",
|
|
17131
17244
|
"record.metadata.formats": "Formats",
|
|
17132
17245
|
"record.metadata.keywords": "Keywords",
|
|
17133
|
-
"record.metadata.
|
|
17246
|
+
"record.metadata.languages": "Languages",
|
|
17247
|
+
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
17134
17248
|
"record.metadata.links": "Links",
|
|
17135
17249
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17136
|
-
"record.metadata.origin": "About the data",
|
|
17137
17250
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17138
17251
|
"record.metadata.owner": "Catalog of origin",
|
|
17139
17252
|
"record.metadata.preview": "Preview",
|
|
17253
|
+
"record.metadata.producer": "Data producer",
|
|
17254
|
+
"record.metadata.publication": "Date of publication",
|
|
17140
17255
|
"record.metadata.publications": "publications",
|
|
17141
17256
|
"record.metadata.quality": "Metadata Quality",
|
|
17142
17257
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
@@ -17159,12 +17274,16 @@ var en = {
|
|
|
17159
17274
|
"record.metadata.related": "Related records",
|
|
17160
17275
|
"record.metadata.sheet": "Original metadata",
|
|
17161
17276
|
"record.metadata.status": "Status",
|
|
17162
|
-
"record.metadata.
|
|
17277
|
+
"record.metadata.technical": "Technical information",
|
|
17278
|
+
"record.metadata.temporalExtent": "Temporal extent",
|
|
17279
|
+
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
17280
|
+
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
17281
|
+
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
17163
17282
|
"record.metadata.title": "Title",
|
|
17283
|
+
"record.metadata.topics": "Categories",
|
|
17164
17284
|
"record.metadata.type": "Geographical dataset",
|
|
17165
17285
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17166
17286
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17167
|
-
"record.metadata.updateStatus": "Data Update Status",
|
|
17168
17287
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17169
17288
|
"record.metadata.usage": "License and Conditions",
|
|
17170
17289
|
"record.more.details": "Read more",
|
|
@@ -17196,6 +17315,7 @@ var en = {
|
|
|
17196
17315
|
"search.filters.isSpatial": "Is spatial data",
|
|
17197
17316
|
"search.filters.isSpatial.no": "non spatial",
|
|
17198
17317
|
"search.filters.isSpatial.yes": "spatial",
|
|
17318
|
+
"search.filters.keyword": "Keyword",
|
|
17199
17319
|
"search.filters.license": "License",
|
|
17200
17320
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17201
17321
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17388,6 +17508,8 @@ var es = {
|
|
|
17388
17508
|
"downloads.format.unknown": "",
|
|
17389
17509
|
"downloads.wfs.featuretype.not.found": "",
|
|
17390
17510
|
dropFile: dropFile$4,
|
|
17511
|
+
"editor.record.publish": "",
|
|
17512
|
+
"editor.record.upToDate": "",
|
|
17391
17513
|
"externalviewer.dataset.unnamed": "",
|
|
17392
17514
|
"facets.block.title.OrgForResource": "",
|
|
17393
17515
|
"facets.block.title.availableInServices": "",
|
|
@@ -17401,21 +17523,21 @@ var es = {
|
|
|
17401
17523
|
"facets.block.title.tag.default": "",
|
|
17402
17524
|
"facets.block.title.th_regions_tree.default": "",
|
|
17403
17525
|
"favorite.not.authenticated.tooltip": "",
|
|
17404
|
-
"language.ca": "
|
|
17405
|
-
"language.cs": "
|
|
17406
|
-
"language.de": "
|
|
17407
|
-
"language.en": "
|
|
17526
|
+
"language.ca": "Catalán",
|
|
17527
|
+
"language.cs": "Checo",
|
|
17528
|
+
"language.de": "Alemán",
|
|
17529
|
+
"language.en": "Inglés",
|
|
17408
17530
|
"language.es": "Español",
|
|
17409
|
-
"language.fi": "
|
|
17410
|
-
"language.fr": "
|
|
17411
|
-
"language.is": "
|
|
17531
|
+
"language.fi": "Finlandés",
|
|
17532
|
+
"language.fr": "Francés",
|
|
17533
|
+
"language.is": "Islandés",
|
|
17412
17534
|
"language.it": "Italiano",
|
|
17413
|
-
"language.ko": "
|
|
17414
|
-
"language.nl": "
|
|
17415
|
-
"language.pt": "
|
|
17416
|
-
"language.ru": "
|
|
17417
|
-
"language.sk": "
|
|
17418
|
-
"language.zh": "
|
|
17535
|
+
"language.ko": "Coreano",
|
|
17536
|
+
"language.nl": "Neerlandés",
|
|
17537
|
+
"language.pt": "Portugués",
|
|
17538
|
+
"language.ru": "Ruso",
|
|
17539
|
+
"language.sk": "Eslovaco",
|
|
17540
|
+
"language.zh": "Chino",
|
|
17419
17541
|
"map.add.layer": "",
|
|
17420
17542
|
"map.add.layer.catalog": "",
|
|
17421
17543
|
"map.add.layer.file": "",
|
|
@@ -17466,17 +17588,20 @@ var es = {
|
|
|
17466
17588
|
"record.metadata.author": "",
|
|
17467
17589
|
"record.metadata.catalog": "",
|
|
17468
17590
|
"record.metadata.contact": "",
|
|
17591
|
+
"record.metadata.creation": "",
|
|
17469
17592
|
"record.metadata.details": "",
|
|
17470
17593
|
"record.metadata.download": "",
|
|
17471
17594
|
"record.metadata.formats": "",
|
|
17472
17595
|
"record.metadata.keywords": "",
|
|
17596
|
+
"record.metadata.languages": "",
|
|
17473
17597
|
"record.metadata.lastUpdate": "",
|
|
17474
17598
|
"record.metadata.links": "",
|
|
17475
17599
|
"record.metadata.noUsage": "",
|
|
17476
|
-
"record.metadata.origin": "",
|
|
17477
17600
|
"record.metadata.otherConstraints": "",
|
|
17478
17601
|
"record.metadata.owner": "",
|
|
17479
17602
|
"record.metadata.preview": "",
|
|
17603
|
+
"record.metadata.producer": "",
|
|
17604
|
+
"record.metadata.publication": "",
|
|
17480
17605
|
"record.metadata.publications": "",
|
|
17481
17606
|
"record.metadata.quality": "",
|
|
17482
17607
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -17499,12 +17624,16 @@ var es = {
|
|
|
17499
17624
|
"record.metadata.related": "",
|
|
17500
17625
|
"record.metadata.sheet": "",
|
|
17501
17626
|
"record.metadata.status": "",
|
|
17502
|
-
"record.metadata.
|
|
17627
|
+
"record.metadata.technical": "",
|
|
17628
|
+
"record.metadata.temporalExtent": "",
|
|
17629
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
17630
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
17631
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
17503
17632
|
"record.metadata.title": "",
|
|
17633
|
+
"record.metadata.topics": "",
|
|
17504
17634
|
"record.metadata.type": "",
|
|
17505
17635
|
"record.metadata.uniqueId": "",
|
|
17506
17636
|
"record.metadata.updateFrequency": "",
|
|
17507
|
-
"record.metadata.updateStatus": "",
|
|
17508
17637
|
"record.metadata.updatedOn": "",
|
|
17509
17638
|
"record.metadata.usage": "",
|
|
17510
17639
|
"record.more.details": "",
|
|
@@ -17536,6 +17665,7 @@ var es = {
|
|
|
17536
17665
|
"search.filters.isSpatial": "",
|
|
17537
17666
|
"search.filters.isSpatial.no": "",
|
|
17538
17667
|
"search.filters.isSpatial.yes": "",
|
|
17668
|
+
"search.filters.keyword": "",
|
|
17539
17669
|
"search.filters.license": "",
|
|
17540
17670
|
"search.filters.license.cc-by": "",
|
|
17541
17671
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17600,7 +17730,7 @@ var fr = {
|
|
|
17600
17730
|
"chart.type.line": "ligne",
|
|
17601
17731
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17602
17732
|
"chart.type.pie": "camembert",
|
|
17603
|
-
"dashboard.createRecord": "",
|
|
17733
|
+
"dashboard.createRecord": "Nouvel enregistrement",
|
|
17604
17734
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17605
17735
|
"dashboard.records.all": "Catalogue",
|
|
17606
17736
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
@@ -17613,8 +17743,8 @@ var fr = {
|
|
|
17613
17743
|
"dashboard.records.userEmail": "Email",
|
|
17614
17744
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17615
17745
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17616
|
-
"dashboard.results.listMetadata": "",
|
|
17617
|
-
"dashboard.results.listResources": "",
|
|
17746
|
+
"dashboard.results.listMetadata": "Afficher les métadonnées",
|
|
17747
|
+
"dashboard.results.listResources": "Afficher les ressources",
|
|
17618
17748
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17619
17749
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17620
17750
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17728,6 +17858,8 @@ var fr = {
|
|
|
17728
17858
|
"downloads.format.unknown": "inconnu",
|
|
17729
17859
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
17730
17860
|
dropFile: dropFile$3,
|
|
17861
|
+
"editor.record.publish": "",
|
|
17862
|
+
"editor.record.upToDate": "",
|
|
17731
17863
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
17732
17864
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17733
17865
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -17741,38 +17873,38 @@ var fr = {
|
|
|
17741
17873
|
"facets.block.title.tag.default": "Tag",
|
|
17742
17874
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
17743
17875
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
17744
|
-
"language.ca": "
|
|
17745
|
-
"language.cs": "
|
|
17746
|
-
"language.de": "
|
|
17747
|
-
"language.en": "
|
|
17748
|
-
"language.es": "
|
|
17749
|
-
"language.fi": "
|
|
17876
|
+
"language.ca": "Catalan",
|
|
17877
|
+
"language.cs": "Tchèque",
|
|
17878
|
+
"language.de": "Allemand",
|
|
17879
|
+
"language.en": "Anglais",
|
|
17880
|
+
"language.es": "Espagnol",
|
|
17881
|
+
"language.fi": "Finnois",
|
|
17750
17882
|
"language.fr": "Français",
|
|
17751
|
-
"language.is": "
|
|
17752
|
-
"language.it": "
|
|
17753
|
-
"language.ko": "
|
|
17754
|
-
"language.nl": "
|
|
17755
|
-
"language.pt": "
|
|
17756
|
-
"language.ru": "
|
|
17757
|
-
"language.sk": "
|
|
17758
|
-
"language.zh": "
|
|
17759
|
-
"map.add.layer": "",
|
|
17760
|
-
"map.add.layer.catalog": "",
|
|
17761
|
-
"map.add.layer.file": "",
|
|
17762
|
-
"map.add.layer.wfs": "",
|
|
17763
|
-
"map.add.layer.wms": "",
|
|
17764
|
-
"map.addFromFile.placeholder": "",
|
|
17765
|
-
"map.geocoding.placeholder": "",
|
|
17766
|
-
"map.help.addFromFile": "",
|
|
17767
|
-
"map.layer.add": "",
|
|
17768
|
-
"map.layers.available": "",
|
|
17769
|
-
"map.layers.list": "",
|
|
17883
|
+
"language.is": "Islandais",
|
|
17884
|
+
"language.it": "Italien",
|
|
17885
|
+
"language.ko": "Coréen",
|
|
17886
|
+
"language.nl": "Néerlandais",
|
|
17887
|
+
"language.pt": "Portugais",
|
|
17888
|
+
"language.ru": "Russe",
|
|
17889
|
+
"language.sk": "Slovaque",
|
|
17890
|
+
"language.zh": "Chinois",
|
|
17891
|
+
"map.add.layer": "Ajouter une couche",
|
|
17892
|
+
"map.add.layer.catalog": "Du catalogue",
|
|
17893
|
+
"map.add.layer.file": "À partir d'un fichier",
|
|
17894
|
+
"map.add.layer.wfs": "Depuis un service WFS",
|
|
17895
|
+
"map.add.layer.wms": "Depuis un service WMS",
|
|
17896
|
+
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
17897
|
+
"map.geocoding.placeholder": "Rechercher un lieu",
|
|
17898
|
+
"map.help.addFromFile": "Cliquez ou glissez-déposez un fichier pour l'ajouter à la carte (supporte actuellement uniquement le format GeoJSON).",
|
|
17899
|
+
"map.layer.add": "Ajouter",
|
|
17900
|
+
"map.layers.available": "Couches disponibles",
|
|
17901
|
+
"map.layers.list": "Couches",
|
|
17770
17902
|
"map.loading.data": "Chargement des données...",
|
|
17771
|
-
"map.loading.service": "",
|
|
17903
|
+
"map.loading.service": "Chargement du service...",
|
|
17772
17904
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17773
17905
|
"map.select.layer": "Source de données",
|
|
17774
|
-
"map.wfs.urlInput.hint": "",
|
|
17775
|
-
"map.wms.urlInput.hint": "",
|
|
17906
|
+
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
17907
|
+
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
17776
17908
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17777
17909
|
"nav.back": "Retour",
|
|
17778
17910
|
next: next$3,
|
|
@@ -17806,17 +17938,20 @@ var fr = {
|
|
|
17806
17938
|
"record.metadata.author": "Auteur",
|
|
17807
17939
|
"record.metadata.catalog": "Catalogue",
|
|
17808
17940
|
"record.metadata.contact": "Contact",
|
|
17809
|
-
"record.metadata.
|
|
17941
|
+
"record.metadata.creation": "Date de création",
|
|
17942
|
+
"record.metadata.details": "A propos de la donnée",
|
|
17810
17943
|
"record.metadata.download": "Téléchargements",
|
|
17811
17944
|
"record.metadata.formats": "Formats",
|
|
17812
17945
|
"record.metadata.keywords": "Mots clés",
|
|
17813
|
-
"record.metadata.
|
|
17946
|
+
"record.metadata.languages": "Langues",
|
|
17947
|
+
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
17814
17948
|
"record.metadata.links": "Liens",
|
|
17815
17949
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17816
|
-
"record.metadata.origin": "À propos des données",
|
|
17817
17950
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17818
17951
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17819
17952
|
"record.metadata.preview": "Aperçu",
|
|
17953
|
+
"record.metadata.producer": "Producteur de la donnée",
|
|
17954
|
+
"record.metadata.publication": "Date de publication",
|
|
17820
17955
|
"record.metadata.publications": "données",
|
|
17821
17956
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
17822
17957
|
"record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
|
|
@@ -17838,13 +17973,17 @@ var fr = {
|
|
|
17838
17973
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17839
17974
|
"record.metadata.related": "Voir aussi",
|
|
17840
17975
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17841
|
-
"record.metadata.status": "",
|
|
17842
|
-
"record.metadata.
|
|
17976
|
+
"record.metadata.status": "Statut",
|
|
17977
|
+
"record.metadata.technical": "Informations techniques",
|
|
17978
|
+
"record.metadata.temporalExtent": "Etendue temporelle",
|
|
17979
|
+
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
17980
|
+
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
17981
|
+
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
17843
17982
|
"record.metadata.title": "Titre",
|
|
17983
|
+
"record.metadata.topics": "Catégories",
|
|
17844
17984
|
"record.metadata.type": "Donnée géographique",
|
|
17845
17985
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17846
17986
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17847
|
-
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17848
17987
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17849
17988
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17850
17989
|
"record.more.details": "Détails",
|
|
@@ -17876,6 +18015,7 @@ var fr = {
|
|
|
17876
18015
|
"search.filters.isSpatial": "Données spatiales",
|
|
17877
18016
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17878
18017
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
18018
|
+
"search.filters.keyword": "Mot-clé",
|
|
17879
18019
|
"search.filters.license": "Licence",
|
|
17880
18020
|
"search.filters.license.cc-by": "cc-by",
|
|
17881
18021
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -17940,7 +18080,7 @@ var it = {
|
|
|
17940
18080
|
"chart.type.line": "grafico a linee",
|
|
17941
18081
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
17942
18082
|
"chart.type.pie": "grafico a torta",
|
|
17943
|
-
"dashboard.createRecord": "",
|
|
18083
|
+
"dashboard.createRecord": "Crea un record",
|
|
17944
18084
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
17945
18085
|
"dashboard.records.all": "Catalogo",
|
|
17946
18086
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
@@ -17953,8 +18093,8 @@ var it = {
|
|
|
17953
18093
|
"dashboard.records.userEmail": "Email",
|
|
17954
18094
|
"dashboard.records.username": "Nome utente",
|
|
17955
18095
|
"dashboard.records.users": "utenti",
|
|
17956
|
-
"dashboard.results.listMetadata": "",
|
|
17957
|
-
"dashboard.results.listResources": "",
|
|
18096
|
+
"dashboard.results.listMetadata": "Elenco dei metadati",
|
|
18097
|
+
"dashboard.results.listResources": "Elenco delle risorse",
|
|
17958
18098
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
17959
18099
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
17960
18100
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18068,6 +18208,8 @@ var it = {
|
|
|
18068
18208
|
"downloads.format.unknown": "sconosciuto",
|
|
18069
18209
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18070
18210
|
dropFile: dropFile$2,
|
|
18211
|
+
"editor.record.publish": "",
|
|
18212
|
+
"editor.record.upToDate": "",
|
|
18071
18213
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
18072
18214
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
18073
18215
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -18081,38 +18223,38 @@ var it = {
|
|
|
18081
18223
|
"facets.block.title.tag.default": "Tag",
|
|
18082
18224
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
18083
18225
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
18084
|
-
"language.ca": "
|
|
18085
|
-
"language.cs": "
|
|
18086
|
-
"language.de": "
|
|
18087
|
-
"language.en": "
|
|
18088
|
-
"language.es": "
|
|
18089
|
-
"language.fi": "
|
|
18090
|
-
"language.fr": "
|
|
18091
|
-
"language.is": "
|
|
18226
|
+
"language.ca": "Catalano",
|
|
18227
|
+
"language.cs": "Ceco",
|
|
18228
|
+
"language.de": "Tedesco",
|
|
18229
|
+
"language.en": "Inglese",
|
|
18230
|
+
"language.es": "Spagnolo",
|
|
18231
|
+
"language.fi": "Finlandese",
|
|
18232
|
+
"language.fr": "Francese",
|
|
18233
|
+
"language.is": "Islandese",
|
|
18092
18234
|
"language.it": "Italiano",
|
|
18093
|
-
"language.ko": "
|
|
18094
|
-
"language.nl": "
|
|
18095
|
-
"language.pt": "
|
|
18096
|
-
"language.ru": "
|
|
18097
|
-
"language.sk": "
|
|
18098
|
-
"language.zh": "
|
|
18235
|
+
"language.ko": "Coreano",
|
|
18236
|
+
"language.nl": "Olandese",
|
|
18237
|
+
"language.pt": "Portoghese",
|
|
18238
|
+
"language.ru": "Russo",
|
|
18239
|
+
"language.sk": "Slovacco",
|
|
18240
|
+
"language.zh": "Cinese",
|
|
18099
18241
|
"map.add.layer": "Aggiungere un layer",
|
|
18100
18242
|
"map.add.layer.catalog": "Dal catalogo",
|
|
18101
18243
|
"map.add.layer.file": "Da un file",
|
|
18102
18244
|
"map.add.layer.wfs": "Da un WFS",
|
|
18103
18245
|
"map.add.layer.wms": "Da un WMS",
|
|
18104
|
-
"map.addFromFile.placeholder": "",
|
|
18105
|
-
"map.geocoding.placeholder": "",
|
|
18106
|
-
"map.help.addFromFile": "",
|
|
18107
|
-
"map.layer.add": "",
|
|
18108
|
-
"map.layers.available": "",
|
|
18246
|
+
"map.addFromFile.placeholder": "Clicca o trascina un file qui",
|
|
18247
|
+
"map.geocoding.placeholder": "Cerca un luogo",
|
|
18248
|
+
"map.help.addFromFile": "Clicca o trascina un file per aggiungerlo alla mappa (attualmente supporta solo il formato GeoJSON)",
|
|
18249
|
+
"map.layer.add": "Aggiungi",
|
|
18250
|
+
"map.layers.available": "Layer disponibili",
|
|
18109
18251
|
"map.layers.list": "Layers",
|
|
18110
18252
|
"map.loading.data": "Caricamento dati...",
|
|
18111
|
-
"map.loading.service": "",
|
|
18253
|
+
"map.loading.service": "Caricamento del servizio...",
|
|
18112
18254
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18113
18255
|
"map.select.layer": "Sorgente dati",
|
|
18114
|
-
"map.wfs.urlInput.hint": "",
|
|
18115
|
-
"map.wms.urlInput.hint": "",
|
|
18256
|
+
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
18257
|
+
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
18116
18258
|
"multiselect.filter.placeholder": "Cerca",
|
|
18117
18259
|
"nav.back": "Indietro",
|
|
18118
18260
|
next: next$2,
|
|
@@ -18146,17 +18288,20 @@ var it = {
|
|
|
18146
18288
|
"record.metadata.author": "Autore",
|
|
18147
18289
|
"record.metadata.catalog": "Catalogo",
|
|
18148
18290
|
"record.metadata.contact": "Contatto",
|
|
18149
|
-
"record.metadata.
|
|
18291
|
+
"record.metadata.creation": "Data di creazione",
|
|
18292
|
+
"record.metadata.details": "A proposito del dati",
|
|
18150
18293
|
"record.metadata.download": "Download",
|
|
18151
18294
|
"record.metadata.formats": "Formati",
|
|
18152
18295
|
"record.metadata.keywords": "Parole chiave",
|
|
18153
|
-
"record.metadata.
|
|
18296
|
+
"record.metadata.languages": "Lingue",
|
|
18297
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
18154
18298
|
"record.metadata.links": "Collegamenti",
|
|
18155
18299
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18156
|
-
"record.metadata.origin": "Informazioni sui dati",
|
|
18157
18300
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18158
18301
|
"record.metadata.owner": "Catalogo originale",
|
|
18159
18302
|
"record.metadata.preview": "Anteprima",
|
|
18303
|
+
"record.metadata.producer": "Produttore dei dati",
|
|
18304
|
+
"record.metadata.publication": "Data di pubblicazione",
|
|
18160
18305
|
"record.metadata.publications": "pubblicazioni",
|
|
18161
18306
|
"record.metadata.quality": "Qualità dei metadati",
|
|
18162
18307
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
@@ -18178,13 +18323,17 @@ var it = {
|
|
|
18178
18323
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18179
18324
|
"record.metadata.related": "Vedi anche",
|
|
18180
18325
|
"record.metadata.sheet": "Origine del metadata",
|
|
18181
|
-
"record.metadata.status": "",
|
|
18182
|
-
"record.metadata.
|
|
18326
|
+
"record.metadata.status": "Stato",
|
|
18327
|
+
"record.metadata.technical": "Informazioni tecniche",
|
|
18328
|
+
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
18329
|
+
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
18330
|
+
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
18331
|
+
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
18183
18332
|
"record.metadata.title": "Titolo",
|
|
18333
|
+
"record.metadata.topics": "Categorie",
|
|
18184
18334
|
"record.metadata.type": "Dati geografici",
|
|
18185
18335
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18186
18336
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18187
|
-
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18188
18337
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18189
18338
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18190
18339
|
"record.more.details": "Dettagli",
|
|
@@ -18216,6 +18365,7 @@ var it = {
|
|
|
18216
18365
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18217
18366
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18218
18367
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18368
|
+
"search.filters.keyword": "Parola chiave",
|
|
18219
18369
|
"search.filters.license": "Licenza",
|
|
18220
18370
|
"search.filters.license.cc-by": "cc-by",
|
|
18221
18371
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18408,6 +18558,8 @@ var nl = {
|
|
|
18408
18558
|
"downloads.format.unknown": "",
|
|
18409
18559
|
"downloads.wfs.featuretype.not.found": "",
|
|
18410
18560
|
dropFile: dropFile$1,
|
|
18561
|
+
"editor.record.publish": "",
|
|
18562
|
+
"editor.record.upToDate": "",
|
|
18411
18563
|
"externalviewer.dataset.unnamed": "",
|
|
18412
18564
|
"facets.block.title.OrgForResource": "",
|
|
18413
18565
|
"facets.block.title.availableInServices": "",
|
|
@@ -18421,21 +18573,21 @@ var nl = {
|
|
|
18421
18573
|
"facets.block.title.tag.default": "",
|
|
18422
18574
|
"facets.block.title.th_regions_tree.default": "",
|
|
18423
18575
|
"favorite.not.authenticated.tooltip": "",
|
|
18424
|
-
"language.ca": "
|
|
18425
|
-
"language.cs": "
|
|
18426
|
-
"language.de": "
|
|
18427
|
-
"language.en": "
|
|
18428
|
-
"language.es": "
|
|
18429
|
-
"language.fi": "
|
|
18430
|
-
"language.fr": "
|
|
18431
|
-
"language.is": "
|
|
18432
|
-
"language.it": "
|
|
18433
|
-
"language.ko": "
|
|
18576
|
+
"language.ca": "Catalaans",
|
|
18577
|
+
"language.cs": "Tsjechisch",
|
|
18578
|
+
"language.de": "Duits",
|
|
18579
|
+
"language.en": "Engels",
|
|
18580
|
+
"language.es": "Spaans",
|
|
18581
|
+
"language.fi": "Fins",
|
|
18582
|
+
"language.fr": "Frans",
|
|
18583
|
+
"language.is": "IJslands",
|
|
18584
|
+
"language.it": "Italiaans",
|
|
18585
|
+
"language.ko": "Koreaans",
|
|
18434
18586
|
"language.nl": "Nederlands",
|
|
18435
|
-
"language.pt": "
|
|
18436
|
-
"language.ru": "
|
|
18437
|
-
"language.sk": "
|
|
18438
|
-
"language.zh": "
|
|
18587
|
+
"language.pt": "Portugees",
|
|
18588
|
+
"language.ru": "Russisch",
|
|
18589
|
+
"language.sk": "Slowaaks",
|
|
18590
|
+
"language.zh": "Chinees",
|
|
18439
18591
|
"map.add.layer": "",
|
|
18440
18592
|
"map.add.layer.catalog": "",
|
|
18441
18593
|
"map.add.layer.file": "",
|
|
@@ -18486,17 +18638,20 @@ var nl = {
|
|
|
18486
18638
|
"record.metadata.author": "",
|
|
18487
18639
|
"record.metadata.catalog": "",
|
|
18488
18640
|
"record.metadata.contact": "",
|
|
18641
|
+
"record.metadata.creation": "",
|
|
18489
18642
|
"record.metadata.details": "",
|
|
18490
18643
|
"record.metadata.download": "",
|
|
18491
18644
|
"record.metadata.formats": "",
|
|
18492
18645
|
"record.metadata.keywords": "",
|
|
18646
|
+
"record.metadata.languages": "",
|
|
18493
18647
|
"record.metadata.lastUpdate": "",
|
|
18494
18648
|
"record.metadata.links": "",
|
|
18495
18649
|
"record.metadata.noUsage": "",
|
|
18496
|
-
"record.metadata.origin": "",
|
|
18497
18650
|
"record.metadata.otherConstraints": "",
|
|
18498
18651
|
"record.metadata.owner": "",
|
|
18499
18652
|
"record.metadata.preview": "",
|
|
18653
|
+
"record.metadata.producer": "",
|
|
18654
|
+
"record.metadata.publication": "",
|
|
18500
18655
|
"record.metadata.publications": "",
|
|
18501
18656
|
"record.metadata.quality": "",
|
|
18502
18657
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18519,12 +18674,16 @@ var nl = {
|
|
|
18519
18674
|
"record.metadata.related": "",
|
|
18520
18675
|
"record.metadata.sheet": "",
|
|
18521
18676
|
"record.metadata.status": "",
|
|
18522
|
-
"record.metadata.
|
|
18677
|
+
"record.metadata.technical": "",
|
|
18678
|
+
"record.metadata.temporalExtent": "",
|
|
18679
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
18680
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
18681
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18523
18682
|
"record.metadata.title": "",
|
|
18683
|
+
"record.metadata.topics": "",
|
|
18524
18684
|
"record.metadata.type": "",
|
|
18525
18685
|
"record.metadata.uniqueId": "",
|
|
18526
18686
|
"record.metadata.updateFrequency": "",
|
|
18527
|
-
"record.metadata.updateStatus": "",
|
|
18528
18687
|
"record.metadata.updatedOn": "",
|
|
18529
18688
|
"record.metadata.usage": "",
|
|
18530
18689
|
"record.more.details": "",
|
|
@@ -18556,6 +18715,7 @@ var nl = {
|
|
|
18556
18715
|
"search.filters.isSpatial": "",
|
|
18557
18716
|
"search.filters.isSpatial.no": "",
|
|
18558
18717
|
"search.filters.isSpatial.yes": "",
|
|
18718
|
+
"search.filters.keyword": "",
|
|
18559
18719
|
"search.filters.license": "",
|
|
18560
18720
|
"search.filters.license.cc-by": "",
|
|
18561
18721
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18748,6 +18908,8 @@ var pt = {
|
|
|
18748
18908
|
"downloads.format.unknown": "",
|
|
18749
18909
|
"downloads.wfs.featuretype.not.found": "",
|
|
18750
18910
|
dropFile: dropFile,
|
|
18911
|
+
"editor.record.publish": "",
|
|
18912
|
+
"editor.record.upToDate": "",
|
|
18751
18913
|
"externalviewer.dataset.unnamed": "",
|
|
18752
18914
|
"facets.block.title.OrgForResource": "",
|
|
18753
18915
|
"facets.block.title.availableInServices": "",
|
|
@@ -18761,21 +18923,21 @@ var pt = {
|
|
|
18761
18923
|
"facets.block.title.tag.default": "",
|
|
18762
18924
|
"facets.block.title.th_regions_tree.default": "",
|
|
18763
18925
|
"favorite.not.authenticated.tooltip": "",
|
|
18764
|
-
"language.ca": "
|
|
18765
|
-
"language.cs": "
|
|
18766
|
-
"language.de": "
|
|
18767
|
-
"language.en": "
|
|
18768
|
-
"language.es": "
|
|
18769
|
-
"language.fi": "
|
|
18770
|
-
"language.fr": "
|
|
18771
|
-
"language.is": "
|
|
18926
|
+
"language.ca": "Catalão",
|
|
18927
|
+
"language.cs": "Tcheco",
|
|
18928
|
+
"language.de": "Alemão",
|
|
18929
|
+
"language.en": "Inglês",
|
|
18930
|
+
"language.es": "Espanhol",
|
|
18931
|
+
"language.fi": "Finlandês",
|
|
18932
|
+
"language.fr": "Francês",
|
|
18933
|
+
"language.is": "Islandês",
|
|
18772
18934
|
"language.it": "Italiano",
|
|
18773
|
-
"language.ko": "
|
|
18774
|
-
"language.nl": "
|
|
18935
|
+
"language.ko": "Coreano",
|
|
18936
|
+
"language.nl": "Holandês",
|
|
18775
18937
|
"language.pt": "Português",
|
|
18776
|
-
"language.ru": "
|
|
18777
|
-
"language.sk": "
|
|
18778
|
-
"language.zh": "
|
|
18938
|
+
"language.ru": "Russo",
|
|
18939
|
+
"language.sk": "Eslovaco",
|
|
18940
|
+
"language.zh": "Chinês",
|
|
18779
18941
|
"map.add.layer": "",
|
|
18780
18942
|
"map.add.layer.catalog": "",
|
|
18781
18943
|
"map.add.layer.file": "",
|
|
@@ -18826,17 +18988,20 @@ var pt = {
|
|
|
18826
18988
|
"record.metadata.author": "",
|
|
18827
18989
|
"record.metadata.catalog": "",
|
|
18828
18990
|
"record.metadata.contact": "",
|
|
18991
|
+
"record.metadata.creation": "",
|
|
18829
18992
|
"record.metadata.details": "",
|
|
18830
18993
|
"record.metadata.download": "",
|
|
18831
18994
|
"record.metadata.formats": "",
|
|
18832
18995
|
"record.metadata.keywords": "",
|
|
18996
|
+
"record.metadata.languages": "",
|
|
18833
18997
|
"record.metadata.lastUpdate": "",
|
|
18834
18998
|
"record.metadata.links": "",
|
|
18835
18999
|
"record.metadata.noUsage": "",
|
|
18836
|
-
"record.metadata.origin": "",
|
|
18837
19000
|
"record.metadata.otherConstraints": "",
|
|
18838
19001
|
"record.metadata.owner": "",
|
|
18839
19002
|
"record.metadata.preview": "",
|
|
19003
|
+
"record.metadata.producer": "",
|
|
19004
|
+
"record.metadata.publication": "",
|
|
18840
19005
|
"record.metadata.publications": "",
|
|
18841
19006
|
"record.metadata.quality": "",
|
|
18842
19007
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18859,12 +19024,16 @@ var pt = {
|
|
|
18859
19024
|
"record.metadata.related": "",
|
|
18860
19025
|
"record.metadata.sheet": "",
|
|
18861
19026
|
"record.metadata.status": "",
|
|
18862
|
-
"record.metadata.
|
|
19027
|
+
"record.metadata.technical": "",
|
|
19028
|
+
"record.metadata.temporalExtent": "",
|
|
19029
|
+
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
19030
|
+
"record.metadata.temporalExtent.sinceDate": "",
|
|
19031
|
+
"record.metadata.temporalExtent.untilDate": "",
|
|
18863
19032
|
"record.metadata.title": "",
|
|
19033
|
+
"record.metadata.topics": "",
|
|
18864
19034
|
"record.metadata.type": "",
|
|
18865
19035
|
"record.metadata.uniqueId": "",
|
|
18866
19036
|
"record.metadata.updateFrequency": "",
|
|
18867
|
-
"record.metadata.updateStatus": "",
|
|
18868
19037
|
"record.metadata.updatedOn": "",
|
|
18869
19038
|
"record.metadata.usage": "",
|
|
18870
19039
|
"record.more.details": "",
|
|
@@ -18896,6 +19065,7 @@ var pt = {
|
|
|
18896
19065
|
"search.filters.isSpatial": "",
|
|
18897
19066
|
"search.filters.isSpatial.no": "",
|
|
18898
19067
|
"search.filters.isSpatial.yes": "",
|
|
19068
|
+
"search.filters.keyword": "",
|
|
18899
19069
|
"search.filters.license": "",
|
|
18900
19070
|
"search.filters.license.cc-by": "",
|
|
18901
19071
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -19004,8 +19174,8 @@ class Gn4FieldMapper {
|
|
|
19004
19174
|
},
|
|
19005
19175
|
cl_topic: (output, source) => ({
|
|
19006
19176
|
...output,
|
|
19007
|
-
|
|
19008
|
-
...(output.
|
|
19177
|
+
topics: [
|
|
19178
|
+
...(output.topics || []),
|
|
19009
19179
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19010
19180
|
],
|
|
19011
19181
|
}),
|
|
@@ -19029,6 +19199,18 @@ class Gn4FieldMapper {
|
|
|
19029
19199
|
...output,
|
|
19030
19200
|
recordUpdated: toDate(selectField(source, 'changeDate')),
|
|
19031
19201
|
}),
|
|
19202
|
+
publicationDateForResource: (output, source) => ({
|
|
19203
|
+
...output,
|
|
19204
|
+
recordPublished: toDate(selectField(source, 'publicationDateForResource')),
|
|
19205
|
+
}),
|
|
19206
|
+
resourceLanguage: (output, source) => {
|
|
19207
|
+
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
19208
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
19209
|
+
return {
|
|
19210
|
+
...output,
|
|
19211
|
+
languages,
|
|
19212
|
+
};
|
|
19213
|
+
},
|
|
19032
19214
|
link: (output, source) => {
|
|
19033
19215
|
const rawLinks = getAsArray(selectField(source, 'link'));
|
|
19034
19216
|
const distributions = rawLinks
|
|
@@ -19060,14 +19242,14 @@ class Gn4FieldMapper {
|
|
|
19060
19242
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19061
19243
|
}, output);
|
|
19062
19244
|
},
|
|
19063
|
-
|
|
19245
|
+
allKeywords: (output, source) => ({
|
|
19064
19246
|
...output,
|
|
19065
|
-
keywords:
|
|
19247
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19066
19248
|
}),
|
|
19067
19249
|
inspireTheme: (output, source) => ({
|
|
19068
19250
|
...output,
|
|
19069
|
-
|
|
19070
|
-
...(output.
|
|
19251
|
+
topics: [
|
|
19252
|
+
...(output.topics || []),
|
|
19071
19253
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19072
19254
|
],
|
|
19073
19255
|
}),
|
|
@@ -19121,8 +19303,8 @@ class Gn4FieldMapper {
|
|
|
19121
19303
|
],
|
|
19122
19304
|
};
|
|
19123
19305
|
},
|
|
19124
|
-
|
|
19125
|
-
const ranges = getAsArray(selectField(source, '
|
|
19306
|
+
resourceTemporalExtentDateRange: (output, source) => {
|
|
19307
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalExtentDateRange'));
|
|
19126
19308
|
return {
|
|
19127
19309
|
...output,
|
|
19128
19310
|
temporalExtents: ranges.map((range) => {
|
|
@@ -19279,6 +19461,7 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19279
19461
|
status: null,
|
|
19280
19462
|
lineage: null,
|
|
19281
19463
|
recordUpdated: null,
|
|
19464
|
+
recordPublished: null,
|
|
19282
19465
|
ownerOrganization: null,
|
|
19283
19466
|
licenses: [],
|
|
19284
19467
|
legalConstraints: [],
|
|
@@ -19287,10 +19470,11 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19287
19470
|
contacts: [],
|
|
19288
19471
|
contactsForResource: [],
|
|
19289
19472
|
keywords: [],
|
|
19290
|
-
|
|
19473
|
+
topics: [],
|
|
19291
19474
|
spatialExtents: [],
|
|
19292
19475
|
temporalExtents: [],
|
|
19293
19476
|
overviews: [],
|
|
19477
|
+
languages: [],
|
|
19294
19478
|
};
|
|
19295
19479
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19296
19480
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -19450,7 +19634,7 @@ class ElasticsearchService {
|
|
|
19450
19634
|
},
|
|
19451
19635
|
};
|
|
19452
19636
|
}
|
|
19453
|
-
getRelatedRecordPayload(title, uuid, size = 6, _source = ES_SOURCE_SUMMARY) {
|
|
19637
|
+
getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
|
|
19454
19638
|
return {
|
|
19455
19639
|
query: {
|
|
19456
19640
|
bool: {
|
|
@@ -20055,11 +20239,18 @@ class OrganizationsFromMetadataService {
|
|
|
20055
20239
|
if (!allContactOrgs.length)
|
|
20056
20240
|
return of(record);
|
|
20057
20241
|
const ownerOrganization = allContactOrgs[0];
|
|
20058
|
-
|
|
20242
|
+
// read the owner group as well to have a fallback logo
|
|
20243
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20244
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20245
|
+
return group.id === Number(groupId);
|
|
20246
|
+
})));
|
|
20247
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20059
20248
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20249
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20060
20250
|
return {
|
|
20061
20251
|
...record,
|
|
20062
20252
|
ownerOrganization: {
|
|
20253
|
+
logoUrl,
|
|
20063
20254
|
...ownerOrganization,
|
|
20064
20255
|
...recordOrganisation,
|
|
20065
20256
|
},
|
|
@@ -20370,12 +20561,21 @@ class Gn4PlatformMapper {
|
|
|
20370
20561
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20371
20562
|
return { ...apiUser, id: id.toString() };
|
|
20372
20563
|
}
|
|
20373
|
-
thesaurusFromApi(thesaurus) {
|
|
20564
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20374
20565
|
return thesaurus.map((keyword) => {
|
|
20375
|
-
|
|
20566
|
+
let key = keyword.uri;
|
|
20567
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20568
|
+
if (key.indexOf('@@@') > -1) {
|
|
20569
|
+
key = key.split('@@@')[1];
|
|
20570
|
+
}
|
|
20571
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20572
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20573
|
+
? keyword.definitions[lang3]
|
|
20574
|
+
: keyword.definition;
|
|
20376
20575
|
return {
|
|
20377
|
-
key
|
|
20378
|
-
label
|
|
20576
|
+
key,
|
|
20577
|
+
label,
|
|
20578
|
+
description,
|
|
20379
20579
|
};
|
|
20380
20580
|
});
|
|
20381
20581
|
}
|
|
@@ -20388,13 +20588,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20388
20588
|
|
|
20389
20589
|
const minApiVersion = '4.2.2';
|
|
20390
20590
|
class Gn4PlatformService {
|
|
20391
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20591
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20392
20592
|
this.siteApiService = siteApiService;
|
|
20393
20593
|
this.meApi = meApi;
|
|
20394
20594
|
this.usersApi = usersApi;
|
|
20395
20595
|
this.mapper = mapper;
|
|
20396
20596
|
this.toolsApiService = toolsApiService;
|
|
20397
20597
|
this.registriesApiService = registriesApiService;
|
|
20598
|
+
this.langService = langService;
|
|
20398
20599
|
this.type = 'GeoNetwork';
|
|
20399
20600
|
this.keyTranslations$ = this.toolsApiService
|
|
20400
20601
|
.getTranslationsPackage1('gnui')
|
|
@@ -20408,6 +20609,11 @@ class Gn4PlatformService {
|
|
|
20408
20609
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20409
20610
|
}
|
|
20410
20611
|
}), shareReplay(1));
|
|
20612
|
+
/**
|
|
20613
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20614
|
+
* @private
|
|
20615
|
+
*/
|
|
20616
|
+
this.thesauri = {};
|
|
20411
20617
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20412
20618
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20413
20619
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20434,19 +20640,36 @@ class Gn4PlatformService {
|
|
|
20434
20640
|
return this.users$;
|
|
20435
20641
|
}
|
|
20436
20642
|
translateKey(key) {
|
|
20643
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20644
|
+
if (key.match(/^https?:\/\//)) {
|
|
20645
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20646
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20647
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20648
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20649
|
+
for (const item of thesaurus) {
|
|
20650
|
+
if (item.key === key)
|
|
20651
|
+
return item.label;
|
|
20652
|
+
}
|
|
20653
|
+
return key;
|
|
20654
|
+
}));
|
|
20655
|
+
}
|
|
20437
20656
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20438
20657
|
}
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
.
|
|
20442
|
-
|
|
20658
|
+
getThesaurusByUri(uri) {
|
|
20659
|
+
if (this.thesauri[uri]) {
|
|
20660
|
+
return this.thesauri[uri];
|
|
20661
|
+
}
|
|
20662
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20663
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20664
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20665
|
+
return this.thesauri[uri];
|
|
20443
20666
|
}
|
|
20444
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20667
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20445
20668
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20446
20669
|
}
|
|
20447
20670
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20448
20671
|
type: Injectable
|
|
20449
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20672
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20450
20673
|
|
|
20451
20674
|
function provideGn4() {
|
|
20452
20675
|
return [
|
|
@@ -20482,7 +20705,7 @@ const MAP_FEATURE_KEY = 'map';
|
|
|
20482
20705
|
const initialMapState = {
|
|
20483
20706
|
layers: [],
|
|
20484
20707
|
};
|
|
20485
|
-
const reducer$
|
|
20708
|
+
const reducer$3 = createReducer(initialMapState, on(addLayer, (state, action) => {
|
|
20486
20709
|
const layers = [...state.layers];
|
|
20487
20710
|
const layerWithInfo = { ...action.layer, loading: false, error: null };
|
|
20488
20711
|
if (!('atIndex' in action))
|
|
@@ -20531,7 +20754,7 @@ const reducer$2 = createReducer(initialMapState, on(addLayer, (state, action) =>
|
|
|
20531
20754
|
: layer),
|
|
20532
20755
|
})));
|
|
20533
20756
|
function mapReducer(state, action) {
|
|
20534
|
-
return reducer$
|
|
20757
|
+
return reducer$3(state, action);
|
|
20535
20758
|
}
|
|
20536
20759
|
|
|
20537
20760
|
// Lookup the 'Map' feature state managed by NgRx
|
|
@@ -20994,6 +21217,38 @@ function createFuzzyFilter(pattern) {
|
|
|
20994
21217
|
};
|
|
20995
21218
|
}
|
|
20996
21219
|
|
|
21220
|
+
function getTemporalRangeUnion(ranges) {
|
|
21221
|
+
let earliestStartDate = Infinity;
|
|
21222
|
+
let latestEndDate = -Infinity;
|
|
21223
|
+
if (ranges.length) {
|
|
21224
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
21225
|
+
const rangeStart = ranges[i].start
|
|
21226
|
+
? new Date(ranges[i].start).getTime()
|
|
21227
|
+
: -Infinity;
|
|
21228
|
+
const rangeEnd = ranges[i].end
|
|
21229
|
+
? new Date(ranges[i].end).getTime()
|
|
21230
|
+
: Infinity;
|
|
21231
|
+
if (rangeStart < earliestStartDate) {
|
|
21232
|
+
earliestStartDate = rangeStart;
|
|
21233
|
+
}
|
|
21234
|
+
if (rangeEnd > latestEndDate) {
|
|
21235
|
+
latestEndDate = rangeEnd;
|
|
21236
|
+
}
|
|
21237
|
+
}
|
|
21238
|
+
return {
|
|
21239
|
+
start: earliestStartDate !== -Infinity
|
|
21240
|
+
? new Date(earliestStartDate).toLocaleDateString()
|
|
21241
|
+
: undefined,
|
|
21242
|
+
end: latestEndDate !== Infinity
|
|
21243
|
+
? new Date(latestEndDate).toLocaleDateString()
|
|
21244
|
+
: undefined,
|
|
21245
|
+
};
|
|
21246
|
+
}
|
|
21247
|
+
else {
|
|
21248
|
+
return undefined;
|
|
21249
|
+
}
|
|
21250
|
+
}
|
|
21251
|
+
|
|
20997
21252
|
marker('downloads.wfs.featuretype.not.found');
|
|
20998
21253
|
const FORMATS = {
|
|
20999
21254
|
csv: {
|
|
@@ -22524,6 +22779,9 @@ class MapContextService {
|
|
|
22524
22779
|
if (mapConfig) {
|
|
22525
22780
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22526
22781
|
}
|
|
22782
|
+
else {
|
|
22783
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22784
|
+
}
|
|
22527
22785
|
if (!mapContext.view?.extent &&
|
|
22528
22786
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22529
22787
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22634,6 +22892,11 @@ class MapContextService {
|
|
|
22634
22892
|
}
|
|
22635
22893
|
return view;
|
|
22636
22894
|
}
|
|
22895
|
+
addDefaultBaselayerContext(layers) {
|
|
22896
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22897
|
+
? layers
|
|
22898
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22899
|
+
}
|
|
22637
22900
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22638
22901
|
return {
|
|
22639
22902
|
...mapContext,
|
|
@@ -23180,11 +23443,11 @@ class ThumbnailComponent {
|
|
|
23180
23443
|
}
|
|
23181
23444
|
}
|
|
23182
23445
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, deps: [{ token: THUMBNAIL_PLACEHOLDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23446
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: { thumbnailUrl: "thumbnailUrl", fit: "fit" }, outputs: { placeholderShown: "placeholderShown" }, viewQueries: [{ propertyName: "imgElement", first: true, predicate: ["imageElement"], descendants: true }, { propertyName: "containerElement", first: true, predicate: ["containerElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23184
23447
|
}
|
|
23185
23448
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23186
23449
|
type: Component,
|
|
23187
|
-
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23450
|
+
args: [{ selector: 'gn-ui-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #containerElement\n class=\"h-full w-full relative shrink-0 overflow-hidden flex items-center justify-center\"\n [ngClass]=\"isPlaceholder ? 'bg-gray-100' : 'bg-white'\"\n [attr.data-cy-is-placeholder]=\"isPlaceholder.toString()\"\n>\n <img\n #imageElement\n class=\"relative w-full object-center\"\n [ngClass]=\"imgFit === 'contain' ? 'h-4/5 w-4/5' : 'h-full'\"\n [ngStyle]=\"{ objectFit: imgFit }\"\n alt=\"thumbnail\"\n loading=\"lazy\"\n (load)=\"setObjectFit()\"\n [src]=\"imgUrl\"\n (error)=\"useFallback()\"\n />\n</div>\n" }]
|
|
23188
23451
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23189
23452
|
type: Optional
|
|
23190
23453
|
}, {
|
|
@@ -23312,8 +23575,7 @@ class MetadataQualityComponent {
|
|
|
23312
23575
|
: this.calculatedQualityScore;
|
|
23313
23576
|
}
|
|
23314
23577
|
get calculatedQualityScore() {
|
|
23315
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23316
|
-
this.items.length);
|
|
23578
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23317
23579
|
}
|
|
23318
23580
|
showMenu() {
|
|
23319
23581
|
this.isMenuShown = true;
|
|
@@ -23331,7 +23593,7 @@ class MetadataQualityComponent {
|
|
|
23331
23593
|
this.items = [];
|
|
23332
23594
|
this.add('title', !!this.metadata?.title);
|
|
23333
23595
|
this.add('description', !!this.metadata?.abstract);
|
|
23334
|
-
this.add('topic', this.metadata?.
|
|
23596
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23335
23597
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23336
23598
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23337
23599
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23779,6 +24041,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23779
24041
|
type: Input
|
|
23780
24042
|
}] } });
|
|
23781
24043
|
|
|
24044
|
+
class MarkdownParserComponent {
|
|
24045
|
+
get parsedMarkdown() {
|
|
24046
|
+
return marked.parse(this.textContent);
|
|
24047
|
+
}
|
|
24048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24050
|
+
}
|
|
24051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
24052
|
+
type: Component,
|
|
24053
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
24054
|
+
}], propDecorators: { textContent: [{
|
|
24055
|
+
type: Input
|
|
24056
|
+
}] } });
|
|
24057
|
+
|
|
23782
24058
|
class ContentGhostComponent {
|
|
23783
24059
|
constructor() {
|
|
23784
24060
|
this.ghostClass = '';
|
|
@@ -23918,14 +24194,16 @@ class MaxLinesComponent {
|
|
|
23918
24194
|
return result;
|
|
23919
24195
|
}
|
|
23920
24196
|
ngOnDestroy() {
|
|
24197
|
+
if (!this.observer)
|
|
24198
|
+
return;
|
|
23921
24199
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
23922
24200
|
}
|
|
23923
24201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23924
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24202
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23925
24203
|
}
|
|
23926
24204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
23927
24205
|
type: Component,
|
|
23928
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
24206
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
23929
24207
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
23930
24208
|
type: Input
|
|
23931
24209
|
}], container: [{
|
|
@@ -23933,20 +24211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23933
24211
|
args: ['container']
|
|
23934
24212
|
}] } });
|
|
23935
24213
|
|
|
23936
|
-
class MarkdownParserComponent {
|
|
23937
|
-
get parsedMarkdown() {
|
|
23938
|
-
return marked.parse(this.textContent);
|
|
23939
|
-
}
|
|
23940
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23941
|
-
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}: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 }); }
|
|
23942
|
-
}
|
|
23943
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23944
|
-
type: Component,
|
|
23945
|
-
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}: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"] }]
|
|
23946
|
-
}], propDecorators: { textContent: [{
|
|
23947
|
-
type: Input
|
|
23948
|
-
}] } });
|
|
23949
|
-
|
|
23950
24214
|
class MetadataInfoComponent {
|
|
23951
24215
|
constructor() {
|
|
23952
24216
|
this.keyword = new EventEmitter();
|
|
@@ -23994,6 +24258,16 @@ class MetadataInfoComponent {
|
|
|
23994
24258
|
return undefined;
|
|
23995
24259
|
}
|
|
23996
24260
|
}
|
|
24261
|
+
get temporalExtent() {
|
|
24262
|
+
const temporalExtents = this.metadata.temporalExtents;
|
|
24263
|
+
return getTemporalRangeUnion(temporalExtents);
|
|
24264
|
+
}
|
|
24265
|
+
get shownOrganization() {
|
|
24266
|
+
return this.metadata.ownerOrganization;
|
|
24267
|
+
}
|
|
24268
|
+
get resourceContact() {
|
|
24269
|
+
return this.metadata.contactsForResource?.[0];
|
|
24270
|
+
}
|
|
23997
24271
|
fieldReady(propName) {
|
|
23998
24272
|
return !this.incomplete || propName in this.metadata;
|
|
23999
24273
|
}
|
|
@@ -24001,11 +24275,11 @@ class MetadataInfoComponent {
|
|
|
24001
24275
|
this.keyword.emit(keyword);
|
|
24002
24276
|
}
|
|
24003
24277
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24004
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words text-gray-900\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.themes?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.themes</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 lowercase\"\n *ngFor=\"let theme of metadata.themes\"\n >{{ theme }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </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 }); }
|
|
24005
24279
|
}
|
|
24006
24280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24007
24281
|
type: Component,
|
|
24008
|
-
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
|
|
24282
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </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"] }]
|
|
24009
24283
|
}], propDecorators: { metadata: [{
|
|
24010
24284
|
type: Input
|
|
24011
24285
|
}], incomplete: [{
|
|
@@ -24045,23 +24319,23 @@ class ButtonComponent {
|
|
|
24045
24319
|
this.extraClass = '';
|
|
24046
24320
|
this.buttonClick = new EventEmitter();
|
|
24047
24321
|
}
|
|
24048
|
-
// btn-classes are explicited to allow tailwind recognize them and add it in css.
|
|
24049
24322
|
set type(value) {
|
|
24323
|
+
// btn-classes are written in full to be picked up by tailwind
|
|
24050
24324
|
switch (value) {
|
|
24051
24325
|
case 'primary':
|
|
24052
|
-
this.btnClass = 'btn-primary';
|
|
24326
|
+
this.btnClass = 'gn-ui-btn-primary';
|
|
24053
24327
|
break;
|
|
24054
24328
|
case 'secondary':
|
|
24055
|
-
this.btnClass = 'btn-secondary';
|
|
24329
|
+
this.btnClass = 'gn-ui-btn-secondary';
|
|
24056
24330
|
break;
|
|
24057
24331
|
case 'outline':
|
|
24058
|
-
this.btnClass = 'btn-outline';
|
|
24332
|
+
this.btnClass = 'gn-ui-btn-outline';
|
|
24059
24333
|
break;
|
|
24060
24334
|
case 'light':
|
|
24061
|
-
this.btnClass = 'btn-light';
|
|
24335
|
+
this.btnClass = 'gn-ui-btn-light';
|
|
24062
24336
|
break;
|
|
24063
24337
|
default:
|
|
24064
|
-
this.btnClass = 'btn-default';
|
|
24338
|
+
this.btnClass = 'gn-ui-btn-default';
|
|
24065
24339
|
break;
|
|
24066
24340
|
}
|
|
24067
24341
|
}
|
|
@@ -24074,11 +24348,11 @@ class ButtonComponent {
|
|
|
24074
24348
|
propagateToDocumentOnly(event);
|
|
24075
24349
|
}
|
|
24076
24350
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24077
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n
|
|
24351
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, isStandalone: true, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24078
24352
|
}
|
|
24079
24353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24080
24354
|
type: Component,
|
|
24081
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n
|
|
24355
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n" }]
|
|
24082
24356
|
}], propDecorators: { type: [{
|
|
24083
24357
|
type: Input
|
|
24084
24358
|
}], disabled: [{
|
|
@@ -24358,11 +24632,11 @@ class CarouselComponent {
|
|
|
24358
24632
|
this.emblaApi.scrollTo(stepIndex);
|
|
24359
24633
|
}
|
|
24360
24634
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24362
24636
|
}
|
|
24363
24637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24364
24638
|
type: Component,
|
|
24365
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24639
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"overflow-hidden h-full w-full\">\n <div class=\"carousel-container flex flex-row\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute right-0 top-0 flex flex-row justify-center gap-[10px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"selectedStep === i ? 'bg-secondary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-4px;top:-4px;width:14px;height:14px}\n"] }]
|
|
24366
24640
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24367
24641
|
type: Input
|
|
24368
24642
|
}], stepsContainerClass: [{
|
|
@@ -24514,11 +24788,11 @@ class MetadataContactComponent {
|
|
|
24514
24788
|
this.organizationClick.emit(this.shownOrganization);
|
|
24515
24789
|
}
|
|
24516
24790
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24517
|
-
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 }); }
|
|
24791
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24518
24792
|
}
|
|
24519
24793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24520
24794
|
type: Component,
|
|
24521
|
-
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" }]
|
|
24795
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24522
24796
|
}], propDecorators: { metadata: [{
|
|
24523
24797
|
type: Input
|
|
24524
24798
|
}], organizationClick: [{
|
|
@@ -24742,11 +25016,11 @@ class DropdownSelectorComponent {
|
|
|
24742
25016
|
}
|
|
24743
25017
|
}
|
|
24744
25018
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24745
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25019
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24746
25020
|
}
|
|
24747
25021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24748
25022
|
type: Component,
|
|
24749
|
-
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"!p-[8px] !pl-[16px] flex flex-row w-full {{
|
|
25023
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24750
25024
|
}], propDecorators: { title: [{
|
|
24751
25025
|
type: Input
|
|
24752
25026
|
}], showTitle: [{
|
|
@@ -24922,11 +25196,11 @@ class DropdownMultiselectComponent {
|
|
|
24922
25196
|
this.setFocus();
|
|
24923
25197
|
}
|
|
24924
25198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24925
|
-
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 }); }
|
|
25199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24926
25200
|
}
|
|
24927
25201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24928
25202
|
type: Component,
|
|
24929
|
-
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" }]
|
|
25203
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24930
25204
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24931
25205
|
type: Input
|
|
24932
25206
|
}], choices: [{
|
|
@@ -25080,11 +25354,11 @@ class TextAreaComponent {
|
|
|
25080
25354
|
this.rawChange.next(value);
|
|
25081
25355
|
}
|
|
25082
25356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25083
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25357
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25084
25358
|
}
|
|
25085
25359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25086
25360
|
type: Component,
|
|
25087
|
-
args: [{ selector: 'gn-ui-text-area', template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25361
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25088
25362
|
}], propDecorators: { value: [{
|
|
25089
25363
|
type: Input
|
|
25090
25364
|
}], placeholder: [{
|
|
@@ -25354,11 +25628,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25354
25628
|
|
|
25355
25629
|
class NavigationButtonComponent {
|
|
25356
25630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25357
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25631
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25358
25632
|
}
|
|
25359
25633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25360
25634
|
type: Component,
|
|
25361
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25635
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
25362
25636
|
}], propDecorators: { label: [{
|
|
25363
25637
|
type: Input
|
|
25364
25638
|
}], icon: [{
|
|
@@ -25491,7 +25765,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25491
25765
|
|
|
25492
25766
|
class FormFieldComponent {
|
|
25493
25767
|
set value(v) {
|
|
25494
|
-
this.formControl.setValue(v
|
|
25768
|
+
this.formControl.setValue(v, {
|
|
25769
|
+
emitEvent: false,
|
|
25770
|
+
});
|
|
25495
25771
|
}
|
|
25496
25772
|
constructor() {
|
|
25497
25773
|
this.formControl = new FormControl();
|
|
@@ -25672,10 +25948,8 @@ class UiInputsModule {
|
|
|
25672
25948
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25673
25949
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25674
25950
|
AutocompleteComponent,
|
|
25675
|
-
ButtonComponent,
|
|
25676
25951
|
TextInputComponent,
|
|
25677
25952
|
DragAndDropFileInputComponent,
|
|
25678
|
-
TextAreaComponent,
|
|
25679
25953
|
ChipsInputComponent,
|
|
25680
25954
|
NavigationButtonComponent,
|
|
25681
25955
|
StarToggleComponent,
|
|
@@ -25708,7 +25982,9 @@ class UiInputsModule {
|
|
|
25708
25982
|
MatInputModule,
|
|
25709
25983
|
MatDatepickerModule,
|
|
25710
25984
|
MatNativeDateModule,
|
|
25711
|
-
EditableLabelDirective
|
|
25985
|
+
EditableLabelDirective,
|
|
25986
|
+
TextAreaComponent,
|
|
25987
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25712
25988
|
AutocompleteComponent,
|
|
25713
25989
|
ButtonComponent,
|
|
25714
25990
|
TextInputComponent,
|
|
@@ -25750,10 +26026,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25750
26026
|
declarations: [
|
|
25751
26027
|
DropdownSelectorComponent,
|
|
25752
26028
|
AutocompleteComponent,
|
|
25753
|
-
ButtonComponent,
|
|
25754
26029
|
TextInputComponent,
|
|
25755
26030
|
DragAndDropFileInputComponent,
|
|
25756
|
-
TextAreaComponent,
|
|
25757
26031
|
ChipsInputComponent,
|
|
25758
26032
|
NavigationButtonComponent,
|
|
25759
26033
|
StarToggleComponent,
|
|
@@ -25792,6 +26066,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25792
26066
|
MatDatepickerModule,
|
|
25793
26067
|
MatNativeDateModule,
|
|
25794
26068
|
EditableLabelDirective,
|
|
26069
|
+
TextAreaComponent,
|
|
26070
|
+
ButtonComponent,
|
|
25795
26071
|
],
|
|
25796
26072
|
exports: [
|
|
25797
26073
|
DropdownSelectorComponent,
|
|
@@ -26013,7 +26289,6 @@ class UiElementsModule {
|
|
|
26013
26289
|
PaginationButtonsComponent,
|
|
26014
26290
|
MaxLinesComponent,
|
|
26015
26291
|
RecordApiFormComponent,
|
|
26016
|
-
MarkdownParserComponent,
|
|
26017
26292
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
26018
26293
|
MatIconModule,
|
|
26019
26294
|
MatTooltipModule,
|
|
@@ -26022,7 +26297,8 @@ class UiElementsModule {
|
|
|
26022
26297
|
RouterModule,
|
|
26023
26298
|
UiInputsModule,
|
|
26024
26299
|
FormsModule,
|
|
26025
|
-
NgOptimizedImage
|
|
26300
|
+
NgOptimizedImage,
|
|
26301
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26026
26302
|
ContentGhostComponent,
|
|
26027
26303
|
DownloadItemComponent,
|
|
26028
26304
|
DownloadsListComponent,
|
|
@@ -26069,6 +26345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26069
26345
|
UiInputsModule,
|
|
26070
26346
|
FormsModule,
|
|
26071
26347
|
NgOptimizedImage,
|
|
26348
|
+
MarkdownParserComponent,
|
|
26072
26349
|
],
|
|
26073
26350
|
declarations: [
|
|
26074
26351
|
MetadataInfoComponent,
|
|
@@ -26091,7 +26368,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26091
26368
|
PaginationButtonsComponent,
|
|
26092
26369
|
MaxLinesComponent,
|
|
26093
26370
|
RecordApiFormComponent,
|
|
26094
|
-
MarkdownParserComponent,
|
|
26095
26371
|
ImageOverlayPreviewComponent,
|
|
26096
26372
|
],
|
|
26097
26373
|
exports: [
|
|
@@ -26495,7 +26771,7 @@ const initSearch = () => {
|
|
|
26495
26771
|
const initialState = {
|
|
26496
26772
|
[DEFAULT_SEARCH_KEY]: initSearch(),
|
|
26497
26773
|
};
|
|
26498
|
-
function reducer$
|
|
26774
|
+
function reducer$2(state = initialState, action) {
|
|
26499
26775
|
const { id } = action;
|
|
26500
26776
|
if (id) {
|
|
26501
26777
|
let stateSearch = state[id] || initSearch();
|
|
@@ -27437,11 +27713,11 @@ class FavoriteStarComponent {
|
|
|
27437
27713
|
});
|
|
27438
27714
|
}
|
|
27439
27715
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27440
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row
|
|
27716
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27441
27717
|
}
|
|
27442
27718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27443
27719
|
type: Component,
|
|
27444
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row
|
|
27720
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n <span\n class=\"align-text-top ml-1.5 favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27445
27721
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27446
27722
|
type: Input
|
|
27447
27723
|
}], record: [{
|
|
@@ -27730,10 +28006,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27730
28006
|
class AbstractSearchField {
|
|
27731
28007
|
}
|
|
27732
28008
|
class SimpleSearchField {
|
|
27733
|
-
constructor(esFieldName, order = 'asc',
|
|
28009
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27734
28010
|
this.esFieldName = esFieldName;
|
|
27735
|
-
this.order = order;
|
|
27736
28011
|
this.injector = injector;
|
|
28012
|
+
this.order = order;
|
|
28013
|
+
this.orderType = orderType;
|
|
27737
28014
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27738
28015
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27739
28016
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27744,12 +28021,12 @@ class SimpleSearchField {
|
|
|
27744
28021
|
type: 'terms',
|
|
27745
28022
|
field: this.esFieldName,
|
|
27746
28023
|
limit: 1000,
|
|
27747
|
-
sort: [this.order,
|
|
28024
|
+
sort: [this.order, this.orderType],
|
|
27748
28025
|
},
|
|
27749
28026
|
};
|
|
27750
28027
|
}
|
|
27751
28028
|
async getBucketLabel(bucket) {
|
|
27752
|
-
return bucket.term;
|
|
28029
|
+
return bucket.term.toString();
|
|
27753
28030
|
}
|
|
27754
28031
|
getAvailableValues() {
|
|
27755
28032
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27777,9 +28054,13 @@ class SimpleSearchField {
|
|
|
27777
28054
|
return of(values);
|
|
27778
28055
|
}
|
|
27779
28056
|
}
|
|
27780
|
-
class
|
|
27781
|
-
constructor() {
|
|
27782
|
-
super(
|
|
28057
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
28058
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28059
|
+
super(esFieldName, injector, order, orderType);
|
|
28060
|
+
this.esFieldName = esFieldName;
|
|
28061
|
+
this.injector = injector;
|
|
28062
|
+
this.order = order;
|
|
28063
|
+
this.orderType = orderType;
|
|
27783
28064
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27784
28065
|
}
|
|
27785
28066
|
async getTranslation(key) {
|
|
@@ -27789,26 +28070,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27789
28070
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27790
28071
|
}
|
|
27791
28072
|
getAvailableValues() {
|
|
28073
|
+
if (this.orderType === 'count')
|
|
28074
|
+
return super.getAvailableValues();
|
|
27792
28075
|
// sort values by alphabetical order
|
|
27793
28076
|
return super
|
|
27794
28077
|
.getAvailableValues()
|
|
27795
28078
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27796
28079
|
}
|
|
27797
28080
|
}
|
|
27798
|
-
|
|
27799
|
-
|
|
27800
|
-
|
|
27801
|
-
|
|
28081
|
+
/**
|
|
28082
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
28083
|
+
* to the defined METADATA_LANGUAGE token
|
|
28084
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
28085
|
+
*/
|
|
28086
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
28087
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
28088
|
+
super(esFieldName, injector, order, orderType);
|
|
28089
|
+
this.esFieldName = esFieldName;
|
|
28090
|
+
this.injector = injector;
|
|
28091
|
+
this.order = order;
|
|
28092
|
+
this.orderType = orderType;
|
|
27802
28093
|
this.langService = this.injector.get(LangService);
|
|
27803
|
-
this.
|
|
27804
|
-
|
|
27805
|
-
|
|
27806
|
-
|
|
27807
|
-
|
|
27808
|
-
}
|
|
27809
|
-
|
|
27810
|
-
|
|
27811
|
-
|
|
28094
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
28095
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
28096
|
+
// permalinks that might not work for different users
|
|
28097
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
28098
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
28099
|
+
}
|
|
28100
|
+
else {
|
|
28101
|
+
this.esFieldName += '.default';
|
|
28102
|
+
}
|
|
27812
28103
|
}
|
|
27813
28104
|
}
|
|
27814
28105
|
class FullTextSearchField {
|
|
@@ -27828,7 +28119,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
27828
28119
|
marker('search.filters.isSpatial.no');
|
|
27829
28120
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
27830
28121
|
constructor(injector) {
|
|
27831
|
-
super('isSpatial', 'asc'
|
|
28122
|
+
super('isSpatial', injector, 'asc');
|
|
27832
28123
|
this.translateService = this.injector.get(TranslateService);
|
|
27833
28124
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
27834
28125
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -27878,7 +28169,7 @@ marker('search.filters.license.unknown');
|
|
|
27878
28169
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
27879
28170
|
class LicenseSearchField extends SimpleSearchField {
|
|
27880
28171
|
constructor(injector) {
|
|
27881
|
-
super('license', 'asc'
|
|
28172
|
+
super('license', injector, 'asc');
|
|
27882
28173
|
this.translateService = this.injector.get(TranslateService);
|
|
27883
28174
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
27884
28175
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -27962,7 +28253,7 @@ class OrganizationSearchField {
|
|
|
27962
28253
|
}
|
|
27963
28254
|
class OwnerSearchField extends SimpleSearchField {
|
|
27964
28255
|
constructor(injector) {
|
|
27965
|
-
super('owner', 'asc'
|
|
28256
|
+
super('owner', injector, 'asc');
|
|
27966
28257
|
}
|
|
27967
28258
|
getAvailableValues() {
|
|
27968
28259
|
return of([]);
|
|
@@ -27971,6 +28262,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
27971
28262
|
|
|
27972
28263
|
marker('search.filters.format');
|
|
27973
28264
|
marker('search.filters.inspireKeyword');
|
|
28265
|
+
marker('search.filters.keyword');
|
|
27974
28266
|
marker('search.filters.isSpatial');
|
|
27975
28267
|
marker('search.filters.license');
|
|
27976
28268
|
marker('search.filters.publicationYear');
|
|
@@ -27988,13 +28280,14 @@ class FieldsService {
|
|
|
27988
28280
|
this.injector = injector;
|
|
27989
28281
|
this.fields = {
|
|
27990
28282
|
publisher: new OrganizationSearchField(this.injector),
|
|
27991
|
-
format: new SimpleSearchField('format', 'asc'
|
|
27992
|
-
resourceType: new
|
|
27993
|
-
representationType: new
|
|
27994
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
27995
|
-
topic: new
|
|
27996
|
-
inspireKeyword: new
|
|
27997
|
-
|
|
28283
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28284
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28285
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28286
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28287
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28288
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28289
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28290
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
27998
28291
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
27999
28292
|
q: new FullTextSearchField(),
|
|
28000
28293
|
license: new LicenseSearchField(this.injector),
|
|
@@ -28102,7 +28395,7 @@ class FeatureSearchModule {
|
|
|
28102
28395
|
},
|
|
28103
28396
|
], imports: [CommonModule,
|
|
28104
28397
|
TranslateModule.forChild(),
|
|
28105
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28398
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28106
28399
|
initialState,
|
|
28107
28400
|
}),
|
|
28108
28401
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28132,7 +28425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28132
28425
|
imports: [
|
|
28133
28426
|
CommonModule,
|
|
28134
28427
|
TranslateModule.forChild(),
|
|
28135
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28428
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28136
28429
|
initialState,
|
|
28137
28430
|
}),
|
|
28138
28431
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28905,7 +29198,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28905
29198
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28906
29199
|
return stateWithoutMd;
|
|
28907
29200
|
}));
|
|
28908
|
-
function reducer(state, action) {
|
|
29201
|
+
function reducer$1(state, action) {
|
|
28909
29202
|
return mdViewReducer(state, action);
|
|
28910
29203
|
}
|
|
28911
29204
|
|
|
@@ -30855,11 +31148,11 @@ class LanguageSwitcherComponent {
|
|
|
30855
31148
|
this.translate.use(value);
|
|
30856
31149
|
}
|
|
30857
31150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30858
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30859
31152
|
}
|
|
30860
31153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30861
31154
|
type: Component,
|
|
30862
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n
|
|
31155
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30863
31156
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30864
31157
|
type: Optional
|
|
30865
31158
|
}, {
|
|
@@ -31186,18 +31479,18 @@ class DataViewPermalinkComponent {
|
|
|
31186
31479
|
if (config) {
|
|
31187
31480
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
31188
31481
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
31189
|
-
url.
|
|
31190
|
-
|
|
31191
|
-
|
|
31192
|
-
|
|
31193
|
-
|
|
31194
|
-
|
|
31195
|
-
|
|
31196
|
-
|
|
31197
|
-
|
|
31198
|
-
|
|
31199
|
-
|
|
31200
|
-
|
|
31482
|
+
url.searchParams.set('v', `${this.version}`);
|
|
31483
|
+
url.searchParams.append('e', `gn-dataset-view-chart`);
|
|
31484
|
+
url.searchParams.append('a', `api-url=${this.config.basePath}`);
|
|
31485
|
+
url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
|
|
31486
|
+
url.searchParams.append('a', `primary-color=#0f4395`);
|
|
31487
|
+
url.searchParams.append('a', `secondary-color=#8bc832`);
|
|
31488
|
+
url.searchParams.append('a', `main-color=#555`);
|
|
31489
|
+
url.searchParams.append('a', `background-color=#fdfbff`);
|
|
31490
|
+
url.searchParams.append('a', `aggregation=${aggregation}`);
|
|
31491
|
+
url.searchParams.append('a', `x-property=${xProperty}`);
|
|
31492
|
+
url.searchParams.append('a', `y-property=${yProperty}`);
|
|
31493
|
+
url.searchParams.append('a', `chart-type=${chartType}`);
|
|
31201
31494
|
return url.toString();
|
|
31202
31495
|
}
|
|
31203
31496
|
return '';
|
|
@@ -31304,7 +31597,7 @@ class FeatureRecordModule {
|
|
|
31304
31597
|
DataViewWebComponentComponent,
|
|
31305
31598
|
DataViewShareComponent] }); }
|
|
31306
31599
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
31307
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31600
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31308
31601
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31309
31602
|
UiLayoutModule,
|
|
31310
31603
|
FeatureMapModule,
|
|
@@ -31332,7 +31625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31332
31625
|
],
|
|
31333
31626
|
imports: [
|
|
31334
31627
|
CommonModule,
|
|
31335
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31628
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31336
31629
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31337
31630
|
UiLayoutModule,
|
|
31338
31631
|
FeatureMapModule,
|
|
@@ -31358,6 +31651,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31358
31651
|
}]
|
|
31359
31652
|
}] });
|
|
31360
31653
|
|
|
31654
|
+
const openRecord = createAction('[Editor] Open record', props());
|
|
31655
|
+
const updateRecordField = createAction('[Editor] Update record field', props());
|
|
31656
|
+
const markRecordAsChanged = createAction('[Editor] Mark record as changed');
|
|
31657
|
+
const saveRecord = createAction('[Editor] Save record');
|
|
31658
|
+
const saveRecordSuccess = createAction('[Editor] Save record success');
|
|
31659
|
+
const saveRecordFailure = createAction('[Editor] Save record failure', props());
|
|
31660
|
+
|
|
31661
|
+
const DEFAULT_FIELDS = [
|
|
31662
|
+
{
|
|
31663
|
+
model: 'title',
|
|
31664
|
+
formFieldConfig: {
|
|
31665
|
+
labelKey: 'Metadata title',
|
|
31666
|
+
type: 'text',
|
|
31667
|
+
},
|
|
31668
|
+
},
|
|
31669
|
+
{
|
|
31670
|
+
model: 'abstract',
|
|
31671
|
+
formFieldConfig: {
|
|
31672
|
+
labelKey: 'Abstract',
|
|
31673
|
+
type: 'rich',
|
|
31674
|
+
},
|
|
31675
|
+
},
|
|
31676
|
+
{
|
|
31677
|
+
model: 'uniqueIdentifier',
|
|
31678
|
+
formFieldConfig: {
|
|
31679
|
+
labelKey: 'Unique identifier',
|
|
31680
|
+
type: 'text',
|
|
31681
|
+
locked: true,
|
|
31682
|
+
},
|
|
31683
|
+
},
|
|
31684
|
+
{
|
|
31685
|
+
model: 'recordUpdated',
|
|
31686
|
+
formFieldConfig: {
|
|
31687
|
+
labelKey: 'Record Updated',
|
|
31688
|
+
type: 'text',
|
|
31689
|
+
locked: true,
|
|
31690
|
+
},
|
|
31691
|
+
onSaveProcess: '${dateNow()}',
|
|
31692
|
+
},
|
|
31693
|
+
];
|
|
31694
|
+
|
|
31695
|
+
const EDITOR_FEATURE_KEY = 'editor';
|
|
31696
|
+
const initialEditorState = {
|
|
31697
|
+
record: null,
|
|
31698
|
+
saving: false,
|
|
31699
|
+
saveError: null,
|
|
31700
|
+
changedSinceSave: false,
|
|
31701
|
+
fieldsConfig: DEFAULT_FIELDS,
|
|
31702
|
+
};
|
|
31703
|
+
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record }) => ({
|
|
31704
|
+
...state,
|
|
31705
|
+
changedSinceSave: false,
|
|
31706
|
+
record,
|
|
31707
|
+
})), on(saveRecord, (state) => ({
|
|
31708
|
+
...state,
|
|
31709
|
+
saving: true,
|
|
31710
|
+
saveError: null,
|
|
31711
|
+
})), on(saveRecordSuccess, (state) => ({
|
|
31712
|
+
...state,
|
|
31713
|
+
saving: false,
|
|
31714
|
+
saveError: null,
|
|
31715
|
+
changedSinceSave: false,
|
|
31716
|
+
})), on(saveRecordFailure, (state, { error }) => ({
|
|
31717
|
+
...state,
|
|
31718
|
+
saving: false,
|
|
31719
|
+
saveError: error,
|
|
31720
|
+
})), on(updateRecordField, (state, { field, value }) => ({
|
|
31721
|
+
...state,
|
|
31722
|
+
record: {
|
|
31723
|
+
...state.record,
|
|
31724
|
+
[field]: value,
|
|
31725
|
+
},
|
|
31726
|
+
})), on(markRecordAsChanged, (state) => ({
|
|
31727
|
+
...state,
|
|
31728
|
+
changedSinceSave: true,
|
|
31729
|
+
})));
|
|
31730
|
+
function editorReducer(state, action) {
|
|
31731
|
+
return reducer(state, action);
|
|
31732
|
+
}
|
|
31733
|
+
|
|
31734
|
+
const selectEditorState = createFeatureSelector(EDITOR_FEATURE_KEY);
|
|
31735
|
+
const selectRecord = createSelector(selectEditorState, (state) => state.record);
|
|
31736
|
+
const selectRecordSaving = createSelector(selectEditorState, (state) => state.saving);
|
|
31737
|
+
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
31738
|
+
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
31739
|
+
const selectRecordFieldsConfig = createSelector(selectEditorState, (state) => state.fieldsConfig);
|
|
31740
|
+
const selectRecordFields = createSelector(selectEditorState, (state) => state.fieldsConfig.map((fieldConfig) => ({
|
|
31741
|
+
config: fieldConfig,
|
|
31742
|
+
value: state.record?.[fieldConfig.model] || null,
|
|
31743
|
+
})));
|
|
31744
|
+
|
|
31745
|
+
class EditorFacade {
|
|
31746
|
+
constructor() {
|
|
31747
|
+
this.store = inject(Store);
|
|
31748
|
+
this.record$ = this.store.pipe(select(selectRecord));
|
|
31749
|
+
this.saving$ = this.store.pipe(select(selectRecordSaving));
|
|
31750
|
+
this.saveError$ = this.store.pipe(select(selectRecordSaveError));
|
|
31751
|
+
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
31752
|
+
this.recordFields$ = this.store.pipe(select(selectRecordFields));
|
|
31753
|
+
}
|
|
31754
|
+
openRecord(record) {
|
|
31755
|
+
this.store.dispatch(openRecord({ record }));
|
|
31756
|
+
}
|
|
31757
|
+
saveRecord() {
|
|
31758
|
+
this.store.dispatch(saveRecord());
|
|
31759
|
+
}
|
|
31760
|
+
updateRecordField(field, value) {
|
|
31761
|
+
this.store.dispatch(updateRecordField({ field, value }));
|
|
31762
|
+
}
|
|
31763
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31764
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade }); }
|
|
31765
|
+
}
|
|
31766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorFacade, decorators: [{
|
|
31767
|
+
type: Injectable
|
|
31768
|
+
}] });
|
|
31769
|
+
|
|
31361
31770
|
class WizardService {
|
|
31362
31771
|
constructor(translateService) {
|
|
31363
31772
|
this.translateService = translateService;
|
|
@@ -31719,6 +32128,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31719
32128
|
args: [{ selector: 'gn-ui-wizard-summarize', template: "<div>\n <div class=\"text-2xl font-bold title\">\n {{ title | uppercase }}\n </div>\n <div class=\"text-lg font-bold pt-2 abstract\">\n {{ abstract }}\n </div>\n <div class=\"text-lg font-normal\">\n <span translate>datafeeder.wizardSummarize.createdAt</span>\n <span class=\"date\">{{ createdDate }}</span> -\n <span translate>datafeeder.wizardSummarize.scale</span>\n <span class=\"scale\">{{ scale }}</span>\n </div>\n <div class=\"text-lg italic font-normal description\">\n {{ description }}\n </div>\n <div class=\"text-sm font-medium pt-4 tags\">\n <span class=\"icon-tag pr-2\"></span>\n {{ tags }}\n </div>\n</div>\n", styles: [".icon-tag:before{font-size:18px}\n"] }]
|
|
31720
32129
|
}], ctorParameters: function () { return [{ type: WizardService }, { type: i1$1.TranslateService }]; } });
|
|
31721
32130
|
|
|
32131
|
+
function evaluate(expression) {
|
|
32132
|
+
if (expression.match(/^\${.*}$/)) {
|
|
32133
|
+
return evaluate(expression.slice(2, -1));
|
|
32134
|
+
}
|
|
32135
|
+
const operator = expression.split('(')[0];
|
|
32136
|
+
switch (operator) {
|
|
32137
|
+
case 'dateNow':
|
|
32138
|
+
return () => new Date();
|
|
32139
|
+
default:
|
|
32140
|
+
throw new Error(`Unknown operator: ${operator}`);
|
|
32141
|
+
}
|
|
32142
|
+
}
|
|
32143
|
+
|
|
32144
|
+
class EditorService {
|
|
32145
|
+
constructor(http, apiConfiguration) {
|
|
32146
|
+
this.http = http;
|
|
32147
|
+
this.apiConfiguration = apiConfiguration;
|
|
32148
|
+
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
32149
|
+
}
|
|
32150
|
+
// TODO: use the catalog repository instead
|
|
32151
|
+
loadRecordByUuid(uuid) {
|
|
32152
|
+
return this.http
|
|
32153
|
+
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
32154
|
+
responseType: 'text',
|
|
32155
|
+
headers: {
|
|
32156
|
+
Accept: 'application/xml',
|
|
32157
|
+
},
|
|
32158
|
+
})
|
|
32159
|
+
.pipe(map$1((response) => toModel(response.toString())));
|
|
32160
|
+
}
|
|
32161
|
+
// returns the record as it was when saved
|
|
32162
|
+
saveRecord(record, fieldsConfig) {
|
|
32163
|
+
const savedRecord = { ...record };
|
|
32164
|
+
// run onSave processes
|
|
32165
|
+
for (const field of fieldsConfig) {
|
|
32166
|
+
if (field.onSaveProcess && field.model) {
|
|
32167
|
+
const evaluator = evaluate(field.onSaveProcess);
|
|
32168
|
+
savedRecord[field.model] = evaluator({
|
|
32169
|
+
config: field,
|
|
32170
|
+
value: record[field.model],
|
|
32171
|
+
});
|
|
32172
|
+
}
|
|
32173
|
+
}
|
|
32174
|
+
// TODO: use the catalog repository instead
|
|
32175
|
+
return this.http
|
|
32176
|
+
.put(`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`, toXml(savedRecord), {
|
|
32177
|
+
headers: {
|
|
32178
|
+
'Content-Type': 'application/xml',
|
|
32179
|
+
},
|
|
32180
|
+
withCredentials: true,
|
|
32181
|
+
})
|
|
32182
|
+
.pipe(map$1(() => savedRecord));
|
|
32183
|
+
}
|
|
32184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32185
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
32186
|
+
}
|
|
32187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
32188
|
+
type: Injectable,
|
|
32189
|
+
args: [{
|
|
32190
|
+
providedIn: 'root',
|
|
32191
|
+
}]
|
|
32192
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: Configuration, decorators: [{
|
|
32193
|
+
type: Optional
|
|
32194
|
+
}, {
|
|
32195
|
+
type: Inject,
|
|
32196
|
+
args: [Configuration]
|
|
32197
|
+
}] }]; } });
|
|
32198
|
+
|
|
32199
|
+
class EditorEffects {
|
|
32200
|
+
constructor() {
|
|
32201
|
+
this.actions$ = inject(Actions);
|
|
32202
|
+
this.editorService = inject(EditorService);
|
|
32203
|
+
this.store = inject(Store);
|
|
32204
|
+
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectRecordFieldsConfig)), switchMap$1(([, record, fieldsConfig]) => this.editorService.saveRecord(record, fieldsConfig).pipe(switchMap$1((newRecord) => of(saveRecordSuccess(), openRecord({ record: newRecord }))), catchError((error) => of(saveRecordFailure({
|
|
32205
|
+
error: error.message,
|
|
32206
|
+
})))))));
|
|
32207
|
+
this.markAsChanged$ = createEffect(() => this.actions$.pipe(ofType(updateRecordField), map$1(() => markRecordAsChanged())));
|
|
32208
|
+
}
|
|
32209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32210
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects }); }
|
|
32211
|
+
}
|
|
32212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects, decorators: [{
|
|
32213
|
+
type: Injectable
|
|
32214
|
+
}] });
|
|
32215
|
+
|
|
31722
32216
|
class FeatureEditorModule {
|
|
31723
32217
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31724
32218
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, declarations: [WizardComponent,
|
|
@@ -31729,8 +32223,8 @@ class FeatureEditorModule {
|
|
|
31729
32223
|
MatNativeDateModule,
|
|
31730
32224
|
MatFormFieldModule,
|
|
31731
32225
|
HttpClientModule,
|
|
31732
|
-
HttpClientXsrfModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
31733
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, imports: [CommonModule,
|
|
32226
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$8.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
32227
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade], imports: [CommonModule,
|
|
31734
32228
|
UiInputsModule,
|
|
31735
32229
|
UiWidgetsModule,
|
|
31736
32230
|
TranslateModule.forChild(),
|
|
@@ -31738,7 +32232,9 @@ class FeatureEditorModule {
|
|
|
31738
32232
|
MatNativeDateModule,
|
|
31739
32233
|
MatFormFieldModule,
|
|
31740
32234
|
HttpClientModule,
|
|
31741
|
-
HttpClientXsrfModule
|
|
32235
|
+
HttpClientXsrfModule,
|
|
32236
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32237
|
+
EffectsModule.forFeature([EditorEffects])] }); }
|
|
31742
32238
|
}
|
|
31743
32239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, decorators: [{
|
|
31744
32240
|
type: NgModule,
|
|
@@ -31758,105 +32254,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31758
32254
|
MatFormFieldModule,
|
|
31759
32255
|
HttpClientModule,
|
|
31760
32256
|
HttpClientXsrfModule,
|
|
32257
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32258
|
+
EffectsModule.forFeature([EditorEffects]),
|
|
31761
32259
|
],
|
|
31762
32260
|
exports: [WizardComponent, WizardSummarizeComponent],
|
|
32261
|
+
providers: [EditorFacade],
|
|
31763
32262
|
}]
|
|
31764
32263
|
}] });
|
|
31765
32264
|
|
|
31766
|
-
class EditorService {
|
|
31767
|
-
constructor(http, apiConfiguration) {
|
|
31768
|
-
this.http = http;
|
|
31769
|
-
this.apiConfiguration = apiConfiguration;
|
|
31770
|
-
this.record$ = new BehaviorSubject(null);
|
|
31771
|
-
this.fieldsConfig = [
|
|
31772
|
-
{
|
|
31773
|
-
model: 'title',
|
|
31774
|
-
labelKey: 'Metadata title',
|
|
31775
|
-
type: 'text',
|
|
31776
|
-
},
|
|
31777
|
-
{
|
|
31778
|
-
model: 'abstract',
|
|
31779
|
-
labelKey: 'Abstract',
|
|
31780
|
-
type: 'rich',
|
|
31781
|
-
},
|
|
31782
|
-
{
|
|
31783
|
-
model: 'uniqueIdentifier',
|
|
31784
|
-
labelKey: 'Unique identifier',
|
|
31785
|
-
type: 'text',
|
|
31786
|
-
locked: true,
|
|
31787
|
-
},
|
|
31788
|
-
];
|
|
31789
|
-
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
31790
|
-
this.fields$ = this.record$.pipe(map$1((record) => this.fieldsConfig.map((fieldConfig) => ({
|
|
31791
|
-
config: fieldConfig,
|
|
31792
|
-
value: record?.[fieldConfig.model] || null,
|
|
31793
|
-
}))));
|
|
31794
|
-
this.saving$ = new BehaviorSubject(false);
|
|
31795
|
-
}
|
|
31796
|
-
loadRecordByUuid(uuid) {
|
|
31797
|
-
return this.http
|
|
31798
|
-
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
31799
|
-
responseType: 'text',
|
|
31800
|
-
headers: {
|
|
31801
|
-
Accept: 'application/xml',
|
|
31802
|
-
},
|
|
31803
|
-
})
|
|
31804
|
-
.pipe(map$1((response) => toModel(response.toString())));
|
|
31805
|
-
}
|
|
31806
|
-
saveCurrentRecord() {
|
|
31807
|
-
return this.record$.pipe(take(1), tap$1((record) => {
|
|
31808
|
-
if (!record)
|
|
31809
|
-
throw new Error('Save record failed: no record currently open');
|
|
31810
|
-
this.saving$.next(true);
|
|
31811
|
-
}), switchMap$1((record) => this.http.put(`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`, toXml(record), {
|
|
31812
|
-
headers: {
|
|
31813
|
-
'Content-Type': 'application/xml',
|
|
31814
|
-
},
|
|
31815
|
-
withCredentials: true,
|
|
31816
|
-
})), map$1(() => undefined), finalize(() => {
|
|
31817
|
-
this.saving$.next(false);
|
|
31818
|
-
}));
|
|
31819
|
-
}
|
|
31820
|
-
setCurrentRecord(record) {
|
|
31821
|
-
this.record$.next(record);
|
|
31822
|
-
}
|
|
31823
|
-
updateRecordField(fieldName, value) {
|
|
31824
|
-
this.record$
|
|
31825
|
-
.pipe(take(1), map$1((record) => ({ ...record, [fieldName]: value })))
|
|
31826
|
-
.subscribe((record) => this.record$.next(record));
|
|
31827
|
-
}
|
|
31828
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31829
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
31830
|
-
}
|
|
31831
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
31832
|
-
type: Injectable,
|
|
31833
|
-
args: [{
|
|
31834
|
-
providedIn: 'root',
|
|
31835
|
-
}]
|
|
31836
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: Configuration, decorators: [{
|
|
31837
|
-
type: Optional
|
|
31838
|
-
}, {
|
|
31839
|
-
type: Inject,
|
|
31840
|
-
args: [Configuration]
|
|
31841
|
-
}] }]; } });
|
|
31842
|
-
|
|
31843
32265
|
class RecordFormComponent {
|
|
31844
|
-
constructor(
|
|
31845
|
-
this.
|
|
32266
|
+
constructor(facade) {
|
|
32267
|
+
this.facade = facade;
|
|
32268
|
+
this.fields$ = this.facade.recordFields$;
|
|
31846
32269
|
}
|
|
31847
|
-
handleFieldValueChange(
|
|
31848
|
-
|
|
32270
|
+
handleFieldValueChange(field, newValue) {
|
|
32271
|
+
if (!field.config.model) {
|
|
32272
|
+
return;
|
|
32273
|
+
}
|
|
32274
|
+
this.facade.updateRecordField(field.config.model, newValue);
|
|
31849
32275
|
}
|
|
31850
32276
|
fieldTracker(index, field) {
|
|
31851
32277
|
return field.config.model;
|
|
31852
32278
|
}
|
|
31853
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token:
|
|
31854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <
|
|
32279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32280
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31855
32281
|
}
|
|
31856
32282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31857
32283
|
type: Component,
|
|
31858
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <
|
|
31859
|
-
}], ctorParameters: function () { return [{ type:
|
|
32284
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
32285
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
31860
32286
|
|
|
31861
32287
|
const ROUTER_STATE_KEY = 'router';
|
|
31862
32288
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
@@ -32223,5 +32649,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32223
32649
|
* Generated bundle index. Do not edit.
|
|
32224
32650
|
*/
|
|
32225
32651
|
|
|
32226
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$
|
|
32652
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, editorReducer, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer, updateRecordField };
|
|
32227
32653
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|