geonetwork-ui 2.2.0-dev.ecc0ab67 → 2.2.0
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/common/domain/src/lib/model/record/metadata.model.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/router/src/lib/default/index.mjs +2 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
- 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 +2 -2
- 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/ui/widgets/src/lib/badge/badge.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 +36 -27
- package/esm2022/translations/en.json +28 -19
- package/esm2022/translations/es.json +25 -16
- package/esm2022/translations/fr.json +46 -37
- package/esm2022/translations/it.json +40 -31
- package/esm2022/translations/nl.json +26 -17
- package/esm2022/translations/pt.json +25 -16
- package/fesm2022/geonetwork-ui.mjs +730 -366
- 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/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/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/router/src/lib/default/index.d.ts +1 -0
- package/libs/feature/router/src/lib/default/index.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts +1 -1
- package/libs/feature/router/src/lib/default/router.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/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/common/domain/src/lib/model/record/metadata.model.ts +20 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +46 -8
- 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/router/src/lib/default/index.ts +1 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +1 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +5 -4
- 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 +125 -35
- 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 +1 -1
- 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/ui/widgets/src/lib/badge/badge.component.html +3 -1
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
- package/tailwind.base.css +44 -15
- package/translations/de.json +36 -27
- package/translations/en.json +28 -19
- package/translations/es.json +25 -16
- package/translations/fr.json +46 -37
- package/translations/it.json +40 -31
- package/translations/nl.json +26 -17
- package/translations/pt.json +25 -16
- package/translations/sk.json +118 -109
|
@@ -1,7 +1,7 @@
|
|
|
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';
|
|
@@ -15,7 +15,7 @@ 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",
|
|
@@ -16887,7 +16996,7 @@ var de = {
|
|
|
16887
16996
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
16888
16997
|
"table.select.data": "Datenquelle",
|
|
16889
16998
|
"tooltip.html.copy": "HTML kopieren",
|
|
16890
|
-
"tooltip.id.copy": "",
|
|
16999
|
+
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
16891
17000
|
"tooltip.url.copy": "URL kopieren",
|
|
16892
17001
|
"tooltip.url.open": "URL öffnen",
|
|
16893
17002
|
"ui.readLess": "Weniger lesen",
|
|
@@ -17049,6 +17158,8 @@ var en = {
|
|
|
17049
17158
|
"downloads.format.unknown": "unknown",
|
|
17050
17159
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17051
17160
|
dropFile: dropFile$5,
|
|
17161
|
+
"editor.record.publish": "Publish this record",
|
|
17162
|
+
"editor.record.upToDate": "This record is up to date",
|
|
17052
17163
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17053
17164
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17054
17165
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -17062,21 +17173,21 @@ var en = {
|
|
|
17062
17173
|
"facets.block.title.tag.default": "Tag",
|
|
17063
17174
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
17064
17175
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
17065
|
-
"language.ca": "
|
|
17066
|
-
"language.cs": "
|
|
17067
|
-
"language.de": "
|
|
17176
|
+
"language.ca": "Catalan",
|
|
17177
|
+
"language.cs": "Czech",
|
|
17178
|
+
"language.de": "German",
|
|
17068
17179
|
"language.en": "English",
|
|
17069
|
-
"language.es": "
|
|
17070
|
-
"language.fi": "
|
|
17071
|
-
"language.fr": "
|
|
17072
|
-
"language.is": "
|
|
17073
|
-
"language.it": "
|
|
17074
|
-
"language.ko": "
|
|
17075
|
-
"language.nl": "
|
|
17076
|
-
"language.pt": "
|
|
17077
|
-
"language.ru": "
|
|
17078
|
-
"language.sk": "
|
|
17079
|
-
"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",
|
|
17080
17191
|
"map.add.layer": "Add a layer",
|
|
17081
17192
|
"map.add.layer.catalog": "From the catalog",
|
|
17082
17193
|
"map.add.layer.file": "From a file",
|
|
@@ -17127,17 +17238,20 @@ var en = {
|
|
|
17127
17238
|
"record.metadata.author": "Author",
|
|
17128
17239
|
"record.metadata.catalog": "Catalog",
|
|
17129
17240
|
"record.metadata.contact": "Contact",
|
|
17130
|
-
"record.metadata.
|
|
17241
|
+
"record.metadata.creation": "Date of creation",
|
|
17242
|
+
"record.metadata.details": "About the data",
|
|
17131
17243
|
"record.metadata.download": "Downloads",
|
|
17132
17244
|
"record.metadata.formats": "Formats",
|
|
17133
17245
|
"record.metadata.keywords": "Keywords",
|
|
17134
|
-
"record.metadata.
|
|
17246
|
+
"record.metadata.languages": "Languages",
|
|
17247
|
+
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
17135
17248
|
"record.metadata.links": "Links",
|
|
17136
17249
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17137
|
-
"record.metadata.origin": "About the data",
|
|
17138
17250
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17139
17251
|
"record.metadata.owner": "Catalog of origin",
|
|
17140
17252
|
"record.metadata.preview": "Preview",
|
|
17253
|
+
"record.metadata.producer": "Data producer",
|
|
17254
|
+
"record.metadata.publication": "Date of publication",
|
|
17141
17255
|
"record.metadata.publications": "publications",
|
|
17142
17256
|
"record.metadata.quality": "Metadata Quality",
|
|
17143
17257
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
@@ -17160,12 +17274,16 @@ var en = {
|
|
|
17160
17274
|
"record.metadata.related": "Related records",
|
|
17161
17275
|
"record.metadata.sheet": "Original metadata",
|
|
17162
17276
|
"record.metadata.status": "Status",
|
|
17163
|
-
"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 }",
|
|
17164
17282
|
"record.metadata.title": "Title",
|
|
17283
|
+
"record.metadata.topics": "Categories",
|
|
17165
17284
|
"record.metadata.type": "Geographical dataset",
|
|
17166
17285
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17167
17286
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17168
|
-
"record.metadata.updateStatus": "Data Update Status",
|
|
17169
17287
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17170
17288
|
"record.metadata.usage": "License and Conditions",
|
|
17171
17289
|
"record.more.details": "Read more",
|
|
@@ -17390,6 +17508,8 @@ var es = {
|
|
|
17390
17508
|
"downloads.format.unknown": "",
|
|
17391
17509
|
"downloads.wfs.featuretype.not.found": "",
|
|
17392
17510
|
dropFile: dropFile$4,
|
|
17511
|
+
"editor.record.publish": "",
|
|
17512
|
+
"editor.record.upToDate": "",
|
|
17393
17513
|
"externalviewer.dataset.unnamed": "",
|
|
17394
17514
|
"facets.block.title.OrgForResource": "",
|
|
17395
17515
|
"facets.block.title.availableInServices": "",
|
|
@@ -17403,21 +17523,21 @@ var es = {
|
|
|
17403
17523
|
"facets.block.title.tag.default": "",
|
|
17404
17524
|
"facets.block.title.th_regions_tree.default": "",
|
|
17405
17525
|
"favorite.not.authenticated.tooltip": "",
|
|
17406
|
-
"language.ca": "
|
|
17407
|
-
"language.cs": "
|
|
17408
|
-
"language.de": "
|
|
17409
|
-
"language.en": "
|
|
17526
|
+
"language.ca": "Catalán",
|
|
17527
|
+
"language.cs": "Checo",
|
|
17528
|
+
"language.de": "Alemán",
|
|
17529
|
+
"language.en": "Inglés",
|
|
17410
17530
|
"language.es": "Español",
|
|
17411
|
-
"language.fi": "
|
|
17412
|
-
"language.fr": "
|
|
17413
|
-
"language.is": "
|
|
17531
|
+
"language.fi": "Finlandés",
|
|
17532
|
+
"language.fr": "Francés",
|
|
17533
|
+
"language.is": "Islandés",
|
|
17414
17534
|
"language.it": "Italiano",
|
|
17415
|
-
"language.ko": "
|
|
17416
|
-
"language.nl": "
|
|
17417
|
-
"language.pt": "
|
|
17418
|
-
"language.ru": "
|
|
17419
|
-
"language.sk": "
|
|
17420
|
-
"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",
|
|
17421
17541
|
"map.add.layer": "",
|
|
17422
17542
|
"map.add.layer.catalog": "",
|
|
17423
17543
|
"map.add.layer.file": "",
|
|
@@ -17468,17 +17588,20 @@ var es = {
|
|
|
17468
17588
|
"record.metadata.author": "",
|
|
17469
17589
|
"record.metadata.catalog": "",
|
|
17470
17590
|
"record.metadata.contact": "",
|
|
17591
|
+
"record.metadata.creation": "",
|
|
17471
17592
|
"record.metadata.details": "",
|
|
17472
17593
|
"record.metadata.download": "",
|
|
17473
17594
|
"record.metadata.formats": "",
|
|
17474
17595
|
"record.metadata.keywords": "",
|
|
17596
|
+
"record.metadata.languages": "",
|
|
17475
17597
|
"record.metadata.lastUpdate": "",
|
|
17476
17598
|
"record.metadata.links": "",
|
|
17477
17599
|
"record.metadata.noUsage": "",
|
|
17478
|
-
"record.metadata.origin": "",
|
|
17479
17600
|
"record.metadata.otherConstraints": "",
|
|
17480
17601
|
"record.metadata.owner": "",
|
|
17481
17602
|
"record.metadata.preview": "",
|
|
17603
|
+
"record.metadata.producer": "",
|
|
17604
|
+
"record.metadata.publication": "",
|
|
17482
17605
|
"record.metadata.publications": "",
|
|
17483
17606
|
"record.metadata.quality": "",
|
|
17484
17607
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -17501,12 +17624,16 @@ var es = {
|
|
|
17501
17624
|
"record.metadata.related": "",
|
|
17502
17625
|
"record.metadata.sheet": "",
|
|
17503
17626
|
"record.metadata.status": "",
|
|
17504
|
-
"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": "",
|
|
17505
17632
|
"record.metadata.title": "",
|
|
17633
|
+
"record.metadata.topics": "",
|
|
17506
17634
|
"record.metadata.type": "",
|
|
17507
17635
|
"record.metadata.uniqueId": "",
|
|
17508
17636
|
"record.metadata.updateFrequency": "",
|
|
17509
|
-
"record.metadata.updateStatus": "",
|
|
17510
17637
|
"record.metadata.updatedOn": "",
|
|
17511
17638
|
"record.metadata.usage": "",
|
|
17512
17639
|
"record.more.details": "",
|
|
@@ -17603,7 +17730,7 @@ var fr = {
|
|
|
17603
17730
|
"chart.type.line": "ligne",
|
|
17604
17731
|
"chart.type.lineSmooth": "ligne lisse",
|
|
17605
17732
|
"chart.type.pie": "camembert",
|
|
17606
|
-
"dashboard.createRecord": "",
|
|
17733
|
+
"dashboard.createRecord": "Nouvel enregistrement",
|
|
17607
17734
|
"dashboard.labels.mySpace": "Mon espace",
|
|
17608
17735
|
"dashboard.records.all": "Catalogue",
|
|
17609
17736
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
@@ -17616,8 +17743,8 @@ var fr = {
|
|
|
17616
17743
|
"dashboard.records.userEmail": "Email",
|
|
17617
17744
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
17618
17745
|
"dashboard.records.users": "{count, plural, =1{utilisateur} other{utilisateurs}}",
|
|
17619
|
-
"dashboard.results.listMetadata": "",
|
|
17620
|
-
"dashboard.results.listResources": "",
|
|
17746
|
+
"dashboard.results.listMetadata": "Afficher les métadonnées",
|
|
17747
|
+
"dashboard.results.listResources": "Afficher les ressources",
|
|
17621
17748
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Détection du \n format de fichier",
|
|
17622
17749
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Récupération des informations \n sur le jeu de données",
|
|
17623
17750
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n des données",
|
|
@@ -17731,6 +17858,8 @@ var fr = {
|
|
|
17731
17858
|
"downloads.format.unknown": "inconnu",
|
|
17732
17859
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
17733
17860
|
dropFile: dropFile$3,
|
|
17861
|
+
"editor.record.publish": "",
|
|
17862
|
+
"editor.record.upToDate": "",
|
|
17734
17863
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
17735
17864
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17736
17865
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -17744,38 +17873,38 @@ var fr = {
|
|
|
17744
17873
|
"facets.block.title.tag.default": "Tag",
|
|
17745
17874
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
17746
17875
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
17747
|
-
"language.ca": "
|
|
17748
|
-
"language.cs": "
|
|
17749
|
-
"language.de": "
|
|
17750
|
-
"language.en": "
|
|
17751
|
-
"language.es": "
|
|
17752
|
-
"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",
|
|
17753
17882
|
"language.fr": "Français",
|
|
17754
|
-
"language.is": "
|
|
17755
|
-
"language.it": "
|
|
17756
|
-
"language.ko": "
|
|
17757
|
-
"language.nl": "
|
|
17758
|
-
"language.pt": "
|
|
17759
|
-
"language.ru": "
|
|
17760
|
-
"language.sk": "
|
|
17761
|
-
"language.zh": "
|
|
17762
|
-
"map.add.layer": "",
|
|
17763
|
-
"map.add.layer.catalog": "",
|
|
17764
|
-
"map.add.layer.file": "",
|
|
17765
|
-
"map.add.layer.wfs": "",
|
|
17766
|
-
"map.add.layer.wms": "",
|
|
17767
|
-
"map.addFromFile.placeholder": "",
|
|
17768
|
-
"map.geocoding.placeholder": "",
|
|
17769
|
-
"map.help.addFromFile": "",
|
|
17770
|
-
"map.layer.add": "",
|
|
17771
|
-
"map.layers.available": "",
|
|
17772
|
-
"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",
|
|
17773
17902
|
"map.loading.data": "Chargement des données...",
|
|
17774
|
-
"map.loading.service": "",
|
|
17903
|
+
"map.loading.service": "Chargement du service...",
|
|
17775
17904
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
17776
17905
|
"map.select.layer": "Source de données",
|
|
17777
|
-
"map.wfs.urlInput.hint": "",
|
|
17778
|
-
"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",
|
|
17779
17908
|
"multiselect.filter.placeholder": "Rechercher",
|
|
17780
17909
|
"nav.back": "Retour",
|
|
17781
17910
|
next: next$3,
|
|
@@ -17809,17 +17938,20 @@ var fr = {
|
|
|
17809
17938
|
"record.metadata.author": "Auteur",
|
|
17810
17939
|
"record.metadata.catalog": "Catalogue",
|
|
17811
17940
|
"record.metadata.contact": "Contact",
|
|
17812
|
-
"record.metadata.
|
|
17941
|
+
"record.metadata.creation": "Date de création",
|
|
17942
|
+
"record.metadata.details": "A propos de la donnée",
|
|
17813
17943
|
"record.metadata.download": "Téléchargements",
|
|
17814
17944
|
"record.metadata.formats": "Formats",
|
|
17815
17945
|
"record.metadata.keywords": "Mots clés",
|
|
17816
|
-
"record.metadata.
|
|
17946
|
+
"record.metadata.languages": "Langues",
|
|
17947
|
+
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
17817
17948
|
"record.metadata.links": "Liens",
|
|
17818
17949
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17819
|
-
"record.metadata.origin": "À propos des données",
|
|
17820
17950
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17821
17951
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17822
17952
|
"record.metadata.preview": "Aperçu",
|
|
17953
|
+
"record.metadata.producer": "Producteur de la donnée",
|
|
17954
|
+
"record.metadata.publication": "Date de publication",
|
|
17823
17955
|
"record.metadata.publications": "données",
|
|
17824
17956
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
17825
17957
|
"record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
|
|
@@ -17841,13 +17973,17 @@ var fr = {
|
|
|
17841
17973
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
17842
17974
|
"record.metadata.related": "Voir aussi",
|
|
17843
17975
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17844
|
-
"record.metadata.status": "",
|
|
17845
|
-
"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 }",
|
|
17846
17982
|
"record.metadata.title": "Titre",
|
|
17983
|
+
"record.metadata.topics": "Catégories",
|
|
17847
17984
|
"record.metadata.type": "Donnée géographique",
|
|
17848
17985
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17849
17986
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17850
|
-
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17851
17987
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17852
17988
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17853
17989
|
"record.more.details": "Détails",
|
|
@@ -17944,7 +18080,7 @@ var it = {
|
|
|
17944
18080
|
"chart.type.line": "grafico a linee",
|
|
17945
18081
|
"chart.type.lineSmooth": "grafico a linea liscia",
|
|
17946
18082
|
"chart.type.pie": "grafico a torta",
|
|
17947
|
-
"dashboard.createRecord": "",
|
|
18083
|
+
"dashboard.createRecord": "Crea un record",
|
|
17948
18084
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
17949
18085
|
"dashboard.records.all": "Catalogo",
|
|
17950
18086
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
@@ -17957,8 +18093,8 @@ var it = {
|
|
|
17957
18093
|
"dashboard.records.userEmail": "Email",
|
|
17958
18094
|
"dashboard.records.username": "Nome utente",
|
|
17959
18095
|
"dashboard.records.users": "utenti",
|
|
17960
|
-
"dashboard.results.listMetadata": "",
|
|
17961
|
-
"dashboard.results.listResources": "",
|
|
18096
|
+
"dashboard.results.listMetadata": "Elenco dei metadati",
|
|
18097
|
+
"dashboard.results.listResources": "Elenco delle risorse",
|
|
17962
18098
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Rilevamento del formato dei file",
|
|
17963
18099
|
"datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Recupero delle informazioni dal dataset",
|
|
17964
18100
|
"datafeeder.analysisProgressBar.illustration.samplingData": "Campionatura dei dati",
|
|
@@ -18072,6 +18208,8 @@ var it = {
|
|
|
18072
18208
|
"downloads.format.unknown": "sconosciuto",
|
|
18073
18209
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18074
18210
|
dropFile: dropFile$2,
|
|
18211
|
+
"editor.record.publish": "",
|
|
18212
|
+
"editor.record.upToDate": "",
|
|
18075
18213
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
18076
18214
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
18077
18215
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -18085,38 +18223,38 @@ var it = {
|
|
|
18085
18223
|
"facets.block.title.tag.default": "Tag",
|
|
18086
18224
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
18087
18225
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
18088
|
-
"language.ca": "
|
|
18089
|
-
"language.cs": "
|
|
18090
|
-
"language.de": "
|
|
18091
|
-
"language.en": "
|
|
18092
|
-
"language.es": "
|
|
18093
|
-
"language.fi": "
|
|
18094
|
-
"language.fr": "
|
|
18095
|
-
"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",
|
|
18096
18234
|
"language.it": "Italiano",
|
|
18097
|
-
"language.ko": "
|
|
18098
|
-
"language.nl": "
|
|
18099
|
-
"language.pt": "
|
|
18100
|
-
"language.ru": "
|
|
18101
|
-
"language.sk": "
|
|
18102
|
-
"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",
|
|
18103
18241
|
"map.add.layer": "Aggiungere un layer",
|
|
18104
18242
|
"map.add.layer.catalog": "Dal catalogo",
|
|
18105
18243
|
"map.add.layer.file": "Da un file",
|
|
18106
18244
|
"map.add.layer.wfs": "Da un WFS",
|
|
18107
18245
|
"map.add.layer.wms": "Da un WMS",
|
|
18108
|
-
"map.addFromFile.placeholder": "",
|
|
18109
|
-
"map.geocoding.placeholder": "",
|
|
18110
|
-
"map.help.addFromFile": "",
|
|
18111
|
-
"map.layer.add": "",
|
|
18112
|
-
"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",
|
|
18113
18251
|
"map.layers.list": "Layers",
|
|
18114
18252
|
"map.loading.data": "Caricamento dati...",
|
|
18115
|
-
"map.loading.service": "",
|
|
18253
|
+
"map.loading.service": "Caricamento del servizio...",
|
|
18116
18254
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
18117
18255
|
"map.select.layer": "Sorgente dati",
|
|
18118
|
-
"map.wfs.urlInput.hint": "",
|
|
18119
|
-
"map.wms.urlInput.hint": "",
|
|
18256
|
+
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
18257
|
+
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
18120
18258
|
"multiselect.filter.placeholder": "Cerca",
|
|
18121
18259
|
"nav.back": "Indietro",
|
|
18122
18260
|
next: next$2,
|
|
@@ -18150,17 +18288,20 @@ var it = {
|
|
|
18150
18288
|
"record.metadata.author": "Autore",
|
|
18151
18289
|
"record.metadata.catalog": "Catalogo",
|
|
18152
18290
|
"record.metadata.contact": "Contatto",
|
|
18153
|
-
"record.metadata.
|
|
18291
|
+
"record.metadata.creation": "Data di creazione",
|
|
18292
|
+
"record.metadata.details": "A proposito del dati",
|
|
18154
18293
|
"record.metadata.download": "Download",
|
|
18155
18294
|
"record.metadata.formats": "Formati",
|
|
18156
18295
|
"record.metadata.keywords": "Parole chiave",
|
|
18157
|
-
"record.metadata.
|
|
18296
|
+
"record.metadata.languages": "Lingue",
|
|
18297
|
+
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
18158
18298
|
"record.metadata.links": "Collegamenti",
|
|
18159
18299
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18160
|
-
"record.metadata.origin": "Informazioni sui dati",
|
|
18161
18300
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18162
18301
|
"record.metadata.owner": "Catalogo originale",
|
|
18163
18302
|
"record.metadata.preview": "Anteprima",
|
|
18303
|
+
"record.metadata.producer": "Produttore dei dati",
|
|
18304
|
+
"record.metadata.publication": "Data di pubblicazione",
|
|
18164
18305
|
"record.metadata.publications": "pubblicazioni",
|
|
18165
18306
|
"record.metadata.quality": "Qualità dei metadati",
|
|
18166
18307
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
@@ -18182,13 +18323,17 @@ var it = {
|
|
|
18182
18323
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18183
18324
|
"record.metadata.related": "Vedi anche",
|
|
18184
18325
|
"record.metadata.sheet": "Origine del metadata",
|
|
18185
|
-
"record.metadata.status": "",
|
|
18186
|
-
"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}",
|
|
18187
18332
|
"record.metadata.title": "Titolo",
|
|
18333
|
+
"record.metadata.topics": "Categorie",
|
|
18188
18334
|
"record.metadata.type": "Dati geografici",
|
|
18189
18335
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18190
18336
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18191
|
-
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18192
18337
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18193
18338
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18194
18339
|
"record.more.details": "Dettagli",
|
|
@@ -18413,6 +18558,8 @@ var nl = {
|
|
|
18413
18558
|
"downloads.format.unknown": "",
|
|
18414
18559
|
"downloads.wfs.featuretype.not.found": "",
|
|
18415
18560
|
dropFile: dropFile$1,
|
|
18561
|
+
"editor.record.publish": "",
|
|
18562
|
+
"editor.record.upToDate": "",
|
|
18416
18563
|
"externalviewer.dataset.unnamed": "",
|
|
18417
18564
|
"facets.block.title.OrgForResource": "",
|
|
18418
18565
|
"facets.block.title.availableInServices": "",
|
|
@@ -18426,21 +18573,21 @@ var nl = {
|
|
|
18426
18573
|
"facets.block.title.tag.default": "",
|
|
18427
18574
|
"facets.block.title.th_regions_tree.default": "",
|
|
18428
18575
|
"favorite.not.authenticated.tooltip": "",
|
|
18429
|
-
"language.ca": "
|
|
18430
|
-
"language.cs": "
|
|
18431
|
-
"language.de": "
|
|
18432
|
-
"language.en": "
|
|
18433
|
-
"language.es": "
|
|
18434
|
-
"language.fi": "
|
|
18435
|
-
"language.fr": "
|
|
18436
|
-
"language.is": "
|
|
18437
|
-
"language.it": "
|
|
18438
|
-
"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",
|
|
18439
18586
|
"language.nl": "Nederlands",
|
|
18440
|
-
"language.pt": "
|
|
18441
|
-
"language.ru": "
|
|
18442
|
-
"language.sk": "
|
|
18443
|
-
"language.zh": "
|
|
18587
|
+
"language.pt": "Portugees",
|
|
18588
|
+
"language.ru": "Russisch",
|
|
18589
|
+
"language.sk": "Slowaaks",
|
|
18590
|
+
"language.zh": "Chinees",
|
|
18444
18591
|
"map.add.layer": "",
|
|
18445
18592
|
"map.add.layer.catalog": "",
|
|
18446
18593
|
"map.add.layer.file": "",
|
|
@@ -18491,17 +18638,20 @@ var nl = {
|
|
|
18491
18638
|
"record.metadata.author": "",
|
|
18492
18639
|
"record.metadata.catalog": "",
|
|
18493
18640
|
"record.metadata.contact": "",
|
|
18641
|
+
"record.metadata.creation": "",
|
|
18494
18642
|
"record.metadata.details": "",
|
|
18495
18643
|
"record.metadata.download": "",
|
|
18496
18644
|
"record.metadata.formats": "",
|
|
18497
18645
|
"record.metadata.keywords": "",
|
|
18646
|
+
"record.metadata.languages": "",
|
|
18498
18647
|
"record.metadata.lastUpdate": "",
|
|
18499
18648
|
"record.metadata.links": "",
|
|
18500
18649
|
"record.metadata.noUsage": "",
|
|
18501
|
-
"record.metadata.origin": "",
|
|
18502
18650
|
"record.metadata.otherConstraints": "",
|
|
18503
18651
|
"record.metadata.owner": "",
|
|
18504
18652
|
"record.metadata.preview": "",
|
|
18653
|
+
"record.metadata.producer": "",
|
|
18654
|
+
"record.metadata.publication": "",
|
|
18505
18655
|
"record.metadata.publications": "",
|
|
18506
18656
|
"record.metadata.quality": "",
|
|
18507
18657
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18524,12 +18674,16 @@ var nl = {
|
|
|
18524
18674
|
"record.metadata.related": "",
|
|
18525
18675
|
"record.metadata.sheet": "",
|
|
18526
18676
|
"record.metadata.status": "",
|
|
18527
|
-
"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": "",
|
|
18528
18682
|
"record.metadata.title": "",
|
|
18683
|
+
"record.metadata.topics": "",
|
|
18529
18684
|
"record.metadata.type": "",
|
|
18530
18685
|
"record.metadata.uniqueId": "",
|
|
18531
18686
|
"record.metadata.updateFrequency": "",
|
|
18532
|
-
"record.metadata.updateStatus": "",
|
|
18533
18687
|
"record.metadata.updatedOn": "",
|
|
18534
18688
|
"record.metadata.usage": "",
|
|
18535
18689
|
"record.more.details": "",
|
|
@@ -18754,6 +18908,8 @@ var pt = {
|
|
|
18754
18908
|
"downloads.format.unknown": "",
|
|
18755
18909
|
"downloads.wfs.featuretype.not.found": "",
|
|
18756
18910
|
dropFile: dropFile,
|
|
18911
|
+
"editor.record.publish": "",
|
|
18912
|
+
"editor.record.upToDate": "",
|
|
18757
18913
|
"externalviewer.dataset.unnamed": "",
|
|
18758
18914
|
"facets.block.title.OrgForResource": "",
|
|
18759
18915
|
"facets.block.title.availableInServices": "",
|
|
@@ -18767,21 +18923,21 @@ var pt = {
|
|
|
18767
18923
|
"facets.block.title.tag.default": "",
|
|
18768
18924
|
"facets.block.title.th_regions_tree.default": "",
|
|
18769
18925
|
"favorite.not.authenticated.tooltip": "",
|
|
18770
|
-
"language.ca": "
|
|
18771
|
-
"language.cs": "
|
|
18772
|
-
"language.de": "
|
|
18773
|
-
"language.en": "
|
|
18774
|
-
"language.es": "
|
|
18775
|
-
"language.fi": "
|
|
18776
|
-
"language.fr": "
|
|
18777
|
-
"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",
|
|
18778
18934
|
"language.it": "Italiano",
|
|
18779
|
-
"language.ko": "
|
|
18780
|
-
"language.nl": "
|
|
18935
|
+
"language.ko": "Coreano",
|
|
18936
|
+
"language.nl": "Holandês",
|
|
18781
18937
|
"language.pt": "Português",
|
|
18782
|
-
"language.ru": "
|
|
18783
|
-
"language.sk": "
|
|
18784
|
-
"language.zh": "
|
|
18938
|
+
"language.ru": "Russo",
|
|
18939
|
+
"language.sk": "Eslovaco",
|
|
18940
|
+
"language.zh": "Chinês",
|
|
18785
18941
|
"map.add.layer": "",
|
|
18786
18942
|
"map.add.layer.catalog": "",
|
|
18787
18943
|
"map.add.layer.file": "",
|
|
@@ -18832,17 +18988,20 @@ var pt = {
|
|
|
18832
18988
|
"record.metadata.author": "",
|
|
18833
18989
|
"record.metadata.catalog": "",
|
|
18834
18990
|
"record.metadata.contact": "",
|
|
18991
|
+
"record.metadata.creation": "",
|
|
18835
18992
|
"record.metadata.details": "",
|
|
18836
18993
|
"record.metadata.download": "",
|
|
18837
18994
|
"record.metadata.formats": "",
|
|
18838
18995
|
"record.metadata.keywords": "",
|
|
18996
|
+
"record.metadata.languages": "",
|
|
18839
18997
|
"record.metadata.lastUpdate": "",
|
|
18840
18998
|
"record.metadata.links": "",
|
|
18841
18999
|
"record.metadata.noUsage": "",
|
|
18842
|
-
"record.metadata.origin": "",
|
|
18843
19000
|
"record.metadata.otherConstraints": "",
|
|
18844
19001
|
"record.metadata.owner": "",
|
|
18845
19002
|
"record.metadata.preview": "",
|
|
19003
|
+
"record.metadata.producer": "",
|
|
19004
|
+
"record.metadata.publication": "",
|
|
18846
19005
|
"record.metadata.publications": "",
|
|
18847
19006
|
"record.metadata.quality": "",
|
|
18848
19007
|
"record.metadata.quality.contact.failed": "",
|
|
@@ -18865,12 +19024,16 @@ var pt = {
|
|
|
18865
19024
|
"record.metadata.related": "",
|
|
18866
19025
|
"record.metadata.sheet": "",
|
|
18867
19026
|
"record.metadata.status": "",
|
|
18868
|
-
"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": "",
|
|
18869
19032
|
"record.metadata.title": "",
|
|
19033
|
+
"record.metadata.topics": "",
|
|
18870
19034
|
"record.metadata.type": "",
|
|
18871
19035
|
"record.metadata.uniqueId": "",
|
|
18872
19036
|
"record.metadata.updateFrequency": "",
|
|
18873
|
-
"record.metadata.updateStatus": "",
|
|
18874
19037
|
"record.metadata.updatedOn": "",
|
|
18875
19038
|
"record.metadata.usage": "",
|
|
18876
19039
|
"record.more.details": "",
|
|
@@ -19011,8 +19174,8 @@ class Gn4FieldMapper {
|
|
|
19011
19174
|
},
|
|
19012
19175
|
cl_topic: (output, source) => ({
|
|
19013
19176
|
...output,
|
|
19014
|
-
|
|
19015
|
-
...(output.
|
|
19177
|
+
topics: [
|
|
19178
|
+
...(output.topics || []),
|
|
19016
19179
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
19017
19180
|
],
|
|
19018
19181
|
}),
|
|
@@ -19036,6 +19199,18 @@ class Gn4FieldMapper {
|
|
|
19036
19199
|
...output,
|
|
19037
19200
|
recordUpdated: toDate(selectField(source, 'changeDate')),
|
|
19038
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
|
+
},
|
|
19039
19214
|
link: (output, source) => {
|
|
19040
19215
|
const rawLinks = getAsArray(selectField(source, 'link'));
|
|
19041
19216
|
const distributions = rawLinks
|
|
@@ -19067,14 +19242,14 @@ class Gn4FieldMapper {
|
|
|
19067
19242
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19068
19243
|
}, output);
|
|
19069
19244
|
},
|
|
19070
|
-
|
|
19245
|
+
allKeywords: (output, source) => ({
|
|
19071
19246
|
...output,
|
|
19072
|
-
keywords:
|
|
19247
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19073
19248
|
}),
|
|
19074
19249
|
inspireTheme: (output, source) => ({
|
|
19075
19250
|
...output,
|
|
19076
|
-
|
|
19077
|
-
...(output.
|
|
19251
|
+
topics: [
|
|
19252
|
+
...(output.topics || []),
|
|
19078
19253
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19079
19254
|
],
|
|
19080
19255
|
}),
|
|
@@ -19128,8 +19303,8 @@ class Gn4FieldMapper {
|
|
|
19128
19303
|
],
|
|
19129
19304
|
};
|
|
19130
19305
|
},
|
|
19131
|
-
|
|
19132
|
-
const ranges = getAsArray(selectField(source, '
|
|
19306
|
+
resourceTemporalExtentDateRange: (output, source) => {
|
|
19307
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalExtentDateRange'));
|
|
19133
19308
|
return {
|
|
19134
19309
|
...output,
|
|
19135
19310
|
temporalExtents: ranges.map((range) => {
|
|
@@ -19286,6 +19461,7 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19286
19461
|
status: null,
|
|
19287
19462
|
lineage: null,
|
|
19288
19463
|
recordUpdated: null,
|
|
19464
|
+
recordPublished: null,
|
|
19289
19465
|
ownerOrganization: null,
|
|
19290
19466
|
licenses: [],
|
|
19291
19467
|
legalConstraints: [],
|
|
@@ -19294,10 +19470,11 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19294
19470
|
contacts: [],
|
|
19295
19471
|
contactsForResource: [],
|
|
19296
19472
|
keywords: [],
|
|
19297
|
-
|
|
19473
|
+
topics: [],
|
|
19298
19474
|
spatialExtents: [],
|
|
19299
19475
|
temporalExtents: [],
|
|
19300
19476
|
overviews: [],
|
|
19477
|
+
languages: [],
|
|
19301
19478
|
};
|
|
19302
19479
|
const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
|
|
19303
19480
|
return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
|
|
@@ -19457,7 +19634,7 @@ class ElasticsearchService {
|
|
|
19457
19634
|
},
|
|
19458
19635
|
};
|
|
19459
19636
|
}
|
|
19460
|
-
getRelatedRecordPayload(title, uuid, size = 6, _source = ES_SOURCE_SUMMARY) {
|
|
19637
|
+
getRelatedRecordPayload(title, uuid, size = 6, _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']) {
|
|
19461
19638
|
return {
|
|
19462
19639
|
query: {
|
|
19463
19640
|
bool: {
|
|
@@ -20528,7 +20705,7 @@ const MAP_FEATURE_KEY = 'map';
|
|
|
20528
20705
|
const initialMapState = {
|
|
20529
20706
|
layers: [],
|
|
20530
20707
|
};
|
|
20531
|
-
const reducer$
|
|
20708
|
+
const reducer$3 = createReducer(initialMapState, on(addLayer, (state, action) => {
|
|
20532
20709
|
const layers = [...state.layers];
|
|
20533
20710
|
const layerWithInfo = { ...action.layer, loading: false, error: null };
|
|
20534
20711
|
if (!('atIndex' in action))
|
|
@@ -20577,7 +20754,7 @@ const reducer$2 = createReducer(initialMapState, on(addLayer, (state, action) =>
|
|
|
20577
20754
|
: layer),
|
|
20578
20755
|
})));
|
|
20579
20756
|
function mapReducer(state, action) {
|
|
20580
|
-
return reducer$
|
|
20757
|
+
return reducer$3(state, action);
|
|
20581
20758
|
}
|
|
20582
20759
|
|
|
20583
20760
|
// Lookup the 'Map' feature state managed by NgRx
|
|
@@ -21040,6 +21217,38 @@ function createFuzzyFilter(pattern) {
|
|
|
21040
21217
|
};
|
|
21041
21218
|
}
|
|
21042
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
|
+
|
|
21043
21252
|
marker('downloads.wfs.featuretype.not.found');
|
|
21044
21253
|
const FORMATS = {
|
|
21045
21254
|
csv: {
|
|
@@ -22570,6 +22779,9 @@ class MapContextService {
|
|
|
22570
22779
|
if (mapConfig) {
|
|
22571
22780
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22572
22781
|
}
|
|
22782
|
+
else {
|
|
22783
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22784
|
+
}
|
|
22573
22785
|
if (!mapContext.view?.extent &&
|
|
22574
22786
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22575
22787
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22680,6 +22892,11 @@ class MapContextService {
|
|
|
22680
22892
|
}
|
|
22681
22893
|
return view;
|
|
22682
22894
|
}
|
|
22895
|
+
addDefaultBaselayerContext(layers) {
|
|
22896
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22897
|
+
? layers
|
|
22898
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22899
|
+
}
|
|
22683
22900
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22684
22901
|
return {
|
|
22685
22902
|
...mapContext,
|
|
@@ -23226,11 +23443,11 @@ class ThumbnailComponent {
|
|
|
23226
23443
|
}
|
|
23227
23444
|
}
|
|
23228
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 }); }
|
|
23229
|
-
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 }); }
|
|
23230
23447
|
}
|
|
23231
23448
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThumbnailComponent, decorators: [{
|
|
23232
23449
|
type: Component,
|
|
23233
|
-
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" }]
|
|
23234
23451
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23235
23452
|
type: Optional
|
|
23236
23453
|
}, {
|
|
@@ -23376,7 +23593,7 @@ class MetadataQualityComponent {
|
|
|
23376
23593
|
this.items = [];
|
|
23377
23594
|
this.add('title', !!this.metadata?.title);
|
|
23378
23595
|
this.add('description', !!this.metadata?.abstract);
|
|
23379
|
-
this.add('topic', this.metadata?.
|
|
23596
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23380
23597
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23381
23598
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23382
23599
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23690,11 +23907,11 @@ class BadgeComponent {
|
|
|
23690
23907
|
this.clickable = false;
|
|
23691
23908
|
}
|
|
23692
23909
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23693
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable
|
|
23910
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23694
23911
|
}
|
|
23695
23912
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
23696
23913
|
type: Component,
|
|
23697
|
-
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable
|
|
23914
|
+
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
23698
23915
|
}], propDecorators: { clickable: [{
|
|
23699
23916
|
type: Input
|
|
23700
23917
|
}] } });
|
|
@@ -23824,6 +24041,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23824
24041
|
type: Input
|
|
23825
24042
|
}] } });
|
|
23826
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
|
+
|
|
23827
24058
|
class ContentGhostComponent {
|
|
23828
24059
|
constructor() {
|
|
23829
24060
|
this.ghostClass = '';
|
|
@@ -23963,14 +24194,16 @@ class MaxLinesComponent {
|
|
|
23963
24194
|
return result;
|
|
23964
24195
|
}
|
|
23965
24196
|
ngOnDestroy() {
|
|
24197
|
+
if (!this.observer)
|
|
24198
|
+
return;
|
|
23966
24199
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
23967
24200
|
}
|
|
23968
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 }); }
|
|
23969
|
-
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 }); }
|
|
23970
24203
|
}
|
|
23971
24204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
23972
24205
|
type: Component,
|
|
23973
|
-
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" }]
|
|
23974
24207
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
|
|
23975
24208
|
type: Input
|
|
23976
24209
|
}], container: [{
|
|
@@ -23978,20 +24211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23978
24211
|
args: ['container']
|
|
23979
24212
|
}] } });
|
|
23980
24213
|
|
|
23981
|
-
class MarkdownParserComponent {
|
|
23982
|
-
get parsedMarkdown() {
|
|
23983
|
-
return marked.parse(this.textContent);
|
|
23984
|
-
}
|
|
23985
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23986
|
-
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 }); }
|
|
23987
|
-
}
|
|
23988
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23989
|
-
type: Component,
|
|
23990
|
-
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"] }]
|
|
23991
|
-
}], propDecorators: { textContent: [{
|
|
23992
|
-
type: Input
|
|
23993
|
-
}] } });
|
|
23994
|
-
|
|
23995
24214
|
class MetadataInfoComponent {
|
|
23996
24215
|
constructor() {
|
|
23997
24216
|
this.keyword = new EventEmitter();
|
|
@@ -24039,6 +24258,16 @@ class MetadataInfoComponent {
|
|
|
24039
24258
|
return undefined;
|
|
24040
24259
|
}
|
|
24041
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
|
+
}
|
|
24042
24271
|
fieldReady(propName) {
|
|
24043
24272
|
return !this.incomplete || propName in this.metadata;
|
|
24044
24273
|
}
|
|
@@ -24046,11 +24275,11 @@ class MetadataInfoComponent {
|
|
|
24046
24275
|
this.keyword.emit(keyword);
|
|
24047
24276
|
}
|
|
24048
24277
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24049
|
-
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 <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24050
24279
|
}
|
|
24051
24280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
24052
24281
|
type: Component,
|
|
24053
|
-
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 <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
24054
24283
|
}], propDecorators: { metadata: [{
|
|
24055
24284
|
type: Input
|
|
24056
24285
|
}], incomplete: [{
|
|
@@ -24090,23 +24319,23 @@ class ButtonComponent {
|
|
|
24090
24319
|
this.extraClass = '';
|
|
24091
24320
|
this.buttonClick = new EventEmitter();
|
|
24092
24321
|
}
|
|
24093
|
-
// btn-classes are explicited to allow tailwind recognize them and add it in css.
|
|
24094
24322
|
set type(value) {
|
|
24323
|
+
// btn-classes are written in full to be picked up by tailwind
|
|
24095
24324
|
switch (value) {
|
|
24096
24325
|
case 'primary':
|
|
24097
|
-
this.btnClass = 'btn-primary';
|
|
24326
|
+
this.btnClass = 'gn-ui-btn-primary';
|
|
24098
24327
|
break;
|
|
24099
24328
|
case 'secondary':
|
|
24100
|
-
this.btnClass = 'btn-secondary';
|
|
24329
|
+
this.btnClass = 'gn-ui-btn-secondary';
|
|
24101
24330
|
break;
|
|
24102
24331
|
case 'outline':
|
|
24103
|
-
this.btnClass = 'btn-outline';
|
|
24332
|
+
this.btnClass = 'gn-ui-btn-outline';
|
|
24104
24333
|
break;
|
|
24105
24334
|
case 'light':
|
|
24106
|
-
this.btnClass = 'btn-light';
|
|
24335
|
+
this.btnClass = 'gn-ui-btn-light';
|
|
24107
24336
|
break;
|
|
24108
24337
|
default:
|
|
24109
|
-
this.btnClass = 'btn-default';
|
|
24338
|
+
this.btnClass = 'gn-ui-btn-default';
|
|
24110
24339
|
break;
|
|
24111
24340
|
}
|
|
24112
24341
|
}
|
|
@@ -24119,11 +24348,11 @@ class ButtonComponent {
|
|
|
24119
24348
|
propagateToDocumentOnly(event);
|
|
24120
24349
|
}
|
|
24121
24350
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24122
|
-
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 }); }
|
|
24123
24352
|
}
|
|
24124
24353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24125
24354
|
type: Component,
|
|
24126
|
-
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" }]
|
|
24127
24356
|
}], propDecorators: { type: [{
|
|
24128
24357
|
type: Input
|
|
24129
24358
|
}], disabled: [{
|
|
@@ -24403,11 +24632,11 @@ class CarouselComponent {
|
|
|
24403
24632
|
this.emblaApi.scrollTo(stepIndex);
|
|
24404
24633
|
}
|
|
24405
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 }); }
|
|
24406
|
-
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 }); }
|
|
24407
24636
|
}
|
|
24408
24637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
24409
24638
|
type: Component,
|
|
24410
|
-
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"] }]
|
|
24411
24640
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerClass: [{
|
|
24412
24641
|
type: Input
|
|
24413
24642
|
}], stepsContainerClass: [{
|
|
@@ -24559,11 +24788,11 @@ class MetadataContactComponent {
|
|
|
24559
24788
|
this.organizationClick.emit(this.shownOrganization);
|
|
24560
24789
|
}
|
|
24561
24790
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24562
|
-
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 }); }
|
|
24563
24792
|
}
|
|
24564
24793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24565
24794
|
type: Component,
|
|
24566
|
-
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" }]
|
|
24567
24796
|
}], propDecorators: { metadata: [{
|
|
24568
24797
|
type: Input
|
|
24569
24798
|
}], organizationClick: [{
|
|
@@ -24787,11 +25016,11 @@ class DropdownSelectorComponent {
|
|
|
24787
25016
|
}
|
|
24788
25017
|
}
|
|
24789
25018
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24790
|
-
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 }); }
|
|
24791
25020
|
}
|
|
24792
25021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24793
25022
|
type: Component,
|
|
24794
|
-
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" }]
|
|
24795
25024
|
}], propDecorators: { title: [{
|
|
24796
25025
|
type: Input
|
|
24797
25026
|
}], showTitle: [{
|
|
@@ -24967,11 +25196,11 @@ class DropdownMultiselectComponent {
|
|
|
24967
25196
|
this.setFocus();
|
|
24968
25197
|
}
|
|
24969
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 }); }
|
|
24970
|
-
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 }); }
|
|
24971
25200
|
}
|
|
24972
25201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24973
25202
|
type: Component,
|
|
24974
|
-
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" }]
|
|
24975
25204
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24976
25205
|
type: Input
|
|
24977
25206
|
}], choices: [{
|
|
@@ -25125,11 +25354,11 @@ class TextAreaComponent {
|
|
|
25125
25354
|
this.rawChange.next(value);
|
|
25126
25355
|
}
|
|
25127
25356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25128
|
-
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"] }); }
|
|
25129
25358
|
}
|
|
25130
25359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25131
25360
|
type: Component,
|
|
25132
|
-
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"] }]
|
|
25133
25362
|
}], propDecorators: { value: [{
|
|
25134
25363
|
type: Input
|
|
25135
25364
|
}], placeholder: [{
|
|
@@ -25399,11 +25628,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25399
25628
|
|
|
25400
25629
|
class NavigationButtonComponent {
|
|
25401
25630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25402
|
-
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 }); }
|
|
25403
25632
|
}
|
|
25404
25633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25405
25634
|
type: Component,
|
|
25406
|
-
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"] }]
|
|
25407
25636
|
}], propDecorators: { label: [{
|
|
25408
25637
|
type: Input
|
|
25409
25638
|
}], icon: [{
|
|
@@ -25536,7 +25765,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25536
25765
|
|
|
25537
25766
|
class FormFieldComponent {
|
|
25538
25767
|
set value(v) {
|
|
25539
|
-
this.formControl.setValue(v
|
|
25768
|
+
this.formControl.setValue(v, {
|
|
25769
|
+
emitEvent: false,
|
|
25770
|
+
});
|
|
25540
25771
|
}
|
|
25541
25772
|
constructor() {
|
|
25542
25773
|
this.formControl = new FormControl();
|
|
@@ -25717,10 +25948,8 @@ class UiInputsModule {
|
|
|
25717
25948
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25718
25949
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25719
25950
|
AutocompleteComponent,
|
|
25720
|
-
ButtonComponent,
|
|
25721
25951
|
TextInputComponent,
|
|
25722
25952
|
DragAndDropFileInputComponent,
|
|
25723
|
-
TextAreaComponent,
|
|
25724
25953
|
ChipsInputComponent,
|
|
25725
25954
|
NavigationButtonComponent,
|
|
25726
25955
|
StarToggleComponent,
|
|
@@ -25753,7 +25982,9 @@ class UiInputsModule {
|
|
|
25753
25982
|
MatInputModule,
|
|
25754
25983
|
MatDatepickerModule,
|
|
25755
25984
|
MatNativeDateModule,
|
|
25756
|
-
EditableLabelDirective
|
|
25985
|
+
EditableLabelDirective,
|
|
25986
|
+
TextAreaComponent,
|
|
25987
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25757
25988
|
AutocompleteComponent,
|
|
25758
25989
|
ButtonComponent,
|
|
25759
25990
|
TextInputComponent,
|
|
@@ -25795,10 +26026,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25795
26026
|
declarations: [
|
|
25796
26027
|
DropdownSelectorComponent,
|
|
25797
26028
|
AutocompleteComponent,
|
|
25798
|
-
ButtonComponent,
|
|
25799
26029
|
TextInputComponent,
|
|
25800
26030
|
DragAndDropFileInputComponent,
|
|
25801
|
-
TextAreaComponent,
|
|
25802
26031
|
ChipsInputComponent,
|
|
25803
26032
|
NavigationButtonComponent,
|
|
25804
26033
|
StarToggleComponent,
|
|
@@ -25837,6 +26066,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25837
26066
|
MatDatepickerModule,
|
|
25838
26067
|
MatNativeDateModule,
|
|
25839
26068
|
EditableLabelDirective,
|
|
26069
|
+
TextAreaComponent,
|
|
26070
|
+
ButtonComponent,
|
|
25840
26071
|
],
|
|
25841
26072
|
exports: [
|
|
25842
26073
|
DropdownSelectorComponent,
|
|
@@ -26058,7 +26289,6 @@ class UiElementsModule {
|
|
|
26058
26289
|
PaginationButtonsComponent,
|
|
26059
26290
|
MaxLinesComponent,
|
|
26060
26291
|
RecordApiFormComponent,
|
|
26061
|
-
MarkdownParserComponent,
|
|
26062
26292
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
26063
26293
|
MatIconModule,
|
|
26064
26294
|
MatTooltipModule,
|
|
@@ -26067,7 +26297,8 @@ class UiElementsModule {
|
|
|
26067
26297
|
RouterModule,
|
|
26068
26298
|
UiInputsModule,
|
|
26069
26299
|
FormsModule,
|
|
26070
|
-
NgOptimizedImage
|
|
26300
|
+
NgOptimizedImage,
|
|
26301
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26071
26302
|
ContentGhostComponent,
|
|
26072
26303
|
DownloadItemComponent,
|
|
26073
26304
|
DownloadsListComponent,
|
|
@@ -26114,6 +26345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26114
26345
|
UiInputsModule,
|
|
26115
26346
|
FormsModule,
|
|
26116
26347
|
NgOptimizedImage,
|
|
26348
|
+
MarkdownParserComponent,
|
|
26117
26349
|
],
|
|
26118
26350
|
declarations: [
|
|
26119
26351
|
MetadataInfoComponent,
|
|
@@ -26136,7 +26368,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26136
26368
|
PaginationButtonsComponent,
|
|
26137
26369
|
MaxLinesComponent,
|
|
26138
26370
|
RecordApiFormComponent,
|
|
26139
|
-
MarkdownParserComponent,
|
|
26140
26371
|
ImageOverlayPreviewComponent,
|
|
26141
26372
|
],
|
|
26142
26373
|
exports: [
|
|
@@ -26540,7 +26771,7 @@ const initSearch = () => {
|
|
|
26540
26771
|
const initialState = {
|
|
26541
26772
|
[DEFAULT_SEARCH_KEY]: initSearch(),
|
|
26542
26773
|
};
|
|
26543
|
-
function reducer$
|
|
26774
|
+
function reducer$2(state = initialState, action) {
|
|
26544
26775
|
const { id } = action;
|
|
26545
26776
|
if (id) {
|
|
26546
26777
|
let stateSearch = state[id] || initSearch();
|
|
@@ -27482,11 +27713,11 @@ class FavoriteStarComponent {
|
|
|
27482
27713
|
});
|
|
27483
27714
|
}
|
|
27484
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 }); }
|
|
27485
|
-
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\"\n data-test=\"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\"\n data-test=\"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 }); }
|
|
27486
27717
|
}
|
|
27487
27718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
27488
27719
|
type: Component,
|
|
27489
|
-
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\"\n data-test=\"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\"\n data-test=\"favorite-count\"\n *ngIf=\"!displayCount\"\n translate=\"datahub.record.addToFavorites\"\n ></span>\n</div>\n" }]
|
|
27490
27721
|
}], ctorParameters: function () { return [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }]; }, propDecorators: { displayCount: [{
|
|
27491
27722
|
type: Input
|
|
27492
27723
|
}], record: [{
|
|
@@ -28164,7 +28395,7 @@ class FeatureSearchModule {
|
|
|
28164
28395
|
},
|
|
28165
28396
|
], imports: [CommonModule,
|
|
28166
28397
|
TranslateModule.forChild(),
|
|
28167
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28398
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28168
28399
|
initialState,
|
|
28169
28400
|
}),
|
|
28170
28401
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28194,7 +28425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28194
28425
|
imports: [
|
|
28195
28426
|
CommonModule,
|
|
28196
28427
|
TranslateModule.forChild(),
|
|
28197
|
-
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$
|
|
28428
|
+
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
28198
28429
|
initialState,
|
|
28199
28430
|
}),
|
|
28200
28431
|
EffectsModule.forFeature([SearchEffects]),
|
|
@@ -28967,7 +29198,7 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
28967
29198
|
const { metadata, related, ...stateWithoutMd } = state;
|
|
28968
29199
|
return stateWithoutMd;
|
|
28969
29200
|
}));
|
|
28970
|
-
function reducer(state, action) {
|
|
29201
|
+
function reducer$1(state, action) {
|
|
28971
29202
|
return mdViewReducer(state, action);
|
|
28972
29203
|
}
|
|
28973
29204
|
|
|
@@ -30917,11 +31148,11 @@ class LanguageSwitcherComponent {
|
|
|
30917
31148
|
this.translate.use(value);
|
|
30918
31149
|
}
|
|
30919
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 }); }
|
|
30920
|
-
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"] }] }); }
|
|
30921
31152
|
}
|
|
30922
31153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30923
31154
|
type: Component,
|
|
30924
|
-
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" }]
|
|
30925
31156
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30926
31157
|
type: Optional
|
|
30927
31158
|
}, {
|
|
@@ -31248,18 +31479,18 @@ class DataViewPermalinkComponent {
|
|
|
31248
31479
|
if (config) {
|
|
31249
31480
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
31250
31481
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
31251
|
-
url.
|
|
31252
|
-
|
|
31253
|
-
|
|
31254
|
-
|
|
31255
|
-
|
|
31256
|
-
|
|
31257
|
-
|
|
31258
|
-
|
|
31259
|
-
|
|
31260
|
-
|
|
31261
|
-
|
|
31262
|
-
|
|
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}`);
|
|
31263
31494
|
return url.toString();
|
|
31264
31495
|
}
|
|
31265
31496
|
return '';
|
|
@@ -31366,7 +31597,7 @@ class FeatureRecordModule {
|
|
|
31366
31597
|
DataViewWebComponentComponent,
|
|
31367
31598
|
DataViewShareComponent] }); }
|
|
31368
31599
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
31369
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31600
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31370
31601
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31371
31602
|
UiLayoutModule,
|
|
31372
31603
|
FeatureMapModule,
|
|
@@ -31394,7 +31625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31394
31625
|
],
|
|
31395
31626
|
imports: [
|
|
31396
31627
|
CommonModule,
|
|
31397
|
-
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer),
|
|
31628
|
+
StoreModule.forFeature(MD_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
31398
31629
|
EffectsModule.forFeature([MdViewEffects]),
|
|
31399
31630
|
UiLayoutModule,
|
|
31400
31631
|
FeatureMapModule,
|
|
@@ -31420,6 +31651,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31420
31651
|
}]
|
|
31421
31652
|
}] });
|
|
31422
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
|
+
|
|
31423
31770
|
class WizardService {
|
|
31424
31771
|
constructor(translateService) {
|
|
31425
31772
|
this.translateService = translateService;
|
|
@@ -31781,6 +32128,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31781
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"] }]
|
|
31782
32129
|
}], ctorParameters: function () { return [{ type: WizardService }, { type: i1$1.TranslateService }]; } });
|
|
31783
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
|
+
|
|
31784
32216
|
class FeatureEditorModule {
|
|
31785
32217
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31786
32218
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, declarations: [WizardComponent,
|
|
@@ -31791,8 +32223,8 @@ class FeatureEditorModule {
|
|
|
31791
32223
|
MatNativeDateModule,
|
|
31792
32224
|
MatFormFieldModule,
|
|
31793
32225
|
HttpClientModule,
|
|
31794
|
-
HttpClientXsrfModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
31795
|
-
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,
|
|
31796
32228
|
UiInputsModule,
|
|
31797
32229
|
UiWidgetsModule,
|
|
31798
32230
|
TranslateModule.forChild(),
|
|
@@ -31800,7 +32232,9 @@ class FeatureEditorModule {
|
|
|
31800
32232
|
MatNativeDateModule,
|
|
31801
32233
|
MatFormFieldModule,
|
|
31802
32234
|
HttpClientModule,
|
|
31803
|
-
HttpClientXsrfModule
|
|
32235
|
+
HttpClientXsrfModule,
|
|
32236
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32237
|
+
EffectsModule.forFeature([EditorEffects])] }); }
|
|
31804
32238
|
}
|
|
31805
32239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureEditorModule, decorators: [{
|
|
31806
32240
|
type: NgModule,
|
|
@@ -31820,105 +32254,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
31820
32254
|
MatFormFieldModule,
|
|
31821
32255
|
HttpClientModule,
|
|
31822
32256
|
HttpClientXsrfModule,
|
|
32257
|
+
StoreModule.forFeature(EDITOR_FEATURE_KEY, editorReducer),
|
|
32258
|
+
EffectsModule.forFeature([EditorEffects]),
|
|
31823
32259
|
],
|
|
31824
32260
|
exports: [WizardComponent, WizardSummarizeComponent],
|
|
32261
|
+
providers: [EditorFacade],
|
|
31825
32262
|
}]
|
|
31826
32263
|
}] });
|
|
31827
32264
|
|
|
31828
|
-
class EditorService {
|
|
31829
|
-
constructor(http, apiConfiguration) {
|
|
31830
|
-
this.http = http;
|
|
31831
|
-
this.apiConfiguration = apiConfiguration;
|
|
31832
|
-
this.record$ = new BehaviorSubject(null);
|
|
31833
|
-
this.fieldsConfig = [
|
|
31834
|
-
{
|
|
31835
|
-
model: 'title',
|
|
31836
|
-
labelKey: 'Metadata title',
|
|
31837
|
-
type: 'text',
|
|
31838
|
-
},
|
|
31839
|
-
{
|
|
31840
|
-
model: 'abstract',
|
|
31841
|
-
labelKey: 'Abstract',
|
|
31842
|
-
type: 'rich',
|
|
31843
|
-
},
|
|
31844
|
-
{
|
|
31845
|
-
model: 'uniqueIdentifier',
|
|
31846
|
-
labelKey: 'Unique identifier',
|
|
31847
|
-
type: 'text',
|
|
31848
|
-
locked: true,
|
|
31849
|
-
},
|
|
31850
|
-
];
|
|
31851
|
-
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
31852
|
-
this.fields$ = this.record$.pipe(map$1((record) => this.fieldsConfig.map((fieldConfig) => ({
|
|
31853
|
-
config: fieldConfig,
|
|
31854
|
-
value: record?.[fieldConfig.model] || null,
|
|
31855
|
-
}))));
|
|
31856
|
-
this.saving$ = new BehaviorSubject(false);
|
|
31857
|
-
}
|
|
31858
|
-
loadRecordByUuid(uuid) {
|
|
31859
|
-
return this.http
|
|
31860
|
-
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
31861
|
-
responseType: 'text',
|
|
31862
|
-
headers: {
|
|
31863
|
-
Accept: 'application/xml',
|
|
31864
|
-
},
|
|
31865
|
-
})
|
|
31866
|
-
.pipe(map$1((response) => toModel(response.toString())));
|
|
31867
|
-
}
|
|
31868
|
-
saveCurrentRecord() {
|
|
31869
|
-
return this.record$.pipe(take(1), tap$1((record) => {
|
|
31870
|
-
if (!record)
|
|
31871
|
-
throw new Error('Save record failed: no record currently open');
|
|
31872
|
-
this.saving$.next(true);
|
|
31873
|
-
}), switchMap$1((record) => this.http.put(`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`, toXml(record), {
|
|
31874
|
-
headers: {
|
|
31875
|
-
'Content-Type': 'application/xml',
|
|
31876
|
-
},
|
|
31877
|
-
withCredentials: true,
|
|
31878
|
-
})), map$1(() => undefined), finalize(() => {
|
|
31879
|
-
this.saving$.next(false);
|
|
31880
|
-
}));
|
|
31881
|
-
}
|
|
31882
|
-
setCurrentRecord(record) {
|
|
31883
|
-
this.record$.next(record);
|
|
31884
|
-
}
|
|
31885
|
-
updateRecordField(fieldName, value) {
|
|
31886
|
-
this.record$
|
|
31887
|
-
.pipe(take(1), map$1((record) => ({ ...record, [fieldName]: value })))
|
|
31888
|
-
.subscribe((record) => this.record$.next(record));
|
|
31889
|
-
}
|
|
31890
|
-
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 }); }
|
|
31891
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
31892
|
-
}
|
|
31893
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
31894
|
-
type: Injectable,
|
|
31895
|
-
args: [{
|
|
31896
|
-
providedIn: 'root',
|
|
31897
|
-
}]
|
|
31898
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: Configuration, decorators: [{
|
|
31899
|
-
type: Optional
|
|
31900
|
-
}, {
|
|
31901
|
-
type: Inject,
|
|
31902
|
-
args: [Configuration]
|
|
31903
|
-
}] }]; } });
|
|
31904
|
-
|
|
31905
32265
|
class RecordFormComponent {
|
|
31906
|
-
constructor(
|
|
31907
|
-
this.
|
|
32266
|
+
constructor(facade) {
|
|
32267
|
+
this.facade = facade;
|
|
32268
|
+
this.fields$ = this.facade.recordFields$;
|
|
31908
32269
|
}
|
|
31909
|
-
handleFieldValueChange(
|
|
31910
|
-
|
|
32270
|
+
handleFieldValueChange(field, newValue) {
|
|
32271
|
+
if (!field.config.model) {
|
|
32272
|
+
return;
|
|
32273
|
+
}
|
|
32274
|
+
this.facade.updateRecordField(field.config.model, newValue);
|
|
31911
32275
|
}
|
|
31912
32276
|
fieldTracker(index, field) {
|
|
31913
32277
|
return field.config.model;
|
|
31914
32278
|
}
|
|
31915
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token:
|
|
31916
|
-
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 }); }
|
|
31917
32281
|
}
|
|
31918
32282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31919
32283
|
type: Component,
|
|
31920
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <
|
|
31921
|
-
}], 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 }]; } });
|
|
31922
32286
|
|
|
31923
32287
|
const ROUTER_STATE_KEY = 'router';
|
|
31924
32288
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
@@ -32285,5 +32649,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32285
32649
|
* Generated bundle index. Do not edit.
|
|
32286
32650
|
*/
|
|
32287
32651
|
|
|
32288
|
-
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_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 };
|
|
32289
32653
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|