geonetwork-ui 2.7.0-dev.3d703fd88 → 2.7.0-dev.8ac6cd7aa
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/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.mjs +80 -0
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +1 -3
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +4 -4
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +21 -43
- package/esm2022/libs/util/shared/src/index.mjs +2 -2
- package/esm2022/libs/util/shared/src/lib/record/index.mjs +3 -0
- package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +45 -0
- package/esm2022/libs/util/shared/src/lib/record/record.util.mjs +56 -0
- package/esm2022/translations/de.json +5 -0
- package/esm2022/translations/en.json +5 -0
- package/esm2022/translations/es.json +5 -0
- package/esm2022/translations/fr.json +5 -0
- package/esm2022/translations/it.json +5 -0
- package/esm2022/translations/nl.json +5 -0
- package/esm2022/translations/pt.json +5 -0
- package/esm2022/translations/sk.json +5 -0
- package/fesm2022/geonetwork-ui.mjs +181 -51
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts +19 -0
- package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +7 -6
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -1
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/record/index.d.ts +3 -0
- package/libs/util/shared/src/lib/record/index.d.ts.map +1 -0
- package/libs/util/shared/src/lib/record/quality-score.util.d.ts +13 -0
- package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -0
- package/libs/util/shared/src/lib/record/record.util.d.ts +3 -0
- package/libs/util/shared/src/lib/record/record.util.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +0 -3
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.html +37 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.ts +93 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +2 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +0 -2
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +1 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +5 -1
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -0
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +21 -54
- package/src/libs/util/shared/src/index.ts +1 -1
- package/src/libs/util/shared/src/lib/record/index.ts +2 -0
- package/src/libs/util/shared/src/lib/record/quality-score.util.ts +69 -0
- package/src/libs/util/shared/src/lib/{record.util.ts → record/record.util.ts} +1 -1
- package/translations/de.json +5 -0
- package/translations/en.json +5 -0
- package/translations/es.json +5 -0
- package/translations/fr.json +5 -0
- package/translations/it.json +5 -0
- package/translations/nl.json +5 -0
- package/translations/pt.json +5 -0
- package/translations/sk.json +5 -0
- package/esm2022/libs/util/shared/src/lib/record.util.mjs +0 -56
- package/libs/util/shared/src/lib/record.util.d.ts +0 -3
- package/libs/util/shared/src/lib/record.util.d.ts.map +0 -1
|
@@ -9,4 +9,5 @@ export * from './lib/components/import-record/import-record.component';
|
|
|
9
9
|
export * from './lib/components/record-form/record-form.component';
|
|
10
10
|
export * from './lib/components/record-form/form-field';
|
|
11
11
|
export * from './lib/components/multilingual-panel/multilingual-panel.component';
|
|
12
|
+
export * from './lib/components/metadata-quality-panel/metadata-quality-panel.component';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/editor/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wDAAwD,CAAA;AACtE,cAAc,oDAAoD,CAAA;AAClE,cAAc,yCAAyC,CAAA;AACvD,cAAc,kEAAkE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/editor/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wDAAwD,CAAA;AACtE,cAAc,oDAAoD,CAAA;AAClE,cAAc,yCAAyC,CAAA;AACvD,cAAc,kEAAkE,CAAA;AAChF,cAAc,0EAA0E,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OnChanges } from '@angular/core';
|
|
2
|
+
import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record';
|
|
3
|
+
import { ValidatorMapperKeys } from '../../../../../../../libs/util/shared/src';
|
|
4
|
+
import { EditorConfig } from '../../models';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class MetadataQualityPanelComponent implements OnChanges {
|
|
7
|
+
propsToValidate: ValidatorMapperKeys[];
|
|
8
|
+
propertiesByPage: {
|
|
9
|
+
label: string;
|
|
10
|
+
value: boolean;
|
|
11
|
+
}[][];
|
|
12
|
+
editorConfig: EditorConfig;
|
|
13
|
+
record: CatalogRecord;
|
|
14
|
+
ngOnChanges(): void;
|
|
15
|
+
getExtraClass(checked: boolean): string;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MetadataQualityPanelComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MetadataQualityPanelComponent, "gn-ui-metadata-quality-panel", never, { "editorConfig": { "alias": "editorConfig"; "required": false; }; "record": { "alias": "record"; "required": false; }; }, {}, never, never, true, never>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=metadata-quality-panel.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-quality-panel.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAA;AAE5F,OAAO,EAGL,mBAAmB,EACpB,MAAM,2CAA2C,CAAA;AAQlD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;;AAQ3C,qBAsBa,6BAA8B,YAAW,SAAS;IAC7D,eAAe,EAAE,mBAAmB,EAAE,CAAwB;IAC9D,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,EAAE,CAAK;IACnD,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,aAAa,CAAA;IAE9B,WAAW;IAiCX,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;yCAvC5B,6BAA6B;2CAA7B,6BAA6B;CA8CzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/fields.config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAA;AAEhF;;;;;GAKG;AAEH;;;GAGG;AAEH,eAAO,MAAM,8BAA8B,EAAE,WAM5C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAKnC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,WAKrC,CAAA;AACD,eAAO,MAAM,0BAA0B,EAAE,WAKxC,CAAA;AACD,eAAO,MAAM,uBAAuB,EAAE,WAKrC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAGnC,CAAA;
|
|
1
|
+
{"version":3,"file":"fields.config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/fields.config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAA;AAEhF;;;;;GAKG;AAEH;;;GAGG;AAEH,eAAO,MAAM,8BAA8B,EAAE,WAM5C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAKnC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,WAKrC,CAAA;AACD,eAAO,MAAM,0BAA0B,EAAE,WAKxC,CAAA;AACD,eAAO,MAAM,uBAAuB,EAAE,WAKrC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAGnC,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAM3C,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,WAKvC,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAM3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAG3C,CAAA;AAID,eAAO,MAAM,6BAA6B,EAAE,WAK3C,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,WAKhC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAKnC,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,WAKzC,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,WAKtB,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,WAK7C,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,WAIzC,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,WAG1C,CAAA;AAID,eAAO,MAAM,uBAAuB,EAAE,WAIrC,CAAA;AAID,eAAO,MAAM,4BAA4B,EAAE,WAI1C,CAAA;AAID;;;GAGG;AAEH,eAAO,MAAM,aAAa,EAAE,aAO3B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,aAa3B,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,aAI3C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,aAO1C,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,aAK7B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,aAU/C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,aAKnC,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,aAO/C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAwBnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAUtC,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAW,CAAA;AAYzC,eAAO,MAAM,kBAAkB,KAAK,CAAA;AACpC;;;GAGG;AAEH,eAAO,MAAM,cAAc,EAAE,OAAO,EAanC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-link-card.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,MAAM,EAEN,WAAW,EACZ,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAa,YAAY,EAAE,MAAM,MAAM,CAAA;AAQ9C,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;
|
|
1
|
+
{"version":3,"file":"internal-link-card.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,MAAM,EAEN,WAAW,EACZ,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAa,YAAY,EAAE,MAAM,MAAM,CAAA;AAQ9C,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAWzF,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;AAEtC,qBAyBa,yBAA0B,YAAW,MAAM;IAqB1C,SAAS,CAAC,UAAU,EAAE,UAAU;IApBnC,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,SAAW;IACrB,QAAQ,EAAE,MAAM,CAAO;IACvB,sBAAsB,EAAE,OAAO,CAAA;IAC/B,gBAAgB,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACpE,IAAa,IAAI,CAAC,KAAK,EAAE,QAAQ,EAGhC;IACD,IAAI,IAAI,IAAI,QAAQ,CAEnB;IACS,QAAQ,8BAAoC;IACtD,YAAY,eAAqB;IAEjC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IAEjB,OAAO,CAAC,KAAK,CAAgB;gBAEP,UAAU,EAAE,UAAU;IAE5C,QAAQ,IAAI,IAAI;IAQhB,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,sBAAsB,YASzB;yCA5CU,yBAAyB;2CAAzB,yBAAyB;CA6CrC"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { MetadataQualityItem } from '../metadata-quality-item/metadata-quality-item.component';
|
|
3
3
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
4
|
+
import { type ValidatorMapperKeys } from '../../../../../../libs/util/shared/src';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class MetadataQualityComponent implements OnChanges {
|
|
6
|
-
metadata:
|
|
7
|
+
metadata: CatalogRecord;
|
|
7
8
|
smaller: boolean;
|
|
8
9
|
metadataQualityDisplay: boolean;
|
|
10
|
+
popoverDisplay: boolean;
|
|
11
|
+
propsToValidate?: ValidatorMapperKeys[];
|
|
12
|
+
forceComputeScore: boolean;
|
|
9
13
|
items: MetadataQualityItem[];
|
|
10
14
|
get qualityScore(): number;
|
|
11
|
-
get
|
|
12
|
-
private add;
|
|
15
|
+
get computedQualityScore(): number;
|
|
13
16
|
hasGetCapabilities(url: string): boolean;
|
|
14
|
-
private readonly COMMON_CHECKS;
|
|
15
|
-
private readonly SPECIFIC_CHECKS;
|
|
16
17
|
initialize(): void;
|
|
17
18
|
ngOnChanges(changes: SimpleChanges): void;
|
|
18
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<MetadataQualityComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MetadataQualityComponent, "gn-ui-metadata-quality", never, { "metadata": { "alias": "metadata"; "required": false; }; "smaller": { "alias": "smaller"; "required": false; }; "metadataQualityDisplay": { "alias": "metadataQualityDisplay"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MetadataQualityComponent, "gn-ui-metadata-quality", never, { "metadata": { "alias": "metadata"; "required": false; }; "smaller": { "alias": "smaller"; "required": false; }; "metadataQualityDisplay": { "alias": "metadataQualityDisplay"; "required": false; }; "popoverDisplay": { "alias": "popoverDisplay"; "required": false; }; "propsToValidate": { "alias": "propsToValidate"; "required": false; }; "forceComputeScore": { "alias": "forceComputeScore"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=metadata-quality.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-quality.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,aAAa,EACd,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,mBAAmB,EAEpB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;
|
|
1
|
+
{"version":3,"file":"metadata-quality.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,aAAa,EACd,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,mBAAmB,EAEpB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AAKzF,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,wCAAwC,CAAA;;AAM/C,qBAwBa,wBAAyB,YAAW,SAAS;IAC/C,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,UAAQ;IACf,sBAAsB,EAAE,OAAO,CAAA;IAC/B,cAAc,UAAO;IACrB,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACvC,iBAAiB,UAAQ;IAElC,KAAK,EAAE,mBAAmB,EAAE,CAAK;IAEjC,IAAI,YAAY,WAQf;IAED,IAAI,oBAAoB,IAAI,MAAM,CAIjC;IAED,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIxC,UAAU;IAUV,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;yCAxC9B,wBAAwB;2CAAxB,wBAAwB;CA6CpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/shared/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/shared/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/record/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
2
|
+
type TValidatorMapper = {
|
|
3
|
+
[key: string]: (metadata: Partial<CatalogRecord>) => boolean;
|
|
4
|
+
};
|
|
5
|
+
declare const ValidatorMapper: TValidatorMapper;
|
|
6
|
+
export type ValidatorMapperKeys = keyof typeof ValidatorMapper & string;
|
|
7
|
+
export declare function getAllKeysValidator(): string[];
|
|
8
|
+
export declare function getQualityValidators(record: Partial<CatalogRecord>, propsToValidate: ValidatorMapperKeys[]): {
|
|
9
|
+
name: string;
|
|
10
|
+
validator: () => boolean;
|
|
11
|
+
}[];
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=quality-score.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality-score.util.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/record/quality-score.util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,MAAM,2DAA2D,CAAA;AAElE,KAAK,gBAAgB,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAA;CAC7D,CAAA;AAED,QAAA,MAAM,eAAe,EAAE,gBAcb,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,eAAe,GAAG,MAAM,CAAA;AAEvE,wBAAgB,mBAAmB,aAElC;AA2BD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,eAAe,EAAE,mBAAmB,EAAE;;;IAUvC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { CatalogRecord, LanguageCode } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
2
|
+
export declare function updateLanguages<T extends CatalogRecord>(record: T, defaultLanguage: LanguageCode, otherLanguages: LanguageCode[]): T;
|
|
3
|
+
//# sourceMappingURL=record.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.util.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/record/record.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAMb,YAAY,EAIb,MAAM,2DAA2D,CAAA;AAalE,wBAAgB,eAAe,CAAC,CAAC,SAAS,aAAa,EACrD,MAAM,EAAE,CAAC,EACT,eAAe,EAAE,YAAY,EAC7B,cAAc,EAAE,YAAY,EAAE,GAC7B,CAAC,CAoFH"}
|
package/package.json
CHANGED
|
@@ -127,9 +127,6 @@ export const editorFieldSpatialExtentsFixture = () => ({
|
|
|
127
127
|
export const editorFieldKeywordsFixture = () => ({
|
|
128
128
|
model: 'keywords',
|
|
129
129
|
hidden: false,
|
|
130
|
-
formFieldConfig: {
|
|
131
|
-
labelKey: 'editor.record.form.field.keywords',
|
|
132
|
-
},
|
|
133
130
|
})
|
|
134
131
|
|
|
135
132
|
export const editorFieldUniqueIdentifierFixture = () => ({
|
|
@@ -9,3 +9,4 @@ export * from './lib/components/import-record/import-record.component'
|
|
|
9
9
|
export * from './lib/components/record-form/record-form.component'
|
|
10
10
|
export * from './lib/components/record-form/form-field'
|
|
11
11
|
export * from './lib/components/multilingual-panel/multilingual-panel.component'
|
|
12
|
+
export * from './lib/components/metadata-quality-panel/metadata-quality-panel.component'
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<div
|
|
2
|
+
class="flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-3 overflow-auto"
|
|
3
|
+
style="background-color: #fafaf9"
|
|
4
|
+
>
|
|
5
|
+
<div class="flex flex-row px-2 justify-between">
|
|
6
|
+
<span class="text-3xl font-title text-black/80" translate
|
|
7
|
+
>editor.record.form.metadataQuality.title</span
|
|
8
|
+
>
|
|
9
|
+
</div>
|
|
10
|
+
<div
|
|
11
|
+
*ngFor="let properties of propertiesByPage; let i = index"
|
|
12
|
+
class="flex flex-col gap-2"
|
|
13
|
+
>
|
|
14
|
+
<gn-ui-button
|
|
15
|
+
*ngFor="let property of properties"
|
|
16
|
+
[extraClass]="getExtraClass(property.value)"
|
|
17
|
+
type="outline"
|
|
18
|
+
attr.data-cy="md-quality-btn-{{ property.label }}"
|
|
19
|
+
>
|
|
20
|
+
<span>{{ property.label | translate }}</span>
|
|
21
|
+
<div class="flex flex-row gap-2 items-center">
|
|
22
|
+
<ng-icon
|
|
23
|
+
*ngIf="property.value; else notChecked"
|
|
24
|
+
class="text-primary"
|
|
25
|
+
name="iconoirBadgeCheck"
|
|
26
|
+
></ng-icon>
|
|
27
|
+
<ng-template #notChecked>
|
|
28
|
+
<ng-icon class="text-neutral-300" name="iconoirSystemShut"></ng-icon>
|
|
29
|
+
</ng-template>
|
|
30
|
+
</div>
|
|
31
|
+
</gn-ui-button>
|
|
32
|
+
<hr
|
|
33
|
+
*ngIf="i !== propertiesByPage.length - 1"
|
|
34
|
+
class="border-gray-300 w-11/12 mx-auto"
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common'
|
|
2
|
+
import { Component, Input, OnChanges } from '@angular/core'
|
|
3
|
+
import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
|
|
4
|
+
import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src'
|
|
5
|
+
import {
|
|
6
|
+
getAllKeysValidator,
|
|
7
|
+
getQualityValidators,
|
|
8
|
+
ValidatorMapperKeys,
|
|
9
|
+
} from '../../../../../../../libs/util/shared/src'
|
|
10
|
+
import {
|
|
11
|
+
NgIconComponent,
|
|
12
|
+
provideIcons,
|
|
13
|
+
provideNgIconsConfig,
|
|
14
|
+
} from '@ng-icons/core'
|
|
15
|
+
import { iconoirBadgeCheck, iconoirSystemShut } from '@ng-icons/iconoir'
|
|
16
|
+
import { TranslateDirective, TranslatePipe } from '@ngx-translate/core'
|
|
17
|
+
import { EditorConfig } from '../../models'
|
|
18
|
+
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
19
|
+
|
|
20
|
+
//forced translations that are not available in fields.config.ts
|
|
21
|
+
marker('editor.record.form.field.keywords')
|
|
22
|
+
marker('editor.record.form.field.topics')
|
|
23
|
+
marker('editor.record.form.field.contacts')
|
|
24
|
+
marker('editor.record.form.field.organisation')
|
|
25
|
+
@Component({
|
|
26
|
+
selector: 'gn-ui-metadata-quality-panel',
|
|
27
|
+
standalone: true,
|
|
28
|
+
imports: [
|
|
29
|
+
CommonModule,
|
|
30
|
+
TranslateDirective,
|
|
31
|
+
TranslatePipe,
|
|
32
|
+
ButtonComponent,
|
|
33
|
+
NgIconComponent,
|
|
34
|
+
],
|
|
35
|
+
providers: [
|
|
36
|
+
provideIcons({
|
|
37
|
+
iconoirSystemShut,
|
|
38
|
+
iconoirBadgeCheck,
|
|
39
|
+
}),
|
|
40
|
+
provideNgIconsConfig({
|
|
41
|
+
size: '1.25em',
|
|
42
|
+
}),
|
|
43
|
+
],
|
|
44
|
+
templateUrl: './metadata-quality-panel.component.html',
|
|
45
|
+
styleUrl: './metadata-quality-panel.component.css',
|
|
46
|
+
})
|
|
47
|
+
export class MetadataQualityPanelComponent implements OnChanges {
|
|
48
|
+
propsToValidate: ValidatorMapperKeys[] = getAllKeysValidator()
|
|
49
|
+
propertiesByPage: { label: string; value: boolean }[][] = []
|
|
50
|
+
@Input() editorConfig: EditorConfig
|
|
51
|
+
@Input() record: CatalogRecord
|
|
52
|
+
|
|
53
|
+
ngOnChanges() {
|
|
54
|
+
if (this.editorConfig && this.record) {
|
|
55
|
+
const fieldsByPage = this.editorConfig.pages.map((page) =>
|
|
56
|
+
page.sections.flatMap((section) =>
|
|
57
|
+
section.fields
|
|
58
|
+
.filter(
|
|
59
|
+
(field) =>
|
|
60
|
+
this.propsToValidate.includes(field.model) && !field.hidden
|
|
61
|
+
)
|
|
62
|
+
.map((field) => field.model as ValidatorMapperKeys)
|
|
63
|
+
)
|
|
64
|
+
)
|
|
65
|
+
// FIXME: temporarily add topics and organisation to the first and third page
|
|
66
|
+
// as long as they are not handled by the editor
|
|
67
|
+
if (fieldsByPage.length > 0) {
|
|
68
|
+
fieldsByPage[0].includes('topics') || fieldsByPage[0].push('topics')
|
|
69
|
+
fieldsByPage[2].includes('organisation') ||
|
|
70
|
+
fieldsByPage[2].push('organisation')
|
|
71
|
+
}
|
|
72
|
+
this.propertiesByPage = fieldsByPage
|
|
73
|
+
.map((fields) =>
|
|
74
|
+
getQualityValidators(
|
|
75
|
+
this.record,
|
|
76
|
+
fields as ValidatorMapperKeys[]
|
|
77
|
+
).map(({ name, validator }) => ({
|
|
78
|
+
label: `editor.record.form.field.${name}`, // use same translations as in fields.config.ts
|
|
79
|
+
value: validator(),
|
|
80
|
+
}))
|
|
81
|
+
)
|
|
82
|
+
.filter((arr) => arr.length > 0)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
getExtraClass(checked: boolean): string {
|
|
87
|
+
const baseClasses =
|
|
88
|
+
'flex flex-row justify-between rounded mb-1 h-[34px] w-full focus:ring-0 hover:border-none border-none hover:text-black text-black cursor-default'
|
|
89
|
+
return checked
|
|
90
|
+
? `${baseClasses} bg-neutral-100 hover:bg-neutral-100`
|
|
91
|
+
: `${baseClasses} bg-transparent hover:bg-transparent`
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<div
|
|
2
|
-
class="flex flex-col h-full w-[302px]
|
|
2
|
+
class="flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-6 overflow-auto"
|
|
3
|
+
style="background-color: #fafaf9"
|
|
3
4
|
>
|
|
4
5
|
<div class="flex flex-row px-2 justify-between">
|
|
5
6
|
<span class="text-3xl font-title text-black/80" translate
|
|
@@ -63,8 +63,6 @@ export const RECORD_KEYWORDS_FIELD: EditorField = {
|
|
|
63
63
|
model: 'keywords',
|
|
64
64
|
formFieldConfig: {},
|
|
65
65
|
}
|
|
66
|
-
// keeping track of the label to not lose existing translation
|
|
67
|
-
marker('editor.record.form.field.keywords')
|
|
68
66
|
|
|
69
67
|
export const RECORD_RESOURCE_CREATED_FIELD: EditorField = {
|
|
70
68
|
model: 'resourceCreated',
|
|
@@ -21,7 +21,11 @@ import { KindBadgeComponent } from '../kind-badge/kind-badge.component'
|
|
|
21
21
|
import { MarkdownParserComponent } from '../markdown-parser/markdown-parser.component'
|
|
22
22
|
import { MetadataQualityComponent } from '../metadata-quality/metadata-quality.component'
|
|
23
23
|
import { ThumbnailComponent } from '../thumbnail/thumbnail.component'
|
|
24
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
removeWhitespace,
|
|
26
|
+
stripHtml,
|
|
27
|
+
type ValidatorMapperKeys,
|
|
28
|
+
} from '../../../../../../libs/util/shared/src'
|
|
25
29
|
|
|
26
30
|
type CardSize = 'L' | 'M' | 'S' | 'XS'
|
|
27
31
|
|
|
@@ -14,15 +14,16 @@ import {
|
|
|
14
14
|
PopoverComponent,
|
|
15
15
|
ProgressBarComponent,
|
|
16
16
|
} from '../../../../../../libs/ui/widgets/src'
|
|
17
|
+
import {
|
|
18
|
+
getQualityValidators,
|
|
19
|
+
getAllKeysValidator,
|
|
20
|
+
type ValidatorMapperKeys,
|
|
21
|
+
} from '../../../../../../libs/util/shared/src'
|
|
17
22
|
import { CommonModule } from '@angular/common'
|
|
18
23
|
import { TranslateDirective } from '@ngx-translate/core'
|
|
19
24
|
import { NgIcon, provideIcons, provideNgIconsConfig } from '@ng-icons/core'
|
|
20
25
|
import { matInfoOutline } from '@ng-icons/material-icons/outline'
|
|
21
26
|
|
|
22
|
-
type QualityChecks = {
|
|
23
|
-
[key: string]: (metadata: Partial<CatalogRecord>) => boolean
|
|
24
|
-
}
|
|
25
|
-
|
|
26
27
|
@Component({
|
|
27
28
|
selector: 'gn-ui-metadata-quality',
|
|
28
29
|
templateUrl: './metadata-quality.component.html',
|
|
@@ -48,77 +49,43 @@ type QualityChecks = {
|
|
|
48
49
|
],
|
|
49
50
|
})
|
|
50
51
|
export class MetadataQualityComponent implements OnChanges {
|
|
51
|
-
@Input() metadata:
|
|
52
|
+
@Input() metadata: CatalogRecord
|
|
52
53
|
@Input() smaller = false
|
|
53
54
|
@Input() metadataQualityDisplay: boolean
|
|
55
|
+
@Input() popoverDisplay = true
|
|
56
|
+
@Input() propsToValidate?: ValidatorMapperKeys[]
|
|
57
|
+
@Input() forceComputeScore = false // Instead of returning es' quality score
|
|
54
58
|
|
|
55
59
|
items: MetadataQualityItem[] = []
|
|
56
60
|
|
|
57
61
|
get qualityScore() {
|
|
58
|
-
const qualityScore = this.
|
|
62
|
+
const qualityScore = !this.forceComputeScore
|
|
63
|
+
? this.metadata?.extras?.qualityScore
|
|
64
|
+
: this.computedQualityScore
|
|
65
|
+
|
|
59
66
|
return typeof qualityScore === 'number'
|
|
60
67
|
? qualityScore
|
|
61
|
-
: this.
|
|
68
|
+
: this.computedQualityScore
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
get
|
|
71
|
+
get computedQualityScore(): number {
|
|
65
72
|
return Math.round(
|
|
66
73
|
(this.items.filter(({ value }) => value).length * 100) / this.items.length
|
|
67
74
|
)
|
|
68
75
|
}
|
|
69
76
|
|
|
70
|
-
private add(name: string, value: boolean) {
|
|
71
|
-
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
72
|
-
this.items.push({ name, value })
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
77
|
hasGetCapabilities(url: string): boolean {
|
|
76
78
|
return url.toLowerCase().includes('capabilities')
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
private readonly COMMON_CHECKS: QualityChecks = {
|
|
80
|
-
title: (metadata) => !!metadata?.title,
|
|
81
|
-
description: (metadata) => !!metadata?.abstract,
|
|
82
|
-
keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
|
|
83
|
-
legalConstraints: (metadata) =>
|
|
84
|
-
(metadata?.legalConstraints?.length ?? 0) > 0,
|
|
85
|
-
contact: (metadata) => !!metadata?.contacts?.[0]?.email,
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
private readonly SPECIFIC_CHECKS: Record<string, QualityChecks> = {
|
|
89
|
-
dataset: {
|
|
90
|
-
updateFrequency: (metadata) => !!metadata?.updateFrequency,
|
|
91
|
-
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
92
|
-
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
93
|
-
},
|
|
94
|
-
service: {
|
|
95
|
-
capabilities: (metadata) =>
|
|
96
|
-
(metadata?.onlineResources ?? []).some((resource) =>
|
|
97
|
-
this.hasGetCapabilities(resource?.url?.href ?? '')
|
|
98
|
-
),
|
|
99
|
-
},
|
|
100
|
-
reuse: {
|
|
101
|
-
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
102
|
-
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
103
|
-
source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
|
|
104
|
-
},
|
|
105
|
-
}
|
|
106
|
-
|
|
107
81
|
initialize() {
|
|
108
|
-
this.
|
|
109
|
-
|
|
110
|
-
Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
|
|
111
|
-
this.add(name, check(this.metadata))
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
const datasetType = this.metadata?.kind
|
|
115
|
-
if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
|
|
116
|
-
Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(
|
|
117
|
-
([name, check]) => {
|
|
118
|
-
this.add(name, check(this.metadata))
|
|
119
|
-
}
|
|
120
|
-
)
|
|
82
|
+
if (!this.propsToValidate) {
|
|
83
|
+
this.propsToValidate = getAllKeysValidator()
|
|
121
84
|
}
|
|
85
|
+
|
|
86
|
+
this.items = getQualityValidators(this.metadata, this.propsToValidate).map(
|
|
87
|
+
({ name, validator }) => ({ name, value: validator() })
|
|
88
|
+
)
|
|
122
89
|
}
|
|
123
90
|
|
|
124
91
|
ngOnChanges(changes: SimpleChanges): void {
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CatalogRecord,
|
|
3
|
+
RecordKind,
|
|
4
|
+
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
5
|
+
|
|
6
|
+
type TValidatorMapper = {
|
|
7
|
+
[key: string]: (metadata: Partial<CatalogRecord>) => boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ValidatorMapper: TValidatorMapper = {
|
|
11
|
+
title: (record) => !!record?.title,
|
|
12
|
+
abstract: (record) => !!record?.abstract,
|
|
13
|
+
keywords: (record) => (record?.keywords?.length ?? 0) > 0,
|
|
14
|
+
legalConstraints: (record) => (record?.legalConstraints?.length ?? 0) > 0,
|
|
15
|
+
contacts: (record) => !!record?.contacts?.[0]?.email,
|
|
16
|
+
updateFrequency: (record) => !!record?.updateFrequency,
|
|
17
|
+
topics: (record) => (record?.topics?.length ?? 0) > 0,
|
|
18
|
+
organisation: (record) => !!record?.contacts?.[0]?.organization?.name,
|
|
19
|
+
capabilities: (record) =>
|
|
20
|
+
record?.onlineResources?.some((resource) =>
|
|
21
|
+
resource?.url?.href.toLowerCase().includes('capabilities')
|
|
22
|
+
),
|
|
23
|
+
source: (record) => !!record?.extras?.sourcesIdentifiers,
|
|
24
|
+
} as const
|
|
25
|
+
|
|
26
|
+
export type ValidatorMapperKeys = keyof typeof ValidatorMapper & string
|
|
27
|
+
|
|
28
|
+
export function getAllKeysValidator() {
|
|
29
|
+
return Object.keys(ValidatorMapper)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function getMappersFromKind(kind: RecordKind) {
|
|
33
|
+
let kindKeys = <ValidatorMapperKeys[]>[]
|
|
34
|
+
const commonsKeys = <ValidatorMapperKeys[]>[
|
|
35
|
+
'title',
|
|
36
|
+
'abstract',
|
|
37
|
+
'keywords',
|
|
38
|
+
'legalConstraints',
|
|
39
|
+
'contacts',
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
switch (kind) {
|
|
43
|
+
case 'service':
|
|
44
|
+
kindKeys = ['capabilities']
|
|
45
|
+
break
|
|
46
|
+
case 'reuse':
|
|
47
|
+
kindKeys = ['topics', 'organisation', 'source']
|
|
48
|
+
break
|
|
49
|
+
case 'dataset':
|
|
50
|
+
default:
|
|
51
|
+
kindKeys = ['updateFrequency', 'topics', 'organisation']
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return [...commonsKeys, ...kindKeys]
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function getQualityValidators(
|
|
58
|
+
record: Partial<CatalogRecord>,
|
|
59
|
+
propsToValidate: ValidatorMapperKeys[]
|
|
60
|
+
) {
|
|
61
|
+
const filteredProps = propsToValidate.filter((prop) =>
|
|
62
|
+
getMappersFromKind(record.kind).includes(prop)
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return filteredProps.map((name) => ({
|
|
66
|
+
name,
|
|
67
|
+
validator: () => ValidatorMapper[name](record),
|
|
68
|
+
}))
|
|
69
|
+
}
|
package/translations/de.json
CHANGED
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"editor.record.form.draft.updateAlert": "",
|
|
143
143
|
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
144
144
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
145
|
+
"editor.record.form.field.contacts": "Ansprechpartner - Email",
|
|
145
146
|
"editor.record.form.field.contacts.noContact": "",
|
|
146
147
|
"editor.record.form.field.contacts.placeholder": "",
|
|
147
148
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -166,6 +167,7 @@
|
|
|
166
167
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
167
168
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
168
169
|
"editor.record.form.field.onlineResources": "",
|
|
170
|
+
"editor.record.form.field.organisation": "Ansprechpartner - Organisation",
|
|
169
171
|
"editor.record.form.field.otherConstraints": "Allgemeine Einschränkung",
|
|
170
172
|
"editor.record.form.field.overviews": "",
|
|
171
173
|
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
@@ -177,6 +179,7 @@
|
|
|
177
179
|
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
178
180
|
"editor.record.form.field.title": "Metadaten-Titel",
|
|
179
181
|
"editor.record.form.field.title.placeholder": "Geben Sie einen Titel ein",
|
|
182
|
+
"editor.record.form.field.topics": "Kategorien",
|
|
180
183
|
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
181
184
|
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
182
185
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -191,6 +194,8 @@
|
|
|
191
194
|
"editor.record.form.license.odc-by": "",
|
|
192
195
|
"editor.record.form.license.pddl": "",
|
|
193
196
|
"editor.record.form.license.unknown": "",
|
|
197
|
+
"editor.record.form.metadataQuality.open": "Öffnen Sie das Panel zur Metadatenqualität",
|
|
198
|
+
"editor.record.form.metadataQuality.title": "Vollständigkeit",
|
|
194
199
|
"editor.record.form.multilingual.activate": "",
|
|
195
200
|
"editor.record.form.multilingual.default": "",
|
|
196
201
|
"editor.record.form.multilingual.enable": "",
|
package/translations/en.json
CHANGED
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"editor.record.form.draft.updateAlert": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
|
|
143
143
|
"editor.record.form.field.abstract": "Abstract",
|
|
144
144
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
145
|
+
"editor.record.form.field.contacts": "Point of contact - Email",
|
|
145
146
|
"editor.record.form.field.contacts.noContact": "Please provide at least one point of contact.",
|
|
146
147
|
"editor.record.form.field.contacts.placeholder": "Choose a contact",
|
|
147
148
|
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
|
|
@@ -166,6 +167,7 @@
|
|
|
166
167
|
"editor.record.form.field.onlineResource.toggle.dataset": "Link to a file",
|
|
167
168
|
"editor.record.form.field.onlineResource.toggle.service": "Link to a service",
|
|
168
169
|
"editor.record.form.field.onlineResources": "Distribution",
|
|
170
|
+
"editor.record.form.field.organisation": "Point of contact - Organization",
|
|
169
171
|
"editor.record.form.field.otherConstraints": "Other constraint",
|
|
170
172
|
"editor.record.form.field.overviews": "Overview",
|
|
171
173
|
"editor.record.form.field.recordUpdated": "Record updated",
|
|
@@ -177,6 +179,7 @@
|
|
|
177
179
|
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
178
180
|
"editor.record.form.field.title": "Metadata title",
|
|
179
181
|
"editor.record.form.field.title.placeholder": "Enter a title",
|
|
182
|
+
"editor.record.form.field.topics": "Categories",
|
|
180
183
|
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
181
184
|
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
182
185
|
"editor.record.form.keywords.place.placeholder": "Search for place keywords",
|
|
@@ -191,6 +194,8 @@
|
|
|
191
194
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
192
195
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
193
196
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
197
|
+
"editor.record.form.metadataQuality.open": "Open the metadata quality panel",
|
|
198
|
+
"editor.record.form.metadataQuality.title": "Completeness",
|
|
194
199
|
"editor.record.form.multilingual.activate": "Activate the languages",
|
|
195
200
|
"editor.record.form.multilingual.default": "Default",
|
|
196
201
|
"editor.record.form.multilingual.enable": "Multilingual Mode",
|