geonetwork-ui 2.4.0-dev.5cc37149 → 2.4.0-dev.618ec561
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/index.mjs +2 -1
- 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 +6 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +12 -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/+state/editor.actions.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +7 -2
- package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +7 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +16 -6
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +138 -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.component.mjs +19 -9
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +1 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +12 -7
- package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +153 -60
- package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
- package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +4 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +9 -3
- 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/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/image-input/image-input.component.mjs +11 -5
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +29 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +15 -7
- 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 +32 -10
- package/esm2022/translations/en.json +32 -10
- package/esm2022/translations/es.json +31 -9
- package/esm2022/translations/fr.json +32 -10
- package/esm2022/translations/it.json +32 -10
- package/esm2022/translations/nl.json +31 -9
- package/esm2022/translations/pt.json +31 -9
- package/fesm2022/geonetwork-ui.mjs +823 -206
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +1 -0
- package/libs/api/metadata-converter/src/index.d.ts.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 +1 -0
- package/libs/api/repository/src/lib/gn4/gn4-repository.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 +9 -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/+state/editor.actions.d.ts +5 -0
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +4 -4
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts +8 -0
- package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +4 -3
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +4 -8
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
- 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-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.component.d.ts +6 -2
- 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/components/record-form/form-field/index.d.ts +0 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +5 -7
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
- package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +39 -2
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +36 -0
- package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
- package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
- package/libs/feature/editor/src/lib/services/editor.service.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 +3 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- 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/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/image-input/image-input.component.d.ts +4 -2
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +11 -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 +4 -2
- 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/index.ts +1 -0
- 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 +8 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -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 +12 -0
- package/src/libs/common/fixtures/src/index.ts +2 -0
- package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
- package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -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/+state/editor.actions.ts +5 -0
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +2 -2
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +9 -1
- package/src/libs/feature/editor/src/lib/+state/editor.models.ts +11 -0
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +11 -5
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +22 -8
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +3 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +117 -21
- 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.component.html +15 -9
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +15 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +51 -11
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +16 -8
- package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +186 -61
- package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +53 -0
- package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +8 -4
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +5 -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/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/image-input/image-input.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +7 -2
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- 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 +17 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +22 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +9 -0
- 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 +32 -10
- package/translations/en.json +32 -10
- package/translations/es.json +31 -9
- package/translations/fr.json +32 -10
- package/translations/it.json +32 -10
- package/translations/nl.json +31 -9
- package/translations/pt.json +31 -9
- package/translations/sk.json +32 -10
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
- package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
- package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
- package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
- package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
|
@@ -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';
|
|
@@ -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';
|
|
@@ -54,19 +56,20 @@ 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';
|
|
@@ -81,9 +84,10 @@ import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/c
|
|
|
81
84
|
import EmblaCarousel from 'embla-carousel';
|
|
82
85
|
import { formatDistance } from 'date-fns';
|
|
83
86
|
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';
|
|
87
|
+
import * as i2$4 from '@angular/material/menu';
|
|
88
|
+
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
84
89
|
import * as i1$8 from '@ngrx/effects';
|
|
85
90
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
86
|
-
import tippy from 'tippy.js';
|
|
87
91
|
import { valid as valid$1 } from 'geojson-validation';
|
|
88
92
|
import { Polygon } from 'ol/geom';
|
|
89
93
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
@@ -95,13 +99,13 @@ import * as i2$6 from '@angular/material/sort';
|
|
|
95
99
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
96
100
|
import * as i1$9 from '@angular/material/table';
|
|
97
101
|
import { MatTableModule } from '@angular/material/table';
|
|
98
|
-
import * as i3$
|
|
102
|
+
import * as i3$3 from 'ng-table-virtual-scroll';
|
|
99
103
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
100
104
|
import * as Papa from 'papaparse';
|
|
101
105
|
import parseDate from 'date-fns/parse';
|
|
102
106
|
import parseIsoDate from 'date-fns/parseISO';
|
|
103
107
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
104
|
-
import * as i3$
|
|
108
|
+
import * as i3$4 from '@ngrx/router-store';
|
|
105
109
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
106
110
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
107
111
|
|
|
@@ -269,6 +273,9 @@ function allChildrenElement(element) {
|
|
|
269
273
|
...element.children.filter((el) => el instanceof XmlElement),
|
|
270
274
|
];
|
|
271
275
|
}
|
|
276
|
+
function firstChildElement(element) {
|
|
277
|
+
return allChildrenElement(element)[0] ?? null;
|
|
278
|
+
}
|
|
272
279
|
/**
|
|
273
280
|
* Will return all matching elements nested according to the given
|
|
274
281
|
* names (similar to a path), starting form the input element;
|
|
@@ -427,10 +434,12 @@ function getTreeRoot(element) {
|
|
|
427
434
|
}
|
|
428
435
|
// stays on the parent element
|
|
429
436
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
437
|
+
// will filter out falsy elements
|
|
430
438
|
function appendChildren(...childrenFns) {
|
|
431
439
|
return (element) => {
|
|
432
440
|
if (!element)
|
|
433
441
|
return null;
|
|
442
|
+
childrenFns = childrenFns.filter((fn) => fn);
|
|
434
443
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
|
|
435
444
|
element.children.forEach((el) => (el.parent = element));
|
|
436
445
|
return element;
|
|
@@ -559,6 +568,33 @@ function matchMimeType(format) {
|
|
|
559
568
|
return format || null;
|
|
560
569
|
}
|
|
561
570
|
|
|
571
|
+
function readGeometry(el) {
|
|
572
|
+
const xmlDoc = createDocument(el);
|
|
573
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2';
|
|
574
|
+
const gmlString = xmlToString(xmlDoc);
|
|
575
|
+
const doc = parse$1(gmlString);
|
|
576
|
+
// we need an intermediate node to be able to parse the GML
|
|
577
|
+
const node = document.createElement('pre');
|
|
578
|
+
node.appendChild(doc.documentElement);
|
|
579
|
+
const gml32Format = new GML32();
|
|
580
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
581
|
+
// @ts-ignore
|
|
582
|
+
const geometry = gml32Format.readGeometryFromNode(node);
|
|
583
|
+
const geojsonFormat = new GeoJSON();
|
|
584
|
+
return geojsonFormat.writeGeometryObject(geometry);
|
|
585
|
+
}
|
|
586
|
+
function writeGeometry(geometryObject) {
|
|
587
|
+
const geojsonFormat = new GeoJSON();
|
|
588
|
+
const geometry = geojsonFormat.readGeometry(geometryObject);
|
|
589
|
+
const gml32Format = new GML32();
|
|
590
|
+
const node = gml32Format.writeGeometryNode(geometry);
|
|
591
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
592
|
+
// @ts-ignore
|
|
593
|
+
const element = node.firstElementChild;
|
|
594
|
+
const gmlString = new XMLSerializer().serializeToString(element);
|
|
595
|
+
return getRootElement(parseXmlString(gmlString));
|
|
596
|
+
}
|
|
597
|
+
|
|
562
598
|
/**
|
|
563
599
|
* Parts are [firstName, lastName]
|
|
564
600
|
* Second part will be null if no separation could be done
|
|
@@ -727,6 +763,9 @@ function extractCharacterString() {
|
|
|
727
763
|
function extractDateTime() {
|
|
728
764
|
return pipe(fallback(findChildElement('gco:DateTime', false), findChildElement('gco:Date', false)), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)));
|
|
729
765
|
}
|
|
766
|
+
function extractDecimal() {
|
|
767
|
+
return pipe(findChildElement('gco:Decimal', false), readText(), map((numberStr) => (numberStr ? Number(numberStr) : null)));
|
|
768
|
+
}
|
|
730
769
|
function extractUrl() {
|
|
731
770
|
const getUrl = pipe(findChildElement('gmd:URL', false), readText());
|
|
732
771
|
const getCharacterString = pipe(findChildElement('gco:CharacterString', false), readText());
|
|
@@ -1084,6 +1123,30 @@ function readTemporalExtents(rootEl) {
|
|
|
1084
1123
|
}
|
|
1085
1124
|
}))(rootEl);
|
|
1086
1125
|
}
|
|
1126
|
+
function readSpatialExtents(rootEl) {
|
|
1127
|
+
const extractGeometry = (rootEl) => {
|
|
1128
|
+
if (!rootEl)
|
|
1129
|
+
return null;
|
|
1130
|
+
return pipe(findChildElement('gmd:polygon', false), firstChildElement, map((el) => readGeometry(el)))(rootEl);
|
|
1131
|
+
};
|
|
1132
|
+
const extractBBox = (rootEl) => {
|
|
1133
|
+
if (!rootEl)
|
|
1134
|
+
return null;
|
|
1135
|
+
return pipe(combine(pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()), pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())))(rootEl);
|
|
1136
|
+
};
|
|
1137
|
+
const extractDescription = (rootEl) => {
|
|
1138
|
+
if (!rootEl)
|
|
1139
|
+
return null;
|
|
1140
|
+
return pipe(findNestedElement('gmd:geographicIdentifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1141
|
+
};
|
|
1142
|
+
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]) => {
|
|
1143
|
+
return {
|
|
1144
|
+
...(geometry && { geometry }),
|
|
1145
|
+
...(bbox && { bbox }),
|
|
1146
|
+
...(description && { description }),
|
|
1147
|
+
};
|
|
1148
|
+
}))(rootEl);
|
|
1149
|
+
}
|
|
1087
1150
|
|
|
1088
1151
|
function writeCharacterString(text) {
|
|
1089
1152
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1100,6 +1163,9 @@ function writeDateTime(date) {
|
|
|
1100
1163
|
function writeDate(date) {
|
|
1101
1164
|
return tap(pipe(findChildOrCreate('gco:Date'), setTextContent(format(date, 'yyyy-MM-dd'))));
|
|
1102
1165
|
}
|
|
1166
|
+
function writeDecimal(decimal) {
|
|
1167
|
+
return tap(pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString())));
|
|
1168
|
+
}
|
|
1103
1169
|
function getProgressCode(status) {
|
|
1104
1170
|
switch (status) {
|
|
1105
1171
|
case 'completed':
|
|
@@ -1493,6 +1559,24 @@ function writeTemporalExtents(record, rootEl) {
|
|
|
1493
1559
|
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1494
1560
|
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1495
1561
|
}
|
|
1562
|
+
function writeSpatialExtents(record, rootEl) {
|
|
1563
|
+
const appendBoundingPolygon = (geometry) => {
|
|
1564
|
+
if (!geometry)
|
|
1565
|
+
return null;
|
|
1566
|
+
return pipe(createElement('gmd:EX_BoundingPolygon'), appendChildren(pipe(createElement('gmd:polygon'), appendChildren(() => writeGeometry(geometry)))));
|
|
1567
|
+
};
|
|
1568
|
+
const appendGeographicBoundingBox = (bbox) => {
|
|
1569
|
+
if (!bbox)
|
|
1570
|
+
return null;
|
|
1571
|
+
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]))));
|
|
1572
|
+
};
|
|
1573
|
+
const appendGeographicDescription = (description) => {
|
|
1574
|
+
if (!description)
|
|
1575
|
+
return null;
|
|
1576
|
+
return pipe(createElement('gmd:EX_GeographicDescription'), createChild('gmd:geographicIdentifier'), createChild('gmd:MD_Identifier'), createChild('gmd:code'), writeCharacterString(description));
|
|
1577
|
+
};
|
|
1578
|
+
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);
|
|
1579
|
+
}
|
|
1496
1580
|
|
|
1497
1581
|
class Iso19139Converter extends BaseConverter {
|
|
1498
1582
|
constructor() {
|
|
@@ -1525,8 +1609,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1525
1609
|
distributions: readDistributions$1,
|
|
1526
1610
|
onlineResources: readOnlineResources,
|
|
1527
1611
|
temporalExtents: readTemporalExtents,
|
|
1612
|
+
spatialExtents: readSpatialExtents,
|
|
1528
1613
|
// TODO
|
|
1529
|
-
spatialExtents: () => [],
|
|
1530
1614
|
extras: () => undefined,
|
|
1531
1615
|
landingPage: () => undefined,
|
|
1532
1616
|
languages: () => [],
|
|
@@ -1559,8 +1643,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1559
1643
|
distributions: writeDistributions$1,
|
|
1560
1644
|
onlineResources: writeOnlineResources,
|
|
1561
1645
|
temporalExtents: writeTemporalExtents,
|
|
1646
|
+
spatialExtents: () => writeSpatialExtents,
|
|
1562
1647
|
// TODO
|
|
1563
|
-
spatialExtents: () => undefined,
|
|
1564
1648
|
extras: () => undefined,
|
|
1565
1649
|
landingPage: () => undefined,
|
|
1566
1650
|
languages: () => undefined,
|
|
@@ -8642,11 +8726,7 @@ class RecordsApiService {
|
|
|
8642
8726
|
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
8643
8727
|
}
|
|
8644
8728
|
// to determine the Content-Type header
|
|
8645
|
-
const consumes = [
|
|
8646
|
-
'application/xml',
|
|
8647
|
-
'application/json',
|
|
8648
|
-
'application/x-www-form-urlencoded',
|
|
8649
|
-
];
|
|
8729
|
+
const consumes = ['application/xml'];
|
|
8650
8730
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
8651
8731
|
if (httpContentTypeSelected !== undefined) {
|
|
8652
8732
|
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
@@ -17473,9 +17553,19 @@ var de = {
|
|
|
17473
17553
|
"downloads.format.unknown": "unbekannt",
|
|
17474
17554
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17475
17555
|
dropFile: dropFile$6,
|
|
17476
|
-
"editor.record.form.
|
|
17477
|
-
"editor.record.form.
|
|
17478
|
-
"editor.record.form.
|
|
17556
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
17557
|
+
"editor.record.form.bottomButtons.next": "",
|
|
17558
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
17559
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
17560
|
+
"editor.record.form.field.keywords": "Schlagwörter",
|
|
17561
|
+
"editor.record.form.field.license": "Lizenz",
|
|
17562
|
+
"editor.record.form.field.overviews": "",
|
|
17563
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
17564
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17565
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
17566
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
17567
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
17568
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17479
17569
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17480
17570
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17481
17571
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17485,16 +17575,26 @@ var de = {
|
|
|
17485
17575
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17486
17576
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17487
17577
|
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17488
|
-
"editor.record.form.
|
|
17489
|
-
"editor.record.form.
|
|
17490
|
-
"editor.record.form.
|
|
17491
|
-
"editor.record.form.
|
|
17578
|
+
"editor.record.form.page.accessAndContact": "",
|
|
17579
|
+
"editor.record.form.page.description": "",
|
|
17580
|
+
"editor.record.form.page.ressources": "",
|
|
17581
|
+
"editor.record.form.section.about.description": "",
|
|
17582
|
+
"editor.record.form.section.about.label": "",
|
|
17583
|
+
"editor.record.form.section.annexes.label": "",
|
|
17584
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
17585
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
17586
|
+
"editor.record.form.section.classification.description": "",
|
|
17587
|
+
"editor.record.form.section.classification.label": "",
|
|
17588
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
17589
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
17590
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
17591
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
17592
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
17593
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
17492
17594
|
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
17493
17595
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
17494
17596
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
17495
17597
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
17496
|
-
"editor.record.form.unique.identifier": "Eindeutige Kennung (ID)",
|
|
17497
|
-
"editor.record.form.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17498
17598
|
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
17499
17599
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
17500
17600
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
@@ -17509,6 +17609,7 @@ var de = {
|
|
|
17509
17609
|
"editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
|
|
17510
17610
|
"editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
|
|
17511
17611
|
"editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
|
|
17612
|
+
"editor.sidebar.menu.editor": "",
|
|
17512
17613
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17513
17614
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17514
17615
|
"facets.block.title.availableInServices": "Verfügbar für",
|
|
@@ -17586,6 +17687,7 @@ var de = {
|
|
|
17586
17687
|
"pagination.pageOf": "von",
|
|
17587
17688
|
previous: previous$6,
|
|
17588
17689
|
"record.action.download": "Herunterladen",
|
|
17690
|
+
"record.action.duplicate": "",
|
|
17589
17691
|
"record.action.view": "Anzeigen",
|
|
17590
17692
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
17591
17693
|
"record.metadata.about": "Beschreibung",
|
|
@@ -17716,7 +17818,7 @@ var de = {
|
|
|
17716
17818
|
"search.filters.resourceType": "Ressourcentyp",
|
|
17717
17819
|
"search.filters.standard": "Standard",
|
|
17718
17820
|
"search.filters.title": "Ergebnisse filtern",
|
|
17719
|
-
"search.filters.topic": "
|
|
17821
|
+
"search.filters.topic": "Themen",
|
|
17720
17822
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
17721
17823
|
"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.",
|
|
17722
17824
|
"share.tab.permalink": "Teilen",
|
|
@@ -17908,9 +18010,19 @@ var en = {
|
|
|
17908
18010
|
"downloads.format.unknown": "unknown",
|
|
17909
18011
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17910
18012
|
dropFile: dropFile$5,
|
|
17911
|
-
"editor.record.form.
|
|
17912
|
-
"editor.record.form.
|
|
17913
|
-
"editor.record.form.
|
|
18013
|
+
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
18014
|
+
"editor.record.form.bottomButtons.next": "Next",
|
|
18015
|
+
"editor.record.form.bottomButtons.previous": "Previous",
|
|
18016
|
+
"editor.record.form.field.abstract": "Abstract",
|
|
18017
|
+
"editor.record.form.field.keywords": "Keywords",
|
|
18018
|
+
"editor.record.form.field.license": "License",
|
|
18019
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
18020
|
+
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
18021
|
+
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
18022
|
+
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
18023
|
+
"editor.record.form.field.title": "Metadata title",
|
|
18024
|
+
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
18025
|
+
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
17914
18026
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17915
18027
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17916
18028
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17920,16 +18032,26 @@ var en = {
|
|
|
17920
18032
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17921
18033
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17922
18034
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17923
|
-
"editor.record.form.
|
|
17924
|
-
"editor.record.form.
|
|
17925
|
-
"editor.record.form.
|
|
17926
|
-
"editor.record.form.
|
|
18035
|
+
"editor.record.form.page.accessAndContact": "Access and contact",
|
|
18036
|
+
"editor.record.form.page.description": "Resource description",
|
|
18037
|
+
"editor.record.form.page.ressources": "Resources",
|
|
18038
|
+
"editor.record.form.section.about.description": "This section describes the resource.",
|
|
18039
|
+
"editor.record.form.section.about.label": "About the resource",
|
|
18040
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
18041
|
+
"editor.record.form.section.associatedResources.description": "Drop files here to associate them with the resource.",
|
|
18042
|
+
"editor.record.form.section.associatedResources.label": "Associated resources",
|
|
18043
|
+
"editor.record.form.section.classification.description": "The classification has an impact on the access to the data.",
|
|
18044
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
18045
|
+
"editor.record.form.section.dataManagers.description": "The data managers are responsible for the data.",
|
|
18046
|
+
"editor.record.form.section.dataManagers.label": "Data managers",
|
|
18047
|
+
"editor.record.form.section.dataPointOfContact.description": "This information concerns the metadata.",
|
|
18048
|
+
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
18049
|
+
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
18050
|
+
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
17927
18051
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
17928
18052
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
17929
18053
|
"editor.record.form.temporalExtents.date": "Date",
|
|
17930
18054
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
17931
|
-
"editor.record.form.unique.identifier": "Unique identifier",
|
|
17932
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
17933
18055
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17934
18056
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17935
18057
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -17944,6 +18066,7 @@ var en = {
|
|
|
17944
18066
|
"editor.record.saveStatus.draftWithChangesPending": "Saved as draft - changes are pending",
|
|
17945
18067
|
"editor.record.saveStatus.recordUpToDate": "Record is up to date",
|
|
17946
18068
|
"editor.record.upToDate": "This record is up to date",
|
|
18069
|
+
"editor.sidebar.menu.editor": "Editor",
|
|
17947
18070
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17948
18071
|
"facets.block.title.OrgForResource": "Organisation",
|
|
17949
18072
|
"facets.block.title.availableInServices": "Available for",
|
|
@@ -18021,6 +18144,7 @@ var en = {
|
|
|
18021
18144
|
"pagination.pageOf": "of",
|
|
18022
18145
|
previous: previous$5,
|
|
18023
18146
|
"record.action.download": "Download",
|
|
18147
|
+
"record.action.duplicate": "Duplicate",
|
|
18024
18148
|
"record.action.view": "View",
|
|
18025
18149
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
18026
18150
|
"record.metadata.about": "Description",
|
|
@@ -18151,7 +18275,7 @@ var en = {
|
|
|
18151
18275
|
"search.filters.resourceType": "Resource type",
|
|
18152
18276
|
"search.filters.standard": "Standard",
|
|
18153
18277
|
"search.filters.title": "Filter your results",
|
|
18154
|
-
"search.filters.topic": "
|
|
18278
|
+
"search.filters.topic": "Topics",
|
|
18155
18279
|
"search.filters.useSpatialFilter": "Show records in the area of interest first",
|
|
18156
18280
|
"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.",
|
|
18157
18281
|
"share.tab.permalink": "Share",
|
|
@@ -18343,9 +18467,19 @@ var es = {
|
|
|
18343
18467
|
"downloads.format.unknown": "",
|
|
18344
18468
|
"downloads.wfs.featuretype.not.found": "",
|
|
18345
18469
|
dropFile: dropFile$4,
|
|
18346
|
-
"editor.record.form.
|
|
18347
|
-
"editor.record.form.
|
|
18348
|
-
"editor.record.form.
|
|
18470
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
18471
|
+
"editor.record.form.bottomButtons.next": "",
|
|
18472
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
18473
|
+
"editor.record.form.field.abstract": "",
|
|
18474
|
+
"editor.record.form.field.keywords": "",
|
|
18475
|
+
"editor.record.form.field.license": "",
|
|
18476
|
+
"editor.record.form.field.overviews": "",
|
|
18477
|
+
"editor.record.form.field.recordUpdated": "",
|
|
18478
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
18479
|
+
"editor.record.form.field.temporalExtents": "",
|
|
18480
|
+
"editor.record.form.field.title": "",
|
|
18481
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
18482
|
+
"editor.record.form.field.updateFrequency": "",
|
|
18349
18483
|
"editor.record.form.license.cc-by": "",
|
|
18350
18484
|
"editor.record.form.license.cc-by-sa": "",
|
|
18351
18485
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18355,16 +18489,26 @@ var es = {
|
|
|
18355
18489
|
"editor.record.form.license.odc-by": "",
|
|
18356
18490
|
"editor.record.form.license.pddl": "",
|
|
18357
18491
|
"editor.record.form.license.unknown": "",
|
|
18358
|
-
"editor.record.form.
|
|
18359
|
-
"editor.record.form.
|
|
18360
|
-
"editor.record.form.
|
|
18361
|
-
"editor.record.form.
|
|
18492
|
+
"editor.record.form.page.accessAndContact": "",
|
|
18493
|
+
"editor.record.form.page.description": "",
|
|
18494
|
+
"editor.record.form.page.ressources": "",
|
|
18495
|
+
"editor.record.form.section.about.description": "",
|
|
18496
|
+
"editor.record.form.section.about.label": "",
|
|
18497
|
+
"editor.record.form.section.annexes.label": "",
|
|
18498
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
18499
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
18500
|
+
"editor.record.form.section.classification.description": "",
|
|
18501
|
+
"editor.record.form.section.classification.label": "",
|
|
18502
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
18503
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
18504
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
18505
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
18506
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
18507
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
18362
18508
|
"editor.record.form.temporalExtents.addDate": "",
|
|
18363
18509
|
"editor.record.form.temporalExtents.addRange": "",
|
|
18364
18510
|
"editor.record.form.temporalExtents.date": "",
|
|
18365
18511
|
"editor.record.form.temporalExtents.range": "",
|
|
18366
|
-
"editor.record.form.unique.identifier": "",
|
|
18367
|
-
"editor.record.form.updateFrequency": "",
|
|
18368
18512
|
"editor.record.form.updateFrequency.planned": "",
|
|
18369
18513
|
"editor.record.loadError.body": "",
|
|
18370
18514
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18379,6 +18523,7 @@ var es = {
|
|
|
18379
18523
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
18380
18524
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
18381
18525
|
"editor.record.upToDate": "",
|
|
18526
|
+
"editor.sidebar.menu.editor": "",
|
|
18382
18527
|
"externalviewer.dataset.unnamed": "",
|
|
18383
18528
|
"facets.block.title.OrgForResource": "",
|
|
18384
18529
|
"facets.block.title.availableInServices": "",
|
|
@@ -18456,6 +18601,7 @@ var es = {
|
|
|
18456
18601
|
"pagination.pageOf": "",
|
|
18457
18602
|
previous: previous$4,
|
|
18458
18603
|
"record.action.download": "",
|
|
18604
|
+
"record.action.duplicate": "",
|
|
18459
18605
|
"record.action.view": "",
|
|
18460
18606
|
"record.externalViewer.open": "",
|
|
18461
18607
|
"record.metadata.about": "",
|
|
@@ -18778,9 +18924,19 @@ var fr = {
|
|
|
18778
18924
|
"downloads.format.unknown": "inconnu",
|
|
18779
18925
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18780
18926
|
dropFile: dropFile$3,
|
|
18781
|
-
"editor.record.form.
|
|
18782
|
-
"editor.record.form.
|
|
18783
|
-
"editor.record.form.
|
|
18927
|
+
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
18928
|
+
"editor.record.form.bottomButtons.next": "Suivant",
|
|
18929
|
+
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
18930
|
+
"editor.record.form.field.abstract": "Résumé",
|
|
18931
|
+
"editor.record.form.field.keywords": "Mots-clés",
|
|
18932
|
+
"editor.record.form.field.license": "Licence",
|
|
18933
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
18934
|
+
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
18935
|
+
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
18936
|
+
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
18937
|
+
"editor.record.form.field.title": "Titre",
|
|
18938
|
+
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
18939
|
+
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
18784
18940
|
"editor.record.form.license.cc-by": "",
|
|
18785
18941
|
"editor.record.form.license.cc-by-sa": "",
|
|
18786
18942
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18790,16 +18946,26 @@ var fr = {
|
|
|
18790
18946
|
"editor.record.form.license.odc-by": "",
|
|
18791
18947
|
"editor.record.form.license.pddl": "",
|
|
18792
18948
|
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18793
|
-
"editor.record.form.
|
|
18794
|
-
"editor.record.form.
|
|
18795
|
-
"editor.record.form.
|
|
18796
|
-
"editor.record.form.
|
|
18949
|
+
"editor.record.form.page.accessAndContact": "Acces et contact",
|
|
18950
|
+
"editor.record.form.page.description": "Description de la ressource",
|
|
18951
|
+
"editor.record.form.page.ressources": "Ressources",
|
|
18952
|
+
"editor.record.form.section.about.description": "Ces informations concernent la donnée.",
|
|
18953
|
+
"editor.record.form.section.about.label": "A propos de la ressource",
|
|
18954
|
+
"editor.record.form.section.annexes.label": "Annexes",
|
|
18955
|
+
"editor.record.form.section.associatedResources.description": "Déposez les jeux de données associées à cette fiche de métadonnée.",
|
|
18956
|
+
"editor.record.form.section.associatedResources.label": "Ressources associees",
|
|
18957
|
+
"editor.record.form.section.classification.description": "La classification a un impact sur la recherche du jeux de données.",
|
|
18958
|
+
"editor.record.form.section.classification.label": "Classification",
|
|
18959
|
+
"editor.record.form.section.dataManagers.description": "Cette information concerne la donnée.",
|
|
18960
|
+
"editor.record.form.section.dataManagers.label": "Responsables de la donnee",
|
|
18961
|
+
"editor.record.form.section.dataPointOfContact.description": "Cette information concerne la fiche de métadonnée.",
|
|
18962
|
+
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
18963
|
+
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
18964
|
+
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
18797
18965
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
18798
18966
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
18799
18967
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
18800
18968
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
18801
|
-
"editor.record.form.unique.identifier": "",
|
|
18802
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18803
18969
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18804
18970
|
"editor.record.loadError.body": "",
|
|
18805
18971
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18814,6 +18980,7 @@ var fr = {
|
|
|
18814
18980
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18815
18981
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
18816
18982
|
"editor.record.upToDate": "",
|
|
18983
|
+
"editor.sidebar.menu.editor": "",
|
|
18817
18984
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18818
18985
|
"facets.block.title.OrgForResource": "Organisation",
|
|
18819
18986
|
"facets.block.title.availableInServices": "Disponible pour",
|
|
@@ -18891,6 +19058,7 @@ var fr = {
|
|
|
18891
19058
|
"pagination.pageOf": "sur",
|
|
18892
19059
|
previous: previous$3,
|
|
18893
19060
|
"record.action.download": "Télécharger",
|
|
19061
|
+
"record.action.duplicate": "Dupliquer",
|
|
18894
19062
|
"record.action.view": "Voir",
|
|
18895
19063
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
18896
19064
|
"record.metadata.about": "Description",
|
|
@@ -19021,7 +19189,7 @@ var fr = {
|
|
|
19021
19189
|
"search.filters.resourceType": "Type de ressource",
|
|
19022
19190
|
"search.filters.standard": "Standard",
|
|
19023
19191
|
"search.filters.title": "Affiner votre recherche",
|
|
19024
|
-
"search.filters.topic": "
|
|
19192
|
+
"search.filters.topic": "Thèmes",
|
|
19025
19193
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
19026
19194
|
"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.",
|
|
19027
19195
|
"share.tab.permalink": "Partager",
|
|
@@ -19213,9 +19381,19 @@ var it = {
|
|
|
19213
19381
|
"downloads.format.unknown": "sconosciuto",
|
|
19214
19382
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
19215
19383
|
dropFile: dropFile$2,
|
|
19216
|
-
"editor.record.form.
|
|
19217
|
-
"editor.record.form.
|
|
19218
|
-
"editor.record.form.
|
|
19384
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19385
|
+
"editor.record.form.bottomButtons.next": "",
|
|
19386
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
19387
|
+
"editor.record.form.field.abstract": "",
|
|
19388
|
+
"editor.record.form.field.keywords": "",
|
|
19389
|
+
"editor.record.form.field.license": "Licenza",
|
|
19390
|
+
"editor.record.form.field.overviews": "",
|
|
19391
|
+
"editor.record.form.field.recordUpdated": "",
|
|
19392
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
19393
|
+
"editor.record.form.field.temporalExtents": "",
|
|
19394
|
+
"editor.record.form.field.title": "",
|
|
19395
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
19396
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19219
19397
|
"editor.record.form.license.cc-by": "",
|
|
19220
19398
|
"editor.record.form.license.cc-by-sa": "",
|
|
19221
19399
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19225,16 +19403,26 @@ var it = {
|
|
|
19225
19403
|
"editor.record.form.license.odc-by": "",
|
|
19226
19404
|
"editor.record.form.license.pddl": "",
|
|
19227
19405
|
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19228
|
-
"editor.record.form.
|
|
19229
|
-
"editor.record.form.
|
|
19230
|
-
"editor.record.form.
|
|
19231
|
-
"editor.record.form.
|
|
19406
|
+
"editor.record.form.page.accessAndContact": "",
|
|
19407
|
+
"editor.record.form.page.description": "",
|
|
19408
|
+
"editor.record.form.page.ressources": "",
|
|
19409
|
+
"editor.record.form.section.about.description": "",
|
|
19410
|
+
"editor.record.form.section.about.label": "",
|
|
19411
|
+
"editor.record.form.section.annexes.label": "",
|
|
19412
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
19413
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
19414
|
+
"editor.record.form.section.classification.description": "",
|
|
19415
|
+
"editor.record.form.section.classification.label": "",
|
|
19416
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
19417
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
19418
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
19419
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19420
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19421
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19232
19422
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19233
19423
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19234
19424
|
"editor.record.form.temporalExtents.date": "",
|
|
19235
19425
|
"editor.record.form.temporalExtents.range": "",
|
|
19236
|
-
"editor.record.form.unique.identifier": "",
|
|
19237
|
-
"editor.record.form.updateFrequency": "",
|
|
19238
19426
|
"editor.record.form.updateFrequency.planned": "",
|
|
19239
19427
|
"editor.record.loadError.body": "",
|
|
19240
19428
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19249,6 +19437,7 @@ var it = {
|
|
|
19249
19437
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19250
19438
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19251
19439
|
"editor.record.upToDate": "",
|
|
19440
|
+
"editor.sidebar.menu.editor": "",
|
|
19252
19441
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
19253
19442
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
19254
19443
|
"facets.block.title.availableInServices": "Disponibile per",
|
|
@@ -19326,6 +19515,7 @@ var it = {
|
|
|
19326
19515
|
"pagination.pageOf": "di",
|
|
19327
19516
|
previous: previous$2,
|
|
19328
19517
|
"record.action.download": "Scarica",
|
|
19518
|
+
"record.action.duplicate": "",
|
|
19329
19519
|
"record.action.view": "Visualizza",
|
|
19330
19520
|
"record.externalViewer.open": "Apri nell'visualizzatore esterno",
|
|
19331
19521
|
"record.metadata.about": "Descrizione",
|
|
@@ -19456,7 +19646,7 @@ var it = {
|
|
|
19456
19646
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
19457
19647
|
"search.filters.standard": "Standard",
|
|
19458
19648
|
"search.filters.title": "Affina la sua ricerca",
|
|
19459
|
-
"search.filters.topic": "
|
|
19649
|
+
"search.filters.topic": "Argomenti",
|
|
19460
19650
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
19461
19651
|
"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.",
|
|
19462
19652
|
"share.tab.permalink": "Condividere",
|
|
@@ -19648,9 +19838,19 @@ var nl = {
|
|
|
19648
19838
|
"downloads.format.unknown": "",
|
|
19649
19839
|
"downloads.wfs.featuretype.not.found": "",
|
|
19650
19840
|
dropFile: dropFile$1,
|
|
19651
|
-
"editor.record.form.
|
|
19652
|
-
"editor.record.form.
|
|
19653
|
-
"editor.record.form.
|
|
19841
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19842
|
+
"editor.record.form.bottomButtons.next": "",
|
|
19843
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
19844
|
+
"editor.record.form.field.abstract": "",
|
|
19845
|
+
"editor.record.form.field.keywords": "",
|
|
19846
|
+
"editor.record.form.field.license": "",
|
|
19847
|
+
"editor.record.form.field.overviews": "",
|
|
19848
|
+
"editor.record.form.field.recordUpdated": "",
|
|
19849
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
19850
|
+
"editor.record.form.field.temporalExtents": "",
|
|
19851
|
+
"editor.record.form.field.title": "",
|
|
19852
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
19853
|
+
"editor.record.form.field.updateFrequency": "",
|
|
19654
19854
|
"editor.record.form.license.cc-by": "",
|
|
19655
19855
|
"editor.record.form.license.cc-by-sa": "",
|
|
19656
19856
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19660,16 +19860,26 @@ var nl = {
|
|
|
19660
19860
|
"editor.record.form.license.odc-by": "",
|
|
19661
19861
|
"editor.record.form.license.pddl": "",
|
|
19662
19862
|
"editor.record.form.license.unknown": "",
|
|
19663
|
-
"editor.record.form.
|
|
19664
|
-
"editor.record.form.
|
|
19665
|
-
"editor.record.form.
|
|
19666
|
-
"editor.record.form.
|
|
19863
|
+
"editor.record.form.page.accessAndContact": "",
|
|
19864
|
+
"editor.record.form.page.description": "",
|
|
19865
|
+
"editor.record.form.page.ressources": "",
|
|
19866
|
+
"editor.record.form.section.about.description": "",
|
|
19867
|
+
"editor.record.form.section.about.label": "",
|
|
19868
|
+
"editor.record.form.section.annexes.label": "",
|
|
19869
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
19870
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
19871
|
+
"editor.record.form.section.classification.description": "",
|
|
19872
|
+
"editor.record.form.section.classification.label": "",
|
|
19873
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
19874
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
19875
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
19876
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19877
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19878
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19667
19879
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19668
19880
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19669
19881
|
"editor.record.form.temporalExtents.date": "",
|
|
19670
19882
|
"editor.record.form.temporalExtents.range": "",
|
|
19671
|
-
"editor.record.form.unique.identifier": "",
|
|
19672
|
-
"editor.record.form.updateFrequency": "",
|
|
19673
19883
|
"editor.record.form.updateFrequency.planned": "",
|
|
19674
19884
|
"editor.record.loadError.body": "",
|
|
19675
19885
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19684,6 +19894,7 @@ var nl = {
|
|
|
19684
19894
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19685
19895
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
19686
19896
|
"editor.record.upToDate": "",
|
|
19897
|
+
"editor.sidebar.menu.editor": "",
|
|
19687
19898
|
"externalviewer.dataset.unnamed": "",
|
|
19688
19899
|
"facets.block.title.OrgForResource": "",
|
|
19689
19900
|
"facets.block.title.availableInServices": "",
|
|
@@ -19761,6 +19972,7 @@ var nl = {
|
|
|
19761
19972
|
"pagination.pageOf": "",
|
|
19762
19973
|
previous: previous$1,
|
|
19763
19974
|
"record.action.download": "",
|
|
19975
|
+
"record.action.duplicate": "",
|
|
19764
19976
|
"record.action.view": "",
|
|
19765
19977
|
"record.externalViewer.open": "",
|
|
19766
19978
|
"record.metadata.about": "",
|
|
@@ -20083,9 +20295,19 @@ var pt = {
|
|
|
20083
20295
|
"downloads.format.unknown": "",
|
|
20084
20296
|
"downloads.wfs.featuretype.not.found": "",
|
|
20085
20297
|
dropFile: dropFile,
|
|
20086
|
-
"editor.record.form.
|
|
20087
|
-
"editor.record.form.
|
|
20088
|
-
"editor.record.form.
|
|
20298
|
+
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20299
|
+
"editor.record.form.bottomButtons.next": "",
|
|
20300
|
+
"editor.record.form.bottomButtons.previous": "",
|
|
20301
|
+
"editor.record.form.field.abstract": "",
|
|
20302
|
+
"editor.record.form.field.keywords": "",
|
|
20303
|
+
"editor.record.form.field.license": "",
|
|
20304
|
+
"editor.record.form.field.overviews": "",
|
|
20305
|
+
"editor.record.form.field.recordUpdated": "",
|
|
20306
|
+
"editor.record.form.field.resourceUpdated": "",
|
|
20307
|
+
"editor.record.form.field.temporalExtents": "",
|
|
20308
|
+
"editor.record.form.field.title": "",
|
|
20309
|
+
"editor.record.form.field.uniqueIdentifier": "",
|
|
20310
|
+
"editor.record.form.field.updateFrequency": "",
|
|
20089
20311
|
"editor.record.form.license.cc-by": "",
|
|
20090
20312
|
"editor.record.form.license.cc-by-sa": "",
|
|
20091
20313
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -20095,16 +20317,26 @@ var pt = {
|
|
|
20095
20317
|
"editor.record.form.license.odc-by": "",
|
|
20096
20318
|
"editor.record.form.license.pddl": "",
|
|
20097
20319
|
"editor.record.form.license.unknown": "",
|
|
20098
|
-
"editor.record.form.
|
|
20099
|
-
"editor.record.form.
|
|
20100
|
-
"editor.record.form.
|
|
20101
|
-
"editor.record.form.
|
|
20320
|
+
"editor.record.form.page.accessAndContact": "",
|
|
20321
|
+
"editor.record.form.page.description": "",
|
|
20322
|
+
"editor.record.form.page.ressources": "",
|
|
20323
|
+
"editor.record.form.section.about.description": "",
|
|
20324
|
+
"editor.record.form.section.about.label": "",
|
|
20325
|
+
"editor.record.form.section.annexes.label": "",
|
|
20326
|
+
"editor.record.form.section.associatedResources.description": "",
|
|
20327
|
+
"editor.record.form.section.associatedResources.label": "",
|
|
20328
|
+
"editor.record.form.section.classification.description": "",
|
|
20329
|
+
"editor.record.form.section.classification.label": "",
|
|
20330
|
+
"editor.record.form.section.dataManagers.description": "",
|
|
20331
|
+
"editor.record.form.section.dataManagers.label": "",
|
|
20332
|
+
"editor.record.form.section.dataPointOfContact.description": "",
|
|
20333
|
+
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20334
|
+
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20335
|
+
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
20102
20336
|
"editor.record.form.temporalExtents.addDate": "",
|
|
20103
20337
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20104
20338
|
"editor.record.form.temporalExtents.date": "",
|
|
20105
20339
|
"editor.record.form.temporalExtents.range": "",
|
|
20106
|
-
"editor.record.form.unique.identifier": "",
|
|
20107
|
-
"editor.record.form.updateFrequency": "",
|
|
20108
20340
|
"editor.record.form.updateFrequency.planned": "",
|
|
20109
20341
|
"editor.record.loadError.body": "",
|
|
20110
20342
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -20119,6 +20351,7 @@ var pt = {
|
|
|
20119
20351
|
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
20120
20352
|
"editor.record.saveStatus.recordUpToDate": "",
|
|
20121
20353
|
"editor.record.upToDate": "",
|
|
20354
|
+
"editor.sidebar.menu.editor": "",
|
|
20122
20355
|
"externalviewer.dataset.unnamed": "",
|
|
20123
20356
|
"facets.block.title.OrgForResource": "",
|
|
20124
20357
|
"facets.block.title.availableInServices": "",
|
|
@@ -20196,6 +20429,7 @@ var pt = {
|
|
|
20196
20429
|
"pagination.pageOf": "",
|
|
20197
20430
|
previous: previous,
|
|
20198
20431
|
"record.action.download": "",
|
|
20432
|
+
"record.action.duplicate": "",
|
|
20199
20433
|
"record.action.view": "",
|
|
20200
20434
|
"record.externalViewer.open": "",
|
|
20201
20435
|
"record.metadata.about": "",
|
|
@@ -21328,6 +21562,17 @@ class Gn4Repository {
|
|
|
21328
21562
|
.then((record) => [record, xml, isSavedAlready]);
|
|
21329
21563
|
}));
|
|
21330
21564
|
}
|
|
21565
|
+
openRecordForDuplication(uniqueIdentifier) {
|
|
21566
|
+
return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
|
|
21567
|
+
const converter = findConverterForDocument(recordAsXml);
|
|
21568
|
+
const record = await converter.readRecord(recordAsXml);
|
|
21569
|
+
record.uniqueIdentifier = `TEMP-ID-${Date.now()}`;
|
|
21570
|
+
record.title = `${record.title} (Copy)`;
|
|
21571
|
+
const xml = await converter.writeRecord(record, recordAsXml);
|
|
21572
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
|
|
21573
|
+
return [record, xml, false];
|
|
21574
|
+
}));
|
|
21575
|
+
}
|
|
21331
21576
|
serializeRecordToXml(record, referenceRecordSource) {
|
|
21332
21577
|
// if there's a reference record, use that standard; otherwise, use iso19139
|
|
21333
21578
|
const converter = referenceRecordSource
|
|
@@ -23101,10 +23346,15 @@ class MapUtilsService {
|
|
|
23101
23346
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
23102
23347
|
return null;
|
|
23103
23348
|
}
|
|
23104
|
-
//
|
|
23349
|
+
// extend all the spatial extents into an including bbox
|
|
23105
23350
|
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
23106
|
-
|
|
23107
|
-
|
|
23351
|
+
if ('bbox' in curr)
|
|
23352
|
+
return extend(prev, curr.bbox);
|
|
23353
|
+
else if ('geometry' in curr) {
|
|
23354
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
23355
|
+
return extend(prev, geom.getExtent());
|
|
23356
|
+
}
|
|
23357
|
+
return prev;
|
|
23108
23358
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
23109
23359
|
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
23110
23360
|
}
|
|
@@ -24690,6 +24940,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24690
24940
|
}]
|
|
24691
24941
|
}] });
|
|
24692
24942
|
|
|
24943
|
+
class PopoverComponent {
|
|
24944
|
+
constructor(viewContainerRef, renderer) {
|
|
24945
|
+
this.viewContainerRef = viewContainerRef;
|
|
24946
|
+
this.renderer = renderer;
|
|
24947
|
+
}
|
|
24948
|
+
getContent() {
|
|
24949
|
+
if (this.content instanceof TemplateRef) {
|
|
24950
|
+
if (this.view) {
|
|
24951
|
+
this.view.destroy();
|
|
24952
|
+
}
|
|
24953
|
+
this.view = this.viewContainerRef.createEmbeddedView(this.content);
|
|
24954
|
+
this.view.detectChanges();
|
|
24955
|
+
const wrapper = this.renderer.createElement('div'); // Create a wrapper div
|
|
24956
|
+
this.view.rootNodes.forEach((node) => {
|
|
24957
|
+
this.renderer.appendChild(wrapper, node); // Append each root node to the wrapper
|
|
24958
|
+
});
|
|
24959
|
+
return wrapper;
|
|
24960
|
+
}
|
|
24961
|
+
return this.content;
|
|
24962
|
+
}
|
|
24963
|
+
ngAfterViewInit() {
|
|
24964
|
+
this.tippyInstance = tippy(this.popoverContent.nativeElement, {
|
|
24965
|
+
content: this.getContent(),
|
|
24966
|
+
allowHTML: true,
|
|
24967
|
+
theme: this.theme,
|
|
24968
|
+
});
|
|
24969
|
+
}
|
|
24970
|
+
ngOnChanges(changes) {
|
|
24971
|
+
if (changes['theme']) {
|
|
24972
|
+
this.theme = changes['theme'].currentValue;
|
|
24973
|
+
if (this.tippyInstance) {
|
|
24974
|
+
this.tippyInstance.setProps({ theme: this.theme });
|
|
24975
|
+
}
|
|
24976
|
+
}
|
|
24977
|
+
if (changes['content']) {
|
|
24978
|
+
this.content = changes['content'].currentValue;
|
|
24979
|
+
if (this.tippyInstance) {
|
|
24980
|
+
this.tippyInstance.setContent(this.getContent());
|
|
24981
|
+
}
|
|
24982
|
+
}
|
|
24983
|
+
}
|
|
24984
|
+
ngOnDestroy() {
|
|
24985
|
+
if (this.tippyInstance) {
|
|
24986
|
+
this.tippyInstance.destroy();
|
|
24987
|
+
}
|
|
24988
|
+
if (this.view) {
|
|
24989
|
+
this.view.destroy();
|
|
24990
|
+
}
|
|
24991
|
+
}
|
|
24992
|
+
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 }); }
|
|
24993
|
+
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 }] }); }
|
|
24994
|
+
}
|
|
24995
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
24996
|
+
type: Component,
|
|
24997
|
+
args: [{ selector: 'gn-ui-popover', standalone: true, imports: [CommonModule], template: "<span #popoverContent>\n <ng-content></ng-content>\n</span>\n" }]
|
|
24998
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { popoverContent: [{
|
|
24999
|
+
type: ViewChild,
|
|
25000
|
+
args: ['popoverContent', { static: false }]
|
|
25001
|
+
}], content: [{
|
|
25002
|
+
type: Input
|
|
25003
|
+
}], theme: [{
|
|
25004
|
+
type: Input
|
|
25005
|
+
}] } });
|
|
25006
|
+
|
|
24693
25007
|
class PopupAlertComponent {
|
|
24694
25008
|
constructor(changeDetector) {
|
|
24695
25009
|
this.changeDetector = changeDetector;
|
|
@@ -25094,7 +25408,7 @@ class CopyTextButtonComponent {
|
|
|
25094
25408
|
event.target.blur();
|
|
25095
25409
|
}
|
|
25096
25410
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25097
|
-
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:
|
|
25411
|
+
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 }); }
|
|
25098
25412
|
}
|
|
25099
25413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25100
25414
|
type: Component,
|
|
@@ -25114,7 +25428,7 @@ class DatePickerComponent {
|
|
|
25114
25428
|
this.dateChange = new EventEmitter();
|
|
25115
25429
|
}
|
|
25116
25430
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25117
|
-
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$
|
|
25431
|
+
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 }); }
|
|
25118
25432
|
}
|
|
25119
25433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
25120
25434
|
type: Component,
|
|
@@ -25131,7 +25445,7 @@ class DateRangePickerComponent {
|
|
|
25131
25445
|
this.endDateChange = new EventEmitter();
|
|
25132
25446
|
}
|
|
25133
25447
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25134
|
-
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$
|
|
25448
|
+
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 }); }
|
|
25135
25449
|
}
|
|
25136
25450
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25137
25451
|
type: Component,
|
|
@@ -25163,7 +25477,7 @@ class DragAndDropFileInputComponent {
|
|
|
25163
25477
|
this.fileChange.emit(this.selectedFile);
|
|
25164
25478
|
}
|
|
25165
25479
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25166
|
-
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$
|
|
25480
|
+
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"] }] }); }
|
|
25167
25481
|
}
|
|
25168
25482
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
25169
25483
|
type: Component,
|
|
@@ -25942,7 +26256,8 @@ class ImageInputComponent {
|
|
|
25942
26256
|
const file = new File([blob], name);
|
|
25943
26257
|
this.fileChange.emit(file);
|
|
25944
26258
|
},
|
|
25945
|
-
error: () => {
|
|
26259
|
+
error: (error) => {
|
|
26260
|
+
console.error(error);
|
|
25946
26261
|
this.downloadError = true;
|
|
25947
26262
|
this.cd.markForCheck();
|
|
25948
26263
|
this.urlChange.emit(this.urlInputValue);
|
|
@@ -25978,6 +26293,7 @@ class ImageInputComponent {
|
|
|
25978
26293
|
}
|
|
25979
26294
|
}
|
|
25980
26295
|
handleDelete() {
|
|
26296
|
+
this.formControl.markAsDirty();
|
|
25981
26297
|
this.delete.emit();
|
|
25982
26298
|
}
|
|
25983
26299
|
toggleAltTextInput() {
|
|
@@ -26000,7 +26316,7 @@ class ImageInputComponent {
|
|
|
26000
26316
|
});
|
|
26001
26317
|
}
|
|
26002
26318
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26003
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { formControl: "formControl", maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4 hover:cursor-pointer\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26004
26320
|
}
|
|
26005
26321
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
26006
26322
|
type: Component,
|
|
@@ -26011,8 +26327,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
26011
26327
|
FilesDropDirective,
|
|
26012
26328
|
MatProgressSpinnerModule,
|
|
26013
26329
|
TranslateModule,
|
|
26014
|
-
|
|
26015
|
-
|
|
26330
|
+
ReactiveFormsModule,
|
|
26331
|
+
], template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4 hover:cursor-pointer\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
|
|
26332
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formControl: [{
|
|
26333
|
+
type: Input
|
|
26334
|
+
}], maxSizeMB: [{
|
|
26016
26335
|
type: Input
|
|
26017
26336
|
}], previewUrl: [{
|
|
26018
26337
|
type: Input
|
|
@@ -26804,11 +27123,11 @@ class MetadataQualityItemComponent {
|
|
|
26804
27123
|
return `record.metadata.quality.${this.name}.${this.value ? 'success' : 'failed'}`;
|
|
26805
27124
|
}
|
|
26806
27125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26807
|
-
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 }); }
|
|
27126
|
+
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 }); }
|
|
26808
27127
|
}
|
|
26809
27128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityItemComponent, decorators: [{
|
|
26810
27129
|
type: Component,
|
|
26811
|
-
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" }]
|
|
27130
|
+
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" }]
|
|
26812
27131
|
}], propDecorators: { name: [{
|
|
26813
27132
|
type: Input
|
|
26814
27133
|
}], value: [{
|
|
@@ -26819,7 +27138,6 @@ class MetadataQualityComponent {
|
|
|
26819
27138
|
constructor() {
|
|
26820
27139
|
this.smaller = false;
|
|
26821
27140
|
this.items = [];
|
|
26822
|
-
this.isMenuShown = false;
|
|
26823
27141
|
}
|
|
26824
27142
|
get qualityScore() {
|
|
26825
27143
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -26830,12 +27148,6 @@ class MetadataQualityComponent {
|
|
|
26830
27148
|
get calculatedQualityScore() {
|
|
26831
27149
|
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
26832
27150
|
}
|
|
26833
|
-
showMenu() {
|
|
26834
|
-
this.isMenuShown = true;
|
|
26835
|
-
}
|
|
26836
|
-
hideMenu() {
|
|
26837
|
-
this.isMenuShown = false;
|
|
26838
|
-
}
|
|
26839
27151
|
add(name, value) {
|
|
26840
27152
|
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
26841
27153
|
this.items.push({ name, value });
|
|
@@ -26859,11 +27171,11 @@ class MetadataQualityComponent {
|
|
|
26859
27171
|
}
|
|
26860
27172
|
}
|
|
26861
27173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26862
|
-
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
|
|
27174
|
+
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 }); }
|
|
26863
27175
|
}
|
|
26864
27176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
26865
27177
|
type: Component,
|
|
26866
|
-
args: [{ selector: 'gn-ui-metadata-quality', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
27178
|
+
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"] }]
|
|
26867
27179
|
}], propDecorators: { metadata: [{
|
|
26868
27180
|
type: Input
|
|
26869
27181
|
}], smaller: [{
|
|
@@ -27058,7 +27370,7 @@ class ApiCardComponent {
|
|
|
27058
27370
|
}
|
|
27059
27371
|
}
|
|
27060
27372
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27061
|
-
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:
|
|
27373
|
+
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 }); }
|
|
27062
27374
|
}
|
|
27063
27375
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
27064
27376
|
type: Component,
|
|
@@ -27274,11 +27586,11 @@ class MarkdownParserComponent {
|
|
|
27274
27586
|
return marked.parse(this.textContent);
|
|
27275
27587
|
}
|
|
27276
27588
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27277
|
-
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:
|
|
27589
|
+
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 }); }
|
|
27278
27590
|
}
|
|
27279
27591
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
27280
27592
|
type: Component,
|
|
27281
|
-
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:
|
|
27593
|
+
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"] }]
|
|
27282
27594
|
}], propDecorators: { textContent: [{
|
|
27283
27595
|
type: Input
|
|
27284
27596
|
}] } });
|
|
@@ -27293,7 +27605,7 @@ class MarkdownEditorComponent {
|
|
|
27293
27605
|
this.textContentChanged.emit(this.textContent);
|
|
27294
27606
|
}
|
|
27295
27607
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27296
|
-
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
|
|
27608
|
+
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 }); }
|
|
27297
27609
|
}
|
|
27298
27610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
27299
27611
|
type: Component,
|
|
@@ -27306,7 +27618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27306
27618
|
TextAreaComponent,
|
|
27307
27619
|
MarkdownParserComponent,
|
|
27308
27620
|
TranslateModule,
|
|
27309
|
-
], template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27621
|
+
], 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" }]
|
|
27310
27622
|
}], propDecorators: { preview: [{
|
|
27311
27623
|
type: Input
|
|
27312
27624
|
}], helperText: [{
|
|
@@ -27597,11 +27909,11 @@ class MetadataInfoComponent {
|
|
|
27597
27909
|
this.keyword.emit(keyword);
|
|
27598
27910
|
}
|
|
27599
27911
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27600
|
-
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 }); }
|
|
27912
|
+
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 }); }
|
|
27601
27913
|
}
|
|
27602
27914
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27603
27915
|
type: Component,
|
|
27604
|
-
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
|
|
27916
|
+
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"] }]
|
|
27605
27917
|
}], propDecorators: { metadata: [{
|
|
27606
27918
|
type: Input
|
|
27607
27919
|
}], incomplete: [{
|
|
@@ -27858,7 +28170,7 @@ class RecordApiFormComponent {
|
|
|
27858
28170
|
}
|
|
27859
28171
|
}
|
|
27860
28172
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27861
|
-
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:
|
|
28173
|
+
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 }); }
|
|
27862
28174
|
}
|
|
27863
28175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27864
28176
|
type: Component,
|
|
@@ -27886,7 +28198,7 @@ class RelatedRecordCardComponent {
|
|
|
27886
28198
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
27887
28199
|
}
|
|
27888
28200
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27889
|
-
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:
|
|
28201
|
+
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$7.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 }); }
|
|
27890
28202
|
}
|
|
27891
28203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27892
28204
|
type: Component,
|
|
@@ -28061,11 +28373,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28061
28373
|
|
|
28062
28374
|
class FormFieldWrapperComponent {
|
|
28063
28375
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28064
|
-
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:
|
|
28376
|
+
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 }); }
|
|
28065
28377
|
}
|
|
28066
28378
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28067
28379
|
type: Component,
|
|
28068
|
-
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" }]
|
|
28380
|
+
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" }]
|
|
28069
28381
|
}], propDecorators: { label: [{
|
|
28070
28382
|
type: Input
|
|
28071
28383
|
}], hint: [{
|
|
@@ -28317,11 +28629,11 @@ class UserPreviewComponent {
|
|
|
28317
28629
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
28318
28630
|
}
|
|
28319
28631
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28320
|
-
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-
|
|
28632
|
+
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 }); }
|
|
28321
28633
|
}
|
|
28322
28634
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
28323
28635
|
type: Component,
|
|
28324
|
-
args: [{ selector: 'gn-ui-user-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<figure class=\"text-center\">\n <div\n class=\"w-
|
|
28636
|
+
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" }]
|
|
28325
28637
|
}], propDecorators: { user: [{
|
|
28326
28638
|
type: Input
|
|
28327
28639
|
}], avatarPlaceholder: [{
|
|
@@ -28461,6 +28773,7 @@ class UiElementsModule {
|
|
|
28461
28773
|
UiInputsModule,
|
|
28462
28774
|
FormsModule,
|
|
28463
28775
|
NgOptimizedImage,
|
|
28776
|
+
PopoverComponent,
|
|
28464
28777
|
MarkdownParserComponent,
|
|
28465
28778
|
ThumbnailComponent,
|
|
28466
28779
|
TimeSincePipe,
|
|
@@ -28495,6 +28808,7 @@ class UiElementsModule {
|
|
|
28495
28808
|
RouterModule,
|
|
28496
28809
|
UiInputsModule,
|
|
28497
28810
|
FormsModule,
|
|
28811
|
+
PopoverComponent,
|
|
28498
28812
|
ThumbnailComponent,
|
|
28499
28813
|
BadgeComponent,
|
|
28500
28814
|
MaxLinesComponent] }); }
|
|
@@ -28514,6 +28828,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28514
28828
|
UiInputsModule,
|
|
28515
28829
|
FormsModule,
|
|
28516
28830
|
NgOptimizedImage,
|
|
28831
|
+
PopoverComponent,
|
|
28517
28832
|
MarkdownParserComponent,
|
|
28518
28833
|
ThumbnailComponent,
|
|
28519
28834
|
TimeSincePipe,
|
|
@@ -28670,6 +28985,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28670
28985
|
}]
|
|
28671
28986
|
}] });
|
|
28672
28987
|
|
|
28988
|
+
class ActionMenuComponent {
|
|
28989
|
+
constructor() {
|
|
28990
|
+
this.duplicate = new EventEmitter();
|
|
28991
|
+
}
|
|
28992
|
+
openMenu() {
|
|
28993
|
+
this.trigger.openMenu();
|
|
28994
|
+
}
|
|
28995
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28996
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", outputs: { duplicate: "duplicate" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\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 (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</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: i2$4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i2$4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28997
|
+
}
|
|
28998
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
28999
|
+
type: Component,
|
|
29000
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [MatIconModule, ButtonComponent, MatMenuModule, TranslateModule], template: "<gn-ui-button\n type=\"outline\"\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 (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n</mat-menu>\n" }]
|
|
29001
|
+
}], propDecorators: { duplicate: [{
|
|
29002
|
+
type: Output
|
|
29003
|
+
}], trigger: [{
|
|
29004
|
+
type: ViewChild,
|
|
29005
|
+
args: [MatMenuTrigger]
|
|
29006
|
+
}] } });
|
|
29007
|
+
|
|
28673
29008
|
class ResultsTableComponent {
|
|
28674
29009
|
constructor() {
|
|
28675
29010
|
this.records = [];
|
|
@@ -28679,6 +29014,7 @@ class ResultsTableComponent {
|
|
|
28679
29014
|
// emits the column (field) as well as the order
|
|
28680
29015
|
this.sortByChange = new EventEmitter();
|
|
28681
29016
|
this.recordClick = new EventEmitter();
|
|
29017
|
+
this.duplicateRecord = new EventEmitter();
|
|
28682
29018
|
this.recordsSelectedChange = new EventEmitter();
|
|
28683
29019
|
}
|
|
28684
29020
|
dateToString(date) {
|
|
@@ -28713,6 +29049,9 @@ class ResultsTableComponent {
|
|
|
28713
29049
|
handleRecordClick(item) {
|
|
28714
29050
|
this.recordClick.emit(item);
|
|
28715
29051
|
}
|
|
29052
|
+
handleDuplicate(item) {
|
|
29053
|
+
this.duplicateRecord.emit(item);
|
|
29054
|
+
}
|
|
28716
29055
|
setSortBy(col, order) {
|
|
28717
29056
|
this.sortByChange.emit([col, order]);
|
|
28718
29057
|
}
|
|
@@ -28748,7 +29087,7 @@ class ResultsTableComponent {
|
|
|
28748
29087
|
return !allSelected && someSelected;
|
|
28749
29088
|
}
|
|
28750
29089
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28751
|
-
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", recordHasDraft: "recordHasDraft" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", 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=\"recordHasDraft(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</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"] }] }); }
|
|
29090
|
+
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", recordHasDraft: "recordHasDraft" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", 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=\"recordHasDraft(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 (duplicate)=\"handleDuplicate(item)\">\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", outputs: ["duplicate"] }] }); }
|
|
28752
29091
|
}
|
|
28753
29092
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28754
29093
|
type: Component,
|
|
@@ -28760,7 +29099,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28760
29099
|
MatIconModule,
|
|
28761
29100
|
TranslateModule,
|
|
28762
29101
|
BadgeComponent,
|
|
28763
|
-
|
|
29102
|
+
ActionMenuComponent,
|
|
29103
|
+
], 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=\"recordHasDraft(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 (duplicate)=\"handleDuplicate(item)\">\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
28764
29104
|
}], propDecorators: { records: [{
|
|
28765
29105
|
type: Input
|
|
28766
29106
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -28773,6 +29113,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28773
29113
|
type: Output
|
|
28774
29114
|
}], recordClick: [{
|
|
28775
29115
|
type: Output
|
|
29116
|
+
}], duplicateRecord: [{
|
|
29117
|
+
type: Output
|
|
28776
29118
|
}], recordsSelectedChange: [{
|
|
28777
29119
|
type: Output
|
|
28778
29120
|
}] } });
|
|
@@ -30754,6 +31096,7 @@ class ResultsTableContainerComponent {
|
|
|
30754
31096
|
this.selectionService = selectionService;
|
|
30755
31097
|
this.recordsRepository = recordsRepository;
|
|
30756
31098
|
this.recordClick = new EventEmitter();
|
|
31099
|
+
this.duplicateRecord = new EventEmitter();
|
|
30757
31100
|
this.records$ = this.searchFacade.results$;
|
|
30758
31101
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
30759
31102
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
@@ -30762,6 +31105,9 @@ class ResultsTableContainerComponent {
|
|
|
30762
31105
|
handleRecordClick(item) {
|
|
30763
31106
|
this.recordClick.emit(item);
|
|
30764
31107
|
}
|
|
31108
|
+
handleDuplicateRecord(item) {
|
|
31109
|
+
this.duplicateRecord.emit(item);
|
|
31110
|
+
}
|
|
30765
31111
|
handleSortByChange(col, order) {
|
|
30766
31112
|
this.searchService.setSortBy([order, col]);
|
|
30767
31113
|
}
|
|
@@ -30774,13 +31120,15 @@ class ResultsTableContainerComponent {
|
|
|
30774
31120
|
}
|
|
30775
31121
|
}
|
|
30776
31122
|
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 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30777
|
-
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" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($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", "recordHasDraft"], outputs: ["sortByChange", "recordClick", "recordsSelectedChange"] }] }); }
|
|
31123
|
+
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 [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($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", "recordHasDraft"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "recordsSelectedChange"] }] }); }
|
|
30778
31124
|
}
|
|
30779
31125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
30780
31126
|
type: Component,
|
|
30781
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
31127
|
+
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
30782
31128
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
30783
31129
|
type: Output
|
|
31130
|
+
}], duplicateRecord: [{
|
|
31131
|
+
type: Output
|
|
30784
31132
|
}] } });
|
|
30785
31133
|
|
|
30786
31134
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
@@ -31822,7 +32170,7 @@ class TableComponent {
|
|
|
31822
32170
|
return rowIdPrefix + id;
|
|
31823
32171
|
}
|
|
31824
32172
|
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 }); }
|
|
31825
|
-
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$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$
|
|
32173
|
+
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$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$6.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.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 }); }
|
|
31826
32174
|
}
|
|
31827
32175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
31828
32176
|
type: Component,
|
|
@@ -34223,75 +34571,169 @@ const saveRecord = createAction('[Editor] Save record');
|
|
|
34223
34571
|
const saveRecordSuccess = createAction('[Editor] Save record success');
|
|
34224
34572
|
const saveRecordFailure = createAction('[Editor] Save record failure', props());
|
|
34225
34573
|
const draftSaveSuccess = createAction('[Editor] Draft save success');
|
|
34574
|
+
const setCurrentPage = createAction('[Editor] Set current page', props());
|
|
34226
34575
|
|
|
34227
|
-
|
|
34228
|
-
|
|
34229
|
-
|
|
34230
|
-
|
|
34231
|
-
|
|
34232
|
-
|
|
34233
|
-
|
|
34576
|
+
/**
|
|
34577
|
+
* This file contains the configuration of the fields that will be displayed in the editor.
|
|
34578
|
+
* To add a new field, you need to create a new EditorField object in the fields part of this file.
|
|
34579
|
+
* Then add it to the corresponding section in the sections part of this file.
|
|
34580
|
+
* Finally, add the section to the corresponding page in the pages part of this file.
|
|
34581
|
+
*/
|
|
34582
|
+
/************************************************************
|
|
34583
|
+
*************** FIELDS *****************
|
|
34584
|
+
************************************************************
|
|
34585
|
+
*/
|
|
34586
|
+
const RECORD_LICENSE_FIELD = {
|
|
34587
|
+
model: 'licenses',
|
|
34588
|
+
formFieldConfig: {
|
|
34589
|
+
labelKey: marker('editor.record.form.field.license'),
|
|
34234
34590
|
},
|
|
34235
|
-
|
|
34236
|
-
|
|
34237
|
-
|
|
34238
|
-
|
|
34239
|
-
|
|
34240
|
-
},
|
|
34591
|
+
};
|
|
34592
|
+
const RECORD_KEYWORDS_FIELD = {
|
|
34593
|
+
model: 'keywords',
|
|
34594
|
+
formFieldConfig: {
|
|
34595
|
+
labelKey: marker('editor.record.form.field.keywords'),
|
|
34241
34596
|
},
|
|
34242
|
-
|
|
34243
|
-
|
|
34244
|
-
|
|
34245
|
-
|
|
34246
|
-
|
|
34247
|
-
|
|
34248
|
-
},
|
|
34597
|
+
};
|
|
34598
|
+
const RECORD_UNIQUE_IDENTIFIER_FIELD = {
|
|
34599
|
+
model: 'uniqueIdentifier',
|
|
34600
|
+
formFieldConfig: {
|
|
34601
|
+
labelKey: marker('editor.record.form.field.uniqueIdentifier'),
|
|
34602
|
+
locked: true,
|
|
34249
34603
|
},
|
|
34250
|
-
|
|
34251
|
-
|
|
34252
|
-
|
|
34253
|
-
|
|
34254
|
-
|
|
34255
|
-
locked: true,
|
|
34256
|
-
},
|
|
34257
|
-
onSaveProcess: '${dateNow()}',
|
|
34604
|
+
};
|
|
34605
|
+
const RECORD_RESOURCE_UPDATED_FIELD = {
|
|
34606
|
+
model: 'resourceUpdated',
|
|
34607
|
+
formFieldConfig: {
|
|
34608
|
+
labelKey: marker('editor.record.form.field.resourceUpdated'),
|
|
34258
34609
|
},
|
|
34259
|
-
|
|
34260
|
-
|
|
34261
|
-
|
|
34262
|
-
|
|
34263
|
-
|
|
34264
|
-
|
|
34610
|
+
};
|
|
34611
|
+
const RECORD_UPDATED_FIELD = {
|
|
34612
|
+
model: 'recordUpdated',
|
|
34613
|
+
formFieldConfig: {
|
|
34614
|
+
labelKey: marker('editor.record.form.field.recordUpdated'),
|
|
34615
|
+
locked: true,
|
|
34265
34616
|
},
|
|
34266
|
-
{
|
|
34267
|
-
|
|
34268
|
-
|
|
34269
|
-
|
|
34270
|
-
|
|
34271
|
-
|
|
34617
|
+
onSaveProcess: '${dateNow()}',
|
|
34618
|
+
};
|
|
34619
|
+
const RECORD_UPDATE_FREQUENCY_FIELD = {
|
|
34620
|
+
model: 'updateFrequency',
|
|
34621
|
+
formFieldConfig: {
|
|
34622
|
+
labelKey: marker('editor.record.form.field.updateFrequency'),
|
|
34272
34623
|
},
|
|
34273
|
-
|
|
34274
|
-
|
|
34275
|
-
|
|
34276
|
-
|
|
34277
|
-
|
|
34278
|
-
},
|
|
34624
|
+
};
|
|
34625
|
+
const RECORD_TEMPORAL_EXTENTS_FIELD = {
|
|
34626
|
+
model: 'temporalExtents',
|
|
34627
|
+
formFieldConfig: {
|
|
34628
|
+
labelKey: marker('editor.record.form.field.temporalExtents'),
|
|
34279
34629
|
},
|
|
34280
|
-
|
|
34281
|
-
|
|
34282
|
-
|
|
34283
|
-
|
|
34284
|
-
|
|
34285
|
-
},
|
|
34630
|
+
};
|
|
34631
|
+
const RECORD_TITLE_FIELD = {
|
|
34632
|
+
model: 'title',
|
|
34633
|
+
formFieldConfig: {
|
|
34634
|
+
labelKey: marker('editor.record.form.field.title'),
|
|
34286
34635
|
},
|
|
34287
|
-
|
|
34288
|
-
|
|
34289
|
-
|
|
34290
|
-
|
|
34291
|
-
|
|
34292
|
-
},
|
|
34636
|
+
};
|
|
34637
|
+
const RECORD_ABSTRACT_FIELD = {
|
|
34638
|
+
model: 'abstract',
|
|
34639
|
+
formFieldConfig: {
|
|
34640
|
+
labelKey: marker('editor.record.form.field.abstract'),
|
|
34293
34641
|
},
|
|
34294
|
-
|
|
34642
|
+
};
|
|
34643
|
+
const RECORD_GRAPHICAL_OVERVIEW_FIELD = {
|
|
34644
|
+
model: 'overviews',
|
|
34645
|
+
formFieldConfig: {
|
|
34646
|
+
labelKey: marker('editor.record.form.field.overviews'),
|
|
34647
|
+
},
|
|
34648
|
+
};
|
|
34649
|
+
/************************************************************
|
|
34650
|
+
*************** SECTIONS *****************
|
|
34651
|
+
************************************************************
|
|
34652
|
+
*/
|
|
34653
|
+
const TITLE_SECTION = {
|
|
34654
|
+
hidden: false,
|
|
34655
|
+
fields: [
|
|
34656
|
+
RECORD_TITLE_FIELD,
|
|
34657
|
+
RECORD_ABSTRACT_FIELD,
|
|
34658
|
+
RECORD_GRAPHICAL_OVERVIEW_FIELD,
|
|
34659
|
+
],
|
|
34660
|
+
};
|
|
34661
|
+
const ABOUT_SECTION = {
|
|
34662
|
+
labelKey: marker('editor.record.form.section.about.label'),
|
|
34663
|
+
descriptionKey: marker('editor.record.form.section.about.description'),
|
|
34664
|
+
hidden: false,
|
|
34665
|
+
fields: [
|
|
34666
|
+
RECORD_UNIQUE_IDENTIFIER_FIELD,
|
|
34667
|
+
RECORD_RESOURCE_UPDATED_FIELD,
|
|
34668
|
+
RECORD_UPDATED_FIELD,
|
|
34669
|
+
RECORD_UPDATE_FREQUENCY_FIELD,
|
|
34670
|
+
RECORD_TEMPORAL_EXTENTS_FIELD,
|
|
34671
|
+
],
|
|
34672
|
+
};
|
|
34673
|
+
const GEOGRAPHICAL_COVERAGE_SECTION = {
|
|
34674
|
+
labelKey: marker('editor.record.form.section.geographicalCoverage.label'),
|
|
34675
|
+
hidden: false,
|
|
34676
|
+
fields: [],
|
|
34677
|
+
};
|
|
34678
|
+
const ASSOCIATED_RESOURCES_SECTION = {
|
|
34679
|
+
labelKey: marker('editor.record.form.section.associatedResources.label'),
|
|
34680
|
+
descriptionKey: marker('editor.record.form.section.associatedResources.description'),
|
|
34681
|
+
hidden: false,
|
|
34682
|
+
fields: [],
|
|
34683
|
+
};
|
|
34684
|
+
const ANNEXES_SECTION = {
|
|
34685
|
+
labelKey: marker('editor.record.form.section.annexes.label'),
|
|
34686
|
+
hidden: false,
|
|
34687
|
+
fields: [],
|
|
34688
|
+
};
|
|
34689
|
+
const CLASSIFICATION_SECTION = {
|
|
34690
|
+
labelKey: marker('editor.record.form.section.classification.label'),
|
|
34691
|
+
descriptionKey: marker('editor.record.form.section.classification.description'),
|
|
34692
|
+
hidden: false,
|
|
34693
|
+
fields: [RECORD_KEYWORDS_FIELD],
|
|
34694
|
+
};
|
|
34695
|
+
const USE_AND_ACCESS_CONDITIONS_SECTION = {
|
|
34696
|
+
labelKey: marker('editor.record.form.section.useAndAccessConditions.label'),
|
|
34697
|
+
hidden: false,
|
|
34698
|
+
fields: [RECORD_LICENSE_FIELD],
|
|
34699
|
+
};
|
|
34700
|
+
const DATA_MANAGERS_SECTION = {
|
|
34701
|
+
labelKey: marker('editor.record.form.section.dataManagers.label'),
|
|
34702
|
+
descriptionKey: marker('editor.record.form.section.dataManagers.description'),
|
|
34703
|
+
hidden: false,
|
|
34704
|
+
fields: [],
|
|
34705
|
+
};
|
|
34706
|
+
const DATA_POINT_OF_CONTACT_SECTION = {
|
|
34707
|
+
labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
|
|
34708
|
+
descriptionKey: marker('editor.record.form.section.dataPointOfContact.description'),
|
|
34709
|
+
hidden: false,
|
|
34710
|
+
fields: [],
|
|
34711
|
+
};
|
|
34712
|
+
/************************************************************
|
|
34713
|
+
*************** PAGES *****************
|
|
34714
|
+
************************************************************
|
|
34715
|
+
*/
|
|
34716
|
+
const DEFAULT_CONFIGURATION = {
|
|
34717
|
+
pages: [
|
|
34718
|
+
{
|
|
34719
|
+
labelKey: marker('editor.record.form.page.description'),
|
|
34720
|
+
sections: [TITLE_SECTION, ABOUT_SECTION, GEOGRAPHICAL_COVERAGE_SECTION],
|
|
34721
|
+
},
|
|
34722
|
+
{
|
|
34723
|
+
labelKey: marker('editor.record.form.page.ressources'),
|
|
34724
|
+
sections: [ASSOCIATED_RESOURCES_SECTION, ANNEXES_SECTION],
|
|
34725
|
+
},
|
|
34726
|
+
{
|
|
34727
|
+
labelKey: marker('editor.record.form.page.accessAndContact'),
|
|
34728
|
+
sections: [
|
|
34729
|
+
CLASSIFICATION_SECTION,
|
|
34730
|
+
USE_AND_ACCESS_CONDITIONS_SECTION,
|
|
34731
|
+
DATA_MANAGERS_SECTION,
|
|
34732
|
+
DATA_POINT_OF_CONTACT_SECTION,
|
|
34733
|
+
],
|
|
34734
|
+
},
|
|
34735
|
+
],
|
|
34736
|
+
};
|
|
34295
34737
|
|
|
34296
34738
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
34297
34739
|
const initialEditorState = {
|
|
@@ -34301,7 +34743,8 @@ const initialEditorState = {
|
|
|
34301
34743
|
saving: false,
|
|
34302
34744
|
saveError: null,
|
|
34303
34745
|
changedSinceSave: false,
|
|
34304
|
-
|
|
34746
|
+
editorConfig: DEFAULT_CONFIGURATION,
|
|
34747
|
+
currentPage: 0,
|
|
34305
34748
|
};
|
|
34306
34749
|
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record, recordSource, alreadySavedOnce }) => ({
|
|
34307
34750
|
...state,
|
|
@@ -34331,6 +34774,9 @@ const reducer = createReducer(initialEditorState, on(openRecord, (state, { recor
|
|
|
34331
34774
|
})), on(markRecordAsChanged, (state) => ({
|
|
34332
34775
|
...state,
|
|
34333
34776
|
changedSinceSave: true,
|
|
34777
|
+
})), on(setCurrentPage, (state, { page }) => ({
|
|
34778
|
+
...state,
|
|
34779
|
+
currentPage: page,
|
|
34334
34780
|
})));
|
|
34335
34781
|
function editorReducer(state, action) {
|
|
34336
34782
|
return reducer(state, action);
|
|
@@ -34343,11 +34789,21 @@ const selectRecordSaving = createSelector(selectEditorState, (state) => state.sa
|
|
|
34343
34789
|
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
34344
34790
|
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
34345
34791
|
const selectRecordAlreadySavedOnce = createSelector(selectEditorState, (state) => state.alreadySavedOnce);
|
|
34346
|
-
const
|
|
34347
|
-
const
|
|
34348
|
-
|
|
34349
|
-
|
|
34350
|
-
|
|
34792
|
+
const selectEditorConfig = createSelector(selectEditorState, (state) => state.editorConfig);
|
|
34793
|
+
const selectCurrentPage = createSelector(selectEditorState, (state) => state.currentPage);
|
|
34794
|
+
const selectRecordSections = createSelector(selectEditorState, (state) => {
|
|
34795
|
+
const currentPage = state.editorConfig.pages[state.currentPage];
|
|
34796
|
+
if (!currentPage) {
|
|
34797
|
+
return [];
|
|
34798
|
+
}
|
|
34799
|
+
return currentPage.sections.map((section) => ({
|
|
34800
|
+
...section,
|
|
34801
|
+
fieldsWithValues: section.fields.map((fieldConfig) => ({
|
|
34802
|
+
config: fieldConfig,
|
|
34803
|
+
value: state.record?.[fieldConfig.model] ?? null,
|
|
34804
|
+
})),
|
|
34805
|
+
}));
|
|
34806
|
+
});
|
|
34351
34807
|
|
|
34352
34808
|
class EditorFacade {
|
|
34353
34809
|
constructor() {
|
|
@@ -34360,8 +34816,10 @@ class EditorFacade {
|
|
|
34360
34816
|
this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
|
|
34361
34817
|
this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
|
|
34362
34818
|
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
34363
|
-
this.
|
|
34819
|
+
this.currentSections$ = this.store.pipe(select(selectRecordSections));
|
|
34364
34820
|
this.draftSaveSuccess$ = this.actions$.pipe(ofType(draftSaveSuccess));
|
|
34821
|
+
this.currentPage$ = this.store.pipe(select(selectCurrentPage));
|
|
34822
|
+
this.editorConfig$ = this.store.pipe(select(selectEditorConfig));
|
|
34365
34823
|
}
|
|
34366
34824
|
openRecord(record, recordSource, alreadySavedOnce) {
|
|
34367
34825
|
this.store.dispatch(openRecord({ record, recordSource, alreadySavedOnce }));
|
|
@@ -34372,6 +34830,9 @@ class EditorFacade {
|
|
|
34372
34830
|
updateRecordField(field, value) {
|
|
34373
34831
|
this.store.dispatch(updateRecordField({ field, value }));
|
|
34374
34832
|
}
|
|
34833
|
+
setCurrentPage(page) {
|
|
34834
|
+
this.store.dispatch(setCurrentPage({ page }));
|
|
34835
|
+
}
|
|
34375
34836
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34376
34837
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade }); }
|
|
34377
34838
|
}
|
|
@@ -34399,12 +34860,13 @@ class EditorService {
|
|
|
34399
34860
|
// returns the record as it was when saved, alongside its source
|
|
34400
34861
|
saveRecord(record, fieldsConfig, generateNewUniqueIdentifier = false) {
|
|
34401
34862
|
const savedRecord = { ...record };
|
|
34863
|
+
const fields = fieldsConfig.pages.flatMap((page) => page.sections.flatMap((section) => section.fields));
|
|
34402
34864
|
// run onSave processes
|
|
34403
|
-
for (const field of
|
|
34865
|
+
for (const field of fields) {
|
|
34404
34866
|
if (field.onSaveProcess && field.model) {
|
|
34405
34867
|
const evaluator = evaluate(field.onSaveProcess);
|
|
34406
34868
|
savedRecord[field.model] = evaluator({
|
|
34407
|
-
|
|
34869
|
+
model: field.model,
|
|
34408
34870
|
value: record[field.model],
|
|
34409
34871
|
});
|
|
34410
34872
|
}
|
|
@@ -34441,7 +34903,7 @@ class EditorEffects {
|
|
|
34441
34903
|
this.editorService = inject(EditorService);
|
|
34442
34904
|
this.recordsRepository = inject(RecordsRepositoryInterface);
|
|
34443
34905
|
this.store = inject(Store);
|
|
34444
|
-
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(
|
|
34906
|
+
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectEditorConfig), this.store.select(selectRecordAlreadySavedOnce)), switchMap$1(([, record, fieldsConfig, alreadySavedOnce]) => this.editorService
|
|
34445
34907
|
.saveRecord(record, fieldsConfig, !alreadySavedOnce)
|
|
34446
34908
|
.pipe(switchMap$1(([record, recordSource]) => of(saveRecordSuccess(), openRecord({
|
|
34447
34909
|
record,
|
|
@@ -34682,7 +35144,7 @@ class WizardFieldComponent {
|
|
|
34682
35144
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
34683
35145
|
},
|
|
34684
35146
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
34685
|
-
], 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$
|
|
35147
|
+
], 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 }); }
|
|
34686
35148
|
}
|
|
34687
35149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
34688
35150
|
type: Component,
|
|
@@ -35347,13 +35809,161 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35347
35809
|
type: Input
|
|
35348
35810
|
}] } });
|
|
35349
35811
|
|
|
35812
|
+
const extractFileNameFromUrl = (url) => {
|
|
35813
|
+
const pattern = new RegExp(`attachments/([^/?#]+)(?:[/?#]|$)`, 'i');
|
|
35814
|
+
const match = url.match(pattern);
|
|
35815
|
+
return match ? match[1] : '';
|
|
35816
|
+
};
|
|
35817
|
+
class OverviewUploadComponent {
|
|
35818
|
+
constructor(recordsApiService, cd) {
|
|
35819
|
+
this.recordsApiService = recordsApiService;
|
|
35820
|
+
this.cd = cd;
|
|
35821
|
+
this.overviewChange = new EventEmitter();
|
|
35822
|
+
this.altTextChange = new EventEmitter();
|
|
35823
|
+
this.resourceAltText = ''; // = ressourceFileName by default
|
|
35824
|
+
this.resourceFileName = '';
|
|
35825
|
+
this.errorHandle = (error) => {
|
|
35826
|
+
console.error(error);
|
|
35827
|
+
this.resourceUrl = null;
|
|
35828
|
+
this.resourceAltText = '';
|
|
35829
|
+
this.resourceFileName = '';
|
|
35830
|
+
this.overviewChange.emit(null);
|
|
35831
|
+
this.cd.markForCheck();
|
|
35832
|
+
};
|
|
35833
|
+
}
|
|
35834
|
+
ngOnInit() {
|
|
35835
|
+
this.recordsApiService.getAllResources(this.metadataUuid).subscribe({
|
|
35836
|
+
next: (resources) => {
|
|
35837
|
+
if (resources && resources.length > 0) {
|
|
35838
|
+
this.resourceUrl = new URL(resources[0]?.url);
|
|
35839
|
+
this.resourceAltText =
|
|
35840
|
+
this.resourceAltText === ''
|
|
35841
|
+
? resources[0].filename
|
|
35842
|
+
: this.resourceAltText;
|
|
35843
|
+
this.resourceFileName = extractFileNameFromUrl(resources[0]?.url);
|
|
35844
|
+
}
|
|
35845
|
+
else {
|
|
35846
|
+
this.resourceUrl = null;
|
|
35847
|
+
this.resourceAltText = '';
|
|
35848
|
+
this.resourceFileName = '';
|
|
35849
|
+
}
|
|
35850
|
+
this.cd.markForCheck();
|
|
35851
|
+
},
|
|
35852
|
+
error: this.errorHandle,
|
|
35853
|
+
});
|
|
35854
|
+
}
|
|
35855
|
+
handleFileChange(file) {
|
|
35856
|
+
this.recordsApiService
|
|
35857
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
35858
|
+
.subscribe({
|
|
35859
|
+
next: (resource) => {
|
|
35860
|
+
this.resourceUrl = new URL(resource.url);
|
|
35861
|
+
this.resourceAltText = resource.filename;
|
|
35862
|
+
this.overviewChange.emit({
|
|
35863
|
+
url: new URL(resource.url),
|
|
35864
|
+
description: resource.filename,
|
|
35865
|
+
});
|
|
35866
|
+
this.cd.markForCheck();
|
|
35867
|
+
},
|
|
35868
|
+
error: this.errorHandle,
|
|
35869
|
+
});
|
|
35870
|
+
}
|
|
35871
|
+
handleUrlChange(url) {
|
|
35872
|
+
this.recordsApiService
|
|
35873
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
35874
|
+
.subscribe({
|
|
35875
|
+
next: (resource) => {
|
|
35876
|
+
this.resourceUrl = new URL(resource.url);
|
|
35877
|
+
this.resourceAltText = resource.filename;
|
|
35878
|
+
this.overviewChange.emit({
|
|
35879
|
+
url: new URL(resource.url),
|
|
35880
|
+
description: resource.filename,
|
|
35881
|
+
});
|
|
35882
|
+
this.cd.markForCheck();
|
|
35883
|
+
},
|
|
35884
|
+
error: this.errorHandle,
|
|
35885
|
+
});
|
|
35886
|
+
}
|
|
35887
|
+
handleAltTextChange(newAltText) {
|
|
35888
|
+
this.resourceAltText = newAltText;
|
|
35889
|
+
this.overviewChange.emit({
|
|
35890
|
+
url: this.resourceUrl,
|
|
35891
|
+
description: this.resourceAltText,
|
|
35892
|
+
});
|
|
35893
|
+
this.cd.markForCheck();
|
|
35894
|
+
}
|
|
35895
|
+
handleDelete() {
|
|
35896
|
+
this.recordsApiService
|
|
35897
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
35898
|
+
.subscribe({
|
|
35899
|
+
next: () => {
|
|
35900
|
+
this.resourceAltText = null;
|
|
35901
|
+
this.resourceUrl = null;
|
|
35902
|
+
this.overviewChange.emit(null);
|
|
35903
|
+
this.cd.markForCheck();
|
|
35904
|
+
},
|
|
35905
|
+
error: this.errorHandle,
|
|
35906
|
+
});
|
|
35907
|
+
}
|
|
35908
|
+
ngOnChanges(changes) {
|
|
35909
|
+
const overviewChanges = changes['formControl'];
|
|
35910
|
+
if (overviewChanges &&
|
|
35911
|
+
overviewChanges.currentValue !== overviewChanges.previousValue) {
|
|
35912
|
+
let overview;
|
|
35913
|
+
if (overviewChanges.currentValue.value &&
|
|
35914
|
+
overviewChanges.currentValue.value.length > 0) {
|
|
35915
|
+
overview = overviewChanges.currentValue.value[0];
|
|
35916
|
+
}
|
|
35917
|
+
else {
|
|
35918
|
+
return;
|
|
35919
|
+
}
|
|
35920
|
+
if (overview.description && overview.description !== '') {
|
|
35921
|
+
this.resourceAltText = overview.description;
|
|
35922
|
+
this.cd.markForCheck();
|
|
35923
|
+
}
|
|
35924
|
+
}
|
|
35925
|
+
}
|
|
35926
|
+
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 }); }
|
|
35927
|
+
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 [formControl]=\"formControl\"\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: ["formControl", "maxSizeMB", "previewUrl", "altText", "uploadProgress", "uploadError"], outputs: ["fileChange", "urlChange", "uploadCancel", "delete", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35928
|
+
}
|
|
35929
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, decorators: [{
|
|
35930
|
+
type: Component,
|
|
35931
|
+
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 [formControl]=\"formControl\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n" }]
|
|
35932
|
+
}], ctorParameters: function () { return [{ type: RecordsApiService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { metadataUuid: [{
|
|
35933
|
+
type: Input
|
|
35934
|
+
}], formControl: [{
|
|
35935
|
+
type: Input
|
|
35936
|
+
}], overviewChange: [{
|
|
35937
|
+
type: Output
|
|
35938
|
+
}], altTextChange: [{
|
|
35939
|
+
type: Output
|
|
35940
|
+
}] } });
|
|
35941
|
+
|
|
35942
|
+
class FormFieldOverviewsComponent {
|
|
35943
|
+
handleOverviewChange(overView) {
|
|
35944
|
+
this.control.setValue(overView ? [overView] : []);
|
|
35945
|
+
}
|
|
35946
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35947
|
+
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 }); }
|
|
35948
|
+
}
|
|
35949
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
35950
|
+
type: Component,
|
|
35951
|
+
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" }]
|
|
35952
|
+
}], propDecorators: { metadataUuid: [{
|
|
35953
|
+
type: Input
|
|
35954
|
+
}], control: [{
|
|
35955
|
+
type: Input
|
|
35956
|
+
}] } });
|
|
35957
|
+
|
|
35350
35958
|
class FormFieldComponent {
|
|
35351
35959
|
set value(v) {
|
|
35352
35960
|
this.formControl.setValue(v, {
|
|
35353
35961
|
emitEvent: false,
|
|
35354
35962
|
});
|
|
35355
35963
|
}
|
|
35356
|
-
constructor() {
|
|
35964
|
+
constructor(facade) {
|
|
35965
|
+
this.facade = facade;
|
|
35966
|
+
this.metadataUuid$ = this.facade.record$.pipe(take(1), map$1((record) => record.uniqueIdentifier));
|
|
35357
35967
|
this.formControl = new FormControl();
|
|
35358
35968
|
this.valueChange = this.formControl.valueChanges;
|
|
35359
35969
|
}
|
|
@@ -35381,6 +35991,9 @@ class FormFieldComponent {
|
|
|
35381
35991
|
get isSpatialExtentField() {
|
|
35382
35992
|
return this.model === 'spatialExtents';
|
|
35383
35993
|
}
|
|
35994
|
+
get isGraphicOverview() {
|
|
35995
|
+
return this.model === 'overviews';
|
|
35996
|
+
}
|
|
35384
35997
|
get isSimpleField() {
|
|
35385
35998
|
return this.model === 'uniqueIdentifier' || this.model === 'recordUpdated';
|
|
35386
35999
|
}
|
|
@@ -35393,8 +36006,8 @@ class FormFieldComponent {
|
|
|
35393
36006
|
get withoutWrapper() {
|
|
35394
36007
|
return this.model === 'title' || this.model === 'abstract';
|
|
35395
36008
|
}
|
|
35396
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35397
|
-
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: "<div class=\"flex flex-col h-full\">\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 <
|
|
36009
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36010
|
+
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: "<div class=\"flex flex-col h-full\">\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-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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35398
36011
|
}
|
|
35399
36012
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
35400
36013
|
type: Component,
|
|
@@ -35417,8 +36030,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35417
36030
|
FormFieldArrayComponent,
|
|
35418
36031
|
FormFieldKeywordsComponent,
|
|
35419
36032
|
TranslateModule,
|
|
35420
|
-
|
|
35421
|
-
|
|
36033
|
+
FormFieldOverviewsComponent,
|
|
36034
|
+
], template: "<div class=\"flex flex-col h-full\">\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-template>\n" }]
|
|
36035
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; }, propDecorators: { model: [{
|
|
35422
36036
|
type: Input
|
|
35423
36037
|
}], config: [{
|
|
35424
36038
|
type: Input
|
|
@@ -35434,23 +36048,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35434
36048
|
class RecordFormComponent {
|
|
35435
36049
|
constructor(facade) {
|
|
35436
36050
|
this.facade = facade;
|
|
35437
|
-
this.fields$ = this.facade.recordFields$;
|
|
35438
36051
|
}
|
|
35439
|
-
handleFieldValueChange(
|
|
35440
|
-
if (!
|
|
36052
|
+
handleFieldValueChange(model, newValue) {
|
|
36053
|
+
if (!model) {
|
|
35441
36054
|
return;
|
|
35442
36055
|
}
|
|
35443
|
-
|
|
36056
|
+
console.log(newValue);
|
|
36057
|
+
this.facade.updateRecordField(model, newValue);
|
|
35444
36058
|
}
|
|
35445
36059
|
fieldTracker(index, field) {
|
|
35446
36060
|
return field.config.model;
|
|
35447
36061
|
}
|
|
36062
|
+
sectionTracker(index, section) {
|
|
36063
|
+
return section.labelKey;
|
|
36064
|
+
}
|
|
35448
36065
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35449
|
-
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: "<div class=\"flex flex-col gap-6 p-
|
|
36066
|
+
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-petrona 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 }); }
|
|
35450
36067
|
}
|
|
35451
36068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
35452
36069
|
type: Component,
|
|
35453
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-
|
|
36070
|
+
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-petrona 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" }]
|
|
35454
36071
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
35455
36072
|
|
|
35456
36073
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -35790,7 +36407,7 @@ class DefaultRouterModule {
|
|
|
35790
36407
|
};
|
|
35791
36408
|
}
|
|
35792
36409
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
35793
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
36410
|
+
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$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
35794
36411
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
35795
36412
|
RouterFacade,
|
|
35796
36413
|
{
|
|
@@ -35833,5 +36450,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35833
36450
|
* Generated bundle index. Do not edit.
|
|
35834
36451
|
*/
|
|
35835
36452
|
|
|
35836
|
-
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, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave,
|
|
36453
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseConverter, 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, MetadataMapperContext, 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 };
|
|
35837
36454
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|