geonetwork-ui 2.6.0-dev.97a89c313 → 2.6.0-dev.9b9a26109
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/gn4.field.mapper.mjs +39 -4
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +60 -9
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -1
- package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +266 -11
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +3 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -34
- package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +20 -10
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +21 -12
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +39 -18
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +10 -4
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
- package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
- package/esm2022/translations/de.json +32 -6
- package/esm2022/translations/en.json +32 -6
- package/esm2022/translations/es.json +31 -5
- package/esm2022/translations/fr.json +32 -6
- package/esm2022/translations/it.json +31 -5
- package/esm2022/translations/nl.json +31 -5
- package/esm2022/translations/pt.json +31 -5
- package/fesm2022/geonetwork-ui.mjs +887 -205
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
- 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.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -6
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/index.d.ts +1 -0
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +2 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +61 -4
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -1
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +96 -9
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +11 -0
- package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +49 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +316 -6
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -0
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +7 -75
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +20 -51
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -6
- package/src/libs/ui/search/src/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +15 -11
- package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +33 -15
- package/src/libs/ui/search/src/lib/ui-search.module.ts +3 -0
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
- package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
- package/tailwind.base.css +1 -1
- package/translations/de.json +32 -6
- package/translations/en.json +32 -6
- package/translations/es.json +31 -5
- package/translations/fr.json +32 -6
- package/translations/it.json +31 -5
- package/translations/nl.json +31 -5
- package/translations/pt.json +31 -5
- package/translations/sk.json +31 -5
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { EventEmitter, QueryList } from '@angular/core';
|
|
2
2
|
import { InteractiveTableColumnComponent } from './interactive-table-column/interactive-table-column.component';
|
|
3
3
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class InteractiveTableComponent {
|
|
6
7
|
columns: QueryList<InteractiveTableColumnComponent>;
|
|
7
8
|
items: unknown[];
|
|
9
|
+
canEditItem: (item: unknown) => Observable<boolean>;
|
|
8
10
|
isDraftPage: boolean;
|
|
9
11
|
itemClick: EventEmitter<unknown>;
|
|
10
12
|
get gridStyle(): {
|
|
11
13
|
'grid-template-columns': string;
|
|
12
14
|
};
|
|
13
|
-
getItemTitle(item: CatalogRecord): "" | "editor.record.lock.
|
|
15
|
+
getItemTitle(item: CatalogRecord): "" | "editor.record.lock.resourceType" | "editor.record.lock.harvested" | "editor.record.lock.owner";
|
|
14
16
|
handleRowClick(item: unknown): void;
|
|
15
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<InteractiveTableComponent, never>;
|
|
16
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveTableComponent, "gn-ui-interactive-table", never, { "items": { "alias": "items"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; }, { "itemClick": "itemClick"; }, ["columns"], never, true, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveTableComponent, "gn-ui-interactive-table", never, { "items": { "alias": "items"; "required": false; }; "canEditItem": { "alias": "canEditItem"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; }, { "itemClick": "itemClick"; }, ["columns"], never, true, never>;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=interactive-table.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAGZ,SAAS,EACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAA;AAM/G,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;
|
|
1
|
+
{"version":3,"file":"interactive-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAGZ,SAAS,EACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAA;AAM/G,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,UAAU,EAAM,MAAM,MAAM,CAAA;;AAKrC,qBASa,yBAAyB;IAEpC,OAAO,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAA;IAE1C,KAAK,EAAE,OAAO,EAAE,CAAK;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,CAAiB;IACpE,WAAW,UAAQ;IAClB,SAAS,wBAA8B;IAEjD,IAAI,SAAS;;MAYZ;IAED,YAAY,CAAC,IAAI,EAAE,aAAa;IAahC,cAAc,CAAC,IAAI,EAAE,OAAO;yCApCjB,yBAAyB;2CAAzB,yBAAyB;CAuCrC"}
|
|
@@ -19,4 +19,5 @@ export * from './lib/results-list-item/results-list-item.component';
|
|
|
19
19
|
export * from './lib/results-hits-search-kind/results-hits-search-kind.component';
|
|
20
20
|
export * from './lib/results-hits-number/results-hits-number.component';
|
|
21
21
|
export * from './lib/results-table/results-table.component';
|
|
22
|
+
export * from './lib/results-table/action-menu/action-menu.component';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/search/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3E,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,wBAAwB,CAAA;AACtC,cAAc,0CAA0C,CAAA;AACxD,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,yDAAyD,CAAA;AACvE,cAAc,uDAAuD,CAAA;AACrE,cAAc,yDAAyD,CAAA;AACvE,cAAc,yDAAyD,CAAA;AACvE,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qDAAqD,CAAA;AACnE,cAAc,mEAAmE,CAAA;AACjF,cAAc,yDAAyD,CAAA;AACvE,cAAc,6CAA6C,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/search/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3E,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,wBAAwB,CAAA;AACtC,cAAc,0CAA0C,CAAA;AACxD,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,yDAAyD,CAAA;AACvE,cAAc,uDAAuD,CAAA;AACrE,cAAc,yDAAyD,CAAA;AACvE,cAAc,yDAAyD,CAAA;AACvE,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qDAAqD,CAAA;AACnE,cAAc,mEAAmE,CAAA;AACjF,cAAc,yDAAyD,CAAA;AACvE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uDAAuD,CAAA"}
|
|
@@ -7,20 +7,21 @@ export declare class ActionMenuComponent {
|
|
|
7
7
|
dialog: MatDialog;
|
|
8
8
|
private cdr;
|
|
9
9
|
canDuplicate: boolean;
|
|
10
|
+
isDuplicating: boolean;
|
|
10
11
|
canDelete: boolean;
|
|
11
|
-
|
|
12
|
+
page: 'draft' | 'main' | 'record';
|
|
12
13
|
duplicate: EventEmitter<void>;
|
|
13
14
|
delete: EventEmitter<void>;
|
|
14
15
|
closeActionMenu: EventEmitter<void>;
|
|
15
16
|
rollback: EventEmitter<void>;
|
|
17
|
+
switch: EventEmitter<void>;
|
|
16
18
|
trigger: MatMenuTrigger;
|
|
17
19
|
sectionDisplayed: ActionMenuPage;
|
|
18
20
|
constructor(dialog: MatDialog, cdr: ChangeDetectorRef);
|
|
19
|
-
openMenu(): void;
|
|
20
21
|
displayMainMenu(): void;
|
|
21
22
|
displayDeleteMenu(): void;
|
|
22
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActionMenuComponent, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ActionMenuComponent, "gn-ui-action-menu", never, { "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActionMenuComponent, "gn-ui-action-menu", never, { "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "isDuplicating": { "alias": "isDuplicating"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "page": { "alias": "page"; "required": false; }; }, { "duplicate": "duplicate"; "delete": "delete"; "closeActionMenu": "closeActionMenu"; "rollback": "rollback"; "switch": "switch"; }, never, never, true, never>;
|
|
24
25
|
}
|
|
25
26
|
export {};
|
|
26
27
|
//# sourceMappingURL=action-menu.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EAIb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAmB,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAA;;AAKtE,KAAK,cAAc,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAA;AAEhE,qBAca,mBAAmB;
|
|
1
|
+
{"version":3,"file":"action-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EAIb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAmB,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAA;;AAKtE,KAAK,cAAc,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAA;AAEhE,qBAca,mBAAmB;IAgBrB,MAAM,EAAE,SAAS;IACxB,OAAO,CAAC,GAAG;IAhBJ,YAAY,UAAO;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,UAAO;IAChB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;IAChC,SAAS,qBAA2B;IACpC,MAAM,qBAA2B;IACjC,eAAe,qBAA2B;IAC1C,QAAQ,qBAA2B;IACnC,MAAM,qBAA2B;IAEhB,OAAO,EAAE,cAAc,CAAA;IAElD,gBAAgB,EAAE,cAAc,CAAa;gBAGpC,MAAM,EAAE,SAAS,EAChB,GAAG,EAAE,iBAAiB;IAGhC,eAAe;IAKf,iBAAiB;yCAzBN,mBAAmB;2CAAnB,mBAAmB;CAuC/B"}
|
|
@@ -2,19 +2,23 @@ import { ChangeDetectorRef, ElementRef, EventEmitter, QueryList, ViewContainerRe
|
|
|
2
2
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
3
3
|
import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search';
|
|
4
4
|
import { DateService, FileFormat } from '../../../../../../libs/util/shared/src';
|
|
5
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
6
|
import { Overlay } from '@angular/cdk/overlay';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
export declare class ResultsTableComponent {
|
|
8
10
|
private overlay;
|
|
9
11
|
private viewContainerRef;
|
|
10
12
|
private cdr;
|
|
11
13
|
private dateService;
|
|
14
|
+
private translateService;
|
|
12
15
|
records: CatalogRecord[];
|
|
13
16
|
selectedRecordsIdentifiers: string[];
|
|
14
17
|
sortOrder: SortByField;
|
|
15
18
|
hasDraft: (record: CatalogRecord) => boolean;
|
|
16
19
|
canDuplicate: (record: CatalogRecord) => boolean;
|
|
17
|
-
canDelete: (record: CatalogRecord) => boolean
|
|
20
|
+
canDelete: (record: CatalogRecord) => Observable<boolean>;
|
|
21
|
+
canEdit: (record: CatalogRecord) => Observable<boolean>;
|
|
18
22
|
isDraftPage: boolean;
|
|
19
23
|
isDuplicating: boolean;
|
|
20
24
|
sortByChange: EventEmitter<[string, "desc" | "asc"]>;
|
|
@@ -26,14 +30,14 @@ export declare class ResultsTableComponent {
|
|
|
26
30
|
actionMenuButtons: QueryList<ElementRef>;
|
|
27
31
|
private overlayRef;
|
|
28
32
|
isActionMenuOpen: boolean;
|
|
29
|
-
constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, dateService: DateService);
|
|
33
|
+
constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, dateService: DateService, translateService: TranslateService);
|
|
30
34
|
openActionMenu(item: any, template: any): void;
|
|
31
35
|
closeActionMenu(): void;
|
|
32
36
|
dateToString(date: Date): string;
|
|
33
37
|
getRecordFormats(record: CatalogRecord): FileFormat[];
|
|
34
38
|
formatUserInfo(userInfo: string | unknown): string;
|
|
35
39
|
getBadgeColor(format: FileFormat): string;
|
|
36
|
-
handleRecordClick(item:
|
|
40
|
+
handleRecordClick(item: unknown): void;
|
|
37
41
|
handleDuplicate(item: unknown): void;
|
|
38
42
|
handleDelete(item: unknown): void;
|
|
39
43
|
handleRollback(item: unknown): void;
|
|
@@ -41,7 +45,9 @@ export declare class ResultsTableComponent {
|
|
|
41
45
|
isSortedBy(col: string): 'desc' | 'asc' | null;
|
|
42
46
|
isChecked(record: CatalogRecord): boolean;
|
|
43
47
|
handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
|
|
48
|
+
isMultilingual(record: CatalogRecord): boolean;
|
|
49
|
+
getTxtHoverMultilingual(record: CatalogRecord): any;
|
|
44
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableComponent, never>;
|
|
45
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; "isDuplicating": { "alias": "isDuplicating"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "rollbackDraft": "rollbackDraft"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
|
|
51
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; "isDuplicating": { "alias": "isDuplicating"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "rollbackDraft": "rollbackDraft"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
|
|
46
52
|
}
|
|
47
53
|
//# sourceMappingURL=results-table.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,WAAW,EACX,UAAU,EAKX,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,WAAW,EACX,UAAU,EAKX,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAIvE,OAAO,EAAoB,OAAO,EAAc,MAAM,sBAAsB,CAAA;AAG5E,OAAO,EAAE,UAAU,EAAY,MAAM,MAAM,CAAA;;AAE3C,qBAoBa,qBAAqB;IA8B9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IAjCjB,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,UAAU,CAAC,OAAO,CAAC,CACxD;IACD,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,UAAU,CAAC,OAAO,CAAC,CACtD;IACD,WAAW,UAAQ;IACnB,aAAa,UAAQ;IAGpB,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,YAAY,8BAAoC;IAChD,aAAa,8BAAoC;IACjD,qBAAqB,2CAE5B;IAGH,iBAAiB,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB,UAAQ;gBAGd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB,EACtB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB;IAG5C,cAAc,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAyC7B,eAAe;IAQf,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAerD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAU/B,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,cAAc,CAAC,IAAI,EAAE,OAAO;IAK5B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIzC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAInE,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAI9C,uBAAuB,CAAC,MAAM,EAAE,aAAa;yCA7KlC,qBAAqB;2CAArB,qBAAqB;CAoLjC"}
|
|
@@ -27,9 +27,10 @@ import * as i25 from "../../../layout/src/lib/interactive-table/interactive-tabl
|
|
|
27
27
|
import * as i26 from "@ng-icons/core";
|
|
28
28
|
import * as i27 from "../../../elements/src/lib/kind-badge/kind-badge.component";
|
|
29
29
|
import * as i28 from "../../../elements/src/lib/metadata-quality/metadata-quality.component";
|
|
30
|
+
import * as i29 from "./results-table/action-menu/action-menu.component";
|
|
30
31
|
export declare class UiSearchModule {
|
|
31
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiSearchModule, never>;
|
|
32
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<UiSearchModule, [typeof i1.RecordPreviewComponent, typeof i2.RecordPreviewListComponent, typeof i3.RecordPreviewCardComponent, typeof i4.RecordPreviewTextComponent, typeof i5.RecordPreviewTitleComponent, typeof i6.RecordMetricComponent, typeof i7.ResultsListComponent, typeof i8.ResultsHitsNumberComponent, typeof i9.ResultsHitsSearchKindComponent, typeof i10.ResultsListItemComponent, typeof i11.RecordPreviewFeedComponent, typeof i12.RecordPreviewRowComponent], [typeof i13.CommonModule, typeof i14.TranslateModule, typeof i15.NgxDropzoneModule, typeof i16.FacetsModule, typeof i17.FormsModule, typeof i17.ReactiveFormsModule, typeof i18.TagInputModule, typeof i19.UtilSharedModule, typeof i20.UiWidgetsModule, typeof i21.UiInputsModule, typeof i22.UiElementsModule, typeof i23.MatCheckboxModule, typeof i24.RouterLink, typeof i25.InteractiveTableComponent, typeof i26.NgIconsModule, typeof i27.KindBadgeComponent, typeof i28.MetadataQualityComponent], [typeof i2.RecordPreviewListComponent, typeof i3.RecordPreviewCardComponent, typeof i4.RecordPreviewTextComponent, typeof i5.RecordPreviewTitleComponent, typeof i6.RecordMetricComponent, typeof i7.ResultsListComponent, typeof i16.FacetsModule, typeof i1.RecordPreviewComponent, typeof i8.ResultsHitsNumberComponent, typeof i9.ResultsHitsSearchKindComponent, typeof i11.RecordPreviewFeedComponent, typeof i12.RecordPreviewRowComponent]>;
|
|
33
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<UiSearchModule, [typeof i1.RecordPreviewComponent, typeof i2.RecordPreviewListComponent, typeof i3.RecordPreviewCardComponent, typeof i4.RecordPreviewTextComponent, typeof i5.RecordPreviewTitleComponent, typeof i6.RecordMetricComponent, typeof i7.ResultsListComponent, typeof i8.ResultsHitsNumberComponent, typeof i9.ResultsHitsSearchKindComponent, typeof i10.ResultsListItemComponent, typeof i11.RecordPreviewFeedComponent, typeof i12.RecordPreviewRowComponent], [typeof i13.CommonModule, typeof i14.TranslateModule, typeof i15.NgxDropzoneModule, typeof i16.FacetsModule, typeof i17.FormsModule, typeof i17.ReactiveFormsModule, typeof i18.TagInputModule, typeof i19.UtilSharedModule, typeof i20.UiWidgetsModule, typeof i21.UiInputsModule, typeof i22.UiElementsModule, typeof i23.MatCheckboxModule, typeof i24.RouterLink, typeof i25.InteractiveTableComponent, typeof i26.NgIconsModule, typeof i27.KindBadgeComponent, typeof i28.MetadataQualityComponent, typeof i29.ActionMenuComponent], [typeof i2.RecordPreviewListComponent, typeof i3.RecordPreviewCardComponent, typeof i4.RecordPreviewTextComponent, typeof i5.RecordPreviewTitleComponent, typeof i6.RecordMetricComponent, typeof i7.ResultsListComponent, typeof i16.FacetsModule, typeof i1.RecordPreviewComponent, typeof i8.ResultsHitsNumberComponent, typeof i9.ResultsHitsSearchKindComponent, typeof i11.RecordPreviewFeedComponent, typeof i12.RecordPreviewRowComponent, typeof i29.ActionMenuComponent]>;
|
|
33
34
|
static ɵinj: i0.ɵɵInjectorDeclaration<UiSearchModule>;
|
|
34
35
|
}
|
|
35
36
|
//# sourceMappingURL=ui-search.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-search.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/search/src/lib/ui-search.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui-search.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/search/src/lib/ui-search.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,qBA+Da,cAAc;yCAAd,cAAc;0CAAd,cAAc;0CAAd,cAAc;CAAG"}
|
|
@@ -4,6 +4,7 @@ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-comp
|
|
|
4
4
|
import { FileTranslateLoader } from './file.translate.loader';
|
|
5
5
|
export declare const DEFAULT_LANG = "en";
|
|
6
6
|
export declare const LANGUAGE_STORAGE_KEY = "geonetwork-ui-language";
|
|
7
|
+
export declare const SUPPORTED_LANGUAGES: string[];
|
|
7
8
|
export declare function HttpLoaderFactory(http: HttpClient): FileTranslateLoader;
|
|
8
9
|
export declare function getLangFromBrowser(): string;
|
|
9
10
|
export declare const TRANSLATE_DEFAULT_CONFIG: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.constants.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/i18n/src/lib/i18n.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"i18n.constants.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/i18n/src/lib/i18n.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AA+B7D,eAAO,MAAM,YAAY,OAAO,CAAA;AAGhC,eAAO,MAAM,oBAAoB,2BAA2B,CAAA;AAE5D,eAAO,MAAM,mBAAmB,UA4B/B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,uBAEjD;AAED,wBAAgB,kBAAkB,WAEjC;AAKD,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAQpC,CAAA"}
|
|
@@ -15,6 +15,17 @@ export declare const LANG_3_TO_2_MAPPER: {
|
|
|
15
15
|
chi: string;
|
|
16
16
|
slo: string;
|
|
17
17
|
roh: string;
|
|
18
|
+
ara: string;
|
|
19
|
+
dan: string;
|
|
20
|
+
nor: string;
|
|
21
|
+
pol: string;
|
|
22
|
+
swe: string;
|
|
23
|
+
tur: string;
|
|
24
|
+
arm: string;
|
|
25
|
+
aze: string;
|
|
26
|
+
geo: string;
|
|
27
|
+
ukr: string;
|
|
28
|
+
wel: string;
|
|
18
29
|
};
|
|
19
30
|
export declare const LANGUAGE_NAMES: {
|
|
20
31
|
en: string;
|
|
@@ -32,7 +43,18 @@ export declare const LANGUAGE_NAMES: {
|
|
|
32
43
|
ru: string;
|
|
33
44
|
zh: string;
|
|
34
45
|
sk: string;
|
|
35
|
-
|
|
46
|
+
rm: string;
|
|
47
|
+
ar: string;
|
|
48
|
+
da: string;
|
|
49
|
+
no: string;
|
|
50
|
+
pl: string;
|
|
51
|
+
sv: string;
|
|
52
|
+
tr: string;
|
|
53
|
+
hy: string;
|
|
54
|
+
az: string;
|
|
55
|
+
ka: string;
|
|
56
|
+
uk: string;
|
|
57
|
+
wel: string;
|
|
36
58
|
};
|
|
37
59
|
export declare const LANG_2_TO_3_MAPPER: {};
|
|
38
60
|
//# sourceMappingURL=language-codes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-codes.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/i18n/src/lib/language-codes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"language-codes.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/i18n/src/lib/language-codes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9B,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B1B,CAAA;AAED,eAAO,MAAM,kBAAkB,IAK9B,CAAA"}
|
package/package.json
CHANGED
|
@@ -617,7 +617,7 @@ Die Quelle ist zu bezeichnen: „Quelle: Stadt Zürich“.`,
|
|
|
617
617
|
status: 'completed',
|
|
618
618
|
updateFrequency: 'asNeeded',
|
|
619
619
|
defaultLanguage: 'de',
|
|
620
|
-
otherLanguages: ['fr', 'it', 'en', 'rm'],
|
|
620
|
+
otherLanguages: ['fr', 'it', 'en', 'rm', 'aar'],
|
|
621
621
|
translations: {
|
|
622
622
|
abstract: {
|
|
623
623
|
en: 'The perimeters of the Alpine Convention in Switzerland. The Alpine Convention is an international treaty between the eight Alpine countries: Germany, France, Italy, Liechtenstein, Monaco, Austria, Switzerland and Slovenia, plus the European Union. The aim of the treaty is to protect the Alps by means of cross-sectoral, integrated and sustainable policies.',
|
|
@@ -152,12 +152,22 @@ export class Gn4FieldMapper {
|
|
|
152
152
|
)
|
|
153
153
|
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
|
|
154
154
|
const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null // set the first language as main one as fallback
|
|
155
|
+
|
|
156
|
+
return {
|
|
157
|
+
...output,
|
|
158
|
+
defaultLanguage,
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
otherLanguage: (output, source) => {
|
|
162
|
+
const langList = getAsArray(selectField<string>(source, 'otherLanguage'))
|
|
163
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
|
|
164
|
+
const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null
|
|
155
165
|
const otherLanguages = languages.filter(
|
|
156
166
|
(lang) => lang !== defaultLanguage
|
|
157
167
|
)
|
|
168
|
+
|
|
158
169
|
return {
|
|
159
170
|
...output,
|
|
160
|
-
defaultLanguage,
|
|
161
171
|
otherLanguages,
|
|
162
172
|
}
|
|
163
173
|
},
|
|
@@ -294,12 +304,52 @@ export class Gn4FieldMapper {
|
|
|
294
304
|
) ?? {},
|
|
295
305
|
'_source'
|
|
296
306
|
)
|
|
297
|
-
const featureCatalogIdentifier = selectField(
|
|
307
|
+
const featureCatalogIdentifier: string = selectField(
|
|
298
308
|
<SourceWithUnknownProps>fcatSource,
|
|
299
309
|
'uuid'
|
|
300
310
|
)
|
|
301
|
-
|
|
302
|
-
|
|
311
|
+
const sourceOfLinks = getAsArray(
|
|
312
|
+
selectField(
|
|
313
|
+
<SourceWithUnknownProps>selectField(source, 'related'),
|
|
314
|
+
'hassources'
|
|
315
|
+
)
|
|
316
|
+
)
|
|
317
|
+
const sourceOfIdentifiers: string[] = sourceOfLinks
|
|
318
|
+
.filter((link) => link['origin'] === 'catalog')
|
|
319
|
+
.map((link) => {
|
|
320
|
+
return selectField(
|
|
321
|
+
selectField(<SourceWithUnknownProps>link, '_source'),
|
|
322
|
+
'uuid'
|
|
323
|
+
)
|
|
324
|
+
})
|
|
325
|
+
const extraValues: Record<string, string | string[]> = {}
|
|
326
|
+
if (featureCatalogIdentifier) {
|
|
327
|
+
extraValues.featureCatalogIdentifier = featureCatalogIdentifier
|
|
328
|
+
}
|
|
329
|
+
if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
|
|
330
|
+
extraValues.sourceOfIdentifiers = sourceOfIdentifiers
|
|
331
|
+
}
|
|
332
|
+
return Object.keys(extraValues).length > 0
|
|
333
|
+
? this.addExtra(extraValues, output)
|
|
334
|
+
: output
|
|
335
|
+
},
|
|
336
|
+
recordLink: (output, source) => {
|
|
337
|
+
const recordLinks = getAsArray(
|
|
338
|
+
selectField<SourceWithUnknownProps[]>(source, 'recordLink')
|
|
339
|
+
)
|
|
340
|
+
const sourcesIdentifiers: string[] = recordLinks
|
|
341
|
+
.filter(
|
|
342
|
+
(link) => link['origin'] === 'catalog' && link['type'] === 'sources'
|
|
343
|
+
)
|
|
344
|
+
.map((link) => selectField(<SourceWithUnknownProps>link, 'to'))
|
|
345
|
+
|
|
346
|
+
return sourcesIdentifiers && sourcesIdentifiers.length > 0
|
|
347
|
+
? this.addExtra(
|
|
348
|
+
{
|
|
349
|
+
sourcesIdentifiers,
|
|
350
|
+
},
|
|
351
|
+
output
|
|
352
|
+
)
|
|
303
353
|
: output
|
|
304
354
|
},
|
|
305
355
|
isPublishedToAll: (output, source) =>
|
|
@@ -309,6 +359,13 @@ export class Gn4FieldMapper {
|
|
|
309
359
|
},
|
|
310
360
|
output
|
|
311
361
|
),
|
|
362
|
+
isHarvested: (output, source) =>
|
|
363
|
+
this.addExtra(
|
|
364
|
+
{
|
|
365
|
+
isHarvested: selectField(source, 'isHarvested') !== 'false',
|
|
366
|
+
},
|
|
367
|
+
output
|
|
368
|
+
),
|
|
312
369
|
edit: (output, source) =>
|
|
313
370
|
this.addExtra(
|
|
314
371
|
{
|
|
@@ -164,7 +164,6 @@ export type MetadataObject = Partial<{
|
|
|
164
164
|
resourceDate: ResourceDate[]
|
|
165
165
|
resourceEdition: string
|
|
166
166
|
resourceIdentifier: ResourceIdentifier[]
|
|
167
|
-
resourceLanguage: string[]
|
|
168
167
|
resourceTemporalDateRange: ResourceTemporalDateRange[]
|
|
169
168
|
resourceTemporalExtentDateRange: ResourceTemporalDateRange[]
|
|
170
169
|
resourceTitleObject: MultilingualField
|
|
@@ -363,11 +363,18 @@ export function readOnlineResources(rootEl: XmlElement): OnlineResource[] {
|
|
|
363
363
|
)(rootEl)
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
function readLocaleElement(): ChainableFunction<
|
|
366
|
+
export function readLocaleElement(): ChainableFunction<
|
|
367
|
+
XmlElement,
|
|
368
|
+
LanguageCode
|
|
369
|
+
> {
|
|
367
370
|
return pipe(
|
|
368
371
|
findChildElement('lan:LanguageCode'),
|
|
369
372
|
readAttribute('codeListValue'),
|
|
370
|
-
map((lang) =>
|
|
373
|
+
map((lang) => {
|
|
374
|
+
const normalized = lang?.toLowerCase()
|
|
375
|
+
const iso2Lang = LANG_3_TO_2_MAPPER[normalized]
|
|
376
|
+
return iso2Lang ?? lang
|
|
377
|
+
})
|
|
371
378
|
)
|
|
372
379
|
}
|
|
373
380
|
|
|
@@ -381,6 +388,9 @@ export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
|
|
|
381
388
|
export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
|
|
382
389
|
return pipe(
|
|
383
390
|
findChildrenElement('mdb:otherLocale', false),
|
|
384
|
-
mapArray(readLocaleElement())
|
|
391
|
+
mapArray(readLocaleElement()),
|
|
392
|
+
map((languages) =>
|
|
393
|
+
languages.filter((lang): lang is LanguageCode => lang !== null)
|
|
394
|
+
)
|
|
385
395
|
)(rootEl)
|
|
386
396
|
}
|
|
@@ -529,7 +529,11 @@ export function writeOnlineResources(
|
|
|
529
529
|
}
|
|
530
530
|
|
|
531
531
|
function writeLocaleElement(language: LanguageCode) {
|
|
532
|
-
const
|
|
532
|
+
const normalizedLang = language.toLowerCase()
|
|
533
|
+
const lang3 =
|
|
534
|
+
normalizedLang.length === 2
|
|
535
|
+
? LANG_2_TO_3_MAPPER[normalizedLang]
|
|
536
|
+
: normalizedLang
|
|
533
537
|
return pipe(
|
|
534
538
|
findChildOrCreate('lan:PT_Locale'),
|
|
535
539
|
writeAttribute('id', language.toUpperCase()),
|
|
@@ -1162,11 +1162,14 @@ export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
|
|
|
1162
1162
|
findChildrenElement('gmd:locale', false),
|
|
1163
1163
|
mapArray(
|
|
1164
1164
|
pipe(
|
|
1165
|
-
findChildElement('
|
|
1165
|
+
findChildElement('lan:LanguageCode'),
|
|
1166
1166
|
readAttribute('codeListValue'),
|
|
1167
|
-
map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()])
|
|
1167
|
+
map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang)
|
|
1168
1168
|
)
|
|
1169
1169
|
),
|
|
1170
|
+
map((languages) =>
|
|
1171
|
+
languages.filter((lang): lang is LanguageCode => lang !== null)
|
|
1172
|
+
),
|
|
1170
1173
|
map((languages) => (languages.length ? languages : [defaultLanguage]))
|
|
1171
1174
|
)(rootEl)
|
|
1172
1175
|
}
|
|
@@ -1174,7 +1177,7 @@ export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
|
|
|
1174
1177
|
export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
|
|
1175
1178
|
return pipe(
|
|
1176
1179
|
findChildElement('gmd:language', false),
|
|
1177
|
-
findChildElement('
|
|
1180
|
+
findChildElement('lan:LanguageCode'),
|
|
1178
1181
|
readAttribute('codeListValue'),
|
|
1179
1182
|
map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null))
|
|
1180
1183
|
)(rootEl)
|
|
@@ -1471,7 +1471,10 @@ export function writeLanguages(record: DatasetRecord, rootEl: XmlElement) {
|
|
|
1471
1471
|
writeAttribute('id', lang.toUpperCase()),
|
|
1472
1472
|
createNestedChild('gmd:languageCode', 'gmd:LanguageCode'),
|
|
1473
1473
|
writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'),
|
|
1474
|
-
writeAttribute(
|
|
1474
|
+
writeAttribute(
|
|
1475
|
+
'codeListValue',
|
|
1476
|
+
lang.length === 2 ? LANG_2_TO_3_MAPPER[lang] : lang
|
|
1477
|
+
)
|
|
1475
1478
|
)
|
|
1476
1479
|
|
|
1477
1480
|
// add new languages (only if other than default one)
|
|
@@ -124,11 +124,11 @@ export class ElasticsearchService {
|
|
|
124
124
|
this.runtimeFields[fieldName] = expression
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
getMetadataByIdsPayload(uuids: string[]): EsSearchParams {
|
|
128
128
|
return {
|
|
129
129
|
query: {
|
|
130
130
|
ids: {
|
|
131
|
-
values:
|
|
131
|
+
values: uuids,
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
134
|
}
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
import { PublicationVersionError } from '../../../../../../libs/common/domain/src/lib/model/error'
|
|
15
15
|
import {
|
|
16
16
|
CatalogRecord,
|
|
17
|
-
DatasetFeatureType,
|
|
18
17
|
DatasetFeatureCatalog,
|
|
18
|
+
DatasetFeatureType,
|
|
19
19
|
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
20
20
|
import {
|
|
21
21
|
Aggregations,
|
|
@@ -29,10 +29,11 @@ import {
|
|
|
29
29
|
import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
|
|
30
30
|
import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
|
|
31
31
|
import {
|
|
32
|
+
LanguagesApiService,
|
|
32
33
|
RecordsApiService,
|
|
33
34
|
SearchApiService,
|
|
34
|
-
FeatureResponseApiModel,
|
|
35
35
|
} from '../../../../../../libs/data-access/gn4/src'
|
|
36
|
+
import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src'
|
|
36
37
|
import {
|
|
37
38
|
combineLatest,
|
|
38
39
|
exhaustMap,
|
|
@@ -47,6 +48,7 @@ import {
|
|
|
47
48
|
import { catchError, map, tap } from 'rxjs/operators'
|
|
48
49
|
import { lt } from 'semver'
|
|
49
50
|
import { ElasticsearchService } from './elasticsearch'
|
|
51
|
+
import { Gn4SettingsService } from './settings/gn4-settings.service'
|
|
50
52
|
|
|
51
53
|
const minPublicationApiVersion = '4.2.5'
|
|
52
54
|
|
|
@@ -65,7 +67,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
65
67
|
private gn4SearchHelper: ElasticsearchService,
|
|
66
68
|
private gn4Mapper: Gn4Converter,
|
|
67
69
|
private gn4RecordsApi: RecordsApiService,
|
|
68
|
-
private platformService: PlatformServiceInterface
|
|
70
|
+
private platformService: PlatformServiceInterface,
|
|
71
|
+
private gn4LanguagesApi: LanguagesApiService,
|
|
72
|
+
private settingsService: Gn4SettingsService
|
|
69
73
|
) {}
|
|
70
74
|
|
|
71
75
|
search({
|
|
@@ -129,9 +133,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
129
133
|
return this.gn4SearchApi
|
|
130
134
|
.search(
|
|
131
135
|
'bucket',
|
|
132
|
-
['fcats'],
|
|
136
|
+
['fcats', 'hassources'],
|
|
133
137
|
JSON.stringify(
|
|
134
|
-
this.gn4SearchHelper.
|
|
138
|
+
this.gn4SearchHelper.getMetadataByIdsPayload([uniqueIdentifier])
|
|
135
139
|
)
|
|
136
140
|
)
|
|
137
141
|
.pipe(
|
|
@@ -142,6 +146,27 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
142
146
|
)
|
|
143
147
|
}
|
|
144
148
|
|
|
149
|
+
getMultipleRecords(
|
|
150
|
+
uniqueIdentifiers: string[]
|
|
151
|
+
): Observable<CatalogRecord[] | null> {
|
|
152
|
+
return this.gn4SearchApi
|
|
153
|
+
.search(
|
|
154
|
+
'bucket',
|
|
155
|
+
undefined,
|
|
156
|
+
JSON.stringify(
|
|
157
|
+
this.gn4SearchHelper.getMetadataByIdsPayload(uniqueIdentifiers)
|
|
158
|
+
)
|
|
159
|
+
)
|
|
160
|
+
.pipe(
|
|
161
|
+
map((results: Gn4SearchResults) => results.hits.hits),
|
|
162
|
+
switchMap((records) =>
|
|
163
|
+
records && records.length > 0
|
|
164
|
+
? this.gn4Mapper.readRecords(records)
|
|
165
|
+
: of(null)
|
|
166
|
+
)
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
|
|
145
170
|
private mapEmbeddedFeatureCatalog(
|
|
146
171
|
featureTypes: Array<DatasetFeatureType>
|
|
147
172
|
): DatasetFeatureCatalog {
|
|
@@ -203,6 +228,24 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
203
228
|
)
|
|
204
229
|
}
|
|
205
230
|
|
|
231
|
+
getSources(record: CatalogRecord): Observable<CatalogRecord[]> {
|
|
232
|
+
const sourcesIdentifiers = record.extras?.['sourcesIdentifiers'] as string[]
|
|
233
|
+
if (sourcesIdentifiers && sourcesIdentifiers.length > 0) {
|
|
234
|
+
return this.getMultipleRecords(sourcesIdentifiers)
|
|
235
|
+
}
|
|
236
|
+
return of(null)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]> {
|
|
240
|
+
const sourceOfIdentifiers = record.extras?.[
|
|
241
|
+
'sourceOfIdentifiers'
|
|
242
|
+
] as string[]
|
|
243
|
+
if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
|
|
244
|
+
return this.getMultipleRecords(sourceOfIdentifiers)
|
|
245
|
+
}
|
|
246
|
+
return of(null)
|
|
247
|
+
}
|
|
248
|
+
|
|
206
249
|
aggregate(params: AggregationsParams): Observable<Aggregations> {
|
|
207
250
|
// if aggregations are empty, return an empty object right away
|
|
208
251
|
if (Object.keys(params).length === 0) return of({})
|
|
@@ -255,14 +298,46 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
255
298
|
: of(true)
|
|
256
299
|
}
|
|
257
300
|
|
|
258
|
-
|
|
259
|
-
return
|
|
260
|
-
|
|
261
|
-
|
|
301
|
+
canDuplicate(record: CatalogRecord): boolean {
|
|
302
|
+
return record.kind === 'dataset'
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
canDelete(record: CatalogRecord): Observable<boolean> {
|
|
306
|
+
return this.settingsService.allowEditHarvested$.pipe(
|
|
307
|
+
map((allowEditHarvested) => {
|
|
308
|
+
return (
|
|
309
|
+
record.extras['edit'] &&
|
|
310
|
+
(!record.extras['isHarvested'] || allowEditHarvested)
|
|
311
|
+
)
|
|
262
312
|
})
|
|
263
313
|
)
|
|
264
314
|
}
|
|
265
315
|
|
|
316
|
+
private canEdit(record: CatalogRecord, allowEditHarvested: boolean): boolean {
|
|
317
|
+
return (
|
|
318
|
+
record.kind === 'dataset' &&
|
|
319
|
+
record.extras['edit'] &&
|
|
320
|
+
(!record.extras['isHarvested'] || allowEditHarvested)
|
|
321
|
+
)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
canEditRecord(uniqueIdentifier: string): Observable<boolean> {
|
|
325
|
+
return combineLatest([
|
|
326
|
+
this.getRecord(uniqueIdentifier),
|
|
327
|
+
this.settingsService.allowEditHarvested$,
|
|
328
|
+
]).pipe(
|
|
329
|
+
map(([record, allowEditHarvested]) =>
|
|
330
|
+
record ? this.canEdit(record, allowEditHarvested) : false
|
|
331
|
+
)
|
|
332
|
+
)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
canEditIndexedRecord(record: CatalogRecord): Observable<boolean> {
|
|
336
|
+
return this.settingsService.allowEditHarvested$.pipe(
|
|
337
|
+
map((allowEditHarvested) => this.canEdit(record, allowEditHarvested))
|
|
338
|
+
)
|
|
339
|
+
}
|
|
340
|
+
|
|
266
341
|
openRecordForEdition(
|
|
267
342
|
uniqueIdentifier: string
|
|
268
343
|
): Observable<[CatalogRecord, string, boolean] | null> {
|
|
@@ -471,6 +546,18 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
471
546
|
)
|
|
472
547
|
}
|
|
473
548
|
|
|
549
|
+
getApplicationLanguages(): Observable<string[]> {
|
|
550
|
+
return this.gn4LanguagesApi
|
|
551
|
+
.getApplicationLanguages()
|
|
552
|
+
.pipe(
|
|
553
|
+
map((languages) =>
|
|
554
|
+
languages
|
|
555
|
+
.map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
|
|
556
|
+
.filter((code): code is string => !!code)
|
|
557
|
+
)
|
|
558
|
+
)
|
|
559
|
+
}
|
|
560
|
+
|
|
474
561
|
private getRecordAsXml(uniqueIdentifier: string): Observable<string | null> {
|
|
475
562
|
return this.gn4RecordsApi
|
|
476
563
|
.getRecordAs(
|