geonetwork-ui 2.4.0-dev.8f04e899 → 2.4.0-dev.9c5250ea
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/repository/src/lib/gn4/gn4-repository.mjs +10 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -11
- package/esm2022/libs/feature/search/src/index.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +49 -0
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +120 -0
- package/esm2022/translations/de.json +8 -1
- package/esm2022/translations/en.json +8 -1
- package/esm2022/translations/es.json +8 -1
- package/esm2022/translations/fr.json +8 -1
- package/esm2022/translations/it.json +8 -1
- package/esm2022/translations/nl.json +8 -1
- package/esm2022/translations/pt.json +8 -1
- package/fesm2022/geonetwork-ui.mjs +185 -104
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +1 -1
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +25 -0
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -0
- 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/results-table.component.d.ts +30 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +14 -0
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +38 -31
- package/src/libs/feature/search/src/index.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +9 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +49 -0
- package/src/libs/ui/search/src/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/{feature → ui}/search/src/lib/results-table/results-table.component.html +8 -8
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +138 -0
- package/translations/de.json +8 -1
- package/translations/en.json +8 -1
- package/translations/es.json +8 -1
- package/translations/fr.json +8 -1
- package/translations/it.json +8 -1
- package/translations/nl.json +8 -1
- package/translations/pt.json +8 -1
- package/translations/sk.json +8 -1
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +0 -136
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +0 -36
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +0 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -171
- /package/src/libs/feature/search/src/lib/results-table/{results-table.component.css → results-table-container.component.css} +0 -0
|
@@ -30,6 +30,7 @@ export declare class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
30
30
|
saveRecordAsDraft(record: CatalogRecord, referenceRecordSource?: string): Observable<string>;
|
|
31
31
|
clearRecordDraft(uniqueIdentifier: string): void;
|
|
32
32
|
recordHasDraft(uniqueIdentifier: string): boolean;
|
|
33
|
+
getAllDrafts(): Observable<CatalogRecord[]>;
|
|
33
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<Gn4Repository, never>;
|
|
34
35
|
static ɵprov: i0.ɵɵInjectableDeclaration<Gn4Repository>;
|
|
35
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gn4-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/api/repository/src/lib/gn4/gn4-repository.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAGL,UAAU,EAIX,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;AACjI,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,wEAAwE,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACb,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAEL,YAAY,EAGb,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAGzF,qBACa,aAAc,YAAW,0BAA0B;IAE5D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;gBAHb,YAAY,EAAE,gBAAgB,EAC9B,eAAe,EAAE,oBAAoB,EACrC,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,iBAAiB;IAG1C,MAAM,CAAC,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,IAAI,EACJ,SAAS,EACT,cAAc,GACf,EAAE,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC;IA6B3C,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IAoB1D,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;IAiBrE,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IAmBxE,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC;IA2B/D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;IAiBrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,2BAA2B;IAInC,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAqBtD,OAAO,CAAC,oBAAoB;IAW5B,UAAU,CACR,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IA+BrB,iBAAiB,CACf,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAWrB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAMhD,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"gn4-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/api/repository/src/lib/gn4/gn4-repository.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAGL,UAAU,EAIX,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;AACjI,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,wEAAwE,CAAA;AAC/E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACb,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAEL,YAAY,EAGb,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAGzF,qBACa,aAAc,YAAW,0BAA0B;IAE5D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;gBAHb,YAAY,EAAE,gBAAgB,EAC9B,eAAe,EAAE,oBAAoB,EACrC,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,iBAAiB;IAG1C,MAAM,CAAC,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,IAAI,EACJ,SAAS,EACT,cAAc,GACf,EAAE,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC;IA6B3C,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IAoB1D,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;IAiBrE,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IAmBxE,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC;IA2B/D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;IAiBrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,2BAA2B;IAInC,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAqBtD,OAAO,CAAC,oBAAoB;IAW5B,UAAU,CACR,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IA+BrB,iBAAiB,CACf,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAWrB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAMhD,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;IASjD,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;yCA/QhC,aAAa;6CAAb,aAAa;CA2RzB"}
|
|
@@ -31,5 +31,7 @@ export declare abstract class RecordsRepositoryInterface {
|
|
|
31
31
|
abstract saveRecordAsDraft(record: CatalogRecord, referenceRecordSource?: string): Observable<string>;
|
|
32
32
|
abstract clearRecordDraft(uniqueIdentifier: string): void;
|
|
33
33
|
abstract recordHasDraft(uniqueIdentifier: string): boolean;
|
|
34
|
+
/** will return all pending drafts, both published and not published */
|
|
35
|
+
abstract getAllDrafts(): Observable<CatalogRecord[]>;
|
|
34
36
|
}
|
|
35
37
|
//# sourceMappingURL=records-repository.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/common/domain/src/lib/repository/records-repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,8BAAsB,0BAA0B;IAC9C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC;IAChE,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9E,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CACxB,SAAS,EAAE,aAAa,GACvB,UAAU,CAAC,aAAa,EAAE,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;IAE9D;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,CAC3B,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CACjB,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CACxB,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAErB,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IACzD,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"records-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/common/domain/src/lib/repository/records-repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,8BAAsB,0BAA0B;IAC9C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC;IAChE,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9E,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CACxB,SAAS,EAAE,aAAa,GACvB,UAAU,CAAC,aAAa,EAAE,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;IAE9D;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,CAC3B,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CACjB,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CACxB,MAAM,EAAE,aAAa,EACrB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,UAAU,CAAC,MAAM,CAAC;IAErB,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IACzD,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAE1D,uEAAuE;IACvE,QAAQ,CAAC,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;CACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdview.facade.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/state/mdview.facade.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"mdview.facade.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/state/mdview.facade.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAA;AAY3C,OAAO,EAAE,qBAAqB,EAAa,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wFAAwF,CAAA;AAClI,OAAO,EACL,aAAa,EACb,YAAY,EACb,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;;AAExE,qBAOa,YAAY;IAErB,OAAO,CAAC,KAAK;IACN,cAAc,EAAE,qBAAqB;IAC5C,OAAO,CAAC,aAAa;IACd,WAAW,EAAE,WAAW;gBAHvB,KAAK,EAAE,KAAK,EACb,cAAc,EAAE,qBAAqB,EACpC,aAAa,EAAE,sBAAsB,EACtC,WAAW,EAAE,WAAW;IAGjC,UAAU,qCAGT;IAED,kBAAkB,qCAEjB;IAED,SAAS,oDAGR;IAED,aAAa,qCAGZ;IAED,MAAM;;;OAA4D;IAElE,QAAQ,6CAAsD;IAE9D,YAAY,uDAA0D;IAEtE,SAAS,8HAER;IAED,SAAS,8HAIR;IAED,YAAY,8HAMX;IAED,cAAc,8HAMb;IAED,UAAU,8HAIT;IAED,aAAa,8HAMZ;IAED,yBAAyB,mCA8BxB;IAED,iBAAiB,mCAEhB;IAED,WAAW,8HAMV;IAED,cAAc,4CAA4D;IAC1E,yBAAyB,qCAExB;IACD,yBAAyB,qCAExB;IAED;;;OAGG;IACH,qBAAqB,CAAC,UAAU,EAAE,aAAa;IAI/C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM;IAIrB,aAAa;IAIb,cAAc,CAAC,WAAW,EAAE,yBAAyB;IAIrD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY;IAI1C,iBAAiB,CAAC,WAAW,EAAE,MAAM;yCA3J1B,YAAY;6CAAZ,YAAY;CA8JxB"}
|
|
@@ -21,5 +21,5 @@ export * from './lib/results-hits-number/results-hits.container.component';
|
|
|
21
21
|
export * from './lib/results-layout/results-layout.component';
|
|
22
22
|
export * from './lib/sort-by/sort-by.component';
|
|
23
23
|
export * from './lib/state/container/search-state.container.directive';
|
|
24
|
-
export * from './lib/results-table/results-table.component';
|
|
24
|
+
export * from './lib/results-table/results-table-container.component';
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/search/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qDAAqD,CAAA;AACnE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2CAA2C,CAAA;AACzD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0DAA0D,CAAA;AACxE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,uDAAuD,CAAA;AACrE,cAAc,4DAA4D,CAAA;AAC1E,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/search/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qDAAqD,CAAA;AACnE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2CAA2C,CAAA;AACzD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0DAA0D,CAAA;AACxE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,uDAAuD,CAAA;AACrE,cAAc,4DAA4D,CAAA;AAC1E,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,uDAAuD,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
3
|
+
import { SearchFacade } from '../state/search.facade';
|
|
4
|
+
import { SelectionService } from '../../../../../../libs/api/repository/src';
|
|
5
|
+
import { SearchService } from '../utils/service/search.service';
|
|
6
|
+
import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class ResultsTableContainerComponent {
|
|
9
|
+
private searchFacade;
|
|
10
|
+
private searchService;
|
|
11
|
+
private selectionService;
|
|
12
|
+
private recordsRepository;
|
|
13
|
+
recordClick: EventEmitter<CatalogRecord>;
|
|
14
|
+
records$: import("rxjs").Observable<CatalogRecord[]>;
|
|
15
|
+
selectedRecords$: import("rxjs").BehaviorSubject<string[]>;
|
|
16
|
+
sortBy$: import("rxjs").Observable<import("../../../../../common/domain/src/lib/model/search").SortByField>;
|
|
17
|
+
hasDraft: (record: CatalogRecord) => boolean;
|
|
18
|
+
constructor(searchFacade: SearchFacade, searchService: SearchService, selectionService: SelectionService, recordsRepository: RecordsRepositoryInterface);
|
|
19
|
+
handleRecordClick(item: unknown): void;
|
|
20
|
+
handleSortByChange(col: string, order: 'asc' | 'desc'): void;
|
|
21
|
+
handleRecordsSelectedChange(records: CatalogRecord[], selected: boolean): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableContainerComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableContainerComponent, "gn-ui-results-table-container", never, {}, { "recordClick": "recordClick"; }, never, never, true, never>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=results-table-container.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results-table-container.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/results-table/results-table-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAU,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAIjI,qBAOa,8BAA8B;IAWvC,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IAbjB,WAAW,8BAAoC;IAEzD,QAAQ,6CAA6B;IACrC,gBAAgB,2CAAoD;IACpE,OAAO,qGAA4B;IAEnC,QAAQ,WAAY,aAAa,KAAG,OAAO,CACqB;gBAGtD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,0BAA0B;IAGvD,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIrD,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO;yCAzB5D,8BAA8B;2CAA9B,8BAA8B;CAgC1C"}
|
|
@@ -17,4 +17,5 @@ export * from './lib/record-preview-title/record-preview-title.component';
|
|
|
17
17
|
export * from './lib/record-metric/record-metric.component';
|
|
18
18
|
export * from './lib/results-list-item/results-list-item.component';
|
|
19
19
|
export * from './lib/results-hits-number/results-hits-number.component';
|
|
20
|
+
export * from './lib/results-table/results-table.component';
|
|
20
21
|
//# 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,yDAAyD,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,yDAAyD,CAAA;AACvE,cAAc,6CAA6C,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
3
|
+
import { FileFormat } from '../../../../../../libs/util/shared/src';
|
|
4
|
+
import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class ResultsTableComponent {
|
|
7
|
+
records: CatalogRecord[];
|
|
8
|
+
selectedRecordsIdentifiers: string[];
|
|
9
|
+
sortOrder: SortByField;
|
|
10
|
+
recordHasDraft: (record: CatalogRecord) => boolean;
|
|
11
|
+
sortByChange: EventEmitter<[string, "asc" | "desc"]>;
|
|
12
|
+
recordClick: EventEmitter<CatalogRecord>;
|
|
13
|
+
recordsSelectedChange: EventEmitter<[CatalogRecord[], boolean]>;
|
|
14
|
+
dateToString(date: Date): string;
|
|
15
|
+
getStatus(isPublishedToAll: boolean | unknown): "published" | "not published";
|
|
16
|
+
getRecordFormats(record: CatalogRecord): FileFormat[];
|
|
17
|
+
formatUserInfo(userInfo: string | unknown): string;
|
|
18
|
+
getBadgeColor(format: FileFormat): string;
|
|
19
|
+
handleRecordClick(item: unknown): void;
|
|
20
|
+
setSortBy(col: string, order: 'asc' | 'desc'): void;
|
|
21
|
+
isSortedBy(col: string): 'desc' | 'asc' | null;
|
|
22
|
+
isChecked(record: CatalogRecord): boolean;
|
|
23
|
+
handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
|
|
24
|
+
toggleSelectAll(): Promise<void>;
|
|
25
|
+
isAllSelected(): boolean;
|
|
26
|
+
isSomeSelected(): boolean;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableComponent, never>;
|
|
28
|
+
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; }; "recordHasDraft": { "alias": "recordHasDraft"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=results-table.component.d.ts.map
|
|
@@ -0,0 +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":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EACL,UAAU,EAIX,MAAM,wCAAwC,CAAA;AAS/C,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;;AAElE,qBAea,qBAAqB;IACvB,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAG/D,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,qBAAqB,2CAE5B;IAEH,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,SAAS,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAI7C,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAarD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAQlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,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;IAI7D,eAAe;IAIrB,aAAa,IAAI,OAAO;IAMxB,cAAc,IAAI,OAAO;yCA5Fd,qBAAqB;2CAArB,qBAAqB;CAqGjC"}
|
package/package.json
CHANGED
|
@@ -302,4 +302,18 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
302
302
|
) !== null
|
|
303
303
|
)
|
|
304
304
|
}
|
|
305
|
+
|
|
306
|
+
// generated by copilot
|
|
307
|
+
getAllDrafts(): Observable<CatalogRecord[]> {
|
|
308
|
+
const items = { ...window.localStorage }
|
|
309
|
+
const drafts = Object.keys(items)
|
|
310
|
+
.filter((key) => key.startsWith('geonetwork-ui-draft-'))
|
|
311
|
+
.map((key) => window.localStorage.getItem(key))
|
|
312
|
+
.filter((draft) => draft !== null)
|
|
313
|
+
return from(
|
|
314
|
+
Promise.all(
|
|
315
|
+
drafts.map((draft) => findConverterForDocument(draft).readRecord(draft))
|
|
316
|
+
)
|
|
317
|
+
)
|
|
318
|
+
}
|
|
305
319
|
}
|
|
@@ -52,4 +52,7 @@ export abstract class RecordsRepositoryInterface {
|
|
|
52
52
|
|
|
53
53
|
abstract clearRecordDraft(uniqueIdentifier: string): void
|
|
54
54
|
abstract recordHasDraft(uniqueIdentifier: string): boolean
|
|
55
|
+
|
|
56
|
+
/** will return all pending drafts, both published and not published */
|
|
57
|
+
abstract getAllDrafts(): Observable<CatalogRecord[]>
|
|
55
58
|
}
|
|
@@ -233,6 +233,14 @@ Malgré l'attention portée à la création de ces données, il est rappelé que
|
|
|
233
233
|
description: 'Téléchargement du fichier',
|
|
234
234
|
mimeType: 'x-gis/x-shapefile',
|
|
235
235
|
},
|
|
236
|
+
{
|
|
237
|
+
type: 'service',
|
|
238
|
+
url: new URL('https://my-org.net/ogc'),
|
|
239
|
+
accessServiceProtocol: 'ogcFeatures',
|
|
240
|
+
name: 'ogcFeaturesSecondRecord',
|
|
241
|
+
description: 'This OGC service is the second part of the download',
|
|
242
|
+
identifierInService: 'my:featuretype',
|
|
243
|
+
},
|
|
236
244
|
],
|
|
237
245
|
lineage: `Document d’urbanisme numérisé conformément aux prescriptions nationales du CNIG par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.
|
|
238
246
|
Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur de 2019 et contrôlé par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.`,
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
2
|
import { select, Store } from '@ngrx/store'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
defaultIfEmpty,
|
|
5
|
+
filter,
|
|
6
|
+
map,
|
|
7
|
+
mergeMap,
|
|
8
|
+
scan,
|
|
9
|
+
switchMap,
|
|
10
|
+
toArray,
|
|
11
|
+
} from 'rxjs/operators'
|
|
4
12
|
import * as MdViewActions from './mdview.actions'
|
|
5
13
|
import * as MdViewSelectors from './mdview.selectors'
|
|
6
14
|
import { LinkClassifierService, LinkUsage } from '../../../../../../libs/util/shared/src'
|
|
@@ -95,36 +103,35 @@ export class MdViewFacade {
|
|
|
95
103
|
)
|
|
96
104
|
|
|
97
105
|
geoDataLinksWithGeometry$ = this.allLinks$.pipe(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}, [])
|
|
106
|
+
switchMap((links) =>
|
|
107
|
+
from(links).pipe(
|
|
108
|
+
mergeMap((link) => {
|
|
109
|
+
if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
|
|
110
|
+
if (
|
|
111
|
+
link.type === 'service' &&
|
|
112
|
+
link.accessServiceProtocol === 'ogcFeatures'
|
|
113
|
+
) {
|
|
114
|
+
return from(
|
|
115
|
+
this.dataService.getItemsFromOgcApi(link.url.href)
|
|
116
|
+
).pipe(
|
|
117
|
+
map((collectionRecords: OgcApiRecord) => {
|
|
118
|
+
return collectionRecords && collectionRecords.geometry
|
|
119
|
+
? link
|
|
120
|
+
: null
|
|
121
|
+
}),
|
|
122
|
+
defaultIfEmpty(null)
|
|
123
|
+
)
|
|
124
|
+
} else {
|
|
125
|
+
return of(link)
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
return of(null)
|
|
129
|
+
}
|
|
130
|
+
}),
|
|
131
|
+
toArray(),
|
|
132
|
+
map((links) => links.filter((link) => link !== null))
|
|
133
|
+
)
|
|
134
|
+
)
|
|
128
135
|
)
|
|
129
136
|
|
|
130
137
|
landingPageLinks$ = this.metadata$.pipe(
|
|
@@ -21,4 +21,4 @@ export * from './lib/results-hits-number/results-hits.container.component'
|
|
|
21
21
|
export * from './lib/results-layout/results-layout.component'
|
|
22
22
|
export * from './lib/sort-by/sort-by.component'
|
|
23
23
|
export * from './lib/state/container/search-state.container.directive'
|
|
24
|
-
export * from './lib/results-table/results-table.component'
|
|
24
|
+
export * from './lib/results-table/results-table-container.component'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<gn-ui-results-table
|
|
2
|
+
[records]="records$ | async"
|
|
3
|
+
[recordHasDraft]="hasDraft"
|
|
4
|
+
[selectedRecordsIdentifiers]="selectedRecords$ | async"
|
|
5
|
+
[sortOrder]="sortBy$ | async"
|
|
6
|
+
(recordClick)="handleRecordClick($event)"
|
|
7
|
+
(recordsSelectedChange)="handleRecordsSelectedChange($event[0], $event[1])"
|
|
8
|
+
(sortByChange)="handleSortByChange($event[0], $event[1])"
|
|
9
|
+
></gn-ui-results-table>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output } from '@angular/core'
|
|
2
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
3
|
+
import { SearchFacade } from '../state/search.facade'
|
|
4
|
+
import { SelectionService } from '../../../../../../libs/api/repository/src'
|
|
5
|
+
import { SearchService } from '../utils/service/search.service'
|
|
6
|
+
import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
|
|
7
|
+
import { ResultsTableComponent } from '../../../../../../libs/ui/search/src'
|
|
8
|
+
import { CommonModule } from '@angular/common'
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'gn-ui-results-table-container',
|
|
12
|
+
templateUrl: './results-table-container.component.html',
|
|
13
|
+
styleUrls: ['./results-table-container.component.css'],
|
|
14
|
+
standalone: true,
|
|
15
|
+
imports: [CommonModule, ResultsTableComponent],
|
|
16
|
+
})
|
|
17
|
+
export class ResultsTableContainerComponent {
|
|
18
|
+
@Output() recordClick = new EventEmitter<CatalogRecord>()
|
|
19
|
+
|
|
20
|
+
records$ = this.searchFacade.results$
|
|
21
|
+
selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$
|
|
22
|
+
sortBy$ = this.searchFacade.sortBy$
|
|
23
|
+
|
|
24
|
+
hasDraft = (record: CatalogRecord): boolean =>
|
|
25
|
+
this.recordsRepository.recordHasDraft(record.uniqueIdentifier)
|
|
26
|
+
|
|
27
|
+
constructor(
|
|
28
|
+
private searchFacade: SearchFacade,
|
|
29
|
+
private searchService: SearchService,
|
|
30
|
+
private selectionService: SelectionService,
|
|
31
|
+
private recordsRepository: RecordsRepositoryInterface
|
|
32
|
+
) {}
|
|
33
|
+
|
|
34
|
+
handleRecordClick(item: unknown) {
|
|
35
|
+
this.recordClick.emit(item as CatalogRecord)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
handleSortByChange(col: string, order: 'asc' | 'desc') {
|
|
39
|
+
this.searchService.setSortBy([order, col])
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
handleRecordsSelectedChange(records: CatalogRecord[], selected: boolean) {
|
|
43
|
+
if (!selected) {
|
|
44
|
+
this.selectionService.deselectRecords(records)
|
|
45
|
+
} else {
|
|
46
|
+
this.selectionService.selectRecords(records)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -17,3 +17,4 @@ export * from './lib/record-preview-title/record-preview-title.component'
|
|
|
17
17
|
export * from './lib/record-metric/record-metric.component'
|
|
18
18
|
export * from './lib/results-list-item/results-list-item.component'
|
|
19
19
|
export * from './lib/results-hits-number/results-hits-number.component'
|
|
20
|
+
export * from './lib/results-table/results-table.component'
|
|
File without changes
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<gn-ui-interactive-table
|
|
2
|
-
[items]="records
|
|
2
|
+
[items]="records"
|
|
3
3
|
(itemClick)="handleRecordClick($event)"
|
|
4
4
|
>
|
|
5
5
|
<!-- SELECTED COLUMN -->
|
|
6
6
|
<gn-ui-interactive-table-column>
|
|
7
7
|
<ng-template #header>
|
|
8
8
|
<gn-ui-checkbox
|
|
9
|
-
[checked]="isAllSelected()
|
|
10
|
-
[indeterminate]="isSomeSelected()
|
|
9
|
+
[checked]="isAllSelected()"
|
|
10
|
+
[indeterminate]="isSomeSelected()"
|
|
11
11
|
(changed)="toggleSelectAll()"
|
|
12
12
|
type="default"
|
|
13
13
|
class="-m-2 mr-3"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</ng-template>
|
|
17
17
|
<ng-template #cell let-item>
|
|
18
18
|
<gn-ui-checkbox
|
|
19
|
-
[checked]="isChecked(item)
|
|
19
|
+
[checked]="isChecked(item)"
|
|
20
20
|
(changed)="handleRecordSelectedChange($event, item)"
|
|
21
21
|
class="-m-2"
|
|
22
22
|
type="default"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<!-- TITLE COLUMN -->
|
|
28
28
|
<gn-ui-interactive-table-column
|
|
29
29
|
[sortable]="true"
|
|
30
|
-
[activeSort]="isSortedBy('resourceTitleObject.default.keyword')
|
|
30
|
+
[activeSort]="isSortedBy('resourceTitleObject.default.keyword')"
|
|
31
31
|
(sortChange)="setSortBy('resourceTitleObject.default.keyword', $event)"
|
|
32
32
|
>
|
|
33
33
|
<ng-template #header>
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<div class="flex flex-row items-center gap-2 max-w-full">
|
|
38
38
|
<span class="overflow-hidden text-ellipsis">{{ item.title }}</span>
|
|
39
39
|
<gn-ui-badge
|
|
40
|
-
*ngIf="
|
|
40
|
+
*ngIf="recordHasDraft(item)"
|
|
41
41
|
[style.--gn-ui-badge-padding]="'0.4em 0.6em'"
|
|
42
42
|
[style.--gn-ui-badge-text-color]="'#3d2006'"
|
|
43
43
|
[style.--gn-ui-badge-background-color]="'#ffbc7b'"
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
<!-- OWNER COLUMN -->
|
|
86
86
|
<gn-ui-interactive-table-column
|
|
87
87
|
[sortable]="true"
|
|
88
|
-
[activeSort]="isSortedBy('recordOwner')
|
|
88
|
+
[activeSort]="isSortedBy('recordOwner')"
|
|
89
89
|
(sortChange)="setSortBy('recordOwner', $event)"
|
|
90
90
|
>
|
|
91
91
|
<ng-template #header>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<!-- UPDATE DATE COLUMN -->
|
|
111
111
|
<gn-ui-interactive-table-column
|
|
112
112
|
[sortable]="true"
|
|
113
|
-
[activeSort]="isSortedBy('changeDate')
|
|
113
|
+
[activeSort]="isSortedBy('changeDate')"
|
|
114
114
|
(sortChange)="setSortBy('changeDate', $event)"
|
|
115
115
|
>
|
|
116
116
|
<ng-template #header>
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core'
|
|
2
|
+
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
3
|
+
import {
|
|
4
|
+
FileFormat,
|
|
5
|
+
getBadgeColor,
|
|
6
|
+
getFileFormat,
|
|
7
|
+
getFormatPriority,
|
|
8
|
+
} from '../../../../../../libs/util/shared/src'
|
|
9
|
+
import { BadgeComponent, UiInputsModule } from '../../../../../../libs/ui/inputs/src'
|
|
10
|
+
import {
|
|
11
|
+
InteractiveTableColumnComponent,
|
|
12
|
+
InteractiveTableComponent,
|
|
13
|
+
} from '../../../../../../libs/ui/layout/src'
|
|
14
|
+
import { MatIconModule } from '@angular/material/icon'
|
|
15
|
+
import { TranslateModule } from '@ngx-translate/core'
|
|
16
|
+
import { CommonModule } from '@angular/common'
|
|
17
|
+
import {
|
|
18
|
+
FieldSort,
|
|
19
|
+
SortByField,
|
|
20
|
+
} from '../../../../../../libs/common/domain/src/lib/model/search'
|
|
21
|
+
|
|
22
|
+
@Component({
|
|
23
|
+
selector: 'gn-ui-results-table',
|
|
24
|
+
templateUrl: './results-table.component.html',
|
|
25
|
+
styleUrls: ['./results-table.component.css'],
|
|
26
|
+
standalone: true,
|
|
27
|
+
imports: [
|
|
28
|
+
CommonModule,
|
|
29
|
+
UiInputsModule,
|
|
30
|
+
InteractiveTableComponent,
|
|
31
|
+
InteractiveTableColumnComponent,
|
|
32
|
+
MatIconModule,
|
|
33
|
+
TranslateModule,
|
|
34
|
+
BadgeComponent,
|
|
35
|
+
],
|
|
36
|
+
})
|
|
37
|
+
export class ResultsTableComponent {
|
|
38
|
+
@Input() records: CatalogRecord[] = []
|
|
39
|
+
@Input() selectedRecordsIdentifiers: string[] = []
|
|
40
|
+
@Input() sortOrder: SortByField = null
|
|
41
|
+
@Input() recordHasDraft: (record: CatalogRecord) => boolean = () => false
|
|
42
|
+
|
|
43
|
+
// emits the column (field) as well as the order
|
|
44
|
+
@Output() sortByChange = new EventEmitter<[string, 'asc' | 'desc']>()
|
|
45
|
+
@Output() recordClick = new EventEmitter<CatalogRecord>()
|
|
46
|
+
@Output() recordsSelectedChange = new EventEmitter<
|
|
47
|
+
[CatalogRecord[], boolean]
|
|
48
|
+
>()
|
|
49
|
+
|
|
50
|
+
dateToString(date: Date): string {
|
|
51
|
+
return date?.toLocaleDateString(undefined, {
|
|
52
|
+
year: 'numeric',
|
|
53
|
+
month: 'long',
|
|
54
|
+
day: 'numeric',
|
|
55
|
+
timeZone: 'UTC',
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getStatus(isPublishedToAll: boolean | unknown) {
|
|
60
|
+
return isPublishedToAll ? 'published' : 'not published'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getRecordFormats(record: CatalogRecord): FileFormat[] {
|
|
64
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
65
|
+
return []
|
|
66
|
+
}
|
|
67
|
+
const formats = Array.from(
|
|
68
|
+
new Set(
|
|
69
|
+
record.distributions.map((distribution) => getFileFormat(distribution))
|
|
70
|
+
)
|
|
71
|
+
).filter((format) => !!format)
|
|
72
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a))
|
|
73
|
+
return formats
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
formatUserInfo(userInfo: string | unknown): string {
|
|
77
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|')
|
|
78
|
+
if (infos && infos.length === 4) {
|
|
79
|
+
return `${infos[2]} ${infos[1]}`
|
|
80
|
+
}
|
|
81
|
+
return undefined
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
getBadgeColor(format: FileFormat): string {
|
|
85
|
+
return getBadgeColor(format)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
handleRecordClick(item: unknown) {
|
|
89
|
+
this.recordClick.emit(item as CatalogRecord)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setSortBy(col: string, order: 'asc' | 'desc') {
|
|
93
|
+
this.sortByChange.emit([col, order])
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
isSortedBy(col: string): 'desc' | 'asc' | null {
|
|
97
|
+
if (!this.sortOrder) {
|
|
98
|
+
return null
|
|
99
|
+
}
|
|
100
|
+
const sortArray = Array.isArray(this.sortOrder[0])
|
|
101
|
+
? (this.sortOrder as FieldSort[])
|
|
102
|
+
: ([this.sortOrder] as FieldSort[])
|
|
103
|
+
for (const sort of sortArray) {
|
|
104
|
+
if (sort[1] === col) {
|
|
105
|
+
return sort[0]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return null
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
isChecked(record: CatalogRecord): boolean {
|
|
112
|
+
return this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
handleRecordSelectedChange(selected: boolean, record: CatalogRecord) {
|
|
116
|
+
this.recordsSelectedChange.emit([[record], selected])
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async toggleSelectAll() {
|
|
120
|
+
this.recordsSelectedChange.emit([this.records, !this.isAllSelected()])
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
isAllSelected(): boolean {
|
|
124
|
+
return this.records.every((record) =>
|
|
125
|
+
this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier)
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
isSomeSelected(): boolean {
|
|
130
|
+
const allSelected = this.records.every((record) =>
|
|
131
|
+
this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier)
|
|
132
|
+
)
|
|
133
|
+
const someSelected = this.records.some((record) =>
|
|
134
|
+
this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier)
|
|
135
|
+
)
|
|
136
|
+
return !allSelected && someSelected
|
|
137
|
+
}
|
|
138
|
+
}
|
package/translations/de.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"Add Layer As": "",
|
|
2
3
|
"button.login": "",
|
|
3
4
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
4
5
|
"catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
@@ -17,16 +18,22 @@
|
|
|
17
18
|
"chart.type.line": "Liniendiagramm",
|
|
18
19
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
19
20
|
"chart.type.pie": "Kreisdiagramm",
|
|
21
|
+
"dashboard.catalog.allRecords": "Metadatenkatalog",
|
|
22
|
+
"dashboard.catalog.calendar": "Kalender",
|
|
23
|
+
"dashboard.catalog.contacts": "Kontakte",
|
|
24
|
+
"dashboard.catalog.discussion": "Diskussion",
|
|
25
|
+
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
20
26
|
"dashboard.createRecord": "Neuer Eintrag",
|
|
27
|
+
"dashboard.labels.catalog": "Katalog",
|
|
21
28
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
22
29
|
"dashboard.records.all": "Katalog",
|
|
23
30
|
"dashboard.records.hasDraft": "",
|
|
24
31
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
25
32
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
26
|
-
"dashboard.records.myOrg": "Meine Organisation",
|
|
27
33
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
28
34
|
"dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
|
|
29
35
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
36
|
+
"dashboard.records.templates": "Vorlagen",
|
|
30
37
|
"dashboard.records.userDetail": "Name",
|
|
31
38
|
"dashboard.records.userEmail": "E-Mail",
|
|
32
39
|
"dashboard.records.username": "Benutzername",
|
package/translations/en.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"Add Layer As": "",
|
|
2
3
|
"button.login": "Log in",
|
|
3
4
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
4
5
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
@@ -17,16 +18,22 @@
|
|
|
17
18
|
"chart.type.line": "line chart",
|
|
18
19
|
"chart.type.lineSmooth": "smooth line chart",
|
|
19
20
|
"chart.type.pie": "pie chart",
|
|
21
|
+
"dashboard.catalog.allRecords": "Metadata records",
|
|
22
|
+
"dashboard.catalog.calendar": "Calendar",
|
|
23
|
+
"dashboard.catalog.contacts": "Contacts",
|
|
24
|
+
"dashboard.catalog.discussion": "Discussion",
|
|
25
|
+
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
20
26
|
"dashboard.createRecord": "New record",
|
|
27
|
+
"dashboard.labels.catalog": "Catalog",
|
|
21
28
|
"dashboard.labels.mySpace": "My space",
|
|
22
29
|
"dashboard.records.all": "Metadata records",
|
|
23
30
|
"dashboard.records.hasDraft": "draft",
|
|
24
31
|
"dashboard.records.myDraft": "My drafts",
|
|
25
32
|
"dashboard.records.myLibrary": "My library",
|
|
26
|
-
"dashboard.records.myOrg": "Organization",
|
|
27
33
|
"dashboard.records.myRecords": "My Records",
|
|
28
34
|
"dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
|
|
29
35
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
36
|
+
"dashboard.records.templates": "Templates",
|
|
30
37
|
"dashboard.records.userDetail": "Name",
|
|
31
38
|
"dashboard.records.userEmail": "Email",
|
|
32
39
|
"dashboard.records.username": "Username",
|