geonetwork-ui 2.2.0-dev.4db0b597 → 2.2.0-dev.54d2ced0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +27 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +49 -58
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +5 -4
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +20 -17
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +52 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -22
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +4 -4
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -6
- package/esm2022/translations/de.json +3 -2
- package/esm2022/translations/en.json +5 -4
- package/esm2022/translations/es.json +3 -2
- package/esm2022/translations/fr.json +5 -4
- package/esm2022/translations/it.json +5 -4
- package/esm2022/translations/nl.json +3 -2
- package/esm2022/translations/pt.json +3 -2
- package/fesm2022/geonetwork-ui.mjs +406 -239
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -5
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +6 -6
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +18 -12
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +10 -6
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -40
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +61 -8
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +55 -9
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +225 -24
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +29 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +80 -73
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +4 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +3 -5
- package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +24 -21
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +115 -62
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +169 -95
- package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +21 -14
- package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
- package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +50 -10
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -2
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +50 -23
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +37 -15
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +4 -4
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +11 -3
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/tailwind.base.config.js +3 -0
- package/tailwind.base.css +2 -2
- package/translations/de.json +3 -2
- package/translations/en.json +5 -4
- package/translations/es.json +3 -2
- package/translations/fr.json +5 -4
- package/translations/it.json +5 -4
- package/translations/nl.json +3 -2
- package/translations/pt.json +3 -2
- package/translations/sk.json +3 -2
|
@@ -8,7 +8,7 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap as switchMap$1, catchError, take,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, throttleTime, distinctUntilChanged, finalize, first, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
@@ -587,6 +587,20 @@ function matchMimeType(format) {
|
|
|
587
587
|
return format || null;
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
+
function getKeywordTypeFromKeywordTypeCode(typeCode) {
|
|
591
|
+
if (!typeCode)
|
|
592
|
+
return 'other';
|
|
593
|
+
switch (typeCode) {
|
|
594
|
+
case 'theme':
|
|
595
|
+
case 'place':
|
|
596
|
+
case 'temporal':
|
|
597
|
+
case 'other':
|
|
598
|
+
return typeCode;
|
|
599
|
+
default:
|
|
600
|
+
return 'other';
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
590
604
|
function extractCharacterString() {
|
|
591
605
|
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
592
606
|
}
|
|
@@ -649,28 +663,32 @@ function extractStatus() {
|
|
|
649
663
|
return pipe(findChildElement('gmd:MD_ProgressCode'), readAttribute('codeListValue'), map(getStatusFromStatusCode));
|
|
650
664
|
}
|
|
651
665
|
// from gmd:resourceConstraints
|
|
652
|
-
function
|
|
653
|
-
|
|
654
|
-
|
|
666
|
+
function extractLegalConstraints() {
|
|
667
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') === -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
668
|
+
...(url && { url }),
|
|
655
669
|
text,
|
|
656
|
-
type: 'other',
|
|
657
670
|
})));
|
|
658
|
-
|
|
671
|
+
}
|
|
672
|
+
// from gmd:resourceConstraints
|
|
673
|
+
function extractSecurityConstraints() {
|
|
674
|
+
return pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
675
|
+
...(url && { url }),
|
|
659
676
|
text,
|
|
660
|
-
type: 'security',
|
|
661
677
|
})));
|
|
662
|
-
return pipe(combine(getOtherConstraints, getSecurityConstraints), flattenArray());
|
|
663
678
|
}
|
|
664
679
|
// from gmd:resourceConstraints
|
|
665
|
-
function
|
|
666
|
-
return pipe(
|
|
680
|
+
function extractOtherConstraints() {
|
|
681
|
+
return pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
682
|
+
...(url && { url }),
|
|
683
|
+
text,
|
|
684
|
+
})));
|
|
667
685
|
}
|
|
668
686
|
// from gmd:resourceConstraints
|
|
669
687
|
function extractLicenses() {
|
|
670
|
-
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(
|
|
688
|
+
return pipe(findChildrenElement('gmd:MD_LegalConstraints', false), filterArray(pipe(findChildrenElement('gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), map((values) => values.indexOf('license') > -1))), mapArray(combine(findChildrenElement('gmd:otherConstraints'), findChildrenElement('gmd:useLimitation'))), flattenArray(), flattenArray(), mapArray(combine(extractCharacterString(), extractUrl())), mapArray(([text, url]) => ({
|
|
671
689
|
...(url && { url }),
|
|
672
690
|
text,
|
|
673
|
-
})))
|
|
691
|
+
})));
|
|
674
692
|
}
|
|
675
693
|
// from gmd:MD_Distribution
|
|
676
694
|
function extractDatasetDistributions() {
|
|
@@ -829,31 +847,55 @@ function readDatasetUpdated(rootEl) {
|
|
|
829
847
|
function readContacts(rootEl) {
|
|
830
848
|
return pipe(findIdentification(), combine(findChildrenElement('gmd:contact'), findChildrenElement('gmd:pointOfContact')), flattenArray(), mapArray(findChildElement('gmd:CI_ResponsibleParty', false)), mapArray(extractIndividuals()), flattenArray())(rootEl);
|
|
831
849
|
}
|
|
832
|
-
|
|
833
|
-
|
|
850
|
+
// from gmd:thesaurusName
|
|
851
|
+
function readThesaurus(rootEl) {
|
|
852
|
+
if (!rootEl)
|
|
853
|
+
return null;
|
|
854
|
+
const findIdentifier = findNestedElement('gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code');
|
|
855
|
+
const id = pipe(findIdentifier, extractCharacterString())(rootEl);
|
|
856
|
+
const url = pipe(findIdentifier, extractUrl())(rootEl);
|
|
857
|
+
const name = pipe(findNestedElement('gmd:CI_Citation', 'gmd:title'), extractCharacterString())(rootEl);
|
|
858
|
+
return {
|
|
859
|
+
id,
|
|
860
|
+
...(name && { name }),
|
|
861
|
+
...(url && { url }),
|
|
862
|
+
};
|
|
834
863
|
}
|
|
835
|
-
|
|
836
|
-
|
|
864
|
+
// from gmd:MD_Keywords
|
|
865
|
+
function readKeywordGroup(rootEl) {
|
|
866
|
+
const type = pipe(findChildrenElement('gmd:MD_KeywordTypeCode'), mapArray(readAttribute('codeListValue')), map((values) => getKeywordTypeFromKeywordTypeCode(values[0])))(rootEl);
|
|
867
|
+
const thesaurus = pipe(findNestedElement('gmd:thesaurusName'), readThesaurus)(rootEl);
|
|
868
|
+
return pipe(findChildrenElement('gmd:keyword'), mapArray((el) => {
|
|
869
|
+
const label = extractCharacterString()(el);
|
|
870
|
+
return {
|
|
871
|
+
...(thesaurus ? { thesaurus } : {}),
|
|
872
|
+
label,
|
|
873
|
+
type,
|
|
874
|
+
};
|
|
875
|
+
}))(rootEl);
|
|
837
876
|
}
|
|
838
|
-
function
|
|
839
|
-
return
|
|
877
|
+
function readKeywords(rootEl) {
|
|
878
|
+
return pipe(findIdentification(), findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'), mapArray(readKeywordGroup), flattenArray())(rootEl);
|
|
840
879
|
}
|
|
841
880
|
function readStatus(rootEl) {
|
|
842
881
|
return pipe(findIdentification(), findChildElement('gmd:status', false), extractStatus())(rootEl);
|
|
843
882
|
}
|
|
844
883
|
const getConstraints = pipe(findIdentification(), findChildrenElement('gmd:resourceConstraints', false));
|
|
845
|
-
function
|
|
846
|
-
return pipe(getConstraints, mapArray(
|
|
884
|
+
function readLegalConstraints(rootEl) {
|
|
885
|
+
return pipe(getConstraints, mapArray(extractLegalConstraints()), flattenArray(), flattenArray())(rootEl);
|
|
886
|
+
}
|
|
887
|
+
function readSecurityConstraints(rootEl) {
|
|
888
|
+
return pipe(getConstraints, mapArray(extractSecurityConstraints()), flattenArray())(rootEl);
|
|
847
889
|
}
|
|
848
|
-
function
|
|
849
|
-
return pipe(getConstraints, mapArray(
|
|
890
|
+
function readOtherConstraints(rootEl) {
|
|
891
|
+
return pipe(getConstraints, mapArray(extractOtherConstraints()), flattenArray())(rootEl);
|
|
850
892
|
}
|
|
851
893
|
function readLicenses(rootEl) {
|
|
852
894
|
return pipe(getConstraints, mapArray(extractLicenses()), flattenArray())(rootEl);
|
|
853
895
|
}
|
|
854
896
|
// not used yet
|
|
855
897
|
function readIsoTopics(rootEl) {
|
|
856
|
-
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode',
|
|
898
|
+
return pipe(findIdentification(), findChildrenElement('gmd:MD_TopicCategoryCode', true), mapArray(readText()))(rootEl);
|
|
857
899
|
}
|
|
858
900
|
function readSpatialRepresentation(rootEl) {
|
|
859
901
|
return pipe(findIdentification(), findNestedElement('gmd:spatialRepresentationType', 'gmd:MD_SpatialRepresentationTypeCode'), readAttribute('codeListValue'), map(getSpatialRepresentationFromCode))(rootEl);
|
|
@@ -1069,33 +1111,50 @@ function updateCitationDate(date, type) {
|
|
|
1069
1111
|
function appendCitationDate(date, type) {
|
|
1070
1112
|
return appendChildren(pipe(createElement('gmd:date'), createChild('gmd:CI_Date'), appendChildren(pipe(createElement('gmd:date'), writeDateTime(date)), pipe(createElement('gmd:dateType'), createChild('gmd:CI_DateTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'), addAttribute('codeListValue', type)))));
|
|
1071
1113
|
}
|
|
1072
|
-
function removeKeywords(
|
|
1073
|
-
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1114
|
+
function removeKeywords() {
|
|
1115
|
+
return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')));
|
|
1116
|
+
}
|
|
1117
|
+
// returns a <gmd:thesaurusName> element
|
|
1118
|
+
function createThesaurus(thesaurus) {
|
|
1119
|
+
return pipe(createElement('gmd:thesaurusName'), createChild('gmd:CI_Citation'), appendChildren(pipe(createElement('gmd:title'), writeCharacterString(thesaurus.name || thesaurus.id)), pipe(createElement('gmd:identifier'), createChild('gmd:MD_Identifier'), appendChildren(pipe(createElement('gmd:code'), thesaurus.url
|
|
1120
|
+
? writeAnchor(thesaurus.url, thesaurus.id)
|
|
1121
|
+
: writeCharacterString(thesaurus.id))))));
|
|
1122
|
+
}
|
|
1123
|
+
function appendKeywords(keywords) {
|
|
1124
|
+
const keywordsByThesaurus = keywords.reduce((acc, keyword) => {
|
|
1125
|
+
const thesaurusId = keyword.thesaurus?.id;
|
|
1126
|
+
const type = keyword.type;
|
|
1127
|
+
let existingGroup = acc.find((group) => group[0].thesaurus
|
|
1128
|
+
? group[0].thesaurus.id === thesaurusId
|
|
1129
|
+
: group[0].type === type);
|
|
1130
|
+
if (!existingGroup) {
|
|
1131
|
+
existingGroup = [];
|
|
1132
|
+
acc.push(existingGroup);
|
|
1133
|
+
}
|
|
1134
|
+
existingGroup.push(keyword);
|
|
1135
|
+
return acc;
|
|
1136
|
+
}, []);
|
|
1137
|
+
return appendChildren(...keywordsByThesaurus.map((keywords) => pipe(createElement('gmd:descriptiveKeywords'), createChild('gmd:MD_Keywords'), appendChildren(pipe(createElement('gmd:type'), createChild('gmd:MD_KeywordTypeCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_KeywordTypeCode'), addAttribute('codeListValue', keywords[0].type))), keywords[0].thesaurus
|
|
1138
|
+
? appendChildren(createThesaurus(keywords[0].thesaurus))
|
|
1139
|
+
: noop, appendChildren(...keywords.map((keyword) => pipe(createElement('gmd:keyword'), writeCharacterString(keyword.label)))))));
|
|
1140
|
+
}
|
|
1141
|
+
function createConstraint(constraint, type) {
|
|
1142
|
+
if (type === 'security') {
|
|
1090
1143
|
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_SecurityConstraints'), appendChildren(pipe(createElement('gmd:classification'), createChild('gmd:MD_ClassificationCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ClassificationCode'), addAttribute('codeListValue', 'restricted')), pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1091
1144
|
}
|
|
1092
|
-
|
|
1145
|
+
else if (type === 'legal') {
|
|
1146
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_LegalConstraints'), appendChildren(pipe(createElement('gmd:accessConstraints'), createChild('gmd:MD_RestrictionCode'), addAttribute('codeList', 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode'), addAttribute('codeListValue', 'otherRestrictions')), pipe(createElement('gmd:otherConstraints'), writeCharacterString(constraint.text))));
|
|
1147
|
+
}
|
|
1148
|
+
return pipe(createElement('gmd:resourceConstraints'), createChild('gmd:MD_Constraints'), appendChildren(pipe(createElement('gmd:useLimitation'), writeCharacterString(constraint.text))));
|
|
1093
1149
|
}
|
|
1094
|
-
function
|
|
1150
|
+
function removeOtherConstraints() {
|
|
1095
1151
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1096
1152
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return pipe(
|
|
1153
|
+
function removeSecurityConstraints() {
|
|
1154
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'), (array) => array.length > 0))));
|
|
1155
|
+
}
|
|
1156
|
+
function removeLegalConstraints() {
|
|
1157
|
+
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.every((code) => code !== 'license')))));
|
|
1099
1158
|
}
|
|
1100
1159
|
function removeLicenses() {
|
|
1101
1160
|
return removeChildren(pipe(findChildrenElement('gmd:resourceConstraints'), filterArray(pipe(findNestedElements('gmd:MD_LegalConstraints', 'gmd:accessConstraints', 'gmd:MD_RestrictionCode'), mapArray(readAttribute('codeListValue')), (restrictionCodes) => restrictionCodes.some((code) => code === 'license')))));
|
|
@@ -1194,19 +1253,22 @@ function writeContacts(record, rootEl) {
|
|
|
1194
1253
|
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:pointOfContact'), appendChildren(...record.contacts.map((contact) => pipe(createElement('gmd:pointOfContact'), appendResponsibleParty(contact)))))(rootEl);
|
|
1195
1254
|
}
|
|
1196
1255
|
function writeKeywords(record, rootEl) {
|
|
1197
|
-
pipe(findOrCreateIdentification(), removeKeywords(
|
|
1198
|
-
}
|
|
1199
|
-
function writeThemes(record, rootEl) {
|
|
1200
|
-
pipe(findOrCreateIdentification(), removeKeywords('theme'), appendKeywords(record.themes, 'theme'))(rootEl);
|
|
1256
|
+
pipe(findOrCreateIdentification(), removeKeywords(), appendKeywords(record.keywords))(rootEl);
|
|
1201
1257
|
}
|
|
1202
|
-
function
|
|
1203
|
-
pipe(findOrCreateIdentification(),
|
|
1258
|
+
function writeTopics(record, rootEl) {
|
|
1259
|
+
pipe(findOrCreateIdentification(), removeChildrenByName('gmd:topicCategory'), appendChildren(...record.topics.map((topic) => pipe(createElement('gmd:topicCategory'), createChild('gmd:MD_TopicCategoryCode'), setTextContent(topic)))))(rootEl);
|
|
1204
1260
|
}
|
|
1205
1261
|
function writeLicenses(record, rootEl) {
|
|
1206
1262
|
pipe(findOrCreateIdentification(), removeLicenses(), appendChildren(...record.licenses.map(createLicense)))(rootEl);
|
|
1207
1263
|
}
|
|
1208
|
-
function
|
|
1209
|
-
pipe(findOrCreateIdentification(),
|
|
1264
|
+
function writeLegalConstraints(record, rootEl) {
|
|
1265
|
+
pipe(findOrCreateIdentification(), removeLegalConstraints(), appendChildren(...record.legalConstraints.map((c) => createConstraint(c, 'legal'))))(rootEl);
|
|
1266
|
+
}
|
|
1267
|
+
function writeSecurityConstraints(record, rootEl) {
|
|
1268
|
+
pipe(findOrCreateIdentification(), removeSecurityConstraints(), appendChildren(...record.securityConstraints.map((c) => createConstraint(c, 'security'))))(rootEl);
|
|
1269
|
+
}
|
|
1270
|
+
function writeOtherConstraints(record, rootEl) {
|
|
1271
|
+
pipe(findOrCreateIdentification(), removeOtherConstraints(), appendChildren(...record.otherConstraints.map((c) => createConstraint(c, 'other'))))(rootEl);
|
|
1210
1272
|
}
|
|
1211
1273
|
function writeUpdateFrequency(record, rootEl) {
|
|
1212
1274
|
pipe(findOrCreateIdentification(), findChildOrCreate('gmd:resourceMaintenance'), removeAllChildren(), findChildOrCreate('gmd:MD_MaintenanceInformation'), typeof record.updateFrequency === 'object'
|
|
@@ -1303,13 +1365,12 @@ function toModel(xml) {
|
|
|
1303
1365
|
const recordUpdated = readRecordUpdated(rootEl);
|
|
1304
1366
|
const recordCreated = recordUpdated;
|
|
1305
1367
|
const keywords = readKeywords(rootEl);
|
|
1306
|
-
const
|
|
1307
|
-
const
|
|
1308
|
-
const
|
|
1368
|
+
const topics = readIsoTopics(rootEl);
|
|
1369
|
+
const legalConstraints = readLegalConstraints(rootEl);
|
|
1370
|
+
const otherConstraints = readOtherConstraints(rootEl);
|
|
1371
|
+
const securityConstraints = readSecurityConstraints(rootEl);
|
|
1309
1372
|
const licenses = readLicenses(rootEl);
|
|
1310
1373
|
const overviews = readOverviews(rootEl);
|
|
1311
|
-
// not used yet
|
|
1312
|
-
const isoTopics = readIsoTopics(rootEl);
|
|
1313
1374
|
if (kind === 'dataset') {
|
|
1314
1375
|
const status = readStatus(rootEl);
|
|
1315
1376
|
const datasetCreated = readDatasetCreated(rootEl);
|
|
@@ -1332,10 +1393,11 @@ function toModel(xml) {
|
|
|
1332
1393
|
contacts,
|
|
1333
1394
|
contactsForResource: [],
|
|
1334
1395
|
keywords,
|
|
1335
|
-
|
|
1336
|
-
accessConstraints,
|
|
1337
|
-
useLimitations,
|
|
1396
|
+
topics,
|
|
1338
1397
|
licenses,
|
|
1398
|
+
legalConstraints,
|
|
1399
|
+
securityConstraints,
|
|
1400
|
+
otherConstraints,
|
|
1339
1401
|
...(datasetCreated && { datasetCreated }),
|
|
1340
1402
|
...(datasetUpdated && { datasetUpdated }),
|
|
1341
1403
|
lineage,
|
|
@@ -1359,10 +1421,11 @@ function toModel(xml) {
|
|
|
1359
1421
|
ownerOrganization,
|
|
1360
1422
|
contacts,
|
|
1361
1423
|
keywords,
|
|
1362
|
-
|
|
1363
|
-
accessConstraints,
|
|
1364
|
-
useLimitations,
|
|
1424
|
+
topics,
|
|
1365
1425
|
licenses,
|
|
1426
|
+
legalConstraints,
|
|
1427
|
+
securityConstraints,
|
|
1428
|
+
otherConstraints,
|
|
1366
1429
|
overviews,
|
|
1367
1430
|
onlineResources,
|
|
1368
1431
|
};
|
|
@@ -1387,10 +1450,12 @@ function toXml(record, originalXml) {
|
|
|
1387
1450
|
writeAbstract(record, rootEl);
|
|
1388
1451
|
fieldChanged('contacts') && writeContacts(record, rootEl);
|
|
1389
1452
|
fieldChanged('keywords') && writeKeywords(record, rootEl);
|
|
1390
|
-
fieldChanged('
|
|
1391
|
-
fieldChanged('
|
|
1453
|
+
fieldChanged('topics') && writeTopics(record, rootEl);
|
|
1454
|
+
fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl);
|
|
1455
|
+
fieldChanged('securityConstraints') &&
|
|
1456
|
+
writeSecurityConstraints(record, rootEl);
|
|
1392
1457
|
fieldChanged('licenses') && writeLicenses(record, rootEl);
|
|
1393
|
-
fieldChanged('
|
|
1458
|
+
fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl);
|
|
1394
1459
|
if (record.kind === 'dataset') {
|
|
1395
1460
|
writeStatus(record, rootEl);
|
|
1396
1461
|
fieldChanged('updateFrequency') && writeUpdateFrequency(record, rootEl);
|
|
@@ -1457,6 +1522,31 @@ const mapContact = (sourceContact, lang3) => {
|
|
|
1457
1522
|
...(phone && { phone }),
|
|
1458
1523
|
};
|
|
1459
1524
|
};
|
|
1525
|
+
const mapKeywords = (thesauri, language) => {
|
|
1526
|
+
const keywords = [];
|
|
1527
|
+
for (const thesaurusId in thesauri) {
|
|
1528
|
+
const rawThesaurus = thesauri[thesaurusId];
|
|
1529
|
+
let thesaurus = null;
|
|
1530
|
+
if (rawThesaurus.id) {
|
|
1531
|
+
const thesaurusSource = { ...rawThesaurus };
|
|
1532
|
+
const url = getAsUrl(selectField(thesaurusSource, 'link'));
|
|
1533
|
+
const name = selectField(thesaurusSource, 'title');
|
|
1534
|
+
thesaurus = {
|
|
1535
|
+
id: rawThesaurus.id,
|
|
1536
|
+
...(name && { name }),
|
|
1537
|
+
...(url && { url }),
|
|
1538
|
+
};
|
|
1539
|
+
}
|
|
1540
|
+
for (const keyword of rawThesaurus.keywords) {
|
|
1541
|
+
keywords.push({
|
|
1542
|
+
label: selectTranslatedValue(keyword, language),
|
|
1543
|
+
type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
|
|
1544
|
+
...(thesaurus && { thesaurus }),
|
|
1545
|
+
});
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
return keywords;
|
|
1549
|
+
};
|
|
1460
1550
|
|
|
1461
1551
|
/**
|
|
1462
1552
|
* Custom HttpParameterCodec
|
|
@@ -16774,12 +16864,12 @@ var de = {
|
|
|
16774
16864
|
"record.metadata.details": "Technische Informationen",
|
|
16775
16865
|
"record.metadata.download": "Downloads",
|
|
16776
16866
|
"record.metadata.formats": "Formate",
|
|
16777
|
-
"record.metadata.isOpenData": "Open Data",
|
|
16778
16867
|
"record.metadata.keywords": "Stichworte",
|
|
16779
16868
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am",
|
|
16780
16869
|
"record.metadata.links": "Links",
|
|
16781
16870
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
16782
16871
|
"record.metadata.origin": "Über die Daten",
|
|
16872
|
+
"record.metadata.otherConstraints": "",
|
|
16783
16873
|
"record.metadata.owner": "",
|
|
16784
16874
|
"record.metadata.preview": "Vorschau",
|
|
16785
16875
|
"record.metadata.publications": "Veröffentlichungen",
|
|
@@ -16804,8 +16894,8 @@ var de = {
|
|
|
16804
16894
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
16805
16895
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
16806
16896
|
"record.metadata.status": "",
|
|
16807
|
-
"record.metadata.themes": "Kategorien",
|
|
16808
16897
|
"record.metadata.title": "Titel",
|
|
16898
|
+
"record.metadata.topics": "Kategorien",
|
|
16809
16899
|
"record.metadata.type": "Geographischer Datensatz",
|
|
16810
16900
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
16811
16901
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
@@ -16841,6 +16931,7 @@ var de = {
|
|
|
16841
16931
|
"search.filters.isSpatial": "Ist räumliche Daten",
|
|
16842
16932
|
"search.filters.isSpatial.no": "nicht räumlich",
|
|
16843
16933
|
"search.filters.isSpatial.yes": "räumlich",
|
|
16934
|
+
"search.filters.keyword": "Schlüsselwort",
|
|
16844
16935
|
"search.filters.license": "Lizenz",
|
|
16845
16936
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
16846
16937
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17114,12 +17205,12 @@ var en = {
|
|
|
17114
17205
|
"record.metadata.details": "Technical information",
|
|
17115
17206
|
"record.metadata.download": "Downloads",
|
|
17116
17207
|
"record.metadata.formats": "Formats",
|
|
17117
|
-
"record.metadata.isOpenData": "Open Data",
|
|
17118
17208
|
"record.metadata.keywords": "Keywords",
|
|
17119
17209
|
"record.metadata.lastUpdate": "Last updated on",
|
|
17120
17210
|
"record.metadata.links": "Links",
|
|
17121
17211
|
"record.metadata.noUsage": "No usage conditions specified for this record.",
|
|
17122
17212
|
"record.metadata.origin": "About the data",
|
|
17213
|
+
"record.metadata.otherConstraints": "Additional Conditions",
|
|
17123
17214
|
"record.metadata.owner": "Catalog of origin",
|
|
17124
17215
|
"record.metadata.preview": "Preview",
|
|
17125
17216
|
"record.metadata.publications": "publications",
|
|
@@ -17144,14 +17235,14 @@ var en = {
|
|
|
17144
17235
|
"record.metadata.related": "Related records",
|
|
17145
17236
|
"record.metadata.sheet": "Original metadata",
|
|
17146
17237
|
"record.metadata.status": "Status",
|
|
17147
|
-
"record.metadata.themes": "Categories",
|
|
17148
17238
|
"record.metadata.title": "Title",
|
|
17239
|
+
"record.metadata.topics": "Categories",
|
|
17149
17240
|
"record.metadata.type": "Geographical dataset",
|
|
17150
17241
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
17151
17242
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17152
17243
|
"record.metadata.updateStatus": "Data Update Status",
|
|
17153
|
-
"record.metadata.updatedOn": "
|
|
17154
|
-
"record.metadata.usage": "
|
|
17244
|
+
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17245
|
+
"record.metadata.usage": "License and Conditions",
|
|
17155
17246
|
"record.more.details": "Read more",
|
|
17156
17247
|
"record.tab.chart": "Chart",
|
|
17157
17248
|
"record.tab.data": "Table",
|
|
@@ -17181,6 +17272,7 @@ var en = {
|
|
|
17181
17272
|
"search.filters.isSpatial": "Is spatial data",
|
|
17182
17273
|
"search.filters.isSpatial.no": "non spatial",
|
|
17183
17274
|
"search.filters.isSpatial.yes": "spatial",
|
|
17275
|
+
"search.filters.keyword": "Keyword",
|
|
17184
17276
|
"search.filters.license": "License",
|
|
17185
17277
|
"search.filters.license.cc-by": "Creative Commons CC-BY",
|
|
17186
17278
|
"search.filters.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
@@ -17454,12 +17546,12 @@ var es = {
|
|
|
17454
17546
|
"record.metadata.details": "",
|
|
17455
17547
|
"record.metadata.download": "",
|
|
17456
17548
|
"record.metadata.formats": "",
|
|
17457
|
-
"record.metadata.isOpenData": "",
|
|
17458
17549
|
"record.metadata.keywords": "",
|
|
17459
17550
|
"record.metadata.lastUpdate": "",
|
|
17460
17551
|
"record.metadata.links": "",
|
|
17461
17552
|
"record.metadata.noUsage": "",
|
|
17462
17553
|
"record.metadata.origin": "",
|
|
17554
|
+
"record.metadata.otherConstraints": "",
|
|
17463
17555
|
"record.metadata.owner": "",
|
|
17464
17556
|
"record.metadata.preview": "",
|
|
17465
17557
|
"record.metadata.publications": "",
|
|
@@ -17484,8 +17576,8 @@ var es = {
|
|
|
17484
17576
|
"record.metadata.related": "",
|
|
17485
17577
|
"record.metadata.sheet": "",
|
|
17486
17578
|
"record.metadata.status": "",
|
|
17487
|
-
"record.metadata.themes": "",
|
|
17488
17579
|
"record.metadata.title": "",
|
|
17580
|
+
"record.metadata.topics": "",
|
|
17489
17581
|
"record.metadata.type": "",
|
|
17490
17582
|
"record.metadata.uniqueId": "",
|
|
17491
17583
|
"record.metadata.updateFrequency": "",
|
|
@@ -17521,6 +17613,7 @@ var es = {
|
|
|
17521
17613
|
"search.filters.isSpatial": "",
|
|
17522
17614
|
"search.filters.isSpatial.no": "",
|
|
17523
17615
|
"search.filters.isSpatial.yes": "",
|
|
17616
|
+
"search.filters.keyword": "",
|
|
17524
17617
|
"search.filters.license": "",
|
|
17525
17618
|
"search.filters.license.cc-by": "",
|
|
17526
17619
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -17794,12 +17887,12 @@ var fr = {
|
|
|
17794
17887
|
"record.metadata.details": "Informations techniques",
|
|
17795
17888
|
"record.metadata.download": "Téléchargements",
|
|
17796
17889
|
"record.metadata.formats": "Formats",
|
|
17797
|
-
"record.metadata.isOpenData": "Donnée Ouverte",
|
|
17798
17890
|
"record.metadata.keywords": "Mots clés",
|
|
17799
17891
|
"record.metadata.lastUpdate": "Mis à jour le",
|
|
17800
17892
|
"record.metadata.links": "Liens",
|
|
17801
17893
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
17802
17894
|
"record.metadata.origin": "À propos des données",
|
|
17895
|
+
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
17803
17896
|
"record.metadata.owner": "Catalogue d'origine",
|
|
17804
17897
|
"record.metadata.preview": "Aperçu",
|
|
17805
17898
|
"record.metadata.publications": "données",
|
|
@@ -17824,14 +17917,14 @@ var fr = {
|
|
|
17824
17917
|
"record.metadata.related": "Voir aussi",
|
|
17825
17918
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
17826
17919
|
"record.metadata.status": "",
|
|
17827
|
-
"record.metadata.themes": "Catégories",
|
|
17828
17920
|
"record.metadata.title": "Titre",
|
|
17921
|
+
"record.metadata.topics": "Catégories",
|
|
17829
17922
|
"record.metadata.type": "Donnée géographique",
|
|
17830
17923
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
17831
17924
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
17832
17925
|
"record.metadata.updateStatus": "Statut de mise à jour des données",
|
|
17833
|
-
"record.metadata.updatedOn": "
|
|
17834
|
-
"record.metadata.usage": "
|
|
17926
|
+
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
17927
|
+
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
17835
17928
|
"record.more.details": "Détails",
|
|
17836
17929
|
"record.tab.chart": "Graphique",
|
|
17837
17930
|
"record.tab.data": "Tableau",
|
|
@@ -17861,6 +17954,7 @@ var fr = {
|
|
|
17861
17954
|
"search.filters.isSpatial": "Données spatiales",
|
|
17862
17955
|
"search.filters.isSpatial.no": "non-géolocalisées",
|
|
17863
17956
|
"search.filters.isSpatial.yes": "géolocalisées",
|
|
17957
|
+
"search.filters.keyword": "Mot-clé",
|
|
17864
17958
|
"search.filters.license": "Licence",
|
|
17865
17959
|
"search.filters.license.cc-by": "cc-by",
|
|
17866
17960
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18134,12 +18228,12 @@ var it = {
|
|
|
18134
18228
|
"record.metadata.details": "Informazioni tecniche",
|
|
18135
18229
|
"record.metadata.download": "Download",
|
|
18136
18230
|
"record.metadata.formats": "Formati",
|
|
18137
|
-
"record.metadata.isOpenData": "Data aperta",
|
|
18138
18231
|
"record.metadata.keywords": "Parole chiave",
|
|
18139
18232
|
"record.metadata.lastUpdate": "Ultimo aggiornamento",
|
|
18140
18233
|
"record.metadata.links": "Collegamenti",
|
|
18141
18234
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
18142
18235
|
"record.metadata.origin": "Informazioni sui dati",
|
|
18236
|
+
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
18143
18237
|
"record.metadata.owner": "Catalogo originale",
|
|
18144
18238
|
"record.metadata.preview": "Anteprima",
|
|
18145
18239
|
"record.metadata.publications": "pubblicazioni",
|
|
@@ -18164,14 +18258,14 @@ var it = {
|
|
|
18164
18258
|
"record.metadata.related": "Vedi anche",
|
|
18165
18259
|
"record.metadata.sheet": "Origine del metadata",
|
|
18166
18260
|
"record.metadata.status": "",
|
|
18167
|
-
"record.metadata.themes": "Categorie",
|
|
18168
18261
|
"record.metadata.title": "Titolo",
|
|
18262
|
+
"record.metadata.topics": "Categorie",
|
|
18169
18263
|
"record.metadata.type": "Dati geografici",
|
|
18170
18264
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
18171
18265
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
18172
18266
|
"record.metadata.updateStatus": "Stato di aggiornamento dei dati",
|
|
18173
|
-
"record.metadata.updatedOn": "Ultimo aggiornamento
|
|
18174
|
-
"record.metadata.usage": "
|
|
18267
|
+
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
18268
|
+
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
18175
18269
|
"record.more.details": "Dettagli",
|
|
18176
18270
|
"record.tab.chart": "Grafico",
|
|
18177
18271
|
"record.tab.data": "Tabella",
|
|
@@ -18201,6 +18295,7 @@ var it = {
|
|
|
18201
18295
|
"search.filters.isSpatial": "Dati spaziali",
|
|
18202
18296
|
"search.filters.isSpatial.no": "Non geolocalizzati",
|
|
18203
18297
|
"search.filters.isSpatial.yes": "Geolocalizzati",
|
|
18298
|
+
"search.filters.keyword": "Parola chiave",
|
|
18204
18299
|
"search.filters.license": "Licenza",
|
|
18205
18300
|
"search.filters.license.cc-by": "cc-by",
|
|
18206
18301
|
"search.filters.license.cc-by-sa": "cc-by-sa",
|
|
@@ -18474,12 +18569,12 @@ var nl = {
|
|
|
18474
18569
|
"record.metadata.details": "",
|
|
18475
18570
|
"record.metadata.download": "",
|
|
18476
18571
|
"record.metadata.formats": "",
|
|
18477
|
-
"record.metadata.isOpenData": "",
|
|
18478
18572
|
"record.metadata.keywords": "",
|
|
18479
18573
|
"record.metadata.lastUpdate": "",
|
|
18480
18574
|
"record.metadata.links": "",
|
|
18481
18575
|
"record.metadata.noUsage": "",
|
|
18482
18576
|
"record.metadata.origin": "",
|
|
18577
|
+
"record.metadata.otherConstraints": "",
|
|
18483
18578
|
"record.metadata.owner": "",
|
|
18484
18579
|
"record.metadata.preview": "",
|
|
18485
18580
|
"record.metadata.publications": "",
|
|
@@ -18504,8 +18599,8 @@ var nl = {
|
|
|
18504
18599
|
"record.metadata.related": "",
|
|
18505
18600
|
"record.metadata.sheet": "",
|
|
18506
18601
|
"record.metadata.status": "",
|
|
18507
|
-
"record.metadata.themes": "",
|
|
18508
18602
|
"record.metadata.title": "",
|
|
18603
|
+
"record.metadata.topics": "",
|
|
18509
18604
|
"record.metadata.type": "",
|
|
18510
18605
|
"record.metadata.uniqueId": "",
|
|
18511
18606
|
"record.metadata.updateFrequency": "",
|
|
@@ -18541,6 +18636,7 @@ var nl = {
|
|
|
18541
18636
|
"search.filters.isSpatial": "",
|
|
18542
18637
|
"search.filters.isSpatial.no": "",
|
|
18543
18638
|
"search.filters.isSpatial.yes": "",
|
|
18639
|
+
"search.filters.keyword": "",
|
|
18544
18640
|
"search.filters.license": "",
|
|
18545
18641
|
"search.filters.license.cc-by": "",
|
|
18546
18642
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18814,12 +18910,12 @@ var pt = {
|
|
|
18814
18910
|
"record.metadata.details": "",
|
|
18815
18911
|
"record.metadata.download": "",
|
|
18816
18912
|
"record.metadata.formats": "",
|
|
18817
|
-
"record.metadata.isOpenData": "",
|
|
18818
18913
|
"record.metadata.keywords": "",
|
|
18819
18914
|
"record.metadata.lastUpdate": "",
|
|
18820
18915
|
"record.metadata.links": "",
|
|
18821
18916
|
"record.metadata.noUsage": "",
|
|
18822
18917
|
"record.metadata.origin": "",
|
|
18918
|
+
"record.metadata.otherConstraints": "",
|
|
18823
18919
|
"record.metadata.owner": "",
|
|
18824
18920
|
"record.metadata.preview": "",
|
|
18825
18921
|
"record.metadata.publications": "",
|
|
@@ -18844,8 +18940,8 @@ var pt = {
|
|
|
18844
18940
|
"record.metadata.related": "",
|
|
18845
18941
|
"record.metadata.sheet": "",
|
|
18846
18942
|
"record.metadata.status": "",
|
|
18847
|
-
"record.metadata.themes": "",
|
|
18848
18943
|
"record.metadata.title": "",
|
|
18944
|
+
"record.metadata.topics": "",
|
|
18849
18945
|
"record.metadata.type": "",
|
|
18850
18946
|
"record.metadata.uniqueId": "",
|
|
18851
18947
|
"record.metadata.updateFrequency": "",
|
|
@@ -18881,6 +18977,7 @@ var pt = {
|
|
|
18881
18977
|
"search.filters.isSpatial": "",
|
|
18882
18978
|
"search.filters.isSpatial.no": "",
|
|
18883
18979
|
"search.filters.isSpatial.yes": "",
|
|
18980
|
+
"search.filters.keyword": "",
|
|
18884
18981
|
"search.filters.license": "",
|
|
18885
18982
|
"search.filters.license.cc-by": "",
|
|
18886
18983
|
"search.filters.license.cc-by-sa": "",
|
|
@@ -18989,8 +19086,8 @@ class Gn4FieldMapper {
|
|
|
18989
19086
|
},
|
|
18990
19087
|
cl_topic: (output, source) => ({
|
|
18991
19088
|
...output,
|
|
18992
|
-
|
|
18993
|
-
...(output.
|
|
19089
|
+
topics: [
|
|
19090
|
+
...(output.topics || []),
|
|
18994
19091
|
...getAsArray(selectField(source, 'cl_topic')).map((topic) => selectTranslatedValue(topic, this.lang3)),
|
|
18995
19092
|
],
|
|
18996
19093
|
}),
|
|
@@ -19045,31 +19142,22 @@ class Gn4FieldMapper {
|
|
|
19045
19142
|
catalogUuid: selectFallback(selectField(source, 'sourceCatalogue'), 'no title'),
|
|
19046
19143
|
}, output);
|
|
19047
19144
|
},
|
|
19048
|
-
|
|
19145
|
+
allKeywords: (output, source) => ({
|
|
19049
19146
|
...output,
|
|
19050
|
-
keywords:
|
|
19147
|
+
keywords: mapKeywords(selectField(source, 'allKeywords'), this.lang3),
|
|
19051
19148
|
}),
|
|
19052
19149
|
inspireTheme: (output, source) => ({
|
|
19053
19150
|
...output,
|
|
19054
|
-
|
|
19055
|
-
...(output.
|
|
19151
|
+
topics: [
|
|
19152
|
+
...(output.topics || []),
|
|
19056
19153
|
...getAsArray(selectField(source, 'inspireTheme_syn')),
|
|
19057
19154
|
],
|
|
19058
19155
|
}),
|
|
19059
|
-
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19060
|
-
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19061
|
-
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('
|
|
19062
|
-
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('
|
|
19063
|
-
licenseObject: (output, source) => (
|
|
19064
|
-
...output,
|
|
19065
|
-
licenses: getAsArray(selectField(source, 'licenseObject')).map((license) => {
|
|
19066
|
-
const link = getAsUrl(selectField(license, 'link'));
|
|
19067
|
-
return {
|
|
19068
|
-
text: selectTranslatedValue(license, this.lang3),
|
|
19069
|
-
...(link ? { link } : {}),
|
|
19070
|
-
};
|
|
19071
|
-
}),
|
|
19072
|
-
}),
|
|
19156
|
+
MD_ConstraintsUseLimitationObject: (output, source) => this.constraintField('other', output, getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))),
|
|
19157
|
+
MD_LegalConstraintsUseLimitationObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsUseLimitationObject'))),
|
|
19158
|
+
MD_LegalConstraintsOtherConstraintsObject: (output, source) => this.constraintField('legal', output, getAsArray(selectField(source, 'MD_LegalConstraintsOtherConstraintsObject'))),
|
|
19159
|
+
MD_SecurityConstraintsUseLimitationObject: (output, source) => this.constraintField('security', output, getAsArray(selectField(source, 'MD_SecurityConstraintsUseLimitationObject'))),
|
|
19160
|
+
licenseObject: (output, source) => this.constraintField('license', output, getAsArray(selectField(source, 'licenseObject'))),
|
|
19073
19161
|
lineageObject: (output, source) => ({
|
|
19074
19162
|
...output,
|
|
19075
19163
|
lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
|
|
@@ -19131,31 +19219,42 @@ class Gn4FieldMapper {
|
|
|
19131
19219
|
},
|
|
19132
19220
|
};
|
|
19133
19221
|
this.genericField = (output) => output;
|
|
19134
|
-
this.constraintField = (
|
|
19135
|
-
|
|
19136
|
-
|
|
19137
|
-
|
|
19138
|
-
|
|
19139
|
-
|
|
19140
|
-
|
|
19141
|
-
|
|
19142
|
-
|
|
19143
|
-
|
|
19144
|
-
|
|
19145
|
-
|
|
19146
|
-
|
|
19147
|
-
|
|
19148
|
-
|
|
19149
|
-
|
|
19150
|
-
|
|
19151
|
-
|
|
19152
|
-
|
|
19153
|
-
|
|
19154
|
-
|
|
19155
|
-
|
|
19156
|
-
|
|
19157
|
-
}
|
|
19158
|
-
|
|
19222
|
+
this.constraintField = (type, output, constraintArray) => {
|
|
19223
|
+
let outputField;
|
|
19224
|
+
switch (type) {
|
|
19225
|
+
case 'license':
|
|
19226
|
+
outputField = 'licenses';
|
|
19227
|
+
break;
|
|
19228
|
+
case 'legal':
|
|
19229
|
+
outputField = 'legalConstraints';
|
|
19230
|
+
break;
|
|
19231
|
+
case 'security':
|
|
19232
|
+
outputField = 'securityConstraints';
|
|
19233
|
+
break;
|
|
19234
|
+
case 'other':
|
|
19235
|
+
outputField = 'otherConstraints';
|
|
19236
|
+
break;
|
|
19237
|
+
}
|
|
19238
|
+
const outputArray = outputField in output ? output[outputField] : [];
|
|
19239
|
+
outputArray.push(...constraintArray.map((item) => {
|
|
19240
|
+
const text = selectTranslatedValue(item, this.lang3);
|
|
19241
|
+
const url = getAsUrl(selectField(item, 'link'));
|
|
19242
|
+
return {
|
|
19243
|
+
text,
|
|
19244
|
+
...(url ? { url } : {}),
|
|
19245
|
+
};
|
|
19246
|
+
}));
|
|
19247
|
+
const result = {
|
|
19248
|
+
...output,
|
|
19249
|
+
[outputField]: outputArray,
|
|
19250
|
+
};
|
|
19251
|
+
// avoid legal constraints being duplicates of licenses
|
|
19252
|
+
if ('legalConstraints' in result &&
|
|
19253
|
+
(type === 'legal' || type === 'license')) {
|
|
19254
|
+
result.legalConstraints = result.legalConstraints.filter((constraint) => !output.licenses?.some((license) => license.text === constraint.text));
|
|
19255
|
+
}
|
|
19256
|
+
return result;
|
|
19257
|
+
};
|
|
19159
19258
|
this.mapLink = (sourceLink) => {
|
|
19160
19259
|
const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
|
|
19161
19260
|
const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
|
|
@@ -19203,17 +19302,6 @@ class Gn4FieldMapper {
|
|
|
19203
19302
|
extras: { ...(output.extras || {}), ...value },
|
|
19204
19303
|
});
|
|
19205
19304
|
}
|
|
19206
|
-
getConstraintsType(indexField) {
|
|
19207
|
-
switch (indexField) {
|
|
19208
|
-
case 'MD_LegalConstraintsUseLimitationObject':
|
|
19209
|
-
return 'legal';
|
|
19210
|
-
case 'MD_SecurityConstraintsUseLimitationObject':
|
|
19211
|
-
return 'security';
|
|
19212
|
-
case 'MD_ConstraintsUseLimitationObject':
|
|
19213
|
-
default:
|
|
19214
|
-
return 'other';
|
|
19215
|
-
}
|
|
19216
|
-
}
|
|
19217
19305
|
getMappingFn(fieldName) {
|
|
19218
19306
|
return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
|
|
19219
19307
|
}
|
|
@@ -19275,12 +19363,13 @@ class Gn4MetadataMapper extends MetadataBaseMapper {
|
|
|
19275
19363
|
recordUpdated: null,
|
|
19276
19364
|
ownerOrganization: null,
|
|
19277
19365
|
licenses: [],
|
|
19366
|
+
legalConstraints: [],
|
|
19367
|
+
securityConstraints: [],
|
|
19368
|
+
otherConstraints: [],
|
|
19278
19369
|
contacts: [],
|
|
19279
19370
|
contactsForResource: [],
|
|
19280
|
-
accessConstraints: [],
|
|
19281
19371
|
keywords: [],
|
|
19282
|
-
|
|
19283
|
-
useLimitations: [],
|
|
19372
|
+
topics: [],
|
|
19284
19373
|
spatialExtents: [],
|
|
19285
19374
|
temporalExtents: [],
|
|
19286
19375
|
overviews: [],
|
|
@@ -20048,11 +20137,18 @@ class OrganizationsFromMetadataService {
|
|
|
20048
20137
|
if (!allContactOrgs.length)
|
|
20049
20138
|
return of(record);
|
|
20050
20139
|
const ownerOrganization = allContactOrgs[0];
|
|
20051
|
-
|
|
20140
|
+
// read the owner group as well to have a fallback logo
|
|
20141
|
+
const groupId = selectField(source, 'groupOwner');
|
|
20142
|
+
const group$ = this.groups$.pipe(map$1((groups) => groups.find((group) => {
|
|
20143
|
+
return group.id === Number(groupId);
|
|
20144
|
+
})));
|
|
20145
|
+
return this.organisations$.pipe(takeLast(1), withLatestFrom(group$), map$1(([organisations, group]) => {
|
|
20052
20146
|
const recordOrganisation = organisations.filter((org) => org.name === ownerOrganization.name)[0];
|
|
20147
|
+
const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL$1}${group.logo}`);
|
|
20053
20148
|
return {
|
|
20054
20149
|
...record,
|
|
20055
20150
|
ownerOrganization: {
|
|
20151
|
+
logoUrl,
|
|
20056
20152
|
...ownerOrganization,
|
|
20057
20153
|
...recordOrganisation,
|
|
20058
20154
|
},
|
|
@@ -20363,12 +20459,21 @@ class Gn4PlatformMapper {
|
|
|
20363
20459
|
const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
|
|
20364
20460
|
return { ...apiUser, id: id.toString() };
|
|
20365
20461
|
}
|
|
20366
|
-
thesaurusFromApi(thesaurus) {
|
|
20462
|
+
thesaurusFromApi(thesaurus, lang3) {
|
|
20367
20463
|
return thesaurus.map((keyword) => {
|
|
20368
|
-
|
|
20464
|
+
let key = keyword.uri;
|
|
20465
|
+
// sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
|
|
20466
|
+
if (key.indexOf('@@@') > -1) {
|
|
20467
|
+
key = key.split('@@@')[1];
|
|
20468
|
+
}
|
|
20469
|
+
const label = lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value;
|
|
20470
|
+
const description = lang3 && lang3 in keyword.definitions
|
|
20471
|
+
? keyword.definitions[lang3]
|
|
20472
|
+
: keyword.definition;
|
|
20369
20473
|
return {
|
|
20370
|
-
key
|
|
20371
|
-
label
|
|
20474
|
+
key,
|
|
20475
|
+
label,
|
|
20476
|
+
description,
|
|
20372
20477
|
};
|
|
20373
20478
|
});
|
|
20374
20479
|
}
|
|
@@ -20381,13 +20486,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20381
20486
|
|
|
20382
20487
|
const minApiVersion = '4.2.2';
|
|
20383
20488
|
class Gn4PlatformService {
|
|
20384
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService) {
|
|
20489
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
20385
20490
|
this.siteApiService = siteApiService;
|
|
20386
20491
|
this.meApi = meApi;
|
|
20387
20492
|
this.usersApi = usersApi;
|
|
20388
20493
|
this.mapper = mapper;
|
|
20389
20494
|
this.toolsApiService = toolsApiService;
|
|
20390
20495
|
this.registriesApiService = registriesApiService;
|
|
20496
|
+
this.langService = langService;
|
|
20391
20497
|
this.type = 'GeoNetwork';
|
|
20392
20498
|
this.keyTranslations$ = this.toolsApiService
|
|
20393
20499
|
.getTranslationsPackage1('gnui')
|
|
@@ -20401,6 +20507,11 @@ class Gn4PlatformService {
|
|
|
20401
20507
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
20402
20508
|
}
|
|
20403
20509
|
}), shareReplay(1));
|
|
20510
|
+
/**
|
|
20511
|
+
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
20512
|
+
* @private
|
|
20513
|
+
*/
|
|
20514
|
+
this.thesauri = {};
|
|
20404
20515
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
20405
20516
|
this.isAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
20406
20517
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
@@ -20427,19 +20538,36 @@ class Gn4PlatformService {
|
|
|
20427
20538
|
return this.users$;
|
|
20428
20539
|
}
|
|
20429
20540
|
translateKey(key) {
|
|
20541
|
+
// if the key is a URI, use the registries API to look for the translation
|
|
20542
|
+
if (key.match(/^https?:\/\//)) {
|
|
20543
|
+
// the thesaurus URI is inferred by removing a part of the keyword URI
|
|
20544
|
+
// this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
|
|
20545
|
+
const thesaurusUri = key.replace(/\/([^/]+)$/, '/');
|
|
20546
|
+
return this.getThesaurusByUri(thesaurusUri).pipe(map$1((thesaurus) => {
|
|
20547
|
+
for (const item of thesaurus) {
|
|
20548
|
+
if (item.key === key)
|
|
20549
|
+
return item.label;
|
|
20550
|
+
}
|
|
20551
|
+
return key;
|
|
20552
|
+
}));
|
|
20553
|
+
}
|
|
20430
20554
|
return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
|
|
20431
20555
|
}
|
|
20432
|
-
|
|
20433
|
-
|
|
20434
|
-
.
|
|
20435
|
-
|
|
20556
|
+
getThesaurusByUri(uri) {
|
|
20557
|
+
if (this.thesauri[uri]) {
|
|
20558
|
+
return this.thesauri[uri];
|
|
20559
|
+
}
|
|
20560
|
+
this.thesauri[uri] = this.registriesApiService
|
|
20561
|
+
.searchKeywords(null, this.langService.iso3, 1000, 0, null, null, null, `${uri}*`)
|
|
20562
|
+
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
20563
|
+
return this.thesauri[uri];
|
|
20436
20564
|
}
|
|
20437
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20438
20566
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
20439
20567
|
}
|
|
20440
20568
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
20441
20569
|
type: Injectable
|
|
20442
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }]; } });
|
|
20570
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
20443
20571
|
|
|
20444
20572
|
function provideGn4() {
|
|
20445
20573
|
return [
|
|
@@ -22517,6 +22645,9 @@ class MapContextService {
|
|
|
22517
22645
|
if (mapConfig) {
|
|
22518
22646
|
mapContext = this.mergeMapConfigWithContext(mapContext, mapConfig);
|
|
22519
22647
|
}
|
|
22648
|
+
else {
|
|
22649
|
+
mapContext.layers = this.addDefaultBaselayerContext(mapContext.layers);
|
|
22650
|
+
}
|
|
22520
22651
|
if (!mapContext.view?.extent &&
|
|
22521
22652
|
(!mapContext.view?.center || !mapContext.view?.zoom)) {
|
|
22522
22653
|
mapContext.view = this.getFallbackView(mapConfig);
|
|
@@ -22627,6 +22758,11 @@ class MapContextService {
|
|
|
22627
22758
|
}
|
|
22628
22759
|
return view;
|
|
22629
22760
|
}
|
|
22761
|
+
addDefaultBaselayerContext(layers) {
|
|
22762
|
+
return layers.includes(DEFAULT_BASELAYER_CONTEXT)
|
|
22763
|
+
? layers
|
|
22764
|
+
: [DEFAULT_BASELAYER_CONTEXT, ...layers];
|
|
22765
|
+
}
|
|
22630
22766
|
mergeMapConfigWithContext(mapContext, mapConfig) {
|
|
22631
22767
|
return {
|
|
22632
22768
|
...mapContext,
|
|
@@ -23305,8 +23441,7 @@ class MetadataQualityComponent {
|
|
|
23305
23441
|
: this.calculatedQualityScore;
|
|
23306
23442
|
}
|
|
23307
23443
|
get calculatedQualityScore() {
|
|
23308
|
-
return Math.round((this.items.filter(({ value }) => value
|
|
23309
|
-
this.items.length);
|
|
23444
|
+
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
23310
23445
|
}
|
|
23311
23446
|
showMenu() {
|
|
23312
23447
|
this.isMenuShown = true;
|
|
@@ -23324,7 +23459,7 @@ class MetadataQualityComponent {
|
|
|
23324
23459
|
this.items = [];
|
|
23325
23460
|
this.add('title', !!this.metadata?.title);
|
|
23326
23461
|
this.add('description', !!this.metadata?.abstract);
|
|
23327
|
-
this.add('topic', this.metadata?.
|
|
23462
|
+
this.add('topic', this.metadata?.topics?.length > 0);
|
|
23328
23463
|
this.add('keywords', this.metadata?.keywords?.length > 0);
|
|
23329
23464
|
this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
|
|
23330
23465
|
this.add('organisation', !!contact?.organization);
|
|
@@ -23772,6 +23907,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23772
23907
|
type: Input
|
|
23773
23908
|
}] } });
|
|
23774
23909
|
|
|
23910
|
+
class MarkdownParserComponent {
|
|
23911
|
+
get parsedMarkdown() {
|
|
23912
|
+
return marked.parse(this.textContent);
|
|
23913
|
+
}
|
|
23914
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23915
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23916
|
+
}
|
|
23917
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23918
|
+
type: Component,
|
|
23919
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
23920
|
+
}], propDecorators: { textContent: [{
|
|
23921
|
+
type: Input
|
|
23922
|
+
}] } });
|
|
23923
|
+
|
|
23775
23924
|
class ContentGhostComponent {
|
|
23776
23925
|
constructor() {
|
|
23777
23926
|
this.ghostClass = '';
|
|
@@ -23926,36 +24075,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23926
24075
|
args: ['container']
|
|
23927
24076
|
}] } });
|
|
23928
24077
|
|
|
23929
|
-
class MarkdownParserComponent {
|
|
23930
|
-
get parsedMarkdown() {
|
|
23931
|
-
return marked.parse(this.textContent);
|
|
23932
|
-
}
|
|
23933
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23934
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23935
|
-
}
|
|
23936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
23937
|
-
type: Component,
|
|
23938
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0px 0px 1.5rem;line-height:1.5;word-wrap:break-word}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none!important;@apply font-bold;}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
23939
|
-
}], propDecorators: { textContent: [{
|
|
23940
|
-
type: Input
|
|
23941
|
-
}] } });
|
|
23942
|
-
|
|
23943
24078
|
class MetadataInfoComponent {
|
|
23944
24079
|
constructor() {
|
|
23945
24080
|
this.keyword = new EventEmitter();
|
|
23946
24081
|
}
|
|
23947
24082
|
get hasUsage() {
|
|
23948
24083
|
return (this.metadata.extras?.isOpenData === true ||
|
|
23949
|
-
this.metadata.
|
|
23950
|
-
|
|
24084
|
+
(this.metadata.legalConstraints?.length > 0 &&
|
|
24085
|
+
this.legalConstraints.length > 0) ||
|
|
24086
|
+
(this.metadata.otherConstraints?.length > 0 &&
|
|
24087
|
+
this.otherConstraints.length > 0) ||
|
|
24088
|
+
(this.metadata.licenses?.length > 0 && this.licenses.length > 0));
|
|
24089
|
+
}
|
|
24090
|
+
get legalConstraints() {
|
|
24091
|
+
let array = [];
|
|
24092
|
+
if (this.metadata.legalConstraints?.length) {
|
|
24093
|
+
array = array.concat(this.metadata.legalConstraints.filter((c) => c.text).map((c) => c.text));
|
|
24094
|
+
}
|
|
24095
|
+
return array;
|
|
23951
24096
|
}
|
|
23952
|
-
get
|
|
24097
|
+
get otherConstraints() {
|
|
23953
24098
|
let array = [];
|
|
23954
|
-
if (this.metadata.
|
|
23955
|
-
array = array.concat(this.metadata.
|
|
24099
|
+
if (this.metadata.otherConstraints?.length) {
|
|
24100
|
+
array = array.concat(this.metadata.otherConstraints.filter((c) => c.text).map((c) => c.text));
|
|
23956
24101
|
}
|
|
23957
|
-
|
|
23958
|
-
|
|
24102
|
+
return array;
|
|
24103
|
+
}
|
|
24104
|
+
get licenses() {
|
|
24105
|
+
let array = [];
|
|
24106
|
+
if (this.metadata.licenses?.length) {
|
|
24107
|
+
array = array.concat(this.metadata.licenses
|
|
24108
|
+
.filter((c) => c.text)
|
|
24109
|
+
.map((c) => ({ text: c.text, url: c.url })));
|
|
23959
24110
|
}
|
|
23960
24111
|
return array;
|
|
23961
24112
|
}
|
|
@@ -23977,16 +24128,12 @@ class MetadataInfoComponent {
|
|
|
23977
24128
|
onKeywordClick(keyword) {
|
|
23978
24129
|
this.keyword.emit(keyword);
|
|
23979
24130
|
}
|
|
23980
|
-
copyText() {
|
|
23981
|
-
navigator.clipboard.writeText(this.metadata.uniqueIdentifier);
|
|
23982
|
-
event.target.blur();
|
|
23983
|
-
}
|
|
23984
24131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23985
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel
|
|
24132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words text-gray-900\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.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 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23986
24133
|
}
|
|
23987
24134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
23988
24135
|
type: Component,
|
|
23989
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel
|
|
24136
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n class=\"metadata-origin\"\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.origin' | translate\"\n>\n <p\n *ngIf=\"metadata.lineage\"\n class=\"mb-5 pt-4 whitespace-pre-line break-words text-gray-900\"\n gnUiLinkify\n >\n {{ metadata.lineage }}\n </p>\n <div\n class=\"py-4 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-[10px] gap-x-[20px] text-gray-700 info-grid\"\n >\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.status\">\n <p class=\"text-sm\" translate>record.metadata.updateStatus</p>\n <p class=\"text-primary font-medium mt-1\" translate>\n domain.record.status.{{ metadata.status }}\n </p>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.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 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.keywords</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
23990
24137
|
}], propDecorators: { metadata: [{
|
|
23991
24138
|
type: Input
|
|
23992
24139
|
}], incomplete: [{
|
|
@@ -24055,11 +24202,11 @@ class ButtonComponent {
|
|
|
24055
24202
|
propagateToDocumentOnly(event);
|
|
24056
24203
|
}
|
|
24057
24204
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24058
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ButtonComponent, isStandalone: true, selector: "gn-ui-button", inputs: { type: "type", disabled: "disabled", extraClass: "extraClass" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24059
24206
|
}
|
|
24060
24207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
24061
24208
|
type: Component,
|
|
24062
|
-
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24209
|
+
args: [{ selector: 'gn-ui-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<button\n type=\"button\"\n class=\"flex flex-row items-center text-[1em] leading-none p-[1em] rounded-[0.25em] transition-all duration-100 focus:outline-none disabled:opacity-50 disabled:pointer-events-none\"\n [class]=\"classList\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [":host ::ng-deep mat-icon.mat-icon{margin-top:-.325em;margin-bottom:-.325em}\n"] }]
|
|
24063
24210
|
}], propDecorators: { type: [{
|
|
24064
24211
|
type: Input
|
|
24065
24212
|
}], disabled: [{
|
|
@@ -25061,11 +25208,11 @@ class TextAreaComponent {
|
|
|
25061
25208
|
this.rawChange.next(value);
|
|
25062
25209
|
}
|
|
25063
25210
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25064
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
25065
25212
|
}
|
|
25066
25213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
25067
25214
|
type: Component,
|
|
25068
|
-
args: [{ selector: 'gn-ui-text-area', template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25215
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"w-full pt-2 pl-2 resize-none border border-gray-800 rounded italic leading-tight focus:outline-none focus:bg-background focus:border-primary\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25069
25216
|
}], propDecorators: { value: [{
|
|
25070
25217
|
type: Input
|
|
25071
25218
|
}], placeholder: [{
|
|
@@ -25335,11 +25482,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25335
25482
|
|
|
25336
25483
|
class NavigationButtonComponent {
|
|
25337
25484
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25485
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25339
25486
|
}
|
|
25340
25487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
25341
25488
|
type: Component,
|
|
25342
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30
|
|
25489
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
25343
25490
|
}], propDecorators: { label: [{
|
|
25344
25491
|
type: Input
|
|
25345
25492
|
}], icon: [{
|
|
@@ -25653,10 +25800,8 @@ class UiInputsModule {
|
|
|
25653
25800
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25654
25801
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
25655
25802
|
AutocompleteComponent,
|
|
25656
|
-
ButtonComponent,
|
|
25657
25803
|
TextInputComponent,
|
|
25658
25804
|
DragAndDropFileInputComponent,
|
|
25659
|
-
TextAreaComponent,
|
|
25660
25805
|
ChipsInputComponent,
|
|
25661
25806
|
NavigationButtonComponent,
|
|
25662
25807
|
StarToggleComponent,
|
|
@@ -25689,7 +25834,9 @@ class UiInputsModule {
|
|
|
25689
25834
|
MatInputModule,
|
|
25690
25835
|
MatDatepickerModule,
|
|
25691
25836
|
MatNativeDateModule,
|
|
25692
|
-
EditableLabelDirective
|
|
25837
|
+
EditableLabelDirective,
|
|
25838
|
+
TextAreaComponent,
|
|
25839
|
+
ButtonComponent], exports: [DropdownSelectorComponent,
|
|
25693
25840
|
AutocompleteComponent,
|
|
25694
25841
|
ButtonComponent,
|
|
25695
25842
|
TextInputComponent,
|
|
@@ -25731,10 +25878,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25731
25878
|
declarations: [
|
|
25732
25879
|
DropdownSelectorComponent,
|
|
25733
25880
|
AutocompleteComponent,
|
|
25734
|
-
ButtonComponent,
|
|
25735
25881
|
TextInputComponent,
|
|
25736
25882
|
DragAndDropFileInputComponent,
|
|
25737
|
-
TextAreaComponent,
|
|
25738
25883
|
ChipsInputComponent,
|
|
25739
25884
|
NavigationButtonComponent,
|
|
25740
25885
|
StarToggleComponent,
|
|
@@ -25773,6 +25918,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25773
25918
|
MatDatepickerModule,
|
|
25774
25919
|
MatNativeDateModule,
|
|
25775
25920
|
EditableLabelDirective,
|
|
25921
|
+
TextAreaComponent,
|
|
25922
|
+
ButtonComponent,
|
|
25776
25923
|
],
|
|
25777
25924
|
exports: [
|
|
25778
25925
|
DropdownSelectorComponent,
|
|
@@ -25921,6 +26068,8 @@ class RecordApiFormComponent {
|
|
|
25921
26068
|
}
|
|
25922
26069
|
return outputUrl;
|
|
25923
26070
|
}));
|
|
26071
|
+
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
26072
|
+
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
25924
26073
|
}
|
|
25925
26074
|
set apiLink(value) {
|
|
25926
26075
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
@@ -25930,10 +26079,11 @@ class RecordApiFormComponent {
|
|
|
25930
26079
|
this.offset$.next(value);
|
|
25931
26080
|
}
|
|
25932
26081
|
setLimit(value) {
|
|
25933
|
-
|
|
26082
|
+
const newLimit = value === '' ? '-1' : value;
|
|
26083
|
+
this.limit$.next(newLimit);
|
|
25934
26084
|
}
|
|
25935
26085
|
setFormat(value) {
|
|
25936
|
-
this.format$.next(value);
|
|
26086
|
+
this.format$.next(String(value));
|
|
25937
26087
|
}
|
|
25938
26088
|
resetUrl() {
|
|
25939
26089
|
this.offset$.next(DEFAULT_PARAMS.OFFSET);
|
|
@@ -25941,11 +26091,11 @@ class RecordApiFormComponent {
|
|
|
25941
26091
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
25942
26092
|
}
|
|
25943
26093
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26094
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25945
26095
|
}
|
|
25946
26096
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
25947
26097
|
type: Component,
|
|
25948
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (
|
|
26098
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between flex-grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
25949
26099
|
}], propDecorators: { apiLink: [{
|
|
25950
26100
|
type: Input
|
|
25951
26101
|
}] } });
|
|
@@ -25991,7 +26141,6 @@ class UiElementsModule {
|
|
|
25991
26141
|
PaginationButtonsComponent,
|
|
25992
26142
|
MaxLinesComponent,
|
|
25993
26143
|
RecordApiFormComponent,
|
|
25994
|
-
MarkdownParserComponent,
|
|
25995
26144
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
25996
26145
|
MatIconModule,
|
|
25997
26146
|
MatTooltipModule,
|
|
@@ -26000,7 +26149,8 @@ class UiElementsModule {
|
|
|
26000
26149
|
RouterModule,
|
|
26001
26150
|
UiInputsModule,
|
|
26002
26151
|
FormsModule,
|
|
26003
|
-
NgOptimizedImage
|
|
26152
|
+
NgOptimizedImage,
|
|
26153
|
+
MarkdownParserComponent], exports: [MetadataInfoComponent,
|
|
26004
26154
|
ContentGhostComponent,
|
|
26005
26155
|
DownloadItemComponent,
|
|
26006
26156
|
DownloadsListComponent,
|
|
@@ -26047,6 +26197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26047
26197
|
UiInputsModule,
|
|
26048
26198
|
FormsModule,
|
|
26049
26199
|
NgOptimizedImage,
|
|
26200
|
+
MarkdownParserComponent,
|
|
26050
26201
|
],
|
|
26051
26202
|
declarations: [
|
|
26052
26203
|
MetadataInfoComponent,
|
|
@@ -26069,7 +26220,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26069
26220
|
PaginationButtonsComponent,
|
|
26070
26221
|
MaxLinesComponent,
|
|
26071
26222
|
RecordApiFormComponent,
|
|
26072
|
-
MarkdownParserComponent,
|
|
26073
26223
|
ImageOverlayPreviewComponent,
|
|
26074
26224
|
],
|
|
26075
26225
|
exports: [
|
|
@@ -27708,10 +27858,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27708
27858
|
class AbstractSearchField {
|
|
27709
27859
|
}
|
|
27710
27860
|
class SimpleSearchField {
|
|
27711
|
-
constructor(esFieldName, order = 'asc',
|
|
27861
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27712
27862
|
this.esFieldName = esFieldName;
|
|
27713
|
-
this.order = order;
|
|
27714
27863
|
this.injector = injector;
|
|
27864
|
+
this.order = order;
|
|
27865
|
+
this.orderType = orderType;
|
|
27715
27866
|
this.repository = this.injector.get(RecordsRepositoryInterface);
|
|
27716
27867
|
// FIXME: this is required to register runtime fields; abstract this as well
|
|
27717
27868
|
this.esService = this.injector.get(ElasticsearchService);
|
|
@@ -27722,12 +27873,12 @@ class SimpleSearchField {
|
|
|
27722
27873
|
type: 'terms',
|
|
27723
27874
|
field: this.esFieldName,
|
|
27724
27875
|
limit: 1000,
|
|
27725
|
-
sort: [this.order,
|
|
27876
|
+
sort: [this.order, this.orderType],
|
|
27726
27877
|
},
|
|
27727
27878
|
};
|
|
27728
27879
|
}
|
|
27729
27880
|
async getBucketLabel(bucket) {
|
|
27730
|
-
return bucket.term;
|
|
27881
|
+
return bucket.term.toString();
|
|
27731
27882
|
}
|
|
27732
27883
|
getAvailableValues() {
|
|
27733
27884
|
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
|
|
@@ -27755,9 +27906,13 @@ class SimpleSearchField {
|
|
|
27755
27906
|
return of(values);
|
|
27756
27907
|
}
|
|
27757
27908
|
}
|
|
27758
|
-
class
|
|
27759
|
-
constructor() {
|
|
27760
|
-
super(
|
|
27909
|
+
class TranslatedSearchField extends SimpleSearchField {
|
|
27910
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27911
|
+
super(esFieldName, injector, order, orderType);
|
|
27912
|
+
this.esFieldName = esFieldName;
|
|
27913
|
+
this.injector = injector;
|
|
27914
|
+
this.order = order;
|
|
27915
|
+
this.orderType = orderType;
|
|
27761
27916
|
this.platformService = this.injector.get(PlatformServiceInterface);
|
|
27762
27917
|
}
|
|
27763
27918
|
async getTranslation(key) {
|
|
@@ -27767,26 +27922,36 @@ class KeySearchField extends SimpleSearchField {
|
|
|
27767
27922
|
return (await this.getTranslation(bucket.term)) || bucket.term;
|
|
27768
27923
|
}
|
|
27769
27924
|
getAvailableValues() {
|
|
27925
|
+
if (this.orderType === 'count')
|
|
27926
|
+
return super.getAvailableValues();
|
|
27770
27927
|
// sort values by alphabetical order
|
|
27771
27928
|
return super
|
|
27772
27929
|
.getAvailableValues()
|
|
27773
27930
|
.pipe(map$1((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
|
|
27774
27931
|
}
|
|
27775
27932
|
}
|
|
27776
|
-
|
|
27777
|
-
|
|
27778
|
-
|
|
27779
|
-
|
|
27933
|
+
/**
|
|
27934
|
+
* This search field will either target the `.default` field, or a specific `.langxyz` field according
|
|
27935
|
+
* to the defined METADATA_LANGUAGE token
|
|
27936
|
+
* The provided ES field name should not include any prefix such as `.langeng`
|
|
27937
|
+
*/
|
|
27938
|
+
class MultilingualSearchField extends SimpleSearchField {
|
|
27939
|
+
constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
|
|
27940
|
+
super(esFieldName, injector, order, orderType);
|
|
27941
|
+
this.esFieldName = esFieldName;
|
|
27942
|
+
this.injector = injector;
|
|
27943
|
+
this.order = order;
|
|
27944
|
+
this.orderType = orderType;
|
|
27780
27945
|
this.langService = this.injector.get(LangService);
|
|
27781
|
-
this.
|
|
27782
|
-
|
|
27783
|
-
|
|
27784
|
-
|
|
27785
|
-
|
|
27786
|
-
}
|
|
27787
|
-
|
|
27788
|
-
|
|
27789
|
-
|
|
27946
|
+
this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
|
|
27947
|
+
// note: we're excluding the metadata language "current" value because that would produce
|
|
27948
|
+
// permalinks that might not work for different users
|
|
27949
|
+
if (this.searchLanguage && this.searchLanguage !== 'current') {
|
|
27950
|
+
this.esFieldName += `.lang${this.searchLanguage}`;
|
|
27951
|
+
}
|
|
27952
|
+
else {
|
|
27953
|
+
this.esFieldName += '.default';
|
|
27954
|
+
}
|
|
27790
27955
|
}
|
|
27791
27956
|
}
|
|
27792
27957
|
class FullTextSearchField {
|
|
@@ -27806,7 +27971,7 @@ marker('search.filters.isSpatial.yes');
|
|
|
27806
27971
|
marker('search.filters.isSpatial.no');
|
|
27807
27972
|
class IsSpatialSearchField extends SimpleSearchField {
|
|
27808
27973
|
constructor(injector) {
|
|
27809
|
-
super('isSpatial', 'asc'
|
|
27974
|
+
super('isSpatial', injector, 'asc');
|
|
27810
27975
|
this.translateService = this.injector.get(TranslateService);
|
|
27811
27976
|
this.esService.registerRuntimeField('isSpatial', `String result = 'no';
|
|
27812
27977
|
String formats = doc.format.join('|').toLowerCase();
|
|
@@ -27856,7 +28021,7 @@ marker('search.filters.license.unknown');
|
|
|
27856
28021
|
// Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
|
|
27857
28022
|
class LicenseSearchField extends SimpleSearchField {
|
|
27858
28023
|
constructor(injector) {
|
|
27859
|
-
super('license', 'asc'
|
|
28024
|
+
super('license', injector, 'asc');
|
|
27860
28025
|
this.translateService = this.injector.get(TranslateService);
|
|
27861
28026
|
this.esService.registerRuntimeField('license', `String raw = '';
|
|
27862
28027
|
if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
|
|
@@ -27940,7 +28105,7 @@ class OrganizationSearchField {
|
|
|
27940
28105
|
}
|
|
27941
28106
|
class OwnerSearchField extends SimpleSearchField {
|
|
27942
28107
|
constructor(injector) {
|
|
27943
|
-
super('owner', 'asc'
|
|
28108
|
+
super('owner', injector, 'asc');
|
|
27944
28109
|
}
|
|
27945
28110
|
getAvailableValues() {
|
|
27946
28111
|
return of([]);
|
|
@@ -27949,6 +28114,7 @@ class OwnerSearchField extends SimpleSearchField {
|
|
|
27949
28114
|
|
|
27950
28115
|
marker('search.filters.format');
|
|
27951
28116
|
marker('search.filters.inspireKeyword');
|
|
28117
|
+
marker('search.filters.keyword');
|
|
27952
28118
|
marker('search.filters.isSpatial');
|
|
27953
28119
|
marker('search.filters.license');
|
|
27954
28120
|
marker('search.filters.publicationYear');
|
|
@@ -27966,13 +28132,14 @@ class FieldsService {
|
|
|
27966
28132
|
this.injector = injector;
|
|
27967
28133
|
this.fields = {
|
|
27968
28134
|
publisher: new OrganizationSearchField(this.injector),
|
|
27969
|
-
format: new SimpleSearchField('format', 'asc'
|
|
27970
|
-
resourceType: new
|
|
27971
|
-
representationType: new
|
|
27972
|
-
publicationYear: new SimpleSearchField('publicationYearForResource', 'desc'
|
|
27973
|
-
topic: new
|
|
27974
|
-
inspireKeyword: new
|
|
27975
|
-
|
|
28135
|
+
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
28136
|
+
resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
|
|
28137
|
+
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
28138
|
+
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
28139
|
+
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
28140
|
+
inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
|
|
28141
|
+
keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
|
|
28142
|
+
documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
|
|
27976
28143
|
isSpatial: new IsSpatialSearchField(this.injector),
|
|
27977
28144
|
q: new FullTextSearchField(),
|
|
27978
28145
|
license: new LicenseSearchField(this.injector),
|
|
@@ -30833,11 +31000,11 @@ class LanguageSwitcherComponent {
|
|
|
30833
31000
|
this.translate.use(value);
|
|
30834
31001
|
}
|
|
30835
31002
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30836
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center
|
|
31003
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center !pl-2 !py-1'\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
30837
31004
|
}
|
|
30838
31005
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
30839
31006
|
type: Component,
|
|
30840
|
-
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center
|
|
31007
|
+
args: [{ selector: 'gn-ui-language-switcher', template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n [extraBtnClass]=\"'flex justify-items-center !pl-2 !py-1'\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
30841
31008
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
30842
31009
|
type: Optional
|
|
30843
31010
|
}, {
|
|
@@ -32201,5 +32368,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32201
32368
|
* Generated bundle index. Do not edit.
|
|
32202
32369
|
*/
|
|
32203
32370
|
|
|
32204
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32371
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32205
32372
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|