geonetwork-ui 2.4.0-dev.db93b4c4 → 2.4.0-dev.dd042cec
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/iso19139/iso19139.converter.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +31 -3
- package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
- package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +29 -0
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +131 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +170 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +47 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +7 -6
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +33 -9
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +30 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +46 -7
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
- package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +5 -2
- package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +19 -5
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +67 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +28 -8
- package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
- package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
- package/esm2022/translations/de.json +44 -17
- package/esm2022/translations/en.json +37 -10
- package/esm2022/translations/es.json +36 -9
- package/esm2022/translations/fr.json +47 -20
- package/esm2022/translations/it.json +37 -10
- package/esm2022/translations/nl.json +36 -9
- package/esm2022/translations/pt.json +36 -9
- package/fesm2022/geonetwork-ui.mjs +1266 -279
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +7 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +17 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +12 -0
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +47 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +17 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +3 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +9 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +7 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +14 -4
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +4 -4
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +7 -6
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +20 -0
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +9 -3
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/index.d.ts +1 -0
- package/libs/ui/widgets/src/index.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +13 -5
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -2
- package/src/libs/common/domain/src/lib/model/record/contact.model.ts +28 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +22 -0
- package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
- package/src/libs/data-access/gn4/src/spec.yaml +0 -8
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +25 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +2 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +110 -19
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +76 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +271 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.html +6 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +59 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +8 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +18 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +1 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +32 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +3 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +57 -3
- package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
- package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +8 -4
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
- package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +15 -3
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +26 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +74 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +15 -1
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +26 -12
- package/src/libs/ui/widgets/src/index.ts +1 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
- package/tailwind.base.css +2 -1
- package/translations/de.json +44 -17
- package/translations/en.json +37 -10
- package/translations/es.json +36 -9
- package/translations/fr.json +47 -20
- package/translations/it.json +37 -10
- package/translations/nl.json +36 -9
- package/translations/pt.json +36 -9
- package/translations/sk.json +37 -10
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
|
+
import GML32 from 'ol/format/GML32';
|
|
3
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
4
|
+
import { parse as parse$1 } from 'ol/xml';
|
|
2
5
|
import format from 'date-fns/format';
|
|
3
6
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren,
|
|
7
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, TemplateRef, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, Host, Pipe, inject } from '@angular/core';
|
|
5
8
|
import * as i1 from '@angular/common/http';
|
|
6
9
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
10
|
import * as i1$1 from '@ngx-translate/core';
|
|
@@ -12,7 +15,7 @@ import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith,
|
|
|
12
15
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
16
|
import * as i1$3 from '@angular/common';
|
|
14
17
|
import { CommonModule, NgFor, NgComponentOutlet, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom,
|
|
18
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, merge, BehaviorSubject, fromEvent, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
19
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
20
|
import * as i1$2 from '@ngrx/store';
|
|
18
21
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -23,7 +26,6 @@ import 'ol/Feature';
|
|
|
23
26
|
import { Circle, Fill, Stroke, Style as Style$1 } from 'ol/style';
|
|
24
27
|
import Style, { createDefaultStyle } from 'ol/style/Style';
|
|
25
28
|
import { extend, isEmpty } from 'ol/extent';
|
|
26
|
-
import GeoJSON from 'ol/format/GeoJSON';
|
|
27
29
|
import { transformExtent, fromLonLat } from 'ol/proj';
|
|
28
30
|
import ImageWMS from 'ol/source/ImageWMS';
|
|
29
31
|
import TileWMS from 'ol/source/TileWMS';
|
|
@@ -33,7 +35,7 @@ import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } fro
|
|
|
33
35
|
import chroma from 'chroma-js';
|
|
34
36
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
35
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
36
|
-
import proj4 from 'proj4
|
|
38
|
+
import proj4 from 'proj4';
|
|
37
39
|
import { defaults } from 'ol/control/defaults';
|
|
38
40
|
import * as TOML from '@ltd/j-toml';
|
|
39
41
|
import CircleStyle from 'ol/style/Circle';
|
|
@@ -48,60 +50,64 @@ import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
|
48
50
|
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
49
51
|
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
50
52
|
import ImageLayer from 'ol/layer/Image';
|
|
51
|
-
import * as i2$
|
|
53
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
52
54
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
53
55
|
import * as i2$2 from '@angular/forms';
|
|
54
56
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl, FormArray, FormControl } from '@angular/forms';
|
|
55
57
|
import * as i2$1 from '@angular/material/autocomplete';
|
|
56
58
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
57
|
-
import * as i3$
|
|
59
|
+
import * as i3$2 from 'ngx-dropzone';
|
|
58
60
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
61
|
import * as i5 from 'ngx-chips';
|
|
60
62
|
import { TagInputModule } from 'ngx-chips';
|
|
61
63
|
import * as i1$4 from '@angular/material/progress-spinner';
|
|
62
64
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
65
|
+
import tippy from 'tippy.js';
|
|
63
66
|
import * as i3 from '@angular/material/core';
|
|
64
67
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
65
68
|
import * as i1$5 from '@angular/material/checkbox';
|
|
66
69
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
67
|
-
import * as
|
|
70
|
+
import * as i3$1 from '@angular/material/tooltip';
|
|
68
71
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
69
|
-
import * as i2$
|
|
72
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
70
73
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
71
74
|
import * as i1$6 from '@angular/cdk/overlay';
|
|
72
75
|
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
73
76
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
74
77
|
import { MatInputModule } from '@angular/material/input';
|
|
75
|
-
import * as i1$
|
|
78
|
+
import * as i1$8 from '@angular/router';
|
|
76
79
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
77
80
|
import Duration from 'duration-relativetimeformat';
|
|
81
|
+
import * as i1$7 from '@angular/material/dialog';
|
|
82
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
78
83
|
import * as basicLightbox from 'basiclightbox';
|
|
79
84
|
import { marked } from 'marked';
|
|
80
85
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
81
86
|
import EmblaCarousel from 'embla-carousel';
|
|
82
87
|
import { formatDistance } from 'date-fns';
|
|
83
88
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
84
|
-
import * as
|
|
89
|
+
import * as i4 from '@angular/material/menu';
|
|
90
|
+
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
91
|
+
import * as i1$9 from '@ngrx/effects';
|
|
85
92
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
86
|
-
import tippy from 'tippy.js';
|
|
87
93
|
import { valid as valid$1 } from 'geojson-validation';
|
|
94
|
+
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
88
95
|
import { Polygon } from 'ol/geom';
|
|
89
96
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
90
|
-
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
91
97
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
92
|
-
import * as i4 from '@angular/cdk/scrolling';
|
|
98
|
+
import * as i4$1 from '@angular/cdk/scrolling';
|
|
93
99
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
94
|
-
import * as i2$
|
|
100
|
+
import * as i2$5 from '@angular/material/sort';
|
|
95
101
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
96
|
-
import * as i1$
|
|
102
|
+
import * as i1$a from '@angular/material/table';
|
|
97
103
|
import { MatTableModule } from '@angular/material/table';
|
|
98
|
-
import * as i3$
|
|
104
|
+
import * as i3$3 from 'ng-table-virtual-scroll';
|
|
99
105
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
100
106
|
import * as Papa from 'papaparse';
|
|
101
107
|
import parseDate from 'date-fns/parse';
|
|
102
108
|
import parseIsoDate from 'date-fns/parseISO';
|
|
103
109
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
104
|
-
import * as i3$
|
|
110
|
+
import * as i3$4 from '@ngrx/router-store';
|
|
105
111
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
106
112
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
107
113
|
|
|
@@ -269,6 +275,9 @@ function allChildrenElement(element) {
|
|
|
269
275
|
...element.children.filter((el) => el instanceof XmlElement),
|
|
270
276
|
];
|
|
271
277
|
}
|
|
278
|
+
function firstChildElement(element) {
|
|
279
|
+
return allChildrenElement(element)[0] ?? null;
|
|
280
|
+
}
|
|
272
281
|
/**
|
|
273
282
|
* Will return all matching elements nested according to the given
|
|
274
283
|
* names (similar to a path), starting form the input element;
|
|
@@ -319,10 +328,12 @@ function findParent(parentName) {
|
|
|
319
328
|
}
|
|
320
329
|
function readText() {
|
|
321
330
|
return (el) => {
|
|
322
|
-
|
|
331
|
+
if (!el)
|
|
332
|
+
return null;
|
|
333
|
+
const textNode = Array.isArray(el.children)
|
|
323
334
|
? el.children.find((node) => node.type === 'text')
|
|
324
335
|
: null;
|
|
325
|
-
return textNode ? textNode.text :
|
|
336
|
+
return textNode ? textNode.text : '';
|
|
326
337
|
};
|
|
327
338
|
}
|
|
328
339
|
function readAttribute(attrName) {
|
|
@@ -427,10 +438,12 @@ function getTreeRoot(element) {
|
|
|
427
438
|
}
|
|
428
439
|
// stays on the parent element
|
|
429
440
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
441
|
+
// will filter out falsy elements
|
|
430
442
|
function appendChildren(...childrenFns) {
|
|
431
443
|
return (element) => {
|
|
432
444
|
if (!element)
|
|
433
445
|
return null;
|
|
446
|
+
childrenFns = childrenFns.filter((fn) => fn);
|
|
434
447
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
|
|
435
448
|
element.children.forEach((el) => (el.parent = element));
|
|
436
449
|
return element;
|
|
@@ -559,6 +572,33 @@ function matchMimeType(format) {
|
|
|
559
572
|
return format || null;
|
|
560
573
|
}
|
|
561
574
|
|
|
575
|
+
function readGeometry(el) {
|
|
576
|
+
const xmlDoc = createDocument(el);
|
|
577
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2';
|
|
578
|
+
const gmlString = xmlToString(xmlDoc);
|
|
579
|
+
const doc = parse$1(gmlString);
|
|
580
|
+
// we need an intermediate node to be able to parse the GML
|
|
581
|
+
const node = document.createElement('pre');
|
|
582
|
+
node.appendChild(doc.documentElement);
|
|
583
|
+
const gml32Format = new GML32();
|
|
584
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
585
|
+
// @ts-ignore
|
|
586
|
+
const geometry = gml32Format.readGeometryFromNode(node);
|
|
587
|
+
const geojsonFormat = new GeoJSON();
|
|
588
|
+
return geojsonFormat.writeGeometryObject(geometry);
|
|
589
|
+
}
|
|
590
|
+
function writeGeometry(geometryObject) {
|
|
591
|
+
const geojsonFormat = new GeoJSON();
|
|
592
|
+
const geometry = geojsonFormat.readGeometry(geometryObject);
|
|
593
|
+
const gml32Format = new GML32();
|
|
594
|
+
const node = gml32Format.writeGeometryNode(geometry);
|
|
595
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
596
|
+
// @ts-ignore
|
|
597
|
+
const element = node.firstElementChild;
|
|
598
|
+
const gmlString = new XMLSerializer().serializeToString(element);
|
|
599
|
+
return getRootElement(parseXmlString(gmlString));
|
|
600
|
+
}
|
|
601
|
+
|
|
562
602
|
/**
|
|
563
603
|
* Parts are [firstName, lastName]
|
|
564
604
|
* Second part will be null if no separation could be done
|
|
@@ -727,6 +767,9 @@ function extractCharacterString() {
|
|
|
727
767
|
function extractDateTime() {
|
|
728
768
|
return pipe(fallback(findChildElement('gco:DateTime', false), findChildElement('gco:Date', false)), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)));
|
|
729
769
|
}
|
|
770
|
+
function extractDecimal() {
|
|
771
|
+
return pipe(findChildElement('gco:Decimal', false), readText(), map((numberStr) => (numberStr ? Number(numberStr) : null)));
|
|
772
|
+
}
|
|
730
773
|
function extractUrl() {
|
|
731
774
|
const getUrl = pipe(findChildElement('gmd:URL', false), readText());
|
|
732
775
|
const getCharacterString = pipe(findChildElement('gco:CharacterString', false), readText());
|
|
@@ -1084,6 +1127,30 @@ function readTemporalExtents(rootEl) {
|
|
|
1084
1127
|
}
|
|
1085
1128
|
}))(rootEl);
|
|
1086
1129
|
}
|
|
1130
|
+
function readSpatialExtents(rootEl) {
|
|
1131
|
+
const extractGeometry = (rootEl) => {
|
|
1132
|
+
if (!rootEl)
|
|
1133
|
+
return null;
|
|
1134
|
+
return pipe(findChildElement('gmd:polygon', false), firstChildElement, map((el) => readGeometry(el)))(rootEl);
|
|
1135
|
+
};
|
|
1136
|
+
const extractBBox = (rootEl) => {
|
|
1137
|
+
if (!rootEl)
|
|
1138
|
+
return null;
|
|
1139
|
+
return pipe(combine(pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()), pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())))(rootEl);
|
|
1140
|
+
};
|
|
1141
|
+
const extractDescription = (rootEl) => {
|
|
1142
|
+
if (!rootEl)
|
|
1143
|
+
return null;
|
|
1144
|
+
return pipe(findNestedElement('gmd:geographicIdentifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1145
|
+
};
|
|
1146
|
+
return pipe(findIdentification(), findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:geographicElement'), mapArray(combine(pipe(findChildElement('gmd:EX_BoundingPolygon'), extractGeometry), pipe(findChildElement('gmd:EX_GeographicBoundingBox'), extractBBox), pipe(findChildElement('gmd:EX_GeographicDescription'), extractDescription))), mapArray(([geometry, bbox, description]) => {
|
|
1147
|
+
return {
|
|
1148
|
+
...(geometry && { geometry }),
|
|
1149
|
+
...(bbox && { bbox }),
|
|
1150
|
+
...(description && { description }),
|
|
1151
|
+
};
|
|
1152
|
+
}))(rootEl);
|
|
1153
|
+
}
|
|
1087
1154
|
|
|
1088
1155
|
function writeCharacterString(text) {
|
|
1089
1156
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1100,6 +1167,9 @@ function writeDateTime(date) {
|
|
|
1100
1167
|
function writeDate(date) {
|
|
1101
1168
|
return tap(pipe(findChildOrCreate('gco:Date'), setTextContent(format(date, 'yyyy-MM-dd'))));
|
|
1102
1169
|
}
|
|
1170
|
+
function writeDecimal(decimal) {
|
|
1171
|
+
return tap(pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString())));
|
|
1172
|
+
}
|
|
1103
1173
|
function getProgressCode(status) {
|
|
1104
1174
|
switch (status) {
|
|
1105
1175
|
case 'completed':
|
|
@@ -1493,6 +1563,24 @@ function writeTemporalExtents(record, rootEl) {
|
|
|
1493
1563
|
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1494
1564
|
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1495
1565
|
}
|
|
1566
|
+
function writeSpatialExtents(record, rootEl) {
|
|
1567
|
+
const appendBoundingPolygon = (geometry) => {
|
|
1568
|
+
if (!geometry)
|
|
1569
|
+
return null;
|
|
1570
|
+
return pipe(createElement('gmd:EX_BoundingPolygon'), appendChildren(pipe(createElement('gmd:polygon'), appendChildren(() => writeGeometry(geometry)))));
|
|
1571
|
+
};
|
|
1572
|
+
const appendGeographicBoundingBox = (bbox) => {
|
|
1573
|
+
if (!bbox)
|
|
1574
|
+
return null;
|
|
1575
|
+
return pipe(createElement('gmd:EX_GeographicBoundingBox'), appendChildren(pipe(createElement('gmd:westBoundLongitude'), writeDecimal(bbox[0])), pipe(createElement('gmd:eastBoundLongitude'), writeDecimal(bbox[2])), pipe(createElement('gmd:southBoundLatitude'), writeDecimal(bbox[1])), pipe(createElement('gmd:northBoundLatitude'), writeDecimal(bbox[3]))));
|
|
1576
|
+
};
|
|
1577
|
+
const appendGeographicDescription = (description) => {
|
|
1578
|
+
if (!description)
|
|
1579
|
+
return null;
|
|
1580
|
+
return pipe(createElement('gmd:EX_GeographicDescription'), createChild('gmd:geographicIdentifier'), createChild('gmd:MD_Identifier'), createChild('gmd:code'), writeCharacterString(description));
|
|
1581
|
+
};
|
|
1582
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'), removeChildrenByName('gmd:geographicElement'), appendChildren(...record.spatialExtents.map((extent) => pipe(createElement('gmd:geographicElement'), appendChildren(appendBoundingPolygon(extent.geometry), appendGeographicBoundingBox(extent.bbox), appendGeographicDescription(extent.description))))))(rootEl);
|
|
1583
|
+
}
|
|
1496
1584
|
|
|
1497
1585
|
class Iso19139Converter extends BaseConverter {
|
|
1498
1586
|
constructor() {
|
|
@@ -1525,8 +1613,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1525
1613
|
distributions: readDistributions$1,
|
|
1526
1614
|
onlineResources: readOnlineResources,
|
|
1527
1615
|
temporalExtents: readTemporalExtents,
|
|
1616
|
+
spatialExtents: readSpatialExtents,
|
|
1528
1617
|
// TODO
|
|
1529
|
-
spatialExtents: () => [],
|
|
1530
1618
|
extras: () => undefined,
|
|
1531
1619
|
landingPage: () => undefined,
|
|
1532
1620
|
languages: () => [],
|
|
@@ -1559,8 +1647,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1559
1647
|
distributions: writeDistributions$1,
|
|
1560
1648
|
onlineResources: writeOnlineResources,
|
|
1561
1649
|
temporalExtents: writeTemporalExtents,
|
|
1650
|
+
spatialExtents: () => writeSpatialExtents,
|
|
1562
1651
|
// TODO
|
|
1563
|
-
spatialExtents: () => undefined,
|
|
1564
1652
|
extras: () => undefined,
|
|
1565
1653
|
landingPage: () => undefined,
|
|
1566
1654
|
languages: () => undefined,
|
|
@@ -8642,11 +8730,7 @@ class RecordsApiService {
|
|
|
8642
8730
|
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
8643
8731
|
}
|
|
8644
8732
|
// to determine the Content-Type header
|
|
8645
|
-
const consumes = [
|
|
8646
|
-
'application/xml',
|
|
8647
|
-
'application/json',
|
|
8648
|
-
'application/x-www-form-urlencoded',
|
|
8649
|
-
];
|
|
8733
|
+
const consumes = ['application/xml'];
|
|
8650
8734
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
8651
8735
|
if (httpContentTypeSelected !== undefined) {
|
|
8652
8736
|
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
@@ -17455,6 +17539,27 @@ var de = {
|
|
|
17455
17539
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
17456
17540
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
17457
17541
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
17542
|
+
"domain.contact.role.author": "",
|
|
17543
|
+
"domain.contact.role.collaborator": "",
|
|
17544
|
+
"domain.contact.role.contributor": "",
|
|
17545
|
+
"domain.contact.role.custodian": "",
|
|
17546
|
+
"domain.contact.role.distributor": "",
|
|
17547
|
+
"domain.contact.role.editor": "",
|
|
17548
|
+
"domain.contact.role.funder": "",
|
|
17549
|
+
"domain.contact.role.mediator": "",
|
|
17550
|
+
"domain.contact.role.originator": "",
|
|
17551
|
+
"domain.contact.role.other": "",
|
|
17552
|
+
"domain.contact.role.owner": "",
|
|
17553
|
+
"domain.contact.role.point_of_contact": "",
|
|
17554
|
+
"domain.contact.role.principal_investigator": "",
|
|
17555
|
+
"domain.contact.role.processor": "",
|
|
17556
|
+
"domain.contact.role.publisher": "",
|
|
17557
|
+
"domain.contact.role.resource_provider": "",
|
|
17558
|
+
"domain.contact.role.rights_holder": "",
|
|
17559
|
+
"domain.contact.role.sponsor": "",
|
|
17560
|
+
"domain.contact.role.stakeholder": "",
|
|
17561
|
+
"domain.contact.role.unspecified": "",
|
|
17562
|
+
"domain.contact.role.user": "",
|
|
17458
17563
|
"domain.record.status.completed": "Abgeschlossen",
|
|
17459
17564
|
"domain.record.status.deprecated": "Veraltet",
|
|
17460
17565
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
@@ -17473,21 +17578,30 @@ var de = {
|
|
|
17473
17578
|
"downloads.format.unknown": "unbekannt",
|
|
17474
17579
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17475
17580
|
dropFile: dropFile$6,
|
|
17581
|
+
"editor.record.delete.confirmation.cancelText": "Stornieren",
|
|
17582
|
+
"editor.record.delete.confirmation.confirmText": "Löschen",
|
|
17583
|
+
"editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
|
|
17584
|
+
"editor.record.delete.confirmation.title": "Datensatz löschen?",
|
|
17585
|
+
"editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
|
|
17586
|
+
"editor.record.deleteError.closeMessage": "Verstanden",
|
|
17587
|
+
"editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
|
|
17588
|
+
"editor.record.deleteSuccess.body": "",
|
|
17589
|
+
"editor.record.deleteSuccess.title": "",
|
|
17476
17590
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
17477
17591
|
"editor.record.form.bottomButtons.next": "",
|
|
17478
17592
|
"editor.record.form.bottomButtons.previous": "",
|
|
17479
|
-
"editor.record.form.field.abstract": "",
|
|
17593
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
17594
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
17480
17595
|
"editor.record.form.field.keywords": "Schlagwörter",
|
|
17481
17596
|
"editor.record.form.field.license": "Lizenz",
|
|
17482
|
-
"editor.record.form.field.
|
|
17483
|
-
"editor.record.form.field.
|
|
17484
|
-
"editor.record.form.field.
|
|
17485
|
-
"editor.record.form.field.
|
|
17486
|
-
"editor.record.form.field.
|
|
17487
|
-
"editor.record.form.field.
|
|
17488
|
-
"editor.record.form.
|
|
17489
|
-
"editor.record.form.
|
|
17490
|
-
"editor.record.form.license": "Lizenz",
|
|
17597
|
+
"editor.record.form.field.overviews": "",
|
|
17598
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
17599
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17600
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
17601
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
17602
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
17603
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17604
|
+
"editor.record.form.classification.opendata": "",
|
|
17491
17605
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17492
17606
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17493
17607
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17513,16 +17627,10 @@ var de = {
|
|
|
17513
17627
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
17514
17628
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
17515
17629
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
17516
|
-
"editor.record.form.metadata.title": "Metadaten-Titel",
|
|
17517
|
-
"editor.record.form.record.updated": "Datensatz zuletzt aktualisiert",
|
|
17518
|
-
"editor.record.form.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17519
|
-
"editor.record.form.temporalExtents": "Zeitlicher Umfang",
|
|
17520
17630
|
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
17521
17631
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
17522
17632
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
17523
17633
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
17524
|
-
"editor.record.form.unique.identifier": "Eindeutige Kennung (ID)",
|
|
17525
|
-
"editor.record.form.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17526
17634
|
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
17527
17635
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
17528
17636
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
@@ -17537,6 +17645,7 @@ var de = {
|
|
|
17537
17645
|
"editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
|
|
17538
17646
|
"editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
|
|
17539
17647
|
"editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
|
|
17648
|
+
"editor.sidebar.menu.editor": "",
|
|
17540
17649
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17541
17650
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17542
17651
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -17613,7 +17722,9 @@ var de = {
|
|
|
17613
17722
|
"pagination.page": "Seite",
|
|
17614
17723
|
"pagination.pageOf": "von",
|
|
17615
17724
|
previous: previous$6,
|
|
17725
|
+
"record.action.delete": "Löschen",
|
|
17616
17726
|
"record.action.download": "Herunterladen",
|
|
17727
|
+
"record.action.duplicate": "",
|
|
17617
17728
|
"record.action.view": "Anzeigen",
|
|
17618
17729
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
17619
17730
|
"record.metadata.about": "Beschreibung",
|
|
@@ -17744,7 +17855,7 @@ var de = {
|
|
|
17744
17855
|
"search.filters.resourceType": "Ressourcentyp",
|
|
17745
17856
|
"search.filters.standard": "Standard",
|
|
17746
17857
|
"search.filters.title": "Ergebnisse filtern",
|
|
17747
|
-
"search.filters.topic": "
|
|
17858
|
+
"search.filters.topic": "Themen",
|
|
17748
17859
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
17749
17860
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
17750
17861
|
"share.tab.permalink": "Teilen",
|
|
@@ -17918,6 +18029,27 @@ var en = {
|
|
|
17918
18029
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
17919
18030
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
17920
18031
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
18032
|
+
"domain.contact.role.author": "Author",
|
|
18033
|
+
"domain.contact.role.collaborator": "Collaborator",
|
|
18034
|
+
"domain.contact.role.contributor": "Contributor",
|
|
18035
|
+
"domain.contact.role.custodian": "Custodian",
|
|
18036
|
+
"domain.contact.role.distributor": "Distributor",
|
|
18037
|
+
"domain.contact.role.editor": "Editor",
|
|
18038
|
+
"domain.contact.role.funder": "Funder",
|
|
18039
|
+
"domain.contact.role.mediator": "Mediator",
|
|
18040
|
+
"domain.contact.role.originator": "Originator",
|
|
18041
|
+
"domain.contact.role.other": "Other",
|
|
18042
|
+
"domain.contact.role.owner": "Owner",
|
|
18043
|
+
"domain.contact.role.point_of_contact": "Point of contact",
|
|
18044
|
+
"domain.contact.role.principal_investigator": "Principal investigator",
|
|
18045
|
+
"domain.contact.role.processor": "Processor",
|
|
18046
|
+
"domain.contact.role.publisher": "Publisher",
|
|
18047
|
+
"domain.contact.role.resource_provider": "Resource provider",
|
|
18048
|
+
"domain.contact.role.rights_holder": "Rights holder",
|
|
18049
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
18050
|
+
"domain.contact.role.stakeholder": "Stakeholder",
|
|
18051
|
+
"domain.contact.role.unspecified": "Unspecified",
|
|
18052
|
+
"domain.contact.role.user": "User",
|
|
17921
18053
|
"domain.record.status.completed": "Completed",
|
|
17922
18054
|
"domain.record.status.deprecated": "Deprecated",
|
|
17923
18055
|
"domain.record.status.ongoing": "On going",
|
|
@@ -17936,21 +18068,30 @@ var en = {
|
|
|
17936
18068
|
"downloads.format.unknown": "unknown",
|
|
17937
18069
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17938
18070
|
dropFile: dropFile$5,
|
|
18071
|
+
"editor.record.delete.confirmation.cancelText": "Cancel",
|
|
18072
|
+
"editor.record.delete.confirmation.confirmText": "Delete",
|
|
18073
|
+
"editor.record.delete.confirmation.message": "Are you sure you want to delete this record?",
|
|
18074
|
+
"editor.record.delete.confirmation.title": "Delete record?",
|
|
18075
|
+
"editor.record.deleteError.body": "The record could not be deleted:",
|
|
18076
|
+
"editor.record.deleteError.closeMessage": "Understood",
|
|
18077
|
+
"editor.record.deleteError.title": "Error deleting record",
|
|
18078
|
+
"editor.record.deleteSuccess.body": "The record was successfully deleted !",
|
|
18079
|
+
"editor.record.deleteSuccess.title": "Delete success",
|
|
17939
18080
|
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
17940
18081
|
"editor.record.form.bottomButtons.next": "Next",
|
|
17941
18082
|
"editor.record.form.bottomButtons.previous": "Previous",
|
|
18083
|
+
"editor.record.form.classification.opendata": "Open Data",
|
|
17942
18084
|
"editor.record.form.field.abstract": "Abstract",
|
|
18085
|
+
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
|
|
17943
18086
|
"editor.record.form.field.keywords": "Keywords",
|
|
17944
18087
|
"editor.record.form.field.license": "License",
|
|
18088
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
17945
18089
|
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
17946
18090
|
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
17947
18091
|
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
17948
18092
|
"editor.record.form.field.title": "Metadata title",
|
|
17949
18093
|
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
17950
18094
|
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
17951
|
-
"editor.record.form.abstract": "Abstract",
|
|
17952
|
-
"editor.record.form.keywords": "Keywords",
|
|
17953
|
-
"editor.record.form.license": "License",
|
|
17954
18095
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17955
18096
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17956
18097
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17976,16 +18117,10 @@ var en = {
|
|
|
17976
18117
|
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
17977
18118
|
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
17978
18119
|
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
17979
|
-
"editor.record.form.metadata.title": "Metadata title",
|
|
17980
|
-
"editor.record.form.record.updated": "Record updated",
|
|
17981
|
-
"editor.record.form.resourceUpdated": "Last update date",
|
|
17982
|
-
"editor.record.form.temporalExtents": "Temporal extent",
|
|
17983
18120
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
17984
18121
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
17985
18122
|
"editor.record.form.temporalExtents.date": "Date",
|
|
17986
18123
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
17987
|
-
"editor.record.form.unique.identifier": "Unique identifier",
|
|
17988
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
17989
18124
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17990
18125
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17991
18126
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -18000,6 +18135,7 @@ var en = {
|
|
|
18000
18135
|
"editor.record.saveStatus.draftWithChangesPending": "Saved as draft - changes are pending",
|
|
18001
18136
|
"editor.record.saveStatus.recordUpToDate": "Record is up to date",
|
|
18002
18137
|
"editor.record.upToDate": "This record is up to date",
|
|
18138
|
+
"editor.sidebar.menu.editor": "Editor",
|
|
18003
18139
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
18004
18140
|
"facets.block.title.OrgForResource": "Organisation",
|
|
18005
18141
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -18076,7 +18212,9 @@ var en = {
|
|
|
18076
18212
|
"pagination.page": "page",
|
|
18077
18213
|
"pagination.pageOf": "of",
|
|
18078
18214
|
previous: previous$5,
|
|
18215
|
+
"record.action.delete": "Delete",
|
|
18079
18216
|
"record.action.download": "Download",
|
|
18217
|
+
"record.action.duplicate": "Duplicate",
|
|
18080
18218
|
"record.action.view": "View",
|
|
18081
18219
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
18082
18220
|
"record.metadata.about": "Description",
|
|
@@ -18207,7 +18345,7 @@ var en = {
|
|
|
18207
18345
|
"search.filters.resourceType": "Resource type",
|
|
18208
18346
|
"search.filters.standard": "Standard",
|
|
18209
18347
|
"search.filters.title": "Filter your results",
|
|
18210
|
-
"search.filters.topic": "
|
|
18348
|
+
"search.filters.topic": "Topics",
|
|
18211
18349
|
"search.filters.useSpatialFilter": "Show records in the area of interest first",
|
|
18212
18350
|
"search.filters.useSpatialFilterHelp": "When this is enabled, records situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
18213
18351
|
"share.tab.permalink": "Share",
|
|
@@ -18381,6 +18519,27 @@ var es = {
|
|
|
18381
18519
|
"dataset.error.parse": "",
|
|
18382
18520
|
"dataset.error.unknown": "",
|
|
18383
18521
|
"dataset.error.unsupportedType": "",
|
|
18522
|
+
"domain.contact.role.author": "",
|
|
18523
|
+
"domain.contact.role.collaborator": "",
|
|
18524
|
+
"domain.contact.role.contributor": "",
|
|
18525
|
+
"domain.contact.role.custodian": "",
|
|
18526
|
+
"domain.contact.role.distributor": "",
|
|
18527
|
+
"domain.contact.role.editor": "",
|
|
18528
|
+
"domain.contact.role.funder": "",
|
|
18529
|
+
"domain.contact.role.mediator": "",
|
|
18530
|
+
"domain.contact.role.originator": "",
|
|
18531
|
+
"domain.contact.role.other": "",
|
|
18532
|
+
"domain.contact.role.owner": "",
|
|
18533
|
+
"domain.contact.role.point_of_contact": "",
|
|
18534
|
+
"domain.contact.role.principal_investigator": "",
|
|
18535
|
+
"domain.contact.role.processor": "",
|
|
18536
|
+
"domain.contact.role.publisher": "",
|
|
18537
|
+
"domain.contact.role.resource_provider": "",
|
|
18538
|
+
"domain.contact.role.rights_holder": "",
|
|
18539
|
+
"domain.contact.role.sponsor": "",
|
|
18540
|
+
"domain.contact.role.stakeholder": "",
|
|
18541
|
+
"domain.contact.role.unspecified": "",
|
|
18542
|
+
"domain.contact.role.user": "",
|
|
18384
18543
|
"domain.record.status.completed": "",
|
|
18385
18544
|
"domain.record.status.deprecated": "",
|
|
18386
18545
|
"domain.record.status.ongoing": "",
|
|
@@ -18399,21 +18558,30 @@ var es = {
|
|
|
18399
18558
|
"downloads.format.unknown": "",
|
|
18400
18559
|
"downloads.wfs.featuretype.not.found": "",
|
|
18401
18560
|
dropFile: dropFile$4,
|
|
18561
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
18562
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
18563
|
+
"editor.record.delete.confirmation.message": "",
|
|
18564
|
+
"editor.record.delete.confirmation.title": "",
|
|
18565
|
+
"editor.record.deleteError.body": "",
|
|
18566
|
+
"editor.record.deleteError.closeMessage": "",
|
|
18567
|
+
"editor.record.deleteError.title": "",
|
|
18568
|
+
"editor.record.deleteSuccess.body": "",
|
|
18569
|
+
"editor.record.deleteSuccess.title": "",
|
|
18402
18570
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
18403
18571
|
"editor.record.form.bottomButtons.next": "",
|
|
18404
18572
|
"editor.record.form.bottomButtons.previous": "",
|
|
18573
|
+
"editor.record.form.classification.opendata": "",
|
|
18405
18574
|
"editor.record.form.field.abstract": "",
|
|
18575
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
18406
18576
|
"editor.record.form.field.keywords": "",
|
|
18407
18577
|
"editor.record.form.field.license": "",
|
|
18578
|
+
"editor.record.form.field.overviews": "",
|
|
18408
18579
|
"editor.record.form.field.recordUpdated": "",
|
|
18409
18580
|
"editor.record.form.field.resourceUpdated": "",
|
|
18410
18581
|
"editor.record.form.field.temporalExtents": "",
|
|
18411
18582
|
"editor.record.form.field.title": "",
|
|
18412
18583
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
18413
18584
|
"editor.record.form.field.updateFrequency": "",
|
|
18414
|
-
"editor.record.form.abstract": "",
|
|
18415
|
-
"editor.record.form.keywords": "",
|
|
18416
|
-
"editor.record.form.license": "",
|
|
18417
18585
|
"editor.record.form.license.cc-by": "",
|
|
18418
18586
|
"editor.record.form.license.cc-by-sa": "",
|
|
18419
18587
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18439,16 +18607,10 @@ var es = {
|
|
|
18439
18607
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
18440
18608
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
18441
18609
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
18442
|
-
"editor.record.form.metadata.title": "",
|
|
18443
|
-
"editor.record.form.record.updated": "",
|
|
18444
|
-
"editor.record.form.resourceUpdated": "",
|
|
18445
|
-
"editor.record.form.temporalExtents": "",
|
|
18446
18610
|
"editor.record.form.temporalExtents.addDate": "",
|
|
18447
18611
|
"editor.record.form.temporalExtents.addRange": "",
|
|
18448
18612
|
"editor.record.form.temporalExtents.date": "",
|
|
18449
18613
|
"editor.record.form.temporalExtents.range": "",
|
|
18450
|
-
"editor.record.form.unique.identifier": "",
|
|
18451
|
-
"editor.record.form.updateFrequency": "",
|
|
18452
18614
|
"editor.record.form.updateFrequency.planned": "",
|
|
18453
18615
|
"editor.record.loadError.body": "",
|
|
18454
18616
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18463,6 +18625,7 @@ var es = {
|
|
|
18463
18625
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
18464
18626
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
18465
18627
|
"editor.record.upToDate": "",
|
|
18628
|
+
"editor.sidebar.menu.editor": "",
|
|
18466
18629
|
"externalviewer.dataset.unnamed": "",
|
|
18467
18630
|
"facets.block.title.OrgForResource": "",
|
|
18468
18631
|
"facets.block.title.availableInServices": "",
|
|
@@ -18539,7 +18702,9 @@ var es = {
|
|
|
18539
18702
|
"pagination.page": "",
|
|
18540
18703
|
"pagination.pageOf": "",
|
|
18541
18704
|
previous: previous$4,
|
|
18705
|
+
"record.action.delete": "",
|
|
18542
18706
|
"record.action.download": "",
|
|
18707
|
+
"record.action.duplicate": "",
|
|
18543
18708
|
"record.action.view": "",
|
|
18544
18709
|
"record.externalViewer.open": "",
|
|
18545
18710
|
"record.metadata.about": "",
|
|
@@ -18844,6 +19009,27 @@ var fr = {
|
|
|
18844
19009
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
18845
19010
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
18846
19011
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
19012
|
+
"domain.contact.role.author": "Auteur",
|
|
19013
|
+
"domain.contact.role.collaborator": "Collaborateur",
|
|
19014
|
+
"domain.contact.role.contributor": "Contributeur",
|
|
19015
|
+
"domain.contact.role.custodian": "Gestionnaire",
|
|
19016
|
+
"domain.contact.role.distributor": "Distributeur",
|
|
19017
|
+
"domain.contact.role.editor": "Éditeur",
|
|
19018
|
+
"domain.contact.role.funder": "Financeur",
|
|
19019
|
+
"domain.contact.role.mediator": "Médiateur",
|
|
19020
|
+
"domain.contact.role.originator": "Créateur",
|
|
19021
|
+
"domain.contact.role.other": "Autre",
|
|
19022
|
+
"domain.contact.role.owner": "Propriétaire",
|
|
19023
|
+
"domain.contact.role.point_of_contact": "Point de contact",
|
|
19024
|
+
"domain.contact.role.principal_investigator": "Chercheur principal",
|
|
19025
|
+
"domain.contact.role.processor": "Processeur",
|
|
19026
|
+
"domain.contact.role.publisher": "Éditeur",
|
|
19027
|
+
"domain.contact.role.resource_provider": "Fournisseur",
|
|
19028
|
+
"domain.contact.role.rights_holder": "Détenteur des droits",
|
|
19029
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
19030
|
+
"domain.contact.role.stakeholder": "Partie prenante",
|
|
19031
|
+
"domain.contact.role.unspecified": "Non spécifié",
|
|
19032
|
+
"domain.contact.role.user": "Utilisateur",
|
|
18847
19033
|
"domain.record.status.completed": "Finalisé",
|
|
18848
19034
|
"domain.record.status.deprecated": "Obsolète",
|
|
18849
19035
|
"domain.record.status.ongoing": "Mise à jour continue",
|
|
@@ -18862,21 +19048,30 @@ var fr = {
|
|
|
18862
19048
|
"downloads.format.unknown": "inconnu",
|
|
18863
19049
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18864
19050
|
dropFile: dropFile$3,
|
|
19051
|
+
"editor.record.delete.confirmation.cancelText": "Annuler",
|
|
19052
|
+
"editor.record.delete.confirmation.confirmText": "Supprimer",
|
|
19053
|
+
"editor.record.delete.confirmation.message": "Etes-vous sûr de vouloir supprimer cette fiche ?",
|
|
19054
|
+
"editor.record.delete.confirmation.title": "Supprimer la fiche",
|
|
19055
|
+
"editor.record.deleteError.body": "La fiche n'a pas pu être supprimée :",
|
|
19056
|
+
"editor.record.deleteError.closeMessage": "Compris",
|
|
19057
|
+
"editor.record.deleteError.title": "Erreur lors de la suppression",
|
|
19058
|
+
"editor.record.deleteSuccess.body": "La fiche a bien été supprimée !",
|
|
19059
|
+
"editor.record.deleteSuccess.title": "Suppression réussie",
|
|
18865
19060
|
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
18866
19061
|
"editor.record.form.bottomButtons.next": "Suivant",
|
|
18867
19062
|
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
19063
|
+
"editor.record.form.classification.opendata": "Données ouvertes",
|
|
18868
19064
|
"editor.record.form.field.abstract": "Résumé",
|
|
19065
|
+
"editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
|
|
18869
19066
|
"editor.record.form.field.keywords": "Mots-clés",
|
|
18870
19067
|
"editor.record.form.field.license": "Licence",
|
|
19068
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
18871
19069
|
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
18872
19070
|
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
18873
19071
|
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
18874
|
-
"editor.record.form.field.title": "
|
|
19072
|
+
"editor.record.form.field.title": "",
|
|
18875
19073
|
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
18876
19074
|
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
18877
|
-
"editor.record.form.abstract": "",
|
|
18878
|
-
"editor.record.form.keywords": "",
|
|
18879
|
-
"editor.record.form.license": "Licence",
|
|
18880
19075
|
"editor.record.form.license.cc-by": "",
|
|
18881
19076
|
"editor.record.form.license.cc-by-sa": "",
|
|
18882
19077
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18902,30 +19097,25 @@ var fr = {
|
|
|
18902
19097
|
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
18903
19098
|
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
18904
19099
|
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
18905
|
-
"editor.record.form.metadata.title": "",
|
|
18906
|
-
"editor.record.form.record.updated": "",
|
|
18907
|
-
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18908
|
-
"editor.record.form.temporalExtents": "Étendue temporelle",
|
|
18909
19100
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
18910
19101
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
18911
19102
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
18912
19103
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
18913
|
-
"editor.record.form.unique.identifier": "",
|
|
18914
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18915
19104
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18916
|
-
"editor.record.loadError.body": "",
|
|
18917
|
-
"editor.record.loadError.closeMessage": "",
|
|
18918
|
-
"editor.record.loadError.title": "",
|
|
18919
|
-
"editor.record.publish": "",
|
|
18920
|
-
"editor.record.publishError.body": "",
|
|
18921
|
-
"editor.record.publishError.closeMessage": "",
|
|
18922
|
-
"editor.record.publishError.title": "",
|
|
18923
|
-
"editor.record.publishSuccess.body": "",
|
|
18924
|
-
"editor.record.publishSuccess.title": "",
|
|
19105
|
+
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
|
|
19106
|
+
"editor.record.loadError.closeMessage": "Compris",
|
|
19107
|
+
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
19108
|
+
"editor.record.publish": "Publier cette fiche",
|
|
19109
|
+
"editor.record.publishError.body": "La fiche n'a pas pu être publiée :",
|
|
19110
|
+
"editor.record.publishError.closeMessage": "Compris",
|
|
19111
|
+
"editor.record.publishError.title": "Erreur lors de la publication",
|
|
19112
|
+
"editor.record.publishSuccess.body": "La fiche a bien été publiée !",
|
|
19113
|
+
"editor.record.publishSuccess.title": "Publication réussie",
|
|
18925
19114
|
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
18926
19115
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18927
19116
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
18928
19117
|
"editor.record.upToDate": "",
|
|
19118
|
+
"editor.sidebar.menu.editor": "",
|
|
18929
19119
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18930
19120
|
"facets.block.title.OrgForResource": "Organisation",
|
|
18931
19121
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -19002,7 +19192,9 @@ var fr = {
|
|
|
19002
19192
|
"pagination.page": "page",
|
|
19003
19193
|
"pagination.pageOf": "sur",
|
|
19004
19194
|
previous: previous$3,
|
|
19195
|
+
"record.action.delete": "Supprimer",
|
|
19005
19196
|
"record.action.download": "Télécharger",
|
|
19197
|
+
"record.action.duplicate": "Dupliquer",
|
|
19006
19198
|
"record.action.view": "Voir",
|
|
19007
19199
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
19008
19200
|
"record.metadata.about": "Description",
|
|
@@ -19133,7 +19325,7 @@ var fr = {
|
|
|
19133
19325
|
"search.filters.resourceType": "Type de ressource",
|
|
19134
19326
|
"search.filters.standard": "Standard",
|
|
19135
19327
|
"search.filters.title": "Affiner votre recherche",
|
|
19136
|
-
"search.filters.topic": "
|
|
19328
|
+
"search.filters.topic": "Thèmes",
|
|
19137
19329
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
19138
19330
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les fiches portant sur la zone d'intérêt du catalogue seront montrées en premier; les fiches en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
19139
19331
|
"share.tab.permalink": "Partager",
|
|
@@ -19307,6 +19499,27 @@ var it = {
|
|
|
19307
19499
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
19308
19500
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
19309
19501
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
19502
|
+
"domain.contact.role.author": "",
|
|
19503
|
+
"domain.contact.role.collaborator": "",
|
|
19504
|
+
"domain.contact.role.contributor": "",
|
|
19505
|
+
"domain.contact.role.custodian": "",
|
|
19506
|
+
"domain.contact.role.distributor": "",
|
|
19507
|
+
"domain.contact.role.editor": "",
|
|
19508
|
+
"domain.contact.role.funder": "",
|
|
19509
|
+
"domain.contact.role.mediator": "",
|
|
19510
|
+
"domain.contact.role.originator": "",
|
|
19511
|
+
"domain.contact.role.other": "",
|
|
19512
|
+
"domain.contact.role.owner": "",
|
|
19513
|
+
"domain.contact.role.point_of_contact": "",
|
|
19514
|
+
"domain.contact.role.principal_investigator": "",
|
|
19515
|
+
"domain.contact.role.processor": "",
|
|
19516
|
+
"domain.contact.role.publisher": "",
|
|
19517
|
+
"domain.contact.role.resource_provider": "",
|
|
19518
|
+
"domain.contact.role.rights_holder": "",
|
|
19519
|
+
"domain.contact.role.sponsor": "",
|
|
19520
|
+
"domain.contact.role.stakeholder": "",
|
|
19521
|
+
"domain.contact.role.unspecified": "",
|
|
19522
|
+
"domain.contact.role.user": "",
|
|
19310
19523
|
"domain.record.status.completed": "Completato",
|
|
19311
19524
|
"domain.record.status.deprecated": "Deprecato",
|
|
19312
19525
|
"domain.record.status.ongoing": "Aggiornamento continuo",
|
|
@@ -19325,21 +19538,30 @@ var it = {
|
|
|
19325
19538
|
"downloads.format.unknown": "sconosciuto",
|
|
19326
19539
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
19327
19540
|
dropFile: dropFile$2,
|
|
19541
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
19542
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
19543
|
+
"editor.record.delete.confirmation.message": "",
|
|
19544
|
+
"editor.record.delete.confirmation.title": "",
|
|
19545
|
+
"editor.record.deleteError.body": "",
|
|
19546
|
+
"editor.record.deleteError.closeMessage": "",
|
|
19547
|
+
"editor.record.deleteError.title": "",
|
|
19548
|
+
"editor.record.deleteSuccess.body": "",
|
|
19549
|
+
"editor.record.deleteSuccess.title": "",
|
|
19328
19550
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19329
19551
|
"editor.record.form.bottomButtons.next": "",
|
|
19330
19552
|
"editor.record.form.bottomButtons.previous": "",
|
|
19553
|
+
"editor.record.form.classification.opendata": "",
|
|
19331
19554
|
"editor.record.form.field.abstract": "",
|
|
19555
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
19332
19556
|
"editor.record.form.field.keywords": "",
|
|
19333
19557
|
"editor.record.form.field.license": "Licenza",
|
|
19558
|
+
"editor.record.form.field.overviews": "",
|
|
19334
19559
|
"editor.record.form.field.recordUpdated": "",
|
|
19335
19560
|
"editor.record.form.field.resourceUpdated": "",
|
|
19336
19561
|
"editor.record.form.field.temporalExtents": "",
|
|
19337
19562
|
"editor.record.form.field.title": "",
|
|
19338
19563
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
19339
19564
|
"editor.record.form.field.updateFrequency": "",
|
|
19340
|
-
"editor.record.form.abstract": "",
|
|
19341
|
-
"editor.record.form.keywords": "",
|
|
19342
|
-
"editor.record.form.license": "Licenza",
|
|
19343
19565
|
"editor.record.form.license.cc-by": "",
|
|
19344
19566
|
"editor.record.form.license.cc-by-sa": "",
|
|
19345
19567
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19365,16 +19587,10 @@ var it = {
|
|
|
19365
19587
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19366
19588
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19367
19589
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19368
|
-
"editor.record.form.metadata.title": "",
|
|
19369
|
-
"editor.record.form.record.updated": "",
|
|
19370
|
-
"editor.record.form.resourceUpdated": "",
|
|
19371
|
-
"editor.record.form.temporalExtents": "",
|
|
19372
19590
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19373
19591
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19374
19592
|
"editor.record.form.temporalExtents.date": "",
|
|
19375
19593
|
"editor.record.form.temporalExtents.range": "",
|
|
19376
|
-
"editor.record.form.unique.identifier": "",
|
|
19377
|
-
"editor.record.form.updateFrequency": "",
|
|
19378
19594
|
"editor.record.form.updateFrequency.planned": "",
|
|
19379
19595
|
"editor.record.loadError.body": "",
|
|
19380
19596
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19389,6 +19605,7 @@ var it = {
|
|
|
19389
19605
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19390
19606
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19391
19607
|
"editor.record.upToDate": "",
|
|
19608
|
+
"editor.sidebar.menu.editor": "",
|
|
19392
19609
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
19393
19610
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
19394
19611
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -19465,7 +19682,9 @@ var it = {
|
|
|
19465
19682
|
"pagination.page": "pagina",
|
|
19466
19683
|
"pagination.pageOf": "di",
|
|
19467
19684
|
previous: previous$2,
|
|
19685
|
+
"record.action.delete": "",
|
|
19468
19686
|
"record.action.download": "Scarica",
|
|
19687
|
+
"record.action.duplicate": "",
|
|
19469
19688
|
"record.action.view": "Visualizza",
|
|
19470
19689
|
"record.externalViewer.open": "Apri nell'visualizzatore esterno",
|
|
19471
19690
|
"record.metadata.about": "Descrizione",
|
|
@@ -19596,7 +19815,7 @@ var it = {
|
|
|
19596
19815
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
19597
19816
|
"search.filters.standard": "Standard",
|
|
19598
19817
|
"search.filters.title": "Affina la sua ricerca",
|
|
19599
|
-
"search.filters.topic": "
|
|
19818
|
+
"search.filters.topic": "Argomenti",
|
|
19600
19819
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
19601
19820
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
19602
19821
|
"share.tab.permalink": "Condividere",
|
|
@@ -19770,6 +19989,27 @@ var nl = {
|
|
|
19770
19989
|
"dataset.error.parse": "",
|
|
19771
19990
|
"dataset.error.unknown": "",
|
|
19772
19991
|
"dataset.error.unsupportedType": "",
|
|
19992
|
+
"domain.contact.role.author": "",
|
|
19993
|
+
"domain.contact.role.collaborator": "",
|
|
19994
|
+
"domain.contact.role.contributor": "",
|
|
19995
|
+
"domain.contact.role.custodian": "",
|
|
19996
|
+
"domain.contact.role.distributor": "",
|
|
19997
|
+
"domain.contact.role.editor": "",
|
|
19998
|
+
"domain.contact.role.funder": "",
|
|
19999
|
+
"domain.contact.role.mediator": "",
|
|
20000
|
+
"domain.contact.role.originator": "",
|
|
20001
|
+
"domain.contact.role.other": "",
|
|
20002
|
+
"domain.contact.role.owner": "",
|
|
20003
|
+
"domain.contact.role.point_of_contact": "",
|
|
20004
|
+
"domain.contact.role.principal_investigator": "",
|
|
20005
|
+
"domain.contact.role.processor": "",
|
|
20006
|
+
"domain.contact.role.publisher": "",
|
|
20007
|
+
"domain.contact.role.resource_provider": "",
|
|
20008
|
+
"domain.contact.role.rights_holder": "",
|
|
20009
|
+
"domain.contact.role.sponsor": "",
|
|
20010
|
+
"domain.contact.role.stakeholder": "",
|
|
20011
|
+
"domain.contact.role.unspecified": "",
|
|
20012
|
+
"domain.contact.role.user": "",
|
|
19773
20013
|
"domain.record.status.completed": "",
|
|
19774
20014
|
"domain.record.status.deprecated": "",
|
|
19775
20015
|
"domain.record.status.ongoing": "",
|
|
@@ -19788,21 +20028,30 @@ var nl = {
|
|
|
19788
20028
|
"downloads.format.unknown": "",
|
|
19789
20029
|
"downloads.wfs.featuretype.not.found": "",
|
|
19790
20030
|
dropFile: dropFile$1,
|
|
20031
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20032
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20033
|
+
"editor.record.delete.confirmation.message": "",
|
|
20034
|
+
"editor.record.delete.confirmation.title": "",
|
|
20035
|
+
"editor.record.deleteError.body": "",
|
|
20036
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20037
|
+
"editor.record.deleteError.title": "",
|
|
20038
|
+
"editor.record.deleteSuccess.body": "",
|
|
20039
|
+
"editor.record.deleteSuccess.title": "",
|
|
19791
20040
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19792
20041
|
"editor.record.form.bottomButtons.next": "",
|
|
19793
20042
|
"editor.record.form.bottomButtons.previous": "",
|
|
20043
|
+
"editor.record.form.classification.opendata": "",
|
|
19794
20044
|
"editor.record.form.field.abstract": "",
|
|
20045
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
19795
20046
|
"editor.record.form.field.keywords": "",
|
|
19796
20047
|
"editor.record.form.field.license": "",
|
|
20048
|
+
"editor.record.form.field.overviews": "",
|
|
19797
20049
|
"editor.record.form.field.recordUpdated": "",
|
|
19798
20050
|
"editor.record.form.field.resourceUpdated": "",
|
|
19799
20051
|
"editor.record.form.field.temporalExtents": "",
|
|
19800
20052
|
"editor.record.form.field.title": "",
|
|
19801
20053
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
19802
20054
|
"editor.record.form.field.updateFrequency": "",
|
|
19803
|
-
"editor.record.form.abstract": "",
|
|
19804
|
-
"editor.record.form.keywords": "",
|
|
19805
|
-
"editor.record.form.license": "",
|
|
19806
20055
|
"editor.record.form.license.cc-by": "",
|
|
19807
20056
|
"editor.record.form.license.cc-by-sa": "",
|
|
19808
20057
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19828,16 +20077,10 @@ var nl = {
|
|
|
19828
20077
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19829
20078
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19830
20079
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19831
|
-
"editor.record.form.metadata.title": "",
|
|
19832
|
-
"editor.record.form.record.updated": "",
|
|
19833
|
-
"editor.record.form.resourceUpdated": "",
|
|
19834
|
-
"editor.record.form.temporalExtents": "",
|
|
19835
20080
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19836
20081
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19837
20082
|
"editor.record.form.temporalExtents.date": "",
|
|
19838
20083
|
"editor.record.form.temporalExtents.range": "",
|
|
19839
|
-
"editor.record.form.unique.identifier": "",
|
|
19840
|
-
"editor.record.form.updateFrequency": "",
|
|
19841
20084
|
"editor.record.form.updateFrequency.planned": "",
|
|
19842
20085
|
"editor.record.loadError.body": "",
|
|
19843
20086
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19852,6 +20095,7 @@ var nl = {
|
|
|
19852
20095
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19853
20096
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19854
20097
|
"editor.record.upToDate": "",
|
|
20098
|
+
"editor.sidebar.menu.editor": "",
|
|
19855
20099
|
"externalviewer.dataset.unnamed": "",
|
|
19856
20100
|
"facets.block.title.OrgForResource": "",
|
|
19857
20101
|
"facets.block.title.availableInServices": "",
|
|
@@ -19928,7 +20172,9 @@ var nl = {
|
|
|
19928
20172
|
"pagination.page": "",
|
|
19929
20173
|
"pagination.pageOf": "",
|
|
19930
20174
|
previous: previous$1,
|
|
20175
|
+
"record.action.delete": "",
|
|
19931
20176
|
"record.action.download": "",
|
|
20177
|
+
"record.action.duplicate": "",
|
|
19932
20178
|
"record.action.view": "",
|
|
19933
20179
|
"record.externalViewer.open": "",
|
|
19934
20180
|
"record.metadata.about": "",
|
|
@@ -20233,6 +20479,27 @@ var pt = {
|
|
|
20233
20479
|
"dataset.error.parse": "",
|
|
20234
20480
|
"dataset.error.unknown": "",
|
|
20235
20481
|
"dataset.error.unsupportedType": "",
|
|
20482
|
+
"domain.contact.role.author": "",
|
|
20483
|
+
"domain.contact.role.collaborator": "",
|
|
20484
|
+
"domain.contact.role.contributor": "",
|
|
20485
|
+
"domain.contact.role.custodian": "",
|
|
20486
|
+
"domain.contact.role.distributor": "",
|
|
20487
|
+
"domain.contact.role.editor": "",
|
|
20488
|
+
"domain.contact.role.funder": "",
|
|
20489
|
+
"domain.contact.role.mediator": "",
|
|
20490
|
+
"domain.contact.role.originator": "",
|
|
20491
|
+
"domain.contact.role.other": "",
|
|
20492
|
+
"domain.contact.role.owner": "",
|
|
20493
|
+
"domain.contact.role.point_of_contact": "",
|
|
20494
|
+
"domain.contact.role.principal_investigator": "",
|
|
20495
|
+
"domain.contact.role.processor": "",
|
|
20496
|
+
"domain.contact.role.publisher": "",
|
|
20497
|
+
"domain.contact.role.resource_provider": "",
|
|
20498
|
+
"domain.contact.role.rights_holder": "",
|
|
20499
|
+
"domain.contact.role.sponsor": "",
|
|
20500
|
+
"domain.contact.role.stakeholder": "",
|
|
20501
|
+
"domain.contact.role.unspecified": "",
|
|
20502
|
+
"domain.contact.role.user": "",
|
|
20236
20503
|
"domain.record.status.completed": "",
|
|
20237
20504
|
"domain.record.status.deprecated": "",
|
|
20238
20505
|
"domain.record.status.ongoing": "",
|
|
@@ -20251,21 +20518,30 @@ var pt = {
|
|
|
20251
20518
|
"downloads.format.unknown": "",
|
|
20252
20519
|
"downloads.wfs.featuretype.not.found": "",
|
|
20253
20520
|
dropFile: dropFile,
|
|
20521
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20522
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20523
|
+
"editor.record.delete.confirmation.message": "",
|
|
20524
|
+
"editor.record.delete.confirmation.title": "",
|
|
20525
|
+
"editor.record.deleteError.body": "",
|
|
20526
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20527
|
+
"editor.record.deleteError.title": "",
|
|
20528
|
+
"editor.record.deleteSuccess.body": "",
|
|
20529
|
+
"editor.record.deleteSuccess.title": "",
|
|
20254
20530
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20255
20531
|
"editor.record.form.bottomButtons.next": "",
|
|
20256
20532
|
"editor.record.form.bottomButtons.previous": "",
|
|
20533
|
+
"editor.record.form.classification.opendata": "",
|
|
20257
20534
|
"editor.record.form.field.abstract": "",
|
|
20535
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
20258
20536
|
"editor.record.form.field.keywords": "",
|
|
20259
20537
|
"editor.record.form.field.license": "",
|
|
20538
|
+
"editor.record.form.field.overviews": "",
|
|
20260
20539
|
"editor.record.form.field.recordUpdated": "",
|
|
20261
20540
|
"editor.record.form.field.resourceUpdated": "",
|
|
20262
20541
|
"editor.record.form.field.temporalExtents": "",
|
|
20263
20542
|
"editor.record.form.field.title": "",
|
|
20264
20543
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
20265
20544
|
"editor.record.form.field.updateFrequency": "",
|
|
20266
|
-
"editor.record.form.abstract": "",
|
|
20267
|
-
"editor.record.form.keywords": "",
|
|
20268
|
-
"editor.record.form.license": "",
|
|
20269
20545
|
"editor.record.form.license.cc-by": "",
|
|
20270
20546
|
"editor.record.form.license.cc-by-sa": "",
|
|
20271
20547
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -20291,16 +20567,10 @@ var pt = {
|
|
|
20291
20567
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20292
20568
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20293
20569
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
20294
|
-
"editor.record.form.metadata.title": "",
|
|
20295
|
-
"editor.record.form.record.updated": "",
|
|
20296
|
-
"editor.record.form.resourceUpdated": "",
|
|
20297
|
-
"editor.record.form.temporalExtents": "",
|
|
20298
20570
|
"editor.record.form.temporalExtents.addDate": "",
|
|
20299
20571
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20300
20572
|
"editor.record.form.temporalExtents.date": "",
|
|
20301
20573
|
"editor.record.form.temporalExtents.range": "",
|
|
20302
|
-
"editor.record.form.unique.identifier": "",
|
|
20303
|
-
"editor.record.form.updateFrequency": "",
|
|
20304
20574
|
"editor.record.form.updateFrequency.planned": "",
|
|
20305
20575
|
"editor.record.loadError.body": "",
|
|
20306
20576
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -20315,6 +20585,7 @@ var pt = {
|
|
|
20315
20585
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
20316
20586
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
20317
20587
|
"editor.record.upToDate": "",
|
|
20588
|
+
"editor.sidebar.menu.editor": "",
|
|
20318
20589
|
"externalviewer.dataset.unnamed": "",
|
|
20319
20590
|
"facets.block.title.OrgForResource": "",
|
|
20320
20591
|
"facets.block.title.availableInServices": "",
|
|
@@ -20391,7 +20662,9 @@ var pt = {
|
|
|
20391
20662
|
"pagination.page": "",
|
|
20392
20663
|
"pagination.pageOf": "",
|
|
20393
20664
|
previous: previous,
|
|
20665
|
+
"record.action.delete": "",
|
|
20394
20666
|
"record.action.download": "",
|
|
20667
|
+
"record.action.duplicate": "",
|
|
20395
20668
|
"record.action.view": "",
|
|
20396
20669
|
"record.externalViewer.open": "",
|
|
20397
20670
|
"record.metadata.about": "",
|
|
@@ -21448,12 +21721,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
21448
21721
|
args: [METADATA_LANGUAGE]
|
|
21449
21722
|
}] }]; } });
|
|
21450
21723
|
|
|
21724
|
+
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
21451
21725
|
class Gn4Repository {
|
|
21452
21726
|
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
|
|
21453
21727
|
this.gn4SearchApi = gn4SearchApi;
|
|
21454
21728
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
21455
21729
|
this.gn4Mapper = gn4Mapper;
|
|
21456
21730
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
21731
|
+
this._draftsChanged = new Subject();
|
|
21732
|
+
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
21457
21733
|
}
|
|
21458
21734
|
search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
|
|
21459
21735
|
return this.gn4SearchApi
|
|
@@ -21524,6 +21800,18 @@ class Gn4Repository {
|
|
|
21524
21800
|
.then((record) => [record, xml, isSavedAlready]);
|
|
21525
21801
|
}));
|
|
21526
21802
|
}
|
|
21803
|
+
openRecordForDuplication(uniqueIdentifier) {
|
|
21804
|
+
return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
|
|
21805
|
+
const converter = findConverterForDocument(recordAsXml);
|
|
21806
|
+
const record = await converter.readRecord(recordAsXml);
|
|
21807
|
+
record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21808
|
+
record.title = `${record.title} (Copy)`;
|
|
21809
|
+
const xml = await converter.writeRecord(record, recordAsXml);
|
|
21810
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
|
|
21811
|
+
this._draftsChanged.next();
|
|
21812
|
+
return [record, xml, false];
|
|
21813
|
+
}));
|
|
21814
|
+
}
|
|
21527
21815
|
serializeRecordToXml(record, referenceRecordSource) {
|
|
21528
21816
|
// if there's a reference record, use that standard; otherwise, use iso19139
|
|
21529
21817
|
const converter = referenceRecordSource
|
|
@@ -21539,15 +21827,28 @@ class Gn4Repository {
|
|
|
21539
21827
|
return response.metadataInfos[metadataId][0].uuid;
|
|
21540
21828
|
}))));
|
|
21541
21829
|
}
|
|
21830
|
+
deleteRecord(uniqueIdentifier) {
|
|
21831
|
+
return this.gn4RecordsApi.deleteRecord(uniqueIdentifier);
|
|
21832
|
+
}
|
|
21833
|
+
generateTemporaryId() {
|
|
21834
|
+
return `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21835
|
+
}
|
|
21542
21836
|
saveRecordAsDraft(record, referenceRecordSource) {
|
|
21543
|
-
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) =>
|
|
21837
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) => {
|
|
21838
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml);
|
|
21839
|
+
this._draftsChanged.next();
|
|
21840
|
+
}));
|
|
21544
21841
|
}
|
|
21545
21842
|
clearRecordDraft(uniqueIdentifier) {
|
|
21546
21843
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
|
|
21844
|
+
this._draftsChanged.next();
|
|
21547
21845
|
}
|
|
21548
21846
|
recordHasDraft(uniqueIdentifier) {
|
|
21549
21847
|
return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
|
|
21550
21848
|
}
|
|
21849
|
+
isRecordNotYetSaved(uniqueIdentifier) {
|
|
21850
|
+
return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX);
|
|
21851
|
+
}
|
|
21551
21852
|
// generated by copilot
|
|
21552
21853
|
getAllDrafts() {
|
|
21553
21854
|
const items = { ...window.localStorage };
|
|
@@ -23297,10 +23598,15 @@ class MapUtilsService {
|
|
|
23297
23598
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
23298
23599
|
return null;
|
|
23299
23600
|
}
|
|
23300
|
-
//
|
|
23601
|
+
// extend all the spatial extents into an including bbox
|
|
23301
23602
|
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
23302
|
-
|
|
23303
|
-
|
|
23603
|
+
if ('bbox' in curr)
|
|
23604
|
+
return extend(prev, curr.bbox);
|
|
23605
|
+
else if ('geometry' in curr) {
|
|
23606
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
23607
|
+
return extend(prev, geom.getExtent());
|
|
23608
|
+
}
|
|
23609
|
+
return prev;
|
|
23304
23610
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
23305
23611
|
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
23306
23612
|
}
|
|
@@ -24886,6 +25192,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24886
25192
|
}]
|
|
24887
25193
|
}] });
|
|
24888
25194
|
|
|
25195
|
+
class PopoverComponent {
|
|
25196
|
+
constructor(viewContainerRef, renderer) {
|
|
25197
|
+
this.viewContainerRef = viewContainerRef;
|
|
25198
|
+
this.renderer = renderer;
|
|
25199
|
+
}
|
|
25200
|
+
getContent() {
|
|
25201
|
+
if (this.content instanceof TemplateRef) {
|
|
25202
|
+
if (this.view) {
|
|
25203
|
+
this.view.destroy();
|
|
25204
|
+
}
|
|
25205
|
+
this.view = this.viewContainerRef.createEmbeddedView(this.content);
|
|
25206
|
+
this.view.detectChanges();
|
|
25207
|
+
const wrapper = this.renderer.createElement('div'); // Create a wrapper div
|
|
25208
|
+
this.view.rootNodes.forEach((node) => {
|
|
25209
|
+
this.renderer.appendChild(wrapper, node); // Append each root node to the wrapper
|
|
25210
|
+
});
|
|
25211
|
+
return wrapper;
|
|
25212
|
+
}
|
|
25213
|
+
return this.content;
|
|
25214
|
+
}
|
|
25215
|
+
ngAfterViewInit() {
|
|
25216
|
+
this.tippyInstance = tippy(this.popoverContent.nativeElement, {
|
|
25217
|
+
content: this.getContent(),
|
|
25218
|
+
allowHTML: true,
|
|
25219
|
+
theme: this.theme,
|
|
25220
|
+
});
|
|
25221
|
+
}
|
|
25222
|
+
ngOnChanges(changes) {
|
|
25223
|
+
if (changes['theme']) {
|
|
25224
|
+
this.theme = changes['theme'].currentValue;
|
|
25225
|
+
if (this.tippyInstance) {
|
|
25226
|
+
this.tippyInstance.setProps({ theme: this.theme });
|
|
25227
|
+
}
|
|
25228
|
+
}
|
|
25229
|
+
if (changes['content']) {
|
|
25230
|
+
this.content = changes['content'].currentValue;
|
|
25231
|
+
if (this.tippyInstance) {
|
|
25232
|
+
this.tippyInstance.setContent(this.getContent());
|
|
25233
|
+
}
|
|
25234
|
+
}
|
|
25235
|
+
}
|
|
25236
|
+
ngOnDestroy() {
|
|
25237
|
+
if (this.tippyInstance) {
|
|
25238
|
+
this.tippyInstance.destroy();
|
|
25239
|
+
}
|
|
25240
|
+
if (this.view) {
|
|
25241
|
+
this.view.destroy();
|
|
25242
|
+
}
|
|
25243
|
+
}
|
|
25244
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25245
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PopoverComponent, isStandalone: true, selector: "gn-ui-popover", inputs: { content: "content", theme: "theme" }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
25246
|
+
}
|
|
25247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
25248
|
+
type: Component,
|
|
25249
|
+
args: [{ selector: 'gn-ui-popover', standalone: true, imports: [CommonModule], template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n" }]
|
|
25250
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { popoverContent: [{
|
|
25251
|
+
type: ViewChild,
|
|
25252
|
+
args: ['popoverContent', { static: false }]
|
|
25253
|
+
}], content: [{
|
|
25254
|
+
type: Input
|
|
25255
|
+
}], theme: [{
|
|
25256
|
+
type: Input
|
|
25257
|
+
}] } });
|
|
25258
|
+
|
|
24889
25259
|
class PopupAlertComponent {
|
|
24890
25260
|
constructor(changeDetector) {
|
|
24891
25261
|
this.changeDetector = changeDetector;
|
|
@@ -24936,6 +25306,7 @@ class AutocompleteComponent {
|
|
|
24936
25306
|
constructor(cdRef) {
|
|
24937
25307
|
this.cdRef = cdRef;
|
|
24938
25308
|
this.clearOnSelection = false;
|
|
25309
|
+
this.preventCompleteOnSelection = false;
|
|
24939
25310
|
this.autoFocus = false;
|
|
24940
25311
|
this.minCharacterCount = 3;
|
|
24941
25312
|
this.allowSubmit = true;
|
|
@@ -25028,17 +25399,28 @@ class AutocompleteComponent {
|
|
|
25028
25399
|
handleClickSearch() {
|
|
25029
25400
|
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
25030
25401
|
}
|
|
25402
|
+
/**
|
|
25403
|
+
* This function is triggered when an item is selected in the list of displayed items.
|
|
25404
|
+
* If preventCompleteOnSelection is true then the input will be left as entered by the user.
|
|
25405
|
+
* If preventCompleteOnSelection is false (by default) then the input will be completed with the item selected by the user.
|
|
25406
|
+
* If clearOnSelection is true then the input will be cleared upon selection.
|
|
25407
|
+
* @param event
|
|
25408
|
+
*/
|
|
25031
25409
|
handleSelection(event) {
|
|
25032
25410
|
this.cancelEnter = true;
|
|
25033
25411
|
this.itemSelected.emit(event.option.value);
|
|
25034
|
-
if (this.
|
|
25035
|
-
this.lastInputValue$.pipe(first()).subscribe((
|
|
25036
|
-
this.inputRef.nativeElement.value =
|
|
25412
|
+
if (this.preventCompleteOnSelection) {
|
|
25413
|
+
this.lastInputValue$.pipe(first()).subscribe((lastInputValue) => {
|
|
25414
|
+
this.inputRef.nativeElement.value = lastInputValue;
|
|
25037
25415
|
});
|
|
25416
|
+
return;
|
|
25417
|
+
}
|
|
25418
|
+
if (this.clearOnSelection) {
|
|
25419
|
+
this.inputRef.nativeElement.value = '';
|
|
25038
25420
|
}
|
|
25039
25421
|
}
|
|
25040
25422
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25041
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25042
25424
|
}
|
|
25043
25425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25044
25426
|
type: Component,
|
|
@@ -25058,6 +25440,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
25058
25440
|
type: Input
|
|
25059
25441
|
}], clearOnSelection: [{
|
|
25060
25442
|
type: Input
|
|
25443
|
+
}], preventCompleteOnSelection: [{
|
|
25444
|
+
type: Input
|
|
25061
25445
|
}], autoFocus: [{
|
|
25062
25446
|
type: Input
|
|
25063
25447
|
}], minCharacterCount: [{
|
|
@@ -25290,7 +25674,7 @@ class CopyTextButtonComponent {
|
|
|
25290
25674
|
event.target.blur();
|
|
25291
25675
|
}
|
|
25292
25676
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25293
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
25677
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25294
25678
|
}
|
|
25295
25679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25296
25680
|
type: Component,
|
|
@@ -25310,7 +25694,7 @@ class DatePickerComponent {
|
|
|
25310
25694
|
this.dateChange = new EventEmitter();
|
|
25311
25695
|
}
|
|
25312
25696
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25313
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
25697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25314
25698
|
}
|
|
25315
25699
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
25316
25700
|
type: Component,
|
|
@@ -25327,7 +25711,7 @@ class DateRangePickerComponent {
|
|
|
25327
25711
|
this.endDateChange = new EventEmitter();
|
|
25328
25712
|
}
|
|
25329
25713
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25330
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$
|
|
25714
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25331
25715
|
}
|
|
25332
25716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25333
25717
|
type: Component,
|
|
@@ -25359,7 +25743,7 @@ class DragAndDropFileInputComponent {
|
|
|
25359
25743
|
this.fileChange.emit(this.selectedFile);
|
|
25360
25744
|
}
|
|
25361
25745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25362
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], 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: i3$
|
|
25746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], 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: i3$2.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
25363
25747
|
}
|
|
25364
25748
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
25365
25749
|
type: Component,
|
|
@@ -27000,11 +27384,11 @@ class MetadataQualityItemComponent {
|
|
|
27000
27384
|
return `record.metadata.quality.${this.name}.${this.value ? 'success' : 'failed'}`;
|
|
27001
27385
|
}
|
|
27002
27386
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27003
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27387
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined min-w-fit\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27004
27388
|
}
|
|
27005
27389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, decorators: [{
|
|
27006
27390
|
type: Component,
|
|
27007
|
-
args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
|
|
27391
|
+
args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ml-4 flex flex-row\">\n <mat-icon class=\"material-symbols-outlined min-w-fit\">{{ icon }}</mat-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
|
|
27008
27392
|
}], propDecorators: { name: [{
|
|
27009
27393
|
type: Input
|
|
27010
27394
|
}], value: [{
|
|
@@ -27015,7 +27399,6 @@ class MetadataQualityComponent {
|
|
|
27015
27399
|
constructor() {
|
|
27016
27400
|
this.smaller = false;
|
|
27017
27401
|
this.items = [];
|
|
27018
|
-
this.isMenuShown = false;
|
|
27019
27402
|
}
|
|
27020
27403
|
get qualityScore() {
|
|
27021
27404
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -27026,12 +27409,6 @@ class MetadataQualityComponent {
|
|
|
27026
27409
|
get calculatedQualityScore() {
|
|
27027
27410
|
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
27028
27411
|
}
|
|
27029
|
-
showMenu() {
|
|
27030
|
-
this.isMenuShown = true;
|
|
27031
|
-
}
|
|
27032
|
-
hideMenu() {
|
|
27033
|
-
this.isMenuShown = false;
|
|
27034
|
-
}
|
|
27035
27412
|
add(name, value) {
|
|
27036
27413
|
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
27037
27414
|
this.items.push({ name, value });
|
|
@@ -27055,11 +27432,11 @@ class MetadataQualityComponent {
|
|
|
27055
27432
|
}
|
|
27056
27433
|
}
|
|
27057
27434
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27058
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, usesOnChanges: true, ngImport: i0, template: "<div
|
|
27435
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\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: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27059
27436
|
}
|
|
27060
27437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
27061
27438
|
type: Component,
|
|
27062
|
-
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
27439
|
+
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
27063
27440
|
}], propDecorators: { metadata: [{
|
|
27064
27441
|
type: Input
|
|
27065
27442
|
}], smaller: [{
|
|
@@ -27254,7 +27631,7 @@ class ApiCardComponent {
|
|
|
27254
27631
|
}
|
|
27255
27632
|
}
|
|
27256
27633
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
27634
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27258
27635
|
}
|
|
27259
27636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
27260
27637
|
type: Component,
|
|
@@ -27283,6 +27660,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27283
27660
|
type: Input
|
|
27284
27661
|
}] } });
|
|
27285
27662
|
|
|
27663
|
+
class ConfirmationDialogComponent {
|
|
27664
|
+
constructor(dialogRef, data) {
|
|
27665
|
+
this.dialogRef = dialogRef;
|
|
27666
|
+
this.data = data;
|
|
27667
|
+
}
|
|
27668
|
+
onConfirm() {
|
|
27669
|
+
this.dialogRef.close(true);
|
|
27670
|
+
}
|
|
27671
|
+
onCancel() {
|
|
27672
|
+
this.dialogRef.close(false);
|
|
27673
|
+
}
|
|
27674
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27675
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmationDialogComponent, isStandalone: true, selector: "gn-ui-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$7.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27676
|
+
}
|
|
27677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
27678
|
+
type: Component,
|
|
27679
|
+
args: [{ selector: 'gn-ui-confirmation-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatDialogModule, ButtonComponent], template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n" }]
|
|
27680
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
|
|
27681
|
+
type: Inject,
|
|
27682
|
+
args: [MAT_DIALOG_DATA]
|
|
27683
|
+
}] }]; } });
|
|
27684
|
+
|
|
27286
27685
|
class ContentGhostComponent {
|
|
27287
27686
|
constructor() {
|
|
27288
27687
|
this.ghostClass = '';
|
|
@@ -27470,11 +27869,11 @@ class MarkdownParserComponent {
|
|
|
27470
27869
|
return marked.parse(this.textContent);
|
|
27471
27870
|
}
|
|
27472
27871
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27473
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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:
|
|
27872
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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:0;line-height:1.5;word-wrap:break-word;height:100%}: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 }); }
|
|
27474
27873
|
}
|
|
27475
27874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
27476
27875
|
type: Component,
|
|
27477
|
-
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:
|
|
27876
|
+
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:0;line-height:1.5;word-wrap:break-word;height:100%}: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"] }]
|
|
27478
27877
|
}], propDecorators: { textContent: [{
|
|
27479
27878
|
type: Input
|
|
27480
27879
|
}] } });
|
|
@@ -27489,7 +27888,7 @@ class MarkdownEditorComponent {
|
|
|
27489
27888
|
this.textContentChanged.emit(this.textContent);
|
|
27490
27889
|
}
|
|
27491
27890
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27492
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27891
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27493
27892
|
}
|
|
27494
27893
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
27495
27894
|
type: Component,
|
|
@@ -27502,7 +27901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27502
27901
|
TextAreaComponent,
|
|
27503
27902
|
MarkdownParserComponent,
|
|
27504
27903
|
TranslateModule,
|
|
27505
|
-
], template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27904
|
+
], template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n" }]
|
|
27506
27905
|
}], propDecorators: { preview: [{
|
|
27507
27906
|
type: Input
|
|
27508
27907
|
}], helperText: [{
|
|
@@ -27793,11 +28192,11 @@ class MetadataInfoComponent {
|
|
|
27793
28192
|
this.keyword.emit(keyword);
|
|
27794
28193
|
}
|
|
27795
28194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27796
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: 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: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 class=\"mb-6\">\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 <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\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 <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\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: 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: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27797
28196
|
}
|
|
27798
28197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27799
28198
|
type: Component,
|
|
27800
|
-
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
|
|
28199
|
+
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 class=\"mb-6\">\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 <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\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 <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\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"] }]
|
|
27801
28200
|
}], propDecorators: { metadata: [{
|
|
27802
28201
|
type: Input
|
|
27803
28202
|
}], incomplete: [{
|
|
@@ -28054,7 +28453,7 @@ class RecordApiFormComponent {
|
|
|
28054
28453
|
}
|
|
28055
28454
|
}
|
|
28056
28455
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28057
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
28456
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28058
28457
|
}
|
|
28059
28458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
28060
28459
|
type: Component,
|
|
@@ -28082,7 +28481,7 @@ class RelatedRecordCardComponent {
|
|
|
28082
28481
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
28083
28482
|
}
|
|
28084
28483
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28085
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
28484
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28086
28485
|
}
|
|
28087
28486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
28088
28487
|
type: Component,
|
|
@@ -28095,6 +28494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28095
28494
|
|
|
28096
28495
|
class SortableListComponent {
|
|
28097
28496
|
constructor() {
|
|
28497
|
+
this.addOptions = [];
|
|
28098
28498
|
this.elementsChange = new EventEmitter();
|
|
28099
28499
|
this.add = new EventEmitter();
|
|
28100
28500
|
}
|
|
@@ -28106,8 +28506,11 @@ class SortableListComponent {
|
|
|
28106
28506
|
this.elements = this.elements.filter((_, i) => i !== index);
|
|
28107
28507
|
this.elementsChange.emit(this.elements);
|
|
28108
28508
|
}
|
|
28509
|
+
trackByFn(index) {
|
|
28510
|
+
return index;
|
|
28511
|
+
}
|
|
28109
28512
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28513
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28111
28514
|
}
|
|
28112
28515
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, decorators: [{
|
|
28113
28516
|
type: Component,
|
|
@@ -28119,7 +28522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28119
28522
|
CdkDragHandle,
|
|
28120
28523
|
MatIconModule,
|
|
28121
28524
|
ButtonComponent,
|
|
28122
|
-
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28525
|
+
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
28123
28526
|
}], propDecorators: { elements: [{
|
|
28124
28527
|
type: Input
|
|
28125
28528
|
}], addOptions: [{
|
|
@@ -28257,11 +28660,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28257
28660
|
|
|
28258
28661
|
class FormFieldWrapperComponent {
|
|
28259
28662
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28260
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
28663
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28261
28664
|
}
|
|
28262
28665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28263
28666
|
type: Component,
|
|
28264
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
28667
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
28265
28668
|
}], propDecorators: { label: [{
|
|
28266
28669
|
type: Input
|
|
28267
28670
|
}], hint: [{
|
|
@@ -28317,11 +28720,11 @@ class InteractiveTableComponent {
|
|
|
28317
28720
|
this.itemClick.emit(item);
|
|
28318
28721
|
}
|
|
28319
28722
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28321
28724
|
}
|
|
28322
28725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28323
28726
|
type: Component,
|
|
28324
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28727
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28325
28728
|
}], propDecorators: { columns: [{
|
|
28326
28729
|
type: ContentChildren,
|
|
28327
28730
|
args: [InteractiveTableColumnComponent]
|
|
@@ -28513,11 +28916,11 @@ class UserPreviewComponent {
|
|
|
28513
28916
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
28514
28917
|
}
|
|
28515
28918
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28516
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28919
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28517
28920
|
}
|
|
28518
28921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
28519
28922
|
type: Component,
|
|
28520
|
-
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28923
|
+
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n" }]
|
|
28521
28924
|
}], propDecorators: { user: [{
|
|
28522
28925
|
type: Input
|
|
28523
28926
|
}], avatarPlaceholder: [{
|
|
@@ -28657,6 +29060,7 @@ class UiElementsModule {
|
|
|
28657
29060
|
UiInputsModule,
|
|
28658
29061
|
FormsModule,
|
|
28659
29062
|
NgOptimizedImage,
|
|
29063
|
+
PopoverComponent,
|
|
28660
29064
|
MarkdownParserComponent,
|
|
28661
29065
|
ThumbnailComponent,
|
|
28662
29066
|
TimeSincePipe,
|
|
@@ -28691,6 +29095,7 @@ class UiElementsModule {
|
|
|
28691
29095
|
RouterModule,
|
|
28692
29096
|
UiInputsModule,
|
|
28693
29097
|
FormsModule,
|
|
29098
|
+
PopoverComponent,
|
|
28694
29099
|
ThumbnailComponent,
|
|
28695
29100
|
BadgeComponent,
|
|
28696
29101
|
MaxLinesComponent] }); }
|
|
@@ -28710,6 +29115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28710
29115
|
UiInputsModule,
|
|
28711
29116
|
FormsModule,
|
|
28712
29117
|
NgOptimizedImage,
|
|
29118
|
+
PopoverComponent,
|
|
28713
29119
|
MarkdownParserComponent,
|
|
28714
29120
|
ThumbnailComponent,
|
|
28715
29121
|
TimeSincePipe,
|
|
@@ -28866,15 +29272,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28866
29272
|
}]
|
|
28867
29273
|
}] });
|
|
28868
29274
|
|
|
29275
|
+
class ActionMenuComponent {
|
|
29276
|
+
constructor(dialog, translateService) {
|
|
29277
|
+
this.dialog = dialog;
|
|
29278
|
+
this.translateService = translateService;
|
|
29279
|
+
this.duplicate = new EventEmitter();
|
|
29280
|
+
this.delete = new EventEmitter();
|
|
29281
|
+
}
|
|
29282
|
+
openMenu() {
|
|
29283
|
+
this.trigger.openMenu();
|
|
29284
|
+
}
|
|
29285
|
+
openDeleteConfirmationDialog() {
|
|
29286
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
29287
|
+
data: {
|
|
29288
|
+
title: this.translateService.instant('editor.record.delete.confirmation.title'),
|
|
29289
|
+
message: this.translateService.instant('editor.record.delete.confirmation.message'),
|
|
29290
|
+
confirmText: this.translateService.instant('editor.record.delete.confirmation.confirmText'),
|
|
29291
|
+
cancelText: this.translateService.instant('editor.record.delete.confirmation.cancelText'),
|
|
29292
|
+
},
|
|
29293
|
+
restoreFocus: false,
|
|
29294
|
+
});
|
|
29295
|
+
// Manually restore focus to the menu trigger since the element that
|
|
29296
|
+
// opens the dialog won't be in the DOM any more when the dialog closes.
|
|
29297
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
29298
|
+
this.trigger.focus();
|
|
29299
|
+
if (confirmed) {
|
|
29300
|
+
this.delete.emit();
|
|
29301
|
+
}
|
|
29302
|
+
});
|
|
29303
|
+
}
|
|
29304
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$7.MatDialog }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { duplicate: "duplicate", delete: "delete" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
29306
|
+
}
|
|
29307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
29308
|
+
type: Component,
|
|
29309
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
29310
|
+
MatIconModule,
|
|
29311
|
+
ButtonComponent,
|
|
29312
|
+
MatMenuModule,
|
|
29313
|
+
MatDialogModule,
|
|
29314
|
+
ConfirmationDialogComponent,
|
|
29315
|
+
TranslateModule,
|
|
29316
|
+
], template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n" }]
|
|
29317
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$1.TranslateService }]; }, propDecorators: { canDuplicate: [{
|
|
29318
|
+
type: Input
|
|
29319
|
+
}], canDelete: [{
|
|
29320
|
+
type: Input
|
|
29321
|
+
}], duplicate: [{
|
|
29322
|
+
type: Output
|
|
29323
|
+
}], delete: [{
|
|
29324
|
+
type: Output
|
|
29325
|
+
}], trigger: [{
|
|
29326
|
+
type: ViewChild,
|
|
29327
|
+
args: [MatMenuTrigger]
|
|
29328
|
+
}] } });
|
|
29329
|
+
|
|
28869
29330
|
class ResultsTableComponent {
|
|
28870
29331
|
constructor() {
|
|
28871
29332
|
this.records = [];
|
|
28872
29333
|
this.selectedRecordsIdentifiers = [];
|
|
28873
29334
|
this.sortOrder = null;
|
|
28874
|
-
this.
|
|
29335
|
+
this.hasDraft = () => false;
|
|
29336
|
+
this.canDuplicate = () => true;
|
|
29337
|
+
this.canDelete = () => true;
|
|
28875
29338
|
// emits the column (field) as well as the order
|
|
28876
29339
|
this.sortByChange = new EventEmitter();
|
|
28877
29340
|
this.recordClick = new EventEmitter();
|
|
29341
|
+
this.duplicateRecord = new EventEmitter();
|
|
29342
|
+
this.deleteRecord = new EventEmitter();
|
|
28878
29343
|
this.recordsSelectedChange = new EventEmitter();
|
|
28879
29344
|
}
|
|
28880
29345
|
dateToString(date) {
|
|
@@ -28909,6 +29374,12 @@ class ResultsTableComponent {
|
|
|
28909
29374
|
handleRecordClick(item) {
|
|
28910
29375
|
this.recordClick.emit(item);
|
|
28911
29376
|
}
|
|
29377
|
+
handleDuplicate(item) {
|
|
29378
|
+
this.duplicateRecord.emit(item);
|
|
29379
|
+
}
|
|
29380
|
+
handleDelete(item) {
|
|
29381
|
+
this.deleteRecord.emit(item);
|
|
29382
|
+
}
|
|
28912
29383
|
setSortBy(col, order) {
|
|
28913
29384
|
this.sortByChange.emit([col, order]);
|
|
28914
29385
|
}
|
|
@@ -28944,7 +29415,7 @@ class ResultsTableComponent {
|
|
|
28944
29415
|
return !allSelected && someSelected;
|
|
28945
29416
|
}
|
|
28946
29417
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28947
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder",
|
|
29418
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete"] }] }); }
|
|
28948
29419
|
}
|
|
28949
29420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28950
29421
|
type: Component,
|
|
@@ -28956,19 +29427,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28956
29427
|
MatIconModule,
|
|
28957
29428
|
TranslateModule,
|
|
28958
29429
|
BadgeComponent,
|
|
28959
|
-
|
|
29430
|
+
ActionMenuComponent,
|
|
29431
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28960
29432
|
}], propDecorators: { records: [{
|
|
28961
29433
|
type: Input
|
|
28962
29434
|
}], selectedRecordsIdentifiers: [{
|
|
28963
29435
|
type: Input
|
|
28964
29436
|
}], sortOrder: [{
|
|
28965
29437
|
type: Input
|
|
28966
|
-
}],
|
|
29438
|
+
}], hasDraft: [{
|
|
29439
|
+
type: Input
|
|
29440
|
+
}], canDuplicate: [{
|
|
29441
|
+
type: Input
|
|
29442
|
+
}], canDelete: [{
|
|
28967
29443
|
type: Input
|
|
28968
29444
|
}], sortByChange: [{
|
|
28969
29445
|
type: Output
|
|
28970
29446
|
}], recordClick: [{
|
|
28971
29447
|
type: Output
|
|
29448
|
+
}], duplicateRecord: [{
|
|
29449
|
+
type: Output
|
|
29450
|
+
}], deleteRecord: [{
|
|
29451
|
+
type: Output
|
|
28972
29452
|
}], recordsSelectedChange: [{
|
|
28973
29453
|
type: Output
|
|
28974
29454
|
}] } });
|
|
@@ -29582,6 +30062,10 @@ class SearchFacade {
|
|
|
29582
30062
|
this.store.dispatch(new RequestMoreResults(this.searchId));
|
|
29583
30063
|
return this;
|
|
29584
30064
|
}
|
|
30065
|
+
requestNewResults() {
|
|
30066
|
+
this.store.dispatch(new RequestNewResults(this.searchId));
|
|
30067
|
+
return this;
|
|
30068
|
+
}
|
|
29585
30069
|
requestMoreOnAggregation(key, increment) {
|
|
29586
30070
|
this.store.dispatch(new RequestMoreOnAggregation(key, increment, this.searchId));
|
|
29587
30071
|
return this;
|
|
@@ -30027,11 +30511,11 @@ class FuzzySearchComponent {
|
|
|
30027
30511
|
}
|
|
30028
30512
|
}
|
|
30029
30513
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30030
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [
|
|
30514
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30031
30515
|
}
|
|
30032
30516
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
30033
30517
|
type: Component,
|
|
30034
|
-
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [
|
|
30518
|
+
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n" }]
|
|
30035
30519
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { autocomplete: [{
|
|
30036
30520
|
type: ViewChild,
|
|
30037
30521
|
args: [AutocompleteComponent]
|
|
@@ -30433,12 +30917,12 @@ class SearchEffects {
|
|
|
30433
30917
|
);
|
|
30434
30918
|
});
|
|
30435
30919
|
}
|
|
30436
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$
|
|
30920
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$9.Actions }, { token: i1$2.Store }, { token: RecordsRepositoryInterface }, { token: FavoritesService }, { token: PlatformServiceInterface }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30437
30921
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects }); }
|
|
30438
30922
|
}
|
|
30439
30923
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, decorators: [{
|
|
30440
30924
|
type: Injectable
|
|
30441
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
30925
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$2.Store }, { type: RecordsRepositoryInterface }, { type: FavoritesService }, { type: PlatformServiceInterface }, { type: Promise, decorators: [{
|
|
30442
30926
|
type: Optional
|
|
30443
30927
|
}, {
|
|
30444
30928
|
type: Inject,
|
|
@@ -30852,7 +31336,7 @@ class FeatureSearchModule {
|
|
|
30852
31336
|
ResultsHitsContainerComponent,
|
|
30853
31337
|
SearchStateContainerDirective,
|
|
30854
31338
|
FavoriteStarComponent,
|
|
30855
|
-
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$
|
|
31339
|
+
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, HttpClientModule,
|
|
30856
31340
|
HttpClientXsrfModule,
|
|
30857
31341
|
UiSearchModule,
|
|
30858
31342
|
UiInputsModule,
|
|
@@ -30943,13 +31427,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
30943
31427
|
}]
|
|
30944
31428
|
}] });
|
|
30945
31429
|
|
|
31430
|
+
class NotificationsService {
|
|
31431
|
+
constructor() {
|
|
31432
|
+
this.notifications$ = new BehaviorSubject([]);
|
|
31433
|
+
}
|
|
31434
|
+
showNotification(content, timeoutMs) {
|
|
31435
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
31436
|
+
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31437
|
+
if (typeof timeoutMs === 'undefined')
|
|
31438
|
+
return;
|
|
31439
|
+
setTimeout(() => {
|
|
31440
|
+
this.removeNotificationById(id);
|
|
31441
|
+
}, timeoutMs);
|
|
31442
|
+
}
|
|
31443
|
+
removeNotificationById(id) {
|
|
31444
|
+
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31445
|
+
}
|
|
31446
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31447
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31448
|
+
}
|
|
31449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31450
|
+
type: Injectable,
|
|
31451
|
+
args: [{
|
|
31452
|
+
providedIn: 'root',
|
|
31453
|
+
}]
|
|
31454
|
+
}] });
|
|
31455
|
+
|
|
31456
|
+
class FeatureNotificationsModule {
|
|
31457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31458
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31459
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31460
|
+
}
|
|
31461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31462
|
+
type: NgModule,
|
|
31463
|
+
args: [{
|
|
31464
|
+
declarations: [],
|
|
31465
|
+
exports: [],
|
|
31466
|
+
imports: [],
|
|
31467
|
+
providers: [NotificationsService],
|
|
31468
|
+
}]
|
|
31469
|
+
}] });
|
|
31470
|
+
|
|
31471
|
+
class NotificationsContainerComponent {
|
|
31472
|
+
constructor(notificationsService) {
|
|
31473
|
+
this.notificationsService = notificationsService;
|
|
31474
|
+
}
|
|
31475
|
+
trackById(index, notification) {
|
|
31476
|
+
return notification.id;
|
|
31477
|
+
}
|
|
31478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31480
|
+
trigger('enterExit', [
|
|
31481
|
+
transition(':enter', [
|
|
31482
|
+
animate('150ms', keyframes([
|
|
31483
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31484
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31485
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31486
|
+
])),
|
|
31487
|
+
]),
|
|
31488
|
+
transition(':leave', [
|
|
31489
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31490
|
+
]),
|
|
31491
|
+
]),
|
|
31492
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31493
|
+
}
|
|
31494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31495
|
+
type: Component,
|
|
31496
|
+
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31497
|
+
trigger('enterExit', [
|
|
31498
|
+
transition(':enter', [
|
|
31499
|
+
animate('150ms', keyframes([
|
|
31500
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31501
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31502
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31503
|
+
])),
|
|
31504
|
+
]),
|
|
31505
|
+
transition(':leave', [
|
|
31506
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31507
|
+
]),
|
|
31508
|
+
]),
|
|
31509
|
+
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31510
|
+
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31511
|
+
|
|
30946
31512
|
class ResultsTableContainerComponent {
|
|
30947
|
-
constructor(searchFacade, searchService, selectionService, recordsRepository) {
|
|
31513
|
+
constructor(searchFacade, searchService, selectionService, recordsRepository, notificationsService, translateService) {
|
|
30948
31514
|
this.searchFacade = searchFacade;
|
|
30949
31515
|
this.searchService = searchService;
|
|
30950
31516
|
this.selectionService = selectionService;
|
|
30951
31517
|
this.recordsRepository = recordsRepository;
|
|
31518
|
+
this.notificationsService = notificationsService;
|
|
31519
|
+
this.translateService = translateService;
|
|
30952
31520
|
this.recordClick = new EventEmitter();
|
|
31521
|
+
this.duplicateRecord = new EventEmitter();
|
|
31522
|
+
this.subscription = new Subscription();
|
|
30953
31523
|
this.records$ = this.searchFacade.results$;
|
|
30954
31524
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
30955
31525
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
@@ -30958,6 +31528,31 @@ class ResultsTableContainerComponent {
|
|
|
30958
31528
|
handleRecordClick(item) {
|
|
30959
31529
|
this.recordClick.emit(item);
|
|
30960
31530
|
}
|
|
31531
|
+
handleDuplicateRecord(item) {
|
|
31532
|
+
this.duplicateRecord.emit(item);
|
|
31533
|
+
}
|
|
31534
|
+
async handleDeleteRecord(item) {
|
|
31535
|
+
const uniqueIdentifier = item.uniqueIdentifier;
|
|
31536
|
+
this.subscription.add(this.recordsRepository.deleteRecord(uniqueIdentifier).subscribe({
|
|
31537
|
+
next: () => {
|
|
31538
|
+
this.recordsRepository.clearRecordDraft(uniqueIdentifier);
|
|
31539
|
+
this.searchFacade.requestNewResults();
|
|
31540
|
+
this.notificationsService.showNotification({
|
|
31541
|
+
type: 'success',
|
|
31542
|
+
title: this.translateService.instant('editor.record.deleteSuccess.title'),
|
|
31543
|
+
text: `${this.translateService.instant('editor.record.deleteSuccess.body')}`,
|
|
31544
|
+
}, 2500);
|
|
31545
|
+
},
|
|
31546
|
+
error: (error) => {
|
|
31547
|
+
this.notificationsService.showNotification({
|
|
31548
|
+
type: 'error',
|
|
31549
|
+
title: this.translateService.instant('editor.record.deleteError.title'),
|
|
31550
|
+
text: `${this.translateService.instant('editor.record.deleteError.body')} ${error}`,
|
|
31551
|
+
closeMessage: this.translateService.instant('editor.record.deleteError.closeMessage'),
|
|
31552
|
+
});
|
|
31553
|
+
},
|
|
31554
|
+
}));
|
|
31555
|
+
}
|
|
30961
31556
|
handleSortByChange(col, order) {
|
|
30962
31557
|
this.searchService.setSortBy([order, col]);
|
|
30963
31558
|
}
|
|
@@ -30969,13 +31564,18 @@ class ResultsTableContainerComponent {
|
|
|
30969
31564
|
this.selectionService.selectRecords(records);
|
|
30970
31565
|
}
|
|
30971
31566
|
}
|
|
30972
|
-
|
|
30973
|
-
|
|
31567
|
+
ngOnDestroy() {
|
|
31568
|
+
this.subscription.unsubscribe();
|
|
31569
|
+
}
|
|
31570
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31571
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "recordsSelectedChange"] }] }); }
|
|
30974
31572
|
}
|
|
30975
31573
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
30976
31574
|
type: Component,
|
|
30977
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [
|
|
30978
|
-
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
31575
|
+
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
31576
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }]; }, propDecorators: { recordClick: [{
|
|
31577
|
+
type: Output
|
|
31578
|
+
}], duplicateRecord: [{
|
|
30979
31579
|
type: Output
|
|
30980
31580
|
}] } });
|
|
30981
31581
|
|
|
@@ -31276,7 +31876,7 @@ class LayersPanelComponent {
|
|
|
31276
31876
|
this.mapFacade.addLayer(layer);
|
|
31277
31877
|
}
|
|
31278
31878
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31279
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$
|
|
31879
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31280
31880
|
}
|
|
31281
31881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
31282
31882
|
type: Component,
|
|
@@ -31287,12 +31887,12 @@ class MapEffects {
|
|
|
31287
31887
|
constructor(actions$) {
|
|
31288
31888
|
this.actions$ = actions$;
|
|
31289
31889
|
}
|
|
31290
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$
|
|
31890
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$9.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31291
31891
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects }); }
|
|
31292
31892
|
}
|
|
31293
31893
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, decorators: [{
|
|
31294
31894
|
type: Injectable
|
|
31295
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
31895
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }]; } });
|
|
31296
31896
|
|
|
31297
31897
|
class MapContainerComponent {
|
|
31298
31898
|
constructor(mapFacade) {
|
|
@@ -31445,7 +32045,7 @@ class FeatureMapModule {
|
|
|
31445
32045
|
MatIconModule,
|
|
31446
32046
|
MatTabsModule,
|
|
31447
32047
|
TranslateModule,
|
|
31448
|
-
FeatureSearchModule, i1$2.StoreFeatureModule, i1$
|
|
32048
|
+
FeatureSearchModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiElementsModule,
|
|
31449
32049
|
UiInputsModule,
|
|
31450
32050
|
AddLayerFromOgcApiComponent], exports: [MapContextComponent,
|
|
31451
32051
|
MapInstanceDirective,
|
|
@@ -31569,88 +32169,6 @@ const DEFAULT_STYLE_HL_FIXTURE = new Style$1({
|
|
|
31569
32169
|
}),
|
|
31570
32170
|
});
|
|
31571
32171
|
|
|
31572
|
-
class NotificationsService {
|
|
31573
|
-
constructor() {
|
|
31574
|
-
this.notifications$ = new BehaviorSubject([]);
|
|
31575
|
-
}
|
|
31576
|
-
showNotification(content, timeoutMs) {
|
|
31577
|
-
const id = Math.floor(Math.random() * 1000000);
|
|
31578
|
-
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31579
|
-
if (typeof timeoutMs === 'undefined')
|
|
31580
|
-
return;
|
|
31581
|
-
setTimeout(() => {
|
|
31582
|
-
this.removeNotificationById(id);
|
|
31583
|
-
}, timeoutMs);
|
|
31584
|
-
}
|
|
31585
|
-
removeNotificationById(id) {
|
|
31586
|
-
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31587
|
-
}
|
|
31588
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31589
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31590
|
-
}
|
|
31591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31592
|
-
type: Injectable,
|
|
31593
|
-
args: [{
|
|
31594
|
-
providedIn: 'root',
|
|
31595
|
-
}]
|
|
31596
|
-
}] });
|
|
31597
|
-
|
|
31598
|
-
class FeatureNotificationsModule {
|
|
31599
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31600
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31601
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31602
|
-
}
|
|
31603
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31604
|
-
type: NgModule,
|
|
31605
|
-
args: [{
|
|
31606
|
-
declarations: [],
|
|
31607
|
-
exports: [],
|
|
31608
|
-
imports: [],
|
|
31609
|
-
providers: [NotificationsService],
|
|
31610
|
-
}]
|
|
31611
|
-
}] });
|
|
31612
|
-
|
|
31613
|
-
class NotificationsContainerComponent {
|
|
31614
|
-
constructor(notificationsService) {
|
|
31615
|
-
this.notificationsService = notificationsService;
|
|
31616
|
-
}
|
|
31617
|
-
trackById(index, notification) {
|
|
31618
|
-
return notification.id;
|
|
31619
|
-
}
|
|
31620
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31621
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31622
|
-
trigger('enterExit', [
|
|
31623
|
-
transition(':enter', [
|
|
31624
|
-
animate('150ms', keyframes([
|
|
31625
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31626
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31627
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31628
|
-
])),
|
|
31629
|
-
]),
|
|
31630
|
-
transition(':leave', [
|
|
31631
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31632
|
-
]),
|
|
31633
|
-
]),
|
|
31634
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31635
|
-
}
|
|
31636
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31637
|
-
type: Component,
|
|
31638
|
-
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31639
|
-
trigger('enterExit', [
|
|
31640
|
-
transition(':enter', [
|
|
31641
|
-
animate('150ms', keyframes([
|
|
31642
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31643
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31644
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31645
|
-
])),
|
|
31646
|
-
]),
|
|
31647
|
-
transition(':leave', [
|
|
31648
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31649
|
-
]),
|
|
31650
|
-
]),
|
|
31651
|
-
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31652
|
-
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31653
|
-
|
|
31654
32172
|
/*
|
|
31655
32173
|
Metadata actions
|
|
31656
32174
|
*/
|
|
@@ -32018,7 +32536,7 @@ class TableComponent {
|
|
|
32018
32536
|
return rowIdPrefix + id;
|
|
32019
32537
|
}
|
|
32020
32538
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$
|
|
32539
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$a.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$a.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$a.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$a.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$a.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$a.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$a.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$a.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$a.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$a.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$3.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32022
32540
|
}
|
|
32023
32541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
32024
32542
|
type: Component,
|
|
@@ -33484,12 +34002,12 @@ class MdViewEffects {
|
|
|
33484
34002
|
}));
|
|
33485
34003
|
})))));
|
|
33486
34004
|
}
|
|
33487
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$
|
|
34005
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$9.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33488
34006
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects }); }
|
|
33489
34007
|
}
|
|
33490
34008
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
33491
34009
|
type: Injectable
|
|
33492
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
34010
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
33493
34011
|
|
|
33494
34012
|
marker('externalviewer.dataset.unnamed');
|
|
33495
34013
|
class ExternalViewerButtonComponent {
|
|
@@ -34317,7 +34835,7 @@ class DataViewShareComponent {
|
|
|
34317
34835
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
34318
34836
|
}
|
|
34319
34837
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$
|
|
34838
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34321
34839
|
}
|
|
34322
34840
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
34323
34841
|
type: Component,
|
|
@@ -34338,7 +34856,7 @@ class FeatureRecordModule {
|
|
|
34338
34856
|
ExternalViewerButtonComponent,
|
|
34339
34857
|
DataViewPermalinkComponent,
|
|
34340
34858
|
DataViewWebComponentComponent,
|
|
34341
|
-
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$
|
|
34859
|
+
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiLayoutModule,
|
|
34342
34860
|
FeatureMapModule,
|
|
34343
34861
|
FeatureCatalogModule,
|
|
34344
34862
|
UiMapModule,
|
|
@@ -34488,13 +35006,29 @@ const RECORD_ABSTRACT_FIELD = {
|
|
|
34488
35006
|
labelKey: marker('editor.record.form.field.abstract'),
|
|
34489
35007
|
},
|
|
34490
35008
|
};
|
|
35009
|
+
const CONTACTS_FOR_RESOURCE_FIELD = {
|
|
35010
|
+
model: 'contactsForResource',
|
|
35011
|
+
formFieldConfig: {
|
|
35012
|
+
labelKey: '',
|
|
35013
|
+
},
|
|
35014
|
+
};
|
|
35015
|
+
const RECORD_GRAPHICAL_OVERVIEW_FIELD = {
|
|
35016
|
+
model: 'overviews',
|
|
35017
|
+
formFieldConfig: {
|
|
35018
|
+
labelKey: marker('editor.record.form.field.overviews'),
|
|
35019
|
+
},
|
|
35020
|
+
};
|
|
34491
35021
|
/************************************************************
|
|
34492
35022
|
*************** SECTIONS *****************
|
|
34493
35023
|
************************************************************
|
|
34494
35024
|
*/
|
|
34495
35025
|
const TITLE_SECTION = {
|
|
34496
35026
|
hidden: false,
|
|
34497
|
-
fields: [
|
|
35027
|
+
fields: [
|
|
35028
|
+
RECORD_TITLE_FIELD,
|
|
35029
|
+
RECORD_ABSTRACT_FIELD,
|
|
35030
|
+
RECORD_GRAPHICAL_OVERVIEW_FIELD,
|
|
35031
|
+
],
|
|
34498
35032
|
};
|
|
34499
35033
|
const ABOUT_SECTION = {
|
|
34500
35034
|
labelKey: marker('editor.record.form.section.about.label'),
|
|
@@ -34539,7 +35073,7 @@ const DATA_MANAGERS_SECTION = {
|
|
|
34539
35073
|
labelKey: marker('editor.record.form.section.dataManagers.label'),
|
|
34540
35074
|
descriptionKey: marker('editor.record.form.section.dataManagers.description'),
|
|
34541
35075
|
hidden: false,
|
|
34542
|
-
fields: [],
|
|
35076
|
+
fields: [CONTACTS_FOR_RESOURCE_FIELD],
|
|
34543
35077
|
};
|
|
34544
35078
|
const DATA_POINT_OF_CONTACT_SECTION = {
|
|
34545
35079
|
labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
|
|
@@ -34572,6 +35106,17 @@ const DEFAULT_CONFIGURATION = {
|
|
|
34572
35106
|
},
|
|
34573
35107
|
],
|
|
34574
35108
|
};
|
|
35109
|
+
/************************************************************
|
|
35110
|
+
*************** LICENSES *****************
|
|
35111
|
+
************************************************************
|
|
35112
|
+
*/
|
|
35113
|
+
const OPEN_DATA_LICENSES = [
|
|
35114
|
+
'etalab',
|
|
35115
|
+
'etalab-v2',
|
|
35116
|
+
'odbl',
|
|
35117
|
+
'odc-by',
|
|
35118
|
+
'pddl',
|
|
35119
|
+
];
|
|
34575
35120
|
|
|
34576
35121
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
34577
35122
|
const initialEditorState = {
|
|
@@ -34982,7 +35527,7 @@ class WizardFieldComponent {
|
|
|
34982
35527
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
34983
35528
|
},
|
|
34984
35529
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
34985
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$
|
|
35530
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34986
35531
|
}
|
|
34987
35532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
34988
35533
|
type: Component,
|
|
@@ -35132,7 +35677,7 @@ class FeatureEditorModule {
|
|
|
35132
35677
|
MatNativeDateModule,
|
|
35133
35678
|
MatFormFieldModule,
|
|
35134
35679
|
HttpClientModule,
|
|
35135
|
-
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$
|
|
35680
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
35136
35681
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade, Gn4PlatformService], imports: [CommonModule,
|
|
35137
35682
|
UiInputsModule,
|
|
35138
35683
|
UiWidgetsModule,
|
|
@@ -35204,7 +35749,7 @@ class FormFieldKeywordsComponent {
|
|
|
35204
35749
|
this.control.setValue(removeKeywords);
|
|
35205
35750
|
}
|
|
35206
35751
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35208
35753
|
}
|
|
35209
35754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
|
|
35210
35755
|
type: Component,
|
|
@@ -35214,7 +35759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35214
35759
|
CommonModule,
|
|
35215
35760
|
UiWidgetsModule,
|
|
35216
35761
|
AutocompleteComponent,
|
|
35217
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35762
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n" }]
|
|
35218
35763
|
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }]; }, propDecorators: { control: [{
|
|
35219
35764
|
type: Input
|
|
35220
35765
|
}] } });
|
|
@@ -35362,7 +35907,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35362
35907
|
}
|
|
35363
35908
|
resetValueFromInput(value) {
|
|
35364
35909
|
this.array.clear({ emitEvent: false });
|
|
35365
|
-
|
|
35910
|
+
let newElements = [];
|
|
35366
35911
|
value.forEach((v) => {
|
|
35367
35912
|
if ('start' in v && 'end' in v) {
|
|
35368
35913
|
const rangeControl = new FormControl({
|
|
@@ -35370,8 +35915,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35370
35915
|
end: v.end,
|
|
35371
35916
|
});
|
|
35372
35917
|
this.array.push(rangeControl, { emitEvent: false });
|
|
35373
|
-
|
|
35374
|
-
...
|
|
35918
|
+
newElements = [
|
|
35919
|
+
...newElements,
|
|
35375
35920
|
{
|
|
35376
35921
|
component: FormFieldTemporalExtentsRangeComponent,
|
|
35377
35922
|
inputs: {
|
|
@@ -35383,8 +35928,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35383
35928
|
else {
|
|
35384
35929
|
const dateControl = new FormControl({ start: v.start });
|
|
35385
35930
|
this.array.push(dateControl, { emitEvent: false });
|
|
35386
|
-
|
|
35387
|
-
...
|
|
35931
|
+
newElements = [
|
|
35932
|
+
...newElements,
|
|
35388
35933
|
{
|
|
35389
35934
|
component: FormFieldTemporalExtentsDateComponent,
|
|
35390
35935
|
inputs: {
|
|
@@ -35394,6 +35939,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35394
35939
|
];
|
|
35395
35940
|
}
|
|
35396
35941
|
});
|
|
35942
|
+
this.elements = newElements;
|
|
35397
35943
|
}
|
|
35398
35944
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldTemporalExtentsComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35399
35945
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldTemporalExtentsComponent, isStandalone: true, selector: "gn-ui-form-field-temporal-extents", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-sortable-list\n [elements]=\"elements\"\n (elementsChange)=\"onElementsChange($event)\"\n [addOptions]=\"addOptions$ | async\"\n (add)=\"onAdd($event)\"\n></gn-ui-sortable-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -35647,19 +36193,448 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35647
36193
|
type: Input
|
|
35648
36194
|
}] } });
|
|
35649
36195
|
|
|
36196
|
+
class OverviewUploadComponent {
|
|
36197
|
+
constructor(recordsApiService, cd) {
|
|
36198
|
+
this.recordsApiService = recordsApiService;
|
|
36199
|
+
this.cd = cd;
|
|
36200
|
+
this.overviewChange = new EventEmitter();
|
|
36201
|
+
this.altTextChange = new EventEmitter();
|
|
36202
|
+
this.errorHandle = (error) => {
|
|
36203
|
+
console.error(error);
|
|
36204
|
+
this.resourceUrl = '';
|
|
36205
|
+
this.resourceAltText = '';
|
|
36206
|
+
this.resourceFileName = '';
|
|
36207
|
+
this.overviewChange.emit(null);
|
|
36208
|
+
this.cd.markForCheck();
|
|
36209
|
+
};
|
|
36210
|
+
}
|
|
36211
|
+
ngOnInit() {
|
|
36212
|
+
this.recordsApiService.getAllResources(this.metadataUuid).subscribe({
|
|
36213
|
+
next: (resources) => {
|
|
36214
|
+
if (resources && resources.length > 0) {
|
|
36215
|
+
this.resourceUrl = resources[0].url;
|
|
36216
|
+
this.resourceFileName = resources[0].filename;
|
|
36217
|
+
if (!this.resourceAltText) {
|
|
36218
|
+
this.resourceAltText = this.resourceFileName;
|
|
36219
|
+
}
|
|
36220
|
+
}
|
|
36221
|
+
else {
|
|
36222
|
+
this.resourceUrl = '';
|
|
36223
|
+
this.resourceAltText = '';
|
|
36224
|
+
this.resourceFileName = '';
|
|
36225
|
+
}
|
|
36226
|
+
this.cd.markForCheck();
|
|
36227
|
+
},
|
|
36228
|
+
error: this.errorHandle,
|
|
36229
|
+
});
|
|
36230
|
+
}
|
|
36231
|
+
handleFileChange(file) {
|
|
36232
|
+
this.recordsApiService
|
|
36233
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
36234
|
+
.subscribe({
|
|
36235
|
+
next: (resource) => {
|
|
36236
|
+
this.resourceUrl = resource.url;
|
|
36237
|
+
this.resourceAltText = resource.filename;
|
|
36238
|
+
this.overviewChange.emit({
|
|
36239
|
+
url: new URL(resource.url),
|
|
36240
|
+
description: resource.filename,
|
|
36241
|
+
});
|
|
36242
|
+
this.cd.markForCheck();
|
|
36243
|
+
},
|
|
36244
|
+
error: this.errorHandle,
|
|
36245
|
+
});
|
|
36246
|
+
}
|
|
36247
|
+
handleUrlChange(url) {
|
|
36248
|
+
this.recordsApiService
|
|
36249
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
36250
|
+
.subscribe({
|
|
36251
|
+
next: (resource) => {
|
|
36252
|
+
this.resourceUrl = resource.url;
|
|
36253
|
+
this.resourceAltText = resource.filename;
|
|
36254
|
+
this.overviewChange.emit({
|
|
36255
|
+
url: new URL(resource.url),
|
|
36256
|
+
description: resource.filename,
|
|
36257
|
+
});
|
|
36258
|
+
this.cd.markForCheck();
|
|
36259
|
+
},
|
|
36260
|
+
error: this.errorHandle,
|
|
36261
|
+
});
|
|
36262
|
+
}
|
|
36263
|
+
handleAltTextChange(newAltText) {
|
|
36264
|
+
this.resourceAltText = newAltText;
|
|
36265
|
+
this.overviewChange.emit({
|
|
36266
|
+
url: new URL(this.resourceUrl),
|
|
36267
|
+
description: this.resourceAltText,
|
|
36268
|
+
});
|
|
36269
|
+
this.cd.markForCheck();
|
|
36270
|
+
}
|
|
36271
|
+
handleDelete() {
|
|
36272
|
+
//this.formControl.markAsDirty()
|
|
36273
|
+
this.recordsApiService
|
|
36274
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
36275
|
+
.subscribe({
|
|
36276
|
+
next: () => {
|
|
36277
|
+
this.resourceAltText = '';
|
|
36278
|
+
this.resourceUrl = '';
|
|
36279
|
+
this.overviewChange.emit(null);
|
|
36280
|
+
this.cd.markForCheck();
|
|
36281
|
+
},
|
|
36282
|
+
error: this.errorHandle,
|
|
36283
|
+
});
|
|
36284
|
+
}
|
|
36285
|
+
ngOnChanges(changes) {
|
|
36286
|
+
const overviewChanges = changes['formControl'];
|
|
36287
|
+
if (overviewChanges &&
|
|
36288
|
+
overviewChanges.currentValue !== overviewChanges.previousValue) {
|
|
36289
|
+
let overview;
|
|
36290
|
+
if (overviewChanges.currentValue.value &&
|
|
36291
|
+
overviewChanges.currentValue.value.length > 0) {
|
|
36292
|
+
overview = overviewChanges.currentValue.value[0];
|
|
36293
|
+
}
|
|
36294
|
+
else {
|
|
36295
|
+
return;
|
|
36296
|
+
}
|
|
36297
|
+
if (overview.description) {
|
|
36298
|
+
this.resourceAltText = overview.description;
|
|
36299
|
+
this.cd.markForCheck();
|
|
36300
|
+
}
|
|
36301
|
+
}
|
|
36302
|
+
}
|
|
36303
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, deps: [{ token: RecordsApiService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OverviewUploadComponent, isStandalone: true, selector: "gn-ui-overview-upload", inputs: { metadataUuid: "metadataUuid", formControl: "formControl" }, outputs: { overviewChange: "overviewChange", altTextChange: "altTextChange" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ImageInputComponent, selector: "gn-ui-image-input", inputs: ["maxSizeMB", "previewUrl", "altText", "uploadProgress", "uploadError"], outputs: ["fileChange", "urlChange", "uploadCancel", "delete", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36305
|
+
}
|
|
36306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, decorators: [{
|
|
36307
|
+
type: Component,
|
|
36308
|
+
args: [{ selector: 'gn-ui-overview-upload', standalone: true, imports: [CommonModule, UiInputsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n" }]
|
|
36309
|
+
}], ctorParameters: function () { return [{ type: RecordsApiService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { metadataUuid: [{
|
|
36310
|
+
type: Input
|
|
36311
|
+
}], formControl: [{
|
|
36312
|
+
type: Input
|
|
36313
|
+
}], overviewChange: [{
|
|
36314
|
+
type: Output
|
|
36315
|
+
}], altTextChange: [{
|
|
36316
|
+
type: Output
|
|
36317
|
+
}] } });
|
|
36318
|
+
|
|
36319
|
+
class FormFieldOverviewsComponent {
|
|
36320
|
+
handleOverviewChange(overView) {
|
|
36321
|
+
this.control.setValue(overView ? [overView] : []);
|
|
36322
|
+
}
|
|
36323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOverviewsComponent, isStandalone: true, selector: "gn-ui-form-field-overviews", inputs: { metadataUuid: "metadataUuid", control: "control" }, ngImport: i0, template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: OverviewUploadComponent, selector: "gn-ui-overview-upload", inputs: ["metadataUuid", "formControl"], outputs: ["overviewChange", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36325
|
+
}
|
|
36326
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
36327
|
+
type: Component,
|
|
36328
|
+
args: [{ selector: 'gn-ui-form-field-overviews', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, OverviewUploadComponent], template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n" }]
|
|
36329
|
+
}], propDecorators: { metadataUuid: [{
|
|
36330
|
+
type: Input
|
|
36331
|
+
}], control: [{
|
|
36332
|
+
type: Input
|
|
36333
|
+
}] } });
|
|
36334
|
+
|
|
36335
|
+
const RoleValues = [
|
|
36336
|
+
'unspecified',
|
|
36337
|
+
'other',
|
|
36338
|
+
'author',
|
|
36339
|
+
'collaborator',
|
|
36340
|
+
'contributor',
|
|
36341
|
+
'custodian',
|
|
36342
|
+
'distributor',
|
|
36343
|
+
'editor',
|
|
36344
|
+
'funder',
|
|
36345
|
+
'mediator',
|
|
36346
|
+
'originator',
|
|
36347
|
+
'owner',
|
|
36348
|
+
'point_of_contact',
|
|
36349
|
+
'principal_investigator',
|
|
36350
|
+
'processor',
|
|
36351
|
+
'publisher',
|
|
36352
|
+
'resource_provider',
|
|
36353
|
+
'rights_holder',
|
|
36354
|
+
'sponsor',
|
|
36355
|
+
'stakeholder',
|
|
36356
|
+
'user', // Party who uses the resource
|
|
36357
|
+
];
|
|
36358
|
+
const RoleLabels = new Map([
|
|
36359
|
+
['unspecified', marker('domain.contact.role.unspecified')],
|
|
36360
|
+
['other', marker('domain.contact.role.other')],
|
|
36361
|
+
['author', marker('domain.contact.role.author')],
|
|
36362
|
+
['collaborator', marker('domain.contact.role.collaborator')],
|
|
36363
|
+
['contributor', marker('domain.contact.role.contributor')],
|
|
36364
|
+
['custodian', marker('domain.contact.role.custodian')],
|
|
36365
|
+
['distributor', marker('domain.contact.role.distributor')],
|
|
36366
|
+
['editor', marker('domain.contact.role.editor')],
|
|
36367
|
+
['funder', marker('domain.contact.role.funder')],
|
|
36368
|
+
['mediator', marker('domain.contact.role.mediator')],
|
|
36369
|
+
['originator', marker('domain.contact.role.originator')],
|
|
36370
|
+
['owner', marker('domain.contact.role.owner')],
|
|
36371
|
+
['point_of_contact', marker('domain.contact.role.point_of_contact')],
|
|
36372
|
+
[
|
|
36373
|
+
'principal_investigator',
|
|
36374
|
+
marker('domain.contact.role.principal_investigator'),
|
|
36375
|
+
],
|
|
36376
|
+
['processor', marker('domain.contact.role.processor')],
|
|
36377
|
+
['publisher', marker('domain.contact.role.publisher')],
|
|
36378
|
+
['resource_provider', marker('domain.contact.role.resource_provider')],
|
|
36379
|
+
['rights_holder', marker('domain.contact.role.rights_holder')],
|
|
36380
|
+
['sponsor', marker('domain.contact.role.sponsor')],
|
|
36381
|
+
['stakeholder', marker('domain.contact.role.stakeholder')],
|
|
36382
|
+
['user', marker('domain.contact.role.user')],
|
|
36383
|
+
]);
|
|
36384
|
+
|
|
36385
|
+
marker('domain.record.updateFrequency.unknown');
|
|
36386
|
+
marker('domain.record.updateFrequency.notPlanned');
|
|
36387
|
+
marker('domain.record.updateFrequency.asNeeded');
|
|
36388
|
+
marker('domain.record.updateFrequency.irregular');
|
|
36389
|
+
marker('domain.record.updateFrequency.continual');
|
|
36390
|
+
marker('domain.record.updateFrequency.periodic');
|
|
36391
|
+
marker('domain.record.updateFrequency.day');
|
|
36392
|
+
marker('domain.record.updateFrequency.week');
|
|
36393
|
+
marker('domain.record.updateFrequency.month');
|
|
36394
|
+
marker('domain.record.updateFrequency.year');
|
|
36395
|
+
marker('domain.record.status.completed');
|
|
36396
|
+
marker('domain.record.status.ongoing');
|
|
36397
|
+
marker('domain.record.status.under_development');
|
|
36398
|
+
marker('domain.record.status.deprecated');
|
|
36399
|
+
marker('domain.record.status.removed');
|
|
36400
|
+
const RecordStatusValues = [
|
|
36401
|
+
'completed',
|
|
36402
|
+
'ongoing',
|
|
36403
|
+
'under_development',
|
|
36404
|
+
'deprecated',
|
|
36405
|
+
'removed',
|
|
36406
|
+
];
|
|
36407
|
+
|
|
36408
|
+
class ContactCardComponent {
|
|
36409
|
+
constructor() {
|
|
36410
|
+
this.removable = true;
|
|
36411
|
+
this.contactRemoved = new EventEmitter();
|
|
36412
|
+
}
|
|
36413
|
+
removeContact(contact) {
|
|
36414
|
+
this.contactRemoved.emit(contact);
|
|
36415
|
+
}
|
|
36416
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36417
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContactCardComponent, isStandalone: true, selector: "gn-ui-contact-card", inputs: { contact: "contact", removable: "removable" }, outputs: { contactRemoved: "contactRemoved" }, ngImport: i0, template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36418
|
+
}
|
|
36419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, decorators: [{
|
|
36420
|
+
type: Component,
|
|
36421
|
+
args: [{ selector: 'gn-ui-contact-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent, ThumbnailComponent], template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n" }]
|
|
36422
|
+
}], propDecorators: { contact: [{
|
|
36423
|
+
type: Input
|
|
36424
|
+
}], removable: [{
|
|
36425
|
+
type: Input
|
|
36426
|
+
}], contactRemoved: [{
|
|
36427
|
+
type: Output
|
|
36428
|
+
}] } });
|
|
36429
|
+
|
|
36430
|
+
class FormFieldContactsForResourceComponent {
|
|
36431
|
+
constructor(platformServiceInterface, organizationsServiceInterface, changeDetectorRef) {
|
|
36432
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
36433
|
+
this.organizationsServiceInterface = organizationsServiceInterface;
|
|
36434
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
36435
|
+
this.subscription = new Subscription();
|
|
36436
|
+
this.contactsForRessourceByRole = new Map();
|
|
36437
|
+
this.contactsAsDynElemByRole = new Map();
|
|
36438
|
+
this.rolesToPick = [
|
|
36439
|
+
'resource_provider',
|
|
36440
|
+
'custodian',
|
|
36441
|
+
'owner',
|
|
36442
|
+
'point_of_contact',
|
|
36443
|
+
'author',
|
|
36444
|
+
];
|
|
36445
|
+
this.roleSectionsToDisplay = [];
|
|
36446
|
+
this.allOrganizations = new Map();
|
|
36447
|
+
/**
|
|
36448
|
+
* gn-ui-autocomplete
|
|
36449
|
+
*/
|
|
36450
|
+
this.displayWithFn = (user) => `${user.name} ${user.surname} ${user.organisation ? `(${user.organisation})` : ''}`;
|
|
36451
|
+
/**
|
|
36452
|
+
* gn-ui-autocomplete
|
|
36453
|
+
*/
|
|
36454
|
+
this.autoCompleteAction = (query) => {
|
|
36455
|
+
const fuzzyFilter = createFuzzyFilter(query);
|
|
36456
|
+
return this.allUsers$.pipe(switchMap((users) => [
|
|
36457
|
+
users.filter((user) => fuzzyFilter(user.username)),
|
|
36458
|
+
]), map$1((results) => results.slice(0, 10)), debounceTime$1(300), distinctUntilChanged$1());
|
|
36459
|
+
};
|
|
36460
|
+
this.allUsers$ = this.platformServiceInterface.getUsers();
|
|
36461
|
+
}
|
|
36462
|
+
async ngOnInit() {
|
|
36463
|
+
this.allOrganizations = new Map((await firstValueFrom(this.organizationsServiceInterface.organisations$)).map((organization) => [organization.name, organization]));
|
|
36464
|
+
this.updateContactsForRessource();
|
|
36465
|
+
this.manageRoleSectionsToDisplay(this.control.value);
|
|
36466
|
+
this.filterRolesToPick();
|
|
36467
|
+
this.changeDetectorRef.markForCheck();
|
|
36468
|
+
this.subscription.add(this.control.valueChanges.subscribe((contactsForResource) => {
|
|
36469
|
+
this.updateContactsForRessource();
|
|
36470
|
+
this.manageRoleSectionsToDisplay(contactsForResource);
|
|
36471
|
+
this.filterRolesToPick();
|
|
36472
|
+
this.changeDetectorRef.markForCheck();
|
|
36473
|
+
}));
|
|
36474
|
+
}
|
|
36475
|
+
addRoleToDisplay(roleToAdd) {
|
|
36476
|
+
this.roleSectionsToDisplay.push(roleToAdd);
|
|
36477
|
+
this.filterRolesToPick();
|
|
36478
|
+
}
|
|
36479
|
+
filterRolesToPick() {
|
|
36480
|
+
this.rolesToPick = this.rolesToPick.filter((role) => !this.roleSectionsToDisplay.includes(role));
|
|
36481
|
+
}
|
|
36482
|
+
updateContactsForRessource() {
|
|
36483
|
+
this.contactsForRessourceByRole = this.control.value.reduce((acc, contact) => {
|
|
36484
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36485
|
+
const updatedContact = {
|
|
36486
|
+
...contact,
|
|
36487
|
+
organization: completeOrganization ??
|
|
36488
|
+
{ name: contact.organization.name },
|
|
36489
|
+
};
|
|
36490
|
+
if (!acc.has(contact.role)) {
|
|
36491
|
+
acc.set(contact.role, []);
|
|
36492
|
+
}
|
|
36493
|
+
acc.get(contact.role).push(updatedContact);
|
|
36494
|
+
return acc;
|
|
36495
|
+
}, new Map());
|
|
36496
|
+
this.contactsAsDynElemByRole = this.control.value.reduce((acc, contact) => {
|
|
36497
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36498
|
+
const updatedContact = {
|
|
36499
|
+
...contact,
|
|
36500
|
+
organization: completeOrganization ??
|
|
36501
|
+
{ name: contact.organization.name },
|
|
36502
|
+
};
|
|
36503
|
+
const contactAsDynElem = {
|
|
36504
|
+
component: ContactCardComponent,
|
|
36505
|
+
inputs: {
|
|
36506
|
+
contact: updatedContact,
|
|
36507
|
+
removable: false,
|
|
36508
|
+
},
|
|
36509
|
+
};
|
|
36510
|
+
if (!acc.has(contact.role)) {
|
|
36511
|
+
acc.set(contact.role, []);
|
|
36512
|
+
}
|
|
36513
|
+
acc.get(contact.role).push(contactAsDynElem);
|
|
36514
|
+
return acc;
|
|
36515
|
+
}, new Map());
|
|
36516
|
+
this.changeDetectorRef.markForCheck();
|
|
36517
|
+
}
|
|
36518
|
+
manageRoleSectionsToDisplay(contactsForResource) {
|
|
36519
|
+
const roles = contactsForResource.map((contact) => contact.role);
|
|
36520
|
+
roles.forEach((role) => {
|
|
36521
|
+
if (!this.roleSectionsToDisplay.includes(role)) {
|
|
36522
|
+
this.roleSectionsToDisplay.push(role);
|
|
36523
|
+
}
|
|
36524
|
+
});
|
|
36525
|
+
}
|
|
36526
|
+
removeContact(index) {
|
|
36527
|
+
const newContactsforRessource = this.control.value.filter((_, i) => i !== index);
|
|
36528
|
+
this.control.setValue(newContactsforRessource);
|
|
36529
|
+
}
|
|
36530
|
+
handleContactsChanged(event) {
|
|
36531
|
+
const newContactsOrdered = event.map((contactAsDynElem) => contactAsDynElem.inputs['contact']);
|
|
36532
|
+
const role = newContactsOrdered[0].role;
|
|
36533
|
+
this.contactsForRessourceByRole.set(role, newContactsOrdered);
|
|
36534
|
+
const newControlValue = Array.from(this.contactsForRessourceByRole.values()).flat();
|
|
36535
|
+
this.control.setValue(newControlValue);
|
|
36536
|
+
}
|
|
36537
|
+
roleToLabel(role) {
|
|
36538
|
+
return RoleLabels.get(role);
|
|
36539
|
+
}
|
|
36540
|
+
/**
|
|
36541
|
+
* gn-ui-autocomplete
|
|
36542
|
+
*/
|
|
36543
|
+
addContact(contact, role) {
|
|
36544
|
+
const newContactsForRessource = {
|
|
36545
|
+
firstName: contact.name ?? '',
|
|
36546
|
+
lastName: contact.surname ?? '',
|
|
36547
|
+
organization: this.allOrganizations.get(contact.organisation) ??
|
|
36548
|
+
{ name: contact.organisation },
|
|
36549
|
+
email: contact.email ?? '',
|
|
36550
|
+
role,
|
|
36551
|
+
address: '',
|
|
36552
|
+
phone: '',
|
|
36553
|
+
position: '',
|
|
36554
|
+
};
|
|
36555
|
+
const newControlValue = [...this.control.value, newContactsForRessource];
|
|
36556
|
+
this.control.setValue(newControlValue);
|
|
36557
|
+
}
|
|
36558
|
+
ngOnDestroy() {
|
|
36559
|
+
this.subscription.unsubscribe();
|
|
36560
|
+
}
|
|
36561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContactsForResourceComponent, isStandalone: true, selector: "gn-ui-form-field-contacts-for-resource", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact", "removable"], outputs: ["contactRemoved"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36563
|
+
}
|
|
36564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
|
|
36565
|
+
type: Component,
|
|
36566
|
+
args: [{ selector: 'gn-ui-form-field-contacts-for-resource', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
36567
|
+
DropdownSelectorComponent,
|
|
36568
|
+
UiInputsModule,
|
|
36569
|
+
CommonModule,
|
|
36570
|
+
UiWidgetsModule,
|
|
36571
|
+
AutocompleteComponent,
|
|
36572
|
+
TranslateModule,
|
|
36573
|
+
ContactCardComponent,
|
|
36574
|
+
SortableListComponent,
|
|
36575
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n" }]
|
|
36576
|
+
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { control: [{
|
|
36577
|
+
type: Input
|
|
36578
|
+
}] } });
|
|
36579
|
+
|
|
36580
|
+
class FormFieldOpenDataComponent {
|
|
36581
|
+
constructor() {
|
|
36582
|
+
this.value = false;
|
|
36583
|
+
this.visibilityChange = new EventEmitter();
|
|
36584
|
+
}
|
|
36585
|
+
get config() {
|
|
36586
|
+
return OPEN_DATA_LICENSES;
|
|
36587
|
+
}
|
|
36588
|
+
ngOnInit() {
|
|
36589
|
+
this.initToggle();
|
|
36590
|
+
this.subscription = new Subscription();
|
|
36591
|
+
this.subscription.add(this.control.valueChanges.subscribe((value) => {
|
|
36592
|
+
this.value = this.config.includes(value[0].text);
|
|
36593
|
+
this.visibilityChange.emit(this.value);
|
|
36594
|
+
}));
|
|
36595
|
+
}
|
|
36596
|
+
initToggle() {
|
|
36597
|
+
this.value = this.config.includes(this.control.value[0].text);
|
|
36598
|
+
this.visibilityChange.emit(this.value);
|
|
36599
|
+
}
|
|
36600
|
+
onOpenDataToggled(boolean) {
|
|
36601
|
+
if (boolean) {
|
|
36602
|
+
this.control.setValue([{ text: this.config[0] }]);
|
|
36603
|
+
}
|
|
36604
|
+
this.value = !this.value;
|
|
36605
|
+
this.visibilityChange.emit(boolean);
|
|
36606
|
+
}
|
|
36607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOpenDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36608
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOpenDataComponent, isStandalone: true, selector: "gn-ui-form-field-open-data", inputs: { control: "control" }, outputs: { visibilityChange: "visibilityChange" }, ngImport: i0, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.classification.opendata' | translate\"\n [value]=\"value\"\n (toggled)=\"onOpenDataToggled($event)\"\n data-cy=\"openDataToggle\"\n></gn-ui-check-toggle>\n", styles: [""], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36609
|
+
}
|
|
36610
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOpenDataComponent, decorators: [{
|
|
36611
|
+
type: Component,
|
|
36612
|
+
args: [{ selector: 'gn-ui-form-field-open-data', standalone: true, imports: [CheckToggleComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.classification.opendata' | translate\"\n [value]=\"value\"\n (toggled)=\"onOpenDataToggled($event)\"\n data-cy=\"openDataToggle\"\n></gn-ui-check-toggle>\n" }]
|
|
36613
|
+
}], propDecorators: { control: [{
|
|
36614
|
+
type: Input
|
|
36615
|
+
}], visibilityChange: [{
|
|
36616
|
+
type: Output
|
|
36617
|
+
}] } });
|
|
36618
|
+
|
|
35650
36619
|
class FormFieldComponent {
|
|
35651
36620
|
set value(v) {
|
|
35652
36621
|
this.formControl.setValue(v, {
|
|
35653
36622
|
emitEvent: false,
|
|
35654
36623
|
});
|
|
35655
36624
|
}
|
|
35656
|
-
constructor() {
|
|
36625
|
+
constructor(facade) {
|
|
36626
|
+
this.facade = facade;
|
|
36627
|
+
this.isHidden = false;
|
|
36628
|
+
this.metadataUuid$ = this.facade.record$.pipe(take(1), map$1((record) => record.uniqueIdentifier));
|
|
35657
36629
|
this.formControl = new FormControl();
|
|
35658
36630
|
this.valueChange = this.formControl.valueChanges;
|
|
35659
36631
|
}
|
|
35660
36632
|
focusTitleInput() {
|
|
35661
36633
|
this.titleInput.nativeElement.children[0].focus();
|
|
35662
36634
|
}
|
|
36635
|
+
onVisibilityChange(visibility) {
|
|
36636
|
+
this.isHidden = visibility;
|
|
36637
|
+
}
|
|
35663
36638
|
get isTitle() {
|
|
35664
36639
|
return this.model === 'title';
|
|
35665
36640
|
}
|
|
@@ -35681,6 +36656,9 @@ class FormFieldComponent {
|
|
|
35681
36656
|
get isSpatialExtentField() {
|
|
35682
36657
|
return this.model === 'spatialExtents';
|
|
35683
36658
|
}
|
|
36659
|
+
get isGraphicOverview() {
|
|
36660
|
+
return this.model === 'overviews';
|
|
36661
|
+
}
|
|
35684
36662
|
get isSimpleField() {
|
|
35685
36663
|
return this.model === 'uniqueIdentifier' || this.model === 'recordUpdated';
|
|
35686
36664
|
}
|
|
@@ -35690,11 +36668,17 @@ class FormFieldComponent {
|
|
|
35690
36668
|
get isKeywords() {
|
|
35691
36669
|
return this.model === 'keywords';
|
|
35692
36670
|
}
|
|
36671
|
+
get isContactsForResource() {
|
|
36672
|
+
return this.model === 'contactsForResource';
|
|
36673
|
+
}
|
|
35693
36674
|
get withoutWrapper() {
|
|
35694
36675
|
return this.model === 'title' || this.model === 'abstract';
|
|
35695
36676
|
}
|
|
35696
|
-
|
|
35697
|
-
|
|
36677
|
+
get isOpenData() {
|
|
36678
|
+
return this.model === 'licenses';
|
|
36679
|
+
}
|
|
36680
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36681
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"isOpenData\">\n <gn-ui-form-field-open-data\n [control]=\"formControl\"\n (visibilityChange)=\"onVisibilityChange($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container>\n<div class=\"flex flex-col h-full\" *ngIf=\"!isHidden\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "control"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["control"] }, { kind: "component", type: FormFieldOpenDataComponent, selector: "gn-ui-form-field-open-data", inputs: ["control"], outputs: ["visibilityChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35698
36682
|
}
|
|
35699
36683
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
35700
36684
|
type: Component,
|
|
@@ -35717,8 +36701,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35717
36701
|
FormFieldArrayComponent,
|
|
35718
36702
|
FormFieldKeywordsComponent,
|
|
35719
36703
|
TranslateModule,
|
|
35720
|
-
|
|
35721
|
-
|
|
36704
|
+
FormFieldOverviewsComponent,
|
|
36705
|
+
FormFieldContactsForResourceComponent,
|
|
36706
|
+
FormFieldOpenDataComponent,
|
|
36707
|
+
], template: "<ng-container *ngIf=\"isOpenData\">\n <gn-ui-form-field-open-data\n [control]=\"formControl\"\n (visibilityChange)=\"onVisibilityChange($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container>\n<div class=\"flex flex-col h-full\" *ngIf=\"!isHidden\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n</ng-template>\n" }]
|
|
36708
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; }, propDecorators: { model: [{
|
|
35722
36709
|
type: Input
|
|
35723
36710
|
}], config: [{
|
|
35724
36711
|
type: Input
|
|
@@ -35748,11 +36735,11 @@ class RecordFormComponent {
|
|
|
35748
36735
|
return section.labelKey;
|
|
35749
36736
|
}
|
|
35750
36737
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35751
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-
|
|
36738
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["model", "config", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35752
36739
|
}
|
|
35753
36740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
35754
36741
|
type: Component,
|
|
35755
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-
|
|
36742
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n" }]
|
|
35756
36743
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
35757
36744
|
|
|
35758
36745
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -35802,7 +36789,7 @@ class RouterService {
|
|
|
35802
36789
|
getOrganizationPageRoute() {
|
|
35803
36790
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
35804
36791
|
}
|
|
35805
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
36792
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$8.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35806
36793
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
35807
36794
|
}
|
|
35808
36795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -35813,7 +36800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35813
36800
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35814
36801
|
type: Inject,
|
|
35815
36802
|
args: [ROUTER_CONFIG]
|
|
35816
|
-
}] }, { type: i1$
|
|
36803
|
+
}] }, { type: i1$8.Router }]; } });
|
|
35817
36804
|
|
|
35818
36805
|
const goAction = createAction('[Router] Go', props());
|
|
35819
36806
|
const backAction = createAction('[Router] Back');
|
|
@@ -36070,12 +37057,12 @@ class RouterEffects {
|
|
|
36070
37057
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
36071
37058
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
36072
37059
|
}
|
|
36073
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$
|
|
37060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$9.Actions }, { token: i1$8.Router }, { token: i1$3.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36074
37061
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects }); }
|
|
36075
37062
|
}
|
|
36076
37063
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, decorators: [{
|
|
36077
37064
|
type: Injectable
|
|
36078
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
37065
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$8.Router }, { type: i1$3.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
36079
37066
|
type: Inject,
|
|
36080
37067
|
args: [ROUTER_CONFIG]
|
|
36081
37068
|
}] }, { type: FieldsService }]; } });
|
|
@@ -36092,7 +37079,7 @@ class DefaultRouterModule {
|
|
|
36092
37079
|
};
|
|
36093
37080
|
}
|
|
36094
37081
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
36095
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
37082
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$4.StoreRouterConnectingModule, i1$9.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
36096
37083
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
36097
37084
|
RouterFacade,
|
|
36098
37085
|
{
|
|
@@ -36135,5 +37122,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
36135
37122
|
* Generated bundle index. Do not edit.
|
|
36136
37123
|
*/
|
|
36137
37124
|
|
|
36138
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, 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, DatePickerComponent, 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, ErrorComponent, 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, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, 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, LicenseSearchField, 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, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, 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_ORGANIZATION, 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, ResultsTableContainerComponent, 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, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, 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, TranslatedSearchField, 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, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, 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, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setCurrentPage, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
37125
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, 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, ConfirmationDialogComponent, 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, DatePickerComponent, 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, ErrorComponent, 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, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, 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, LicenseSearchField, 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, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, 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_ORGANIZATION, 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, ResultsTableContainerComponent, 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, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, 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, TranslatedSearchField, 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, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, 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, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setCurrentPage, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
36139
37126
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|