geonetwork-ui 2.5.0-dev.bd37f68b3 → 2.5.0-dev.d4eff86c8
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 +11 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +34 -28
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +22 -2
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +23 -15
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
- package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -3
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +7 -2
- package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
- package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
- package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
- package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +6 -6
- package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +9 -7
- package/esm2022/translations/de.json +2 -3
- package/esm2022/translations/en.json +2 -3
- package/esm2022/translations/es.json +2 -3
- package/esm2022/translations/fr.json +4 -5
- package/esm2022/translations/it.json +2 -3
- package/esm2022/translations/nl.json +2 -3
- package/esm2022/translations/pt.json +2 -3
- package/fesm2022/geonetwork-ui.mjs +398 -166
- 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 +3 -0
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
- 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 +2 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +1 -0
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
- 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 +5 -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 +4 -1
- 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/utils/service/fields.d.ts +10 -0
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
- package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
- package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
- package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +3 -3
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +36 -27
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +41 -2
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +42 -21
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
- package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +6 -0
- package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
- package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
- package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
- package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
- package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
- package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +10 -5
- package/src/libs/util/data-fetcher/src/lib/utils.ts +36 -32
- package/translations/de.json +2 -3
- package/translations/en.json +2 -3
- package/translations/es.json +2 -3
- package/translations/fr.json +4 -5
- package/translations/it.json +2 -3
- package/translations/nl.json +2 -3
- package/translations/pt.json +2 -3
- package/translations/sk.json +2 -3
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseReader } from './base';
|
|
2
|
+
export declare abstract class BaseCacheReader extends BaseReader {
|
|
3
|
+
protected url: string;
|
|
4
|
+
protected cacheActive: boolean;
|
|
5
|
+
constructor(url: string, cacheActive?: boolean);
|
|
6
|
+
setCacheActive(value: boolean): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=base-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-cache.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/base-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,8BAAsB,eAAgB,SAAQ,UAAU;IAEpD,SAAS,CAAC,GAAG,EAAE,MAAM;IACrB,SAAS,CAAC,WAAW;gBADX,GAAG,EAAE,MAAM,EACX,WAAW,UAAO;IAK9B,cAAc,CAAC,KAAK,EAAE,OAAO;CAG9B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { BaseReader } from './base';
|
|
2
1
|
import { DataItem, DatasetInfo, PropertyInfo } from '../model';
|
|
2
|
+
import { BaseCacheReader } from './base-cache';
|
|
3
3
|
type ParseResult = {
|
|
4
4
|
items: DataItem[];
|
|
5
5
|
properties: PropertyInfo[];
|
|
6
6
|
};
|
|
7
|
-
export declare class BaseFileReader extends
|
|
7
|
+
export declare class BaseFileReader extends BaseCacheReader {
|
|
8
8
|
private parseResult_;
|
|
9
9
|
protected getData(): Promise<ParseResult>;
|
|
10
10
|
load(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-file.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/base-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-file.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/base-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CAAA;AAED,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,YAAY,CAAsB;IAE1C,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC,IAAI;IAIJ,IAAI,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAExC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAO/B;IAEK,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CA8BlC"}
|
|
@@ -6,9 +6,11 @@ export declare function parseGml(text: string, namespace: string, version: strin
|
|
|
6
6
|
properties: PropertyInfo[];
|
|
7
7
|
};
|
|
8
8
|
export declare class GmlReader extends BaseFileReader {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
protected url: string;
|
|
10
|
+
protected namespace: string;
|
|
11
|
+
protected version: WfsVersion;
|
|
12
|
+
protected cacheActive: boolean;
|
|
13
|
+
constructor(url: string, namespace: string, version: WfsVersion, cacheActive?: boolean);
|
|
12
14
|
protected getData(): Promise<{
|
|
13
15
|
items: DataItem[];
|
|
14
16
|
properties: PropertyInfo[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gml.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/gml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CAuBA;AAED,qBAAa,SAAU,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"gml.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/gml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CAuBA;AAED,qBAAa,SAAU,SAAQ,cAAc;IAEzC,SAAS,CAAC,GAAG,EAAE,MAAM;IACrB,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,OAAO,EAAE,UAAU;IAC7B,SAAS,CAAC,WAAW;gBAHX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EACnB,WAAW,UAAO;IAK9B,SAAS,CAAC,OAAO;eArCV,QAAQ,EAAE;oBACL,YAAY,EAAE;;CAyC3B"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client';
|
|
2
2
|
import { DataItem, DatasetInfo, PropertyInfo } from '../model';
|
|
3
|
-
import { BaseReader } from './base';
|
|
4
3
|
import { GmlReader } from './gml';
|
|
5
4
|
import { GeojsonReader } from './geojson';
|
|
6
|
-
|
|
5
|
+
import { BaseCacheReader } from './base-cache';
|
|
6
|
+
export declare class WfsReader extends BaseCacheReader {
|
|
7
7
|
endpoint: WfsEndpoint;
|
|
8
8
|
featureTypeName: string;
|
|
9
9
|
version: WfsVersion;
|
|
10
|
-
constructor(url: string, wfsEndpoint: WfsEndpoint, featureTypeName: string);
|
|
10
|
+
constructor(url: string, wfsEndpoint: WfsEndpoint, featureTypeName: string, cacheActive?: boolean);
|
|
11
11
|
get properties(): Promise<PropertyInfo[]>;
|
|
12
12
|
get info(): Promise<DatasetInfo>;
|
|
13
13
|
static createReader(wfsUrlEndpoint: string, featureTypeName?: string): Promise<GeojsonReader | GmlReader | WfsReader>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wfs.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/wfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wfs.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/wfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAgB,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,qBAAa,SAAU,SAAQ,eAAe;IAC5C,QAAQ,EAAE,WAAW,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,UAAU,CAAA;gBAGjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO;IAQvB,IAAI,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBxC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAO/B;WAEY,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IA4C1E,SAAS,CAAC,OAAO;;;;IAkCjB,IAAI;IAIE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CAGlC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DataItem, DatasetHeaders, PropertyInfo, SupportedType } from './model';
|
|
2
2
|
export declare function inferDatasetType(url: string, typeHint?: SupportedType): Promise<SupportedType>;
|
|
3
3
|
export declare function fetchHeaders(url: string): Promise<DatasetHeaders>;
|
|
4
|
-
export declare function fetchDataAsText(url: string): Promise<string>;
|
|
5
|
-
export declare function fetchDataAsArrayBuffer(url: string): Promise<ArrayBuffer>;
|
|
4
|
+
export declare function fetchDataAsText(url: string, cacheActive: boolean): Promise<string>;
|
|
5
|
+
export declare function fetchDataAsArrayBuffer(url: string, cacheActive: boolean): Promise<ArrayBuffer>;
|
|
6
6
|
export declare function tryParseDate(input: unknown): Date | null;
|
|
7
7
|
export declare function tryParseNumber(input: string): number | null;
|
|
8
8
|
export declare function jsonToGeojsonFeature(object: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,CAcjB;AACD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,CAsB7E;AAqBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,UAAQ,GACjB;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CA0DA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAgB3B"}
|
package/package.json
CHANGED
|
@@ -277,6 +277,31 @@ export class Gn4FieldMapper {
|
|
|
277
277
|
},
|
|
278
278
|
output
|
|
279
279
|
),
|
|
280
|
+
featureTypes: (output, source) =>
|
|
281
|
+
this.addExtra(
|
|
282
|
+
{
|
|
283
|
+
featureTypes: selectField(source, 'featureTypes'),
|
|
284
|
+
},
|
|
285
|
+
output
|
|
286
|
+
),
|
|
287
|
+
related: (output, source) => {
|
|
288
|
+
const fcatSource = selectField(
|
|
289
|
+
getFirstValue(
|
|
290
|
+
selectField(
|
|
291
|
+
<SourceWithUnknownProps>selectField(source, 'related'),
|
|
292
|
+
'fcats'
|
|
293
|
+
)
|
|
294
|
+
),
|
|
295
|
+
'_source'
|
|
296
|
+
)
|
|
297
|
+
const featureCatalogIdentifier = selectField(
|
|
298
|
+
<SourceWithUnknownProps>fcatSource,
|
|
299
|
+
'uuid'
|
|
300
|
+
)
|
|
301
|
+
return featureCatalogIdentifier
|
|
302
|
+
? this.addExtra({ featureCatalogIdentifier }, output)
|
|
303
|
+
: output
|
|
304
|
+
},
|
|
280
305
|
isPublishedToAll: (output, source) =>
|
|
281
306
|
this.addExtra(
|
|
282
307
|
{
|
|
@@ -51,7 +51,7 @@ export class ElasticsearchService {
|
|
|
51
51
|
size = 0,
|
|
52
52
|
from = 0,
|
|
53
53
|
sortBy: SortByField = null,
|
|
54
|
-
requestFields: RequestFields =
|
|
54
|
+
requestFields: RequestFields = null,
|
|
55
55
|
searchFilters: SearchFilters = {},
|
|
56
56
|
configFilters: SearchFilters = {},
|
|
57
57
|
uuids?: string[],
|
|
@@ -69,7 +69,7 @@ export class ElasticsearchService {
|
|
|
69
69
|
geometry
|
|
70
70
|
),
|
|
71
71
|
...(size > 0 ? { track_total_hits: true } : {}),
|
|
72
|
-
_source: requestFields,
|
|
72
|
+
...(requestFields && { _source: requestFields }),
|
|
73
73
|
}
|
|
74
74
|
this.processRuntimeFields(payload)
|
|
75
75
|
return payload
|
|
@@ -234,6 +234,7 @@ export class ElasticsearchService {
|
|
|
234
234
|
private filtersToQuery(
|
|
235
235
|
filters: FieldFilters | FiltersAggregationParams | string
|
|
236
236
|
): FilterQuery {
|
|
237
|
+
const addQuote = (key: string) => (/^\/.+\/$/.test(key) ? key : `"${key}"`)
|
|
237
238
|
const makeQuery = (filter: FieldFilter): string => {
|
|
238
239
|
if (typeof filter === 'string') {
|
|
239
240
|
return filter
|
|
@@ -241,9 +242,9 @@ export class ElasticsearchService {
|
|
|
241
242
|
return Object.keys(filter)
|
|
242
243
|
.map((key) => {
|
|
243
244
|
if (filter[key] === true) {
|
|
244
|
-
return
|
|
245
|
+
return addQuote(key)
|
|
245
246
|
}
|
|
246
|
-
return
|
|
247
|
+
return `-${addQuote(key)}`
|
|
247
248
|
})
|
|
248
249
|
.join(' OR ')
|
|
249
250
|
}
|
|
@@ -296,6 +297,25 @@ export class ElasticsearchService {
|
|
|
296
297
|
return queryParts.length > 0 ? (queryParts as FilterQuery) : undefined
|
|
297
298
|
}
|
|
298
299
|
|
|
300
|
+
private mustNotFilters(): Record<string, unknown>[] {
|
|
301
|
+
return [
|
|
302
|
+
{
|
|
303
|
+
...this.queryFilterOnValues('resourceType', [
|
|
304
|
+
'service',
|
|
305
|
+
'map',
|
|
306
|
+
'map/static',
|
|
307
|
+
'mapDigital',
|
|
308
|
+
]),
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
query_string: {
|
|
312
|
+
query:
|
|
313
|
+
'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
314
|
+
},
|
|
315
|
+
},
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
|
|
299
319
|
private buildPayloadQuery(
|
|
300
320
|
{ any, ...fieldSearchFilters }: SearchFilters,
|
|
301
321
|
configFilters: SearchFilters,
|
|
@@ -303,14 +323,7 @@ export class ElasticsearchService {
|
|
|
303
323
|
geometry?: Geometry
|
|
304
324
|
) {
|
|
305
325
|
const must = [] as Record<string, unknown>[]
|
|
306
|
-
const must_not =
|
|
307
|
-
...this.queryFilterOnValues('resourceType', [
|
|
308
|
-
'service',
|
|
309
|
-
'map',
|
|
310
|
-
'map/static',
|
|
311
|
-
'mapDigital',
|
|
312
|
-
]),
|
|
313
|
-
}
|
|
326
|
+
const must_not = this.mustNotFilters()
|
|
314
327
|
const should = [] as Record<string, unknown>[]
|
|
315
328
|
const filter = [this.queryFilterOnValues('isTemplate', 'n')] as Record<
|
|
316
329
|
string,
|
|
@@ -412,14 +425,8 @@ export class ElasticsearchService {
|
|
|
412
425
|
},
|
|
413
426
|
},
|
|
414
427
|
],
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
'service',
|
|
418
|
-
'map',
|
|
419
|
-
'map/static',
|
|
420
|
-
'mapDigital',
|
|
421
|
-
]),
|
|
422
|
-
},
|
|
428
|
+
|
|
429
|
+
must_not: this.mustNotFilters(),
|
|
423
430
|
},
|
|
424
431
|
},
|
|
425
432
|
_source: ['resourceTitleObject', 'uuid'],
|
|
@@ -532,13 +539,15 @@ export class ElasticsearchService {
|
|
|
532
539
|
switch (aggregation.type) {
|
|
533
540
|
case 'filters':
|
|
534
541
|
return {
|
|
535
|
-
filters:
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
+
filters: {
|
|
543
|
+
filters: Object.keys(aggregation.filters).reduce((prev, curr) => {
|
|
544
|
+
const filter = aggregation.filters[curr]
|
|
545
|
+
return {
|
|
546
|
+
...prev,
|
|
547
|
+
[curr]: this.filtersToQuery(filter)[0],
|
|
548
|
+
}
|
|
549
|
+
}, {}),
|
|
550
|
+
},
|
|
542
551
|
}
|
|
543
552
|
case 'terms':
|
|
544
553
|
return {
|
|
@@ -12,7 +12,10 @@ import {
|
|
|
12
12
|
Iso19139Converter,
|
|
13
13
|
} from '../../../../../../libs/api/metadata-converter/src'
|
|
14
14
|
import { PublicationVersionError } from '../../../../../../libs/common/domain/src/lib/model/error'
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
CatalogRecord,
|
|
17
|
+
DatasetFeatureCatalog,
|
|
18
|
+
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
16
19
|
import {
|
|
17
20
|
Aggregations,
|
|
18
21
|
AggregationsParams,
|
|
@@ -27,6 +30,7 @@ import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain
|
|
|
27
30
|
import {
|
|
28
31
|
RecordsApiService,
|
|
29
32
|
SearchApiService,
|
|
33
|
+
FeatureResponseApiModel,
|
|
30
34
|
} from '../../../../../../libs/data-access/gn4/src'
|
|
31
35
|
import {
|
|
32
36
|
combineLatest,
|
|
@@ -124,7 +128,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
124
128
|
return this.gn4SearchApi
|
|
125
129
|
.search(
|
|
126
130
|
'bucket',
|
|
127
|
-
|
|
131
|
+
['fcats'],
|
|
128
132
|
JSON.stringify(
|
|
129
133
|
this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)
|
|
130
134
|
)
|
|
@@ -137,6 +141,41 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
137
141
|
)
|
|
138
142
|
}
|
|
139
143
|
|
|
144
|
+
getFeatureCatalog(
|
|
145
|
+
record: CatalogRecord,
|
|
146
|
+
visited: Set<string> = new Set() // prevent looping
|
|
147
|
+
): Observable<DatasetFeatureCatalog | null> {
|
|
148
|
+
if (
|
|
149
|
+
record.extras &&
|
|
150
|
+
record.extras['featureTypes'] &&
|
|
151
|
+
record.extras['featureTypes'][0]?.attributeTable &&
|
|
152
|
+
Array.isArray(record.extras['featureTypes'][0].attributeTable)
|
|
153
|
+
) {
|
|
154
|
+
return of({
|
|
155
|
+
attributes: record.extras['featureTypes'][0]?.attributeTable?.map(
|
|
156
|
+
(attr) => ({
|
|
157
|
+
name: attr.name,
|
|
158
|
+
title: attr.definition,
|
|
159
|
+
})
|
|
160
|
+
),
|
|
161
|
+
} as DatasetFeatureCatalog)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const featureCatalogIdentifier = record.extras[
|
|
165
|
+
'featureCatalogIdentifier'
|
|
166
|
+
] as string
|
|
167
|
+
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
168
|
+
visited.add(featureCatalogIdentifier)
|
|
169
|
+
return this.getRecord(featureCatalogIdentifier).pipe(
|
|
170
|
+
switchMap((record) =>
|
|
171
|
+
record ? this.getFeatureCatalog(record, visited) : of(null)
|
|
172
|
+
)
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return of(null)
|
|
177
|
+
}
|
|
178
|
+
|
|
140
179
|
getSimilarRecords(similarTo: CatalogRecord): Observable<CatalogRecord[]> {
|
|
141
180
|
return this.gn4SearchApi
|
|
142
181
|
.search(
|
|
@@ -226,7 +226,9 @@ export interface DatasetRecord extends BaseRecord {
|
|
|
226
226
|
temporalExtents: Array<DatasetTemporalExtent>
|
|
227
227
|
spatialRepresentation?: SpatialRepresentationType
|
|
228
228
|
}
|
|
229
|
-
|
|
229
|
+
export type DatasetFeatureCatalog = {
|
|
230
|
+
attributes: Array<{ name: string; title: string }>
|
|
231
|
+
}
|
|
230
232
|
export interface ServiceEndpoint {
|
|
231
233
|
endpointUrl: URL
|
|
232
234
|
protocol: string
|
|
@@ -6,12 +6,15 @@ import {
|
|
|
6
6
|
SearchParams,
|
|
7
7
|
SearchResults,
|
|
8
8
|
} from '../model/search'
|
|
9
|
-
import { CatalogRecord } from '../model/record'
|
|
9
|
+
import { CatalogRecord, DatasetFeatureCatalog } from '../model/record'
|
|
10
10
|
|
|
11
11
|
export abstract class RecordsRepositoryInterface {
|
|
12
12
|
abstract search(params: SearchParams): Observable<SearchResults>
|
|
13
13
|
abstract getMatchesCount(filters: FieldFilters): Observable<number>
|
|
14
14
|
abstract getRecord(uniqueIdentifier: string): Observable<CatalogRecord | null>
|
|
15
|
+
abstract getFeatureCatalog(
|
|
16
|
+
record: CatalogRecord
|
|
17
|
+
): Observable<DatasetFeatureCatalog | null>
|
|
15
18
|
abstract aggregate(params: AggregationsParams): Observable<Aggregations>
|
|
16
19
|
abstract getSimilarRecords(
|
|
17
20
|
similarTo: CatalogRecord
|
|
@@ -160,6 +160,38 @@ As such, **it is not very interesting at all.**`,
|
|
|
160
160
|
extras: {
|
|
161
161
|
isPublishedToAll: true,
|
|
162
162
|
edit: true,
|
|
163
|
+
featureTypes: [
|
|
164
|
+
{
|
|
165
|
+
attributeTable: [
|
|
166
|
+
{
|
|
167
|
+
code: 'OBJECTID',
|
|
168
|
+
name: 'OBJECTID',
|
|
169
|
+
link: '',
|
|
170
|
+
definition: 'Object identifier',
|
|
171
|
+
type: 'OID',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
code: 'NOM',
|
|
175
|
+
name: 'Nom',
|
|
176
|
+
link: '',
|
|
177
|
+
definition: 'Nom de la rue',
|
|
178
|
+
type: 'String (48)',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
code: 'RUE',
|
|
182
|
+
name: 'Rue',
|
|
183
|
+
link: '',
|
|
184
|
+
definition: '',
|
|
185
|
+
type: 'String (50)',
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
code: '',
|
|
189
|
+
aliases: '',
|
|
190
|
+
typeName: "Catalogue d'attributs",
|
|
191
|
+
definition: '',
|
|
192
|
+
isAbstract: 'false',
|
|
193
|
+
},
|
|
194
|
+
],
|
|
163
195
|
},
|
|
164
196
|
},
|
|
165
197
|
{
|
|
@@ -312,6 +344,49 @@ export const simpleDatasetRecordFixture = (): DatasetRecord => ({
|
|
|
312
344
|
translations: {},
|
|
313
345
|
})
|
|
314
346
|
|
|
347
|
+
export const simpleDatasetRecordWithFcatsFixture = (): DatasetRecord => ({
|
|
348
|
+
uniqueIdentifier: 'my-dataset-with-fcats',
|
|
349
|
+
extras: {
|
|
350
|
+
featureCatalogIdentifier: 'feature-catalog-identifier',
|
|
351
|
+
},
|
|
352
|
+
kind: 'dataset',
|
|
353
|
+
otherLanguages: [],
|
|
354
|
+
defaultLanguage: 'en',
|
|
355
|
+
recordUpdated: new Date('2022-02-01T14:12:00.000Z'),
|
|
356
|
+
resourceCreated: new Date('2022-09-01T12:18:19.000Z'),
|
|
357
|
+
resourceUpdated: new Date('2022-12-04T14:12:00.000Z'),
|
|
358
|
+
status: 'ongoing',
|
|
359
|
+
title: 'A very interesting dataset with a related feature catalog',
|
|
360
|
+
abstract: `This dataset has been established for testing purposes.`,
|
|
361
|
+
ownerOrganization: { name: 'MyOrganization', translations: {} },
|
|
362
|
+
contacts: [
|
|
363
|
+
{
|
|
364
|
+
email: 'bob@org.net',
|
|
365
|
+
position: 'developer',
|
|
366
|
+
organization: { name: 'MyOrganization', translations: {} },
|
|
367
|
+
role: 'point_of_contact',
|
|
368
|
+
firstName: 'Bob',
|
|
369
|
+
lastName: 'TheGreat',
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
contactsForResource: [],
|
|
373
|
+
keywords: [],
|
|
374
|
+
topics: ['testData'],
|
|
375
|
+
licenses: [],
|
|
376
|
+
legalConstraints: [],
|
|
377
|
+
securityConstraints: [],
|
|
378
|
+
otherConstraints: [],
|
|
379
|
+
lineage:
|
|
380
|
+
'This record was edited manually to test the feature catalog parsing',
|
|
381
|
+
spatialRepresentation: 'grid',
|
|
382
|
+
overviews: [],
|
|
383
|
+
spatialExtents: [],
|
|
384
|
+
temporalExtents: [],
|
|
385
|
+
onlineResources: [],
|
|
386
|
+
updateFrequency: { per: 'month', updatedTimes: 3 },
|
|
387
|
+
translations: {},
|
|
388
|
+
})
|
|
389
|
+
|
|
315
390
|
export const simpleDatasetRecordAsXmlFixture =
|
|
316
391
|
(): string => `<?xml version="1.0" encoding="UTF-8"?>
|
|
317
392
|
<mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0">
|
|
@@ -65,6 +65,7 @@ marker('chart.aggregation.count')
|
|
|
65
65
|
standalone: true,
|
|
66
66
|
})
|
|
67
67
|
export class ChartViewComponent {
|
|
68
|
+
@Input() cacheActive = true
|
|
68
69
|
@Input() set link(value: DatasetOnlineResource) {
|
|
69
70
|
this.currentLink$.next(value)
|
|
70
71
|
}
|
|
@@ -134,7 +135,7 @@ export class ChartViewComponent {
|
|
|
134
135
|
switchMap((link) => {
|
|
135
136
|
this.error = null
|
|
136
137
|
this.loading = true
|
|
137
|
-
return this.dataService.getDataset(link).pipe(
|
|
138
|
+
return this.dataService.getDataset(link, this.cacheActive).pipe(
|
|
138
139
|
catchError((error) => {
|
|
139
140
|
this.handleError(error)
|
|
140
141
|
return EMPTY
|
|
@@ -164,18 +164,26 @@ export class DataService {
|
|
|
164
164
|
wfsLink.url.toString(),
|
|
165
165
|
wfsLink.name
|
|
166
166
|
).pipe(
|
|
167
|
-
map((urls) =>
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
167
|
+
map((urls) => {
|
|
168
|
+
if (urls.geojson) {
|
|
169
|
+
urls.all['application/json'] = urls.geojson
|
|
170
|
+
}
|
|
171
|
+
return urls
|
|
172
|
+
}),
|
|
173
|
+
map((urls) => {
|
|
174
|
+
const resources: DatasetOnlineResource[] = Object.keys(urls.all).map(
|
|
175
|
+
(format) => ({
|
|
176
|
+
...wfsLink,
|
|
177
|
+
name: wfsLink.name,
|
|
178
|
+
type: 'download' as const,
|
|
179
|
+
url: new URL(urls.all[format]),
|
|
180
|
+
mimeType: getMimeTypeForFormat(
|
|
181
|
+
getFileFormatFromServiceOutput(format)
|
|
182
|
+
),
|
|
183
|
+
})
|
|
184
|
+
)
|
|
185
|
+
return resources
|
|
186
|
+
})
|
|
179
187
|
)
|
|
180
188
|
}
|
|
181
189
|
|
|
@@ -234,8 +242,11 @@ export class DataService {
|
|
|
234
242
|
}))
|
|
235
243
|
}
|
|
236
244
|
|
|
237
|
-
readAsGeoJson(
|
|
238
|
-
|
|
245
|
+
readAsGeoJson(
|
|
246
|
+
link: DatasetOnlineResource,
|
|
247
|
+
cacheActive: boolean
|
|
248
|
+
): Observable<FeatureCollection> {
|
|
249
|
+
return this.getDataset(link, cacheActive).pipe(
|
|
239
250
|
switchMap((dataset) => dataset.selectAll().read()),
|
|
240
251
|
map((features) => ({
|
|
241
252
|
type: 'FeatureCollection',
|
|
@@ -244,13 +255,21 @@ export class DataService {
|
|
|
244
255
|
)
|
|
245
256
|
}
|
|
246
257
|
|
|
247
|
-
getDataset(
|
|
258
|
+
getDataset(
|
|
259
|
+
link: DatasetOnlineResource,
|
|
260
|
+
cacheActive: boolean
|
|
261
|
+
): Observable<BaseReader> {
|
|
248
262
|
if (link.type === 'service' && link.accessServiceProtocol === 'wfs') {
|
|
249
263
|
const wfsUrlEndpoint = this.proxy.getProxiedUrl(link.url.toString())
|
|
250
264
|
return from(
|
|
251
|
-
openDataset(
|
|
252
|
-
|
|
253
|
-
|
|
265
|
+
openDataset(
|
|
266
|
+
wfsUrlEndpoint,
|
|
267
|
+
'wfs',
|
|
268
|
+
{
|
|
269
|
+
wfsFeatureType: link.name,
|
|
270
|
+
},
|
|
271
|
+
cacheActive
|
|
272
|
+
)
|
|
254
273
|
)
|
|
255
274
|
} else if (link.type === 'download') {
|
|
256
275
|
const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString())
|
|
@@ -259,7 +278,9 @@ export class DataService {
|
|
|
259
278
|
SupportedTypes.indexOf(format as any) > -1
|
|
260
279
|
? (format as SupportedType)
|
|
261
280
|
: undefined
|
|
262
|
-
return from(
|
|
281
|
+
return from(
|
|
282
|
+
openDataset(linkProxifiedUrl, supportedType, undefined, cacheActive)
|
|
283
|
+
).pipe()
|
|
263
284
|
} else if (
|
|
264
285
|
link.type === 'service' &&
|
|
265
286
|
link.accessServiceProtocol === 'esriRest'
|
|
@@ -268,7 +289,7 @@ export class DataService {
|
|
|
268
289
|
link.url.toString(),
|
|
269
290
|
'geojson'
|
|
270
291
|
)
|
|
271
|
-
return from(openDataset(url, 'geojson')).pipe()
|
|
292
|
+
return from(openDataset(url, 'geojson', undefined, cacheActive)).pipe()
|
|
272
293
|
} else if (
|
|
273
294
|
link.type === 'service' &&
|
|
274
295
|
link.accessServiceProtocol === 'ogcFeatures'
|
|
@@ -276,7 +297,7 @@ export class DataService {
|
|
|
276
297
|
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(
|
|
277
298
|
switchMap((collectionInfo) => {
|
|
278
299
|
const geojsonUrl = collectionInfo.jsonDownloadLink
|
|
279
|
-
return openDataset(geojsonUrl, 'geojson')
|
|
300
|
+
return openDataset(geojsonUrl, 'geojson', undefined, cacheActive)
|
|
280
301
|
}),
|
|
281
302
|
tap((url) => {
|
|
282
303
|
if (url === null) {
|
|
@@ -33,6 +33,7 @@ import { CommonModule } from '@angular/common'
|
|
|
33
33
|
standalone: true,
|
|
34
34
|
})
|
|
35
35
|
export class TableViewComponent {
|
|
36
|
+
@Input() cacheActive = true
|
|
36
37
|
@Input() set link(value: DatasetOnlineResource) {
|
|
37
38
|
this.currentLink$.next(value)
|
|
38
39
|
}
|
|
@@ -66,7 +67,7 @@ export class TableViewComponent {
|
|
|
66
67
|
) {}
|
|
67
68
|
|
|
68
69
|
getDatasetReader(link: DatasetOnlineResource): Observable<BaseReader> {
|
|
69
|
-
return this.dataService.getDataset(link)
|
|
70
|
+
return this.dataService.getDataset(link, this.cacheActive)
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
onTableSelect(event) {
|
|
@@ -28,7 +28,7 @@ import { FormFieldWrapperComponent } from '../../../../../../../../../libs/ui/la
|
|
|
28
28
|
export class FormFieldRichComponent {
|
|
29
29
|
@Input() label: string
|
|
30
30
|
@Input() hint: string
|
|
31
|
-
@Input() placeholder = '
|
|
31
|
+
@Input() placeholder = ''
|
|
32
32
|
@Input() value: string
|
|
33
33
|
|
|
34
34
|
@Output() valueChange: EventEmitter<string> = new EventEmitter()
|
|
@@ -275,8 +275,8 @@ export const DEFAULT_CONFIGURATION: EditorConfig = {
|
|
|
275
275
|
labelKey: marker('editor.record.form.page.description'),
|
|
276
276
|
sections: [
|
|
277
277
|
TITLE_SECTION,
|
|
278
|
-
ABOUT_SECTION,
|
|
279
278
|
CLASSIFICATION_SECTION,
|
|
279
|
+
ABOUT_SECTION,
|
|
280
280
|
GEOGRAPHICAL_COVERAGE_SECTION,
|
|
281
281
|
],
|
|
282
282
|
},
|