geonetwork-ui 2.5.0-dev.da7bc314b → 2.5.0-dev.e060bf76e
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 +20 -17
- 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 +8 -8
- 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/generic-keywords/generic-keywords.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +3 -2
- 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/components/wizard-field/wizard-field.component.mjs +7 -23
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
- 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/fuzzy-search/fuzzy-search.component.mjs +6 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +43 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
- package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
- package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
- 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/base.mjs +1 -1
- 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 +19 -11
- package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +9 -7
- package/esm2022/translations/de.json +4 -76
- package/esm2022/translations/en.json +4 -76
- package/esm2022/translations/es.json +3 -75
- package/esm2022/translations/fr.json +16 -88
- package/esm2022/translations/it.json +21 -92
- package/esm2022/translations/nl.json +3 -75
- package/esm2022/translations/pt.json +3 -75
- package/fesm2022/geonetwork-ui.mjs +398 -853
- 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/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
- package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
- package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
- 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 +3 -2
- 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/fuzzy-search/fuzzy-search.component.d.ts +2 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +0 -1
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
- 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 +3 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/index.d.ts +0 -1
- package/libs/ui/widgets/src/index.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
- package/libs/ui/widgets/src/lib/ui-widgets.module.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/base.d.ts +2 -2
- package/libs/util/data-fetcher/src/lib/readers/base.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 +7 -4
- 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 +22 -16
- 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 +4 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
- 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/components/wizard-field/wizard-field.component.html +0 -13
- package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
- 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/fuzzy-search/fuzzy-search.component.html +1 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
- package/src/libs/ui/inputs/src/index.ts +0 -1
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +48 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
- package/src/libs/ui/widgets/src/index.ts +0 -1
- package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
- 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/base.ts +2 -2
- 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 +34 -11
- package/src/libs/util/data-fetcher/src/lib/utils.ts +36 -32
- package/translations/de.json +4 -76
- package/translations/en.json +4 -76
- package/translations/es.json +3 -75
- package/translations/fr.json +16 -88
- package/translations/it.json +21 -92
- package/translations/nl.json +3 -75
- package/translations/pt.json +3 -75
- package/translations/sk.json +3 -75
- package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
- package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
- package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
- package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
- package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
- package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
- package/src/libs/data-access/datafeeder/src/index.ts +0 -1
- package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
- package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
- package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
- package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
- package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
- package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
- package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
- package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
- package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
- package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
- package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
- package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
- package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
- package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
- package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
- package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
- package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
- package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
- package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
- package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
- package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
|
@@ -2,6 +2,7 @@ import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/
|
|
|
2
2
|
import { createAction, props } from '@ngrx/store'
|
|
3
3
|
import {
|
|
4
4
|
CatalogRecord,
|
|
5
|
+
DatasetFeatureCatalog,
|
|
5
6
|
UserFeedback,
|
|
6
7
|
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
7
8
|
|
|
@@ -28,6 +29,21 @@ export const loadFullMetadataFailure = createAction(
|
|
|
28
29
|
props<{ otherError?: string; notFound?: boolean }>()
|
|
29
30
|
)
|
|
30
31
|
|
|
32
|
+
export const loadFeatureCatalog = createAction(
|
|
33
|
+
"[Metadata view] Load metadata's feature catalog",
|
|
34
|
+
props<{ metadata: CatalogRecord }>()
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
export const loadFeatureCatalogSuccess = createAction(
|
|
38
|
+
'[Metadata view] Load metadata feature catalog success',
|
|
39
|
+
props<{ datasetCatalog: DatasetFeatureCatalog | null }>()
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
export const loadFeatureCatalogFailure = createAction(
|
|
43
|
+
'[Metadata view] Load metadata feature catalog failure',
|
|
44
|
+
props<{ error?: string }>()
|
|
45
|
+
)
|
|
46
|
+
|
|
31
47
|
export const closeMetadata = createAction('[Metadata view] close')
|
|
32
48
|
|
|
33
49
|
/*
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
2
|
import { Actions, createEffect, ofType } from '@ngrx/effects'
|
|
3
3
|
import { exhaustMap, mergeMap, of } from 'rxjs'
|
|
4
|
-
import { catchError, map, switchMap } from 'rxjs/operators'
|
|
4
|
+
import { catchError, filter, map, switchMap, take } from 'rxjs/operators'
|
|
5
5
|
import * as MdViewActions from './mdview.actions'
|
|
6
6
|
import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
|
|
7
7
|
import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
|
|
8
|
-
|
|
9
8
|
@Injectable()
|
|
10
9
|
export class MdViewEffects {
|
|
11
10
|
constructor(
|
|
@@ -33,6 +32,26 @@ export class MdViewEffects {
|
|
|
33
32
|
)
|
|
34
33
|
)
|
|
35
34
|
|
|
35
|
+
loadFeatureCatalog$ = createEffect(() =>
|
|
36
|
+
this.actions$.pipe(
|
|
37
|
+
ofType(MdViewActions.loadFullMetadataSuccess),
|
|
38
|
+
filter(({ full }) => full !== undefined),
|
|
39
|
+
switchMap(({ full }) => this.recordsRepository.getFeatureCatalog(full)),
|
|
40
|
+
map((featureCatalog) =>
|
|
41
|
+
MdViewActions.loadFeatureCatalogSuccess({
|
|
42
|
+
datasetCatalog: featureCatalog,
|
|
43
|
+
})
|
|
44
|
+
),
|
|
45
|
+
catchError((error) =>
|
|
46
|
+
of(
|
|
47
|
+
MdViewActions.loadFeatureCatalogFailure({
|
|
48
|
+
error: error.message,
|
|
49
|
+
})
|
|
50
|
+
)
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
)
|
|
54
|
+
|
|
36
55
|
/*
|
|
37
56
|
Related effects
|
|
38
57
|
*/
|
|
@@ -52,11 +52,26 @@ export class MdViewFacade {
|
|
|
52
52
|
filter((md) => !!md)
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
+
featureCatalog$ = this.store.pipe(select(MdViewSelectors.getFeatureCatalog))
|
|
56
|
+
|
|
55
57
|
isIncomplete$ = this.store.pipe(
|
|
56
58
|
select(MdViewSelectors.getMetadataIsIncomplete),
|
|
57
59
|
filter((incomplete) => incomplete !== null)
|
|
58
60
|
)
|
|
59
61
|
|
|
62
|
+
isHighUpdateFrequency$ = this.metadata$.pipe(
|
|
63
|
+
map((record) => {
|
|
64
|
+
if (record.updateFrequency instanceof Object) {
|
|
65
|
+
return (
|
|
66
|
+
record.updateFrequency.per === 'day' &&
|
|
67
|
+
record.updateFrequency.updatedTimes > 1
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return record.updateFrequency === 'continual'
|
|
72
|
+
})
|
|
73
|
+
)
|
|
74
|
+
|
|
60
75
|
error$ = this.store.pipe(select(MdViewSelectors.getMetadataError))
|
|
61
76
|
|
|
62
77
|
related$ = this.store.pipe(select(MdViewSelectors.getRelated))
|
|
@@ -3,6 +3,7 @@ import * as MetadataViewActions from './mdview.actions'
|
|
|
3
3
|
import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
|
|
4
4
|
import {
|
|
5
5
|
CatalogRecord,
|
|
6
|
+
DatasetFeatureCatalog,
|
|
6
7
|
UserFeedback,
|
|
7
8
|
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
8
9
|
|
|
@@ -17,6 +18,9 @@ export interface MetadataViewState {
|
|
|
17
18
|
allUserFeedbacksLoading: boolean
|
|
18
19
|
addUserFeedbackLoading: boolean
|
|
19
20
|
chartConfig?: DatavizConfigurationModel
|
|
21
|
+
featureCatalog?: DatasetFeatureCatalog
|
|
22
|
+
featureCatalogLoading: boolean
|
|
23
|
+
featureCatalogError: string | null
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
export const initialMetadataViewState: MetadataViewState = {
|
|
@@ -24,6 +28,8 @@ export const initialMetadataViewState: MetadataViewState = {
|
|
|
24
28
|
loadingFull: false,
|
|
25
29
|
allUserFeedbacksLoading: false,
|
|
26
30
|
addUserFeedbackLoading: false,
|
|
31
|
+
featureCatalogLoading: false,
|
|
32
|
+
featureCatalogError: null,
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
const metadataViewReducer = createReducer(
|
|
@@ -105,7 +111,30 @@ const metadataViewReducer = createReducer(
|
|
|
105
111
|
addUserFeedbackLoading: false,
|
|
106
112
|
allUserFeedbacksLoading: false,
|
|
107
113
|
})
|
|
108
|
-
)
|
|
114
|
+
),
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* FeatureCatalog reducers
|
|
118
|
+
*/
|
|
119
|
+
|
|
120
|
+
on(MetadataViewActions.loadFeatureCatalog, (state) => ({
|
|
121
|
+
...state,
|
|
122
|
+
featureCatalogError: null,
|
|
123
|
+
featureCatalogLoading: true,
|
|
124
|
+
})),
|
|
125
|
+
on(
|
|
126
|
+
MetadataViewActions.loadFeatureCatalogSuccess,
|
|
127
|
+
(state, { datasetCatalog }) => ({
|
|
128
|
+
...state,
|
|
129
|
+
featureCatalog: datasetCatalog,
|
|
130
|
+
featureCatalogLoading: false,
|
|
131
|
+
})
|
|
132
|
+
),
|
|
133
|
+
on(MetadataViewActions.loadFeatureCatalogFailure, (state, { error }) => ({
|
|
134
|
+
...state,
|
|
135
|
+
featureCatalogError: error,
|
|
136
|
+
featureCatalogLoading: false,
|
|
137
|
+
}))
|
|
109
138
|
)
|
|
110
139
|
|
|
111
140
|
export function reducer(
|
|
@@ -64,3 +64,15 @@ export const getAddUserFeedbacksLoading = createSelector(
|
|
|
64
64
|
getMdViewState,
|
|
65
65
|
(state: MetadataViewState) => state.addUserFeedbackLoading
|
|
66
66
|
)
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
Feature Catalog Selectors
|
|
70
|
+
*/
|
|
71
|
+
export const getFeatureCatalog = createSelector(
|
|
72
|
+
getMdViewState,
|
|
73
|
+
(state: MetadataViewState) => state.featureCatalog
|
|
74
|
+
)
|
|
75
|
+
export const getFeatureCatalogIsLoading = createSelector(
|
|
76
|
+
getMdViewState,
|
|
77
|
+
(state: MetadataViewState) => state.featureCatalogLoading
|
|
78
|
+
)
|
|
@@ -28,6 +28,7 @@ import { SearchFilters } from '../../../../../../libs/api/metadata-converter/src
|
|
|
28
28
|
export class FuzzySearchComponent implements OnInit {
|
|
29
29
|
@ViewChild(AutocompleteComponent) autocomplete: AutocompleteComponent
|
|
30
30
|
@Input() autoFocus = false
|
|
31
|
+
@Input() forceTrackPosition = false
|
|
31
32
|
@Output() itemSelected = new EventEmitter<CatalogRecord>()
|
|
32
33
|
@Output() inputSubmitted = new EventEmitter<string>()
|
|
33
34
|
searchInputValue$: Observable<{ title: string }>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<div
|
|
2
2
|
*ngIf="message && bannerOpen"
|
|
3
|
-
class="absolute
|
|
3
|
+
class="absolute left-0 right-0 text-wrap bg-white mt-4 max-h-24"
|
|
4
4
|
>
|
|
5
5
|
<div
|
|
6
6
|
class="flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20"
|
|
7
7
|
[ngClass]="classList"
|
|
8
8
|
>
|
|
9
|
-
<div [ngClass]="
|
|
9
|
+
<div [ngClass]="message.length > 200 ? 'pt-5' : 'pt-1'">
|
|
10
10
|
<ng-icon [name]="icon"></ng-icon>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="flex flex-col justify-start gap-2.5">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
|
|
2
2
|
import { marked } from 'marked'
|
|
3
3
|
|
|
4
4
|
@Component({
|
|
@@ -13,6 +13,6 @@ export class MarkdownParserComponent {
|
|
|
13
13
|
@Input() whitoutStyles?: boolean
|
|
14
14
|
|
|
15
15
|
get parsedMarkdown() {
|
|
16
|
-
return marked.parse(this.textContent)
|
|
16
|
+
return marked.parse(this.textContent ?? '')
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -3,7 +3,6 @@ export * from './lib/badge/badge.component'
|
|
|
3
3
|
export * from './lib/button/button.component'
|
|
4
4
|
export * from './lib/check-toggle/check-toggle.component'
|
|
5
5
|
export * from './lib/checkbox/checkbox.component'
|
|
6
|
-
export * from './lib/chips-input/chips-input.component'
|
|
7
6
|
export * from './lib/copy-text-button/copy-text-button.component'
|
|
8
7
|
export * from './lib/date-picker/date-picker.component'
|
|
9
8
|
export * from './lib/date-range-dropdown/date-range-dropdown.component'
|
|
@@ -83,6 +83,7 @@ export class AutocompleteComponent
|
|
|
83
83
|
@Input() minCharacterCount? = 3
|
|
84
84
|
// this will show a submit button next to the input; if false, a search icon will appear on the left
|
|
85
85
|
@Input() allowSubmit = false
|
|
86
|
+
@Input() forceTrackPosition = false
|
|
86
87
|
@Output() itemSelected = new EventEmitter<AutocompleteItem>()
|
|
87
88
|
@Output() inputSubmitted = new EventEmitter<string>()
|
|
88
89
|
@Output() inputCleared = new EventEmitter<void>()
|
|
@@ -98,6 +99,8 @@ export class AutocompleteComponent
|
|
|
98
99
|
error: string | null = null
|
|
99
100
|
suggestions$: Observable<AutocompleteItem[]>
|
|
100
101
|
subscription = new Subscription()
|
|
102
|
+
private lastPosition: DOMRect | null = null
|
|
103
|
+
private intervalIdPosition: number | undefined
|
|
101
104
|
|
|
102
105
|
@Input() displayWithFn: (item: AutocompleteItem) => string = (item) =>
|
|
103
106
|
item.toString()
|
|
@@ -147,6 +150,12 @@ export class AutocompleteComponent
|
|
|
147
150
|
this.error = null
|
|
148
151
|
}),
|
|
149
152
|
switchMap((value) => this.action(value)),
|
|
153
|
+
tap((suggestions) => {
|
|
154
|
+
// forcing the panel to open if there are suggestions
|
|
155
|
+
if (suggestions.length > 0) {
|
|
156
|
+
this.triggerRef?.openPanel()
|
|
157
|
+
}
|
|
158
|
+
}),
|
|
150
159
|
catchError((error: Error) => {
|
|
151
160
|
this.error = error.message
|
|
152
161
|
return of([])
|
|
@@ -191,10 +200,49 @@ export class AutocompleteComponent
|
|
|
191
200
|
this.inputRef.nativeElement.focus()
|
|
192
201
|
this.cdRef.detectChanges()
|
|
193
202
|
}
|
|
203
|
+
|
|
204
|
+
this.startTrackingPosition()
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* !!! This function is used only for web component mode,
|
|
209
|
+
* the autocomplete dropdown may not update its position
|
|
210
|
+
* if the page or container is disabling wind scroll.
|
|
211
|
+
*/
|
|
212
|
+
private trackPosition = () => {
|
|
213
|
+
const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen
|
|
214
|
+
const rect = this.inputRef.nativeElement.getBoundingClientRect()
|
|
215
|
+
|
|
216
|
+
if (
|
|
217
|
+
dropdownOpened &&
|
|
218
|
+
(!this.lastPosition ||
|
|
219
|
+
rect.top !== this.lastPosition.top ||
|
|
220
|
+
rect.left !== this.lastPosition.left)
|
|
221
|
+
) {
|
|
222
|
+
this.triggerRef.updatePosition()
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
this.lastPosition = rect
|
|
226
|
+
requestAnimationFrame(this.trackPosition)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* !!! This function is used only for web component mode,
|
|
231
|
+
* the autocomplete dropdown may not update its position
|
|
232
|
+
* if the page or container is disabling wind scroll.
|
|
233
|
+
*/
|
|
234
|
+
startTrackingPosition() {
|
|
235
|
+
if (this.forceTrackPosition) {
|
|
236
|
+
requestAnimationFrame(this.trackPosition)
|
|
237
|
+
}
|
|
194
238
|
}
|
|
195
239
|
|
|
196
240
|
ngOnDestroy(): void {
|
|
197
241
|
this.subscription?.unsubscribe()
|
|
242
|
+
|
|
243
|
+
if (this.intervalIdPosition) {
|
|
244
|
+
clearInterval(this.intervalIdPosition)
|
|
245
|
+
}
|
|
198
246
|
}
|
|
199
247
|
|
|
200
248
|
updateInputValue(value: AutocompleteItem) {
|
|
@@ -28,7 +28,6 @@ import { BadgeComponent } from './badge/badge.component'
|
|
|
28
28
|
import { ButtonComponent } from './button/button.component'
|
|
29
29
|
import { CheckToggleComponent } from './check-toggle/check-toggle.component'
|
|
30
30
|
import { CheckboxComponent } from './checkbox/checkbox.component'
|
|
31
|
-
import { ChipsInputComponent } from './chips-input/chips-input.component'
|
|
32
31
|
import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component'
|
|
33
32
|
import { DragAndDropFileInputComponent } from './drag-and-drop-file-input/drag-and-drop-file-input.component'
|
|
34
33
|
import { DropdownMultiselectComponent } from './dropdown-multiselect/dropdown-multiselect.component'
|
|
@@ -40,7 +39,6 @@ import { ViewportIntersectorComponent } from './viewport-intersector/viewport-in
|
|
|
40
39
|
@NgModule({
|
|
41
40
|
declarations: [
|
|
42
41
|
DragAndDropFileInputComponent,
|
|
43
|
-
ChipsInputComponent,
|
|
44
42
|
DropdownMultiselectComponent,
|
|
45
43
|
ViewportIntersectorComponent,
|
|
46
44
|
CheckboxComponent,
|
|
@@ -86,7 +84,6 @@ import { ViewportIntersectorComponent } from './viewport-intersector/viewport-in
|
|
|
86
84
|
ButtonComponent,
|
|
87
85
|
DragAndDropFileInputComponent,
|
|
88
86
|
TextAreaComponent,
|
|
89
|
-
ChipsInputComponent,
|
|
90
87
|
DropdownMultiselectComponent,
|
|
91
88
|
ViewportIntersectorComponent,
|
|
92
89
|
CheckToggleComponent,
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
>
|
|
7
7
|
<ul class="flex flex-col gap-2 w-full">
|
|
8
8
|
<gn-ui-button
|
|
9
|
+
*ngIf="!isDraftPage"
|
|
9
10
|
type="light"
|
|
10
11
|
extraClass="flex flex-row items-center gap-2 w-full justify-start"
|
|
11
12
|
(buttonClick)="duplicate.emit()"
|
|
@@ -23,7 +24,10 @@
|
|
|
23
24
|
(buttonClick)="displayDeleteMenu()"
|
|
24
25
|
[disabled]="!canDelete"
|
|
25
26
|
data-test="record-menu-delete-button"
|
|
26
|
-
><span translate>record.action.delete</span
|
|
27
|
+
><span *ngIf="!isDraftPage" translate>record.action.delete</span>
|
|
28
|
+
<span *ngIf="isDraftPage" translate
|
|
29
|
+
>record.action.rollback</span
|
|
30
|
+
></gn-ui-button
|
|
27
31
|
>
|
|
28
32
|
</ul>
|
|
29
33
|
</div>
|
|
@@ -60,4 +64,36 @@
|
|
|
60
64
|
</div>
|
|
61
65
|
</div>
|
|
62
66
|
</ng-container>
|
|
67
|
+
<ng-container *ngSwitchCase="'rollbackMenu'">
|
|
68
|
+
<div
|
|
69
|
+
data-test="rollbackMenuSection"
|
|
70
|
+
class="w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl"
|
|
71
|
+
>
|
|
72
|
+
<span class="text-lg font-bold text-center">{{
|
|
73
|
+
'editor.record.undo.confirmation.title' | translate
|
|
74
|
+
}}</span>
|
|
75
|
+
<span class="text-center">{{
|
|
76
|
+
'editor.record.undo.confirmation.message' | translate
|
|
77
|
+
}}</span>
|
|
78
|
+
<div class="flex flex-row gap-8 justify-center">
|
|
79
|
+
<gn-ui-button
|
|
80
|
+
(buttonClick)="rollback.emit()"
|
|
81
|
+
cdkFocusInitial
|
|
82
|
+
type="primary"
|
|
83
|
+
data-cy="confirm-button"
|
|
84
|
+
[style.--gn-ui-button-width]="'120px'"
|
|
85
|
+
>{{
|
|
86
|
+
'editor.record.undo.confirmation.confirmText' | translate
|
|
87
|
+
}}</gn-ui-button
|
|
88
|
+
>
|
|
89
|
+
<gn-ui-button
|
|
90
|
+
[style.--gn-ui-button-width]="'120px'"
|
|
91
|
+
(buttonClick)="closeActionMenu.emit()"
|
|
92
|
+
>{{
|
|
93
|
+
'editor.record.undo.confirmation.cancelText' | translate
|
|
94
|
+
}}</gn-ui-button
|
|
95
|
+
>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</ng-container>
|
|
63
99
|
</ng-container>
|
|
@@ -13,7 +13,7 @@ import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elemen
|
|
|
13
13
|
import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src'
|
|
14
14
|
import { TranslateModule } from '@ngx-translate/core'
|
|
15
15
|
|
|
16
|
-
type ActionMenuPage = 'mainMenu' | 'deleteMenu'
|
|
16
|
+
type ActionMenuPage = 'mainMenu' | 'deleteMenu' | 'rollbackMenu'
|
|
17
17
|
|
|
18
18
|
@Component({
|
|
19
19
|
selector: 'gn-ui-action-menu',
|
|
@@ -32,9 +32,11 @@ type ActionMenuPage = 'mainMenu' | 'deleteMenu'
|
|
|
32
32
|
export class ActionMenuComponent {
|
|
33
33
|
@Input() canDuplicate: boolean
|
|
34
34
|
@Input() canDelete: boolean
|
|
35
|
+
@Input() isDraftPage: boolean
|
|
35
36
|
@Output() duplicate = new EventEmitter<void>()
|
|
36
37
|
@Output() delete = new EventEmitter<void>()
|
|
37
38
|
@Output() closeActionMenu = new EventEmitter<void>()
|
|
39
|
+
@Output() rollback = new EventEmitter<void>()
|
|
38
40
|
|
|
39
41
|
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger
|
|
40
42
|
|
|
@@ -55,7 +57,11 @@ export class ActionMenuComponent {
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
displayDeleteMenu() {
|
|
58
|
-
this.
|
|
60
|
+
if (this.isDraftPage) {
|
|
61
|
+
this.sectionDisplayed = 'rollbackMenu'
|
|
62
|
+
} else {
|
|
63
|
+
this.sectionDisplayed = 'deleteMenu'
|
|
64
|
+
}
|
|
59
65
|
this.cdr.markForCheck()
|
|
60
66
|
}
|
|
61
67
|
}
|
|
@@ -162,9 +162,11 @@
|
|
|
162
162
|
<gn-ui-action-menu
|
|
163
163
|
[canDuplicate]="canDuplicate(item) && !isDuplicating"
|
|
164
164
|
[canDelete]="canDelete(item)"
|
|
165
|
+
[isDraftPage]="isDraftPage"
|
|
165
166
|
(duplicate)="handleDuplicate(item)"
|
|
166
167
|
(delete)="handleDelete(item)"
|
|
167
168
|
(closeActionMenu)="closeActionMenu()"
|
|
169
|
+
(rollback)="handleRollback(item)"
|
|
168
170
|
>
|
|
169
171
|
</gn-ui-action-menu>
|
|
170
172
|
</ng-template>
|
|
@@ -74,6 +74,7 @@ export class ResultsTableComponent {
|
|
|
74
74
|
@Output() recordClick = new EventEmitter<CatalogRecord>()
|
|
75
75
|
@Output() duplicateRecord = new EventEmitter<CatalogRecord>()
|
|
76
76
|
@Output() deleteRecord = new EventEmitter<CatalogRecord>()
|
|
77
|
+
@Output() rollbackDraft = new EventEmitter<CatalogRecord>()
|
|
77
78
|
@Output() recordsSelectedChange = new EventEmitter<
|
|
78
79
|
[CatalogRecord[], boolean]
|
|
79
80
|
>()
|
|
@@ -186,6 +187,11 @@ export class ResultsTableComponent {
|
|
|
186
187
|
this.closeActionMenu()
|
|
187
188
|
}
|
|
188
189
|
|
|
190
|
+
handleRollback(item: unknown) {
|
|
191
|
+
this.rollbackDraft.emit(item as CatalogRecord)
|
|
192
|
+
this.closeActionMenu()
|
|
193
|
+
}
|
|
194
|
+
|
|
189
195
|
setSortBy(col: string, order: 'asc' | 'desc') {
|
|
190
196
|
this.sortByChange.emit([col, order])
|
|
191
197
|
}
|
|
@@ -5,4 +5,3 @@ export * from './lib/loading-mask/loading-mask.component'
|
|
|
5
5
|
export * from './lib/color-scale/color-scale.component'
|
|
6
6
|
export * from './lib/popup-alert/popup-alert.component'
|
|
7
7
|
export * from './lib/spinning-loader/spinning-loader.component'
|
|
8
|
-
export * from './lib/step-bar/step-bar.component'
|
|
@@ -3,14 +3,13 @@ import { UtilSharedModule } from '../../../../../libs/util/shared/src'
|
|
|
3
3
|
import { TranslateModule } from '@ngx-translate/core'
|
|
4
4
|
import { NgxDropzoneModule } from 'ngx-dropzone'
|
|
5
5
|
import { ColorScaleComponent } from './color-scale/color-scale.component'
|
|
6
|
-
import { StepBarComponent } from './step-bar/step-bar.component'
|
|
7
6
|
import { TagInputModule } from 'ngx-chips'
|
|
8
7
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
|
|
9
8
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'
|
|
10
9
|
import { CommonModule } from '@angular/common'
|
|
11
10
|
|
|
12
11
|
@NgModule({
|
|
13
|
-
declarations: [ColorScaleComponent
|
|
12
|
+
declarations: [ColorScaleComponent],
|
|
14
13
|
imports: [
|
|
15
14
|
CommonModule,
|
|
16
15
|
TranslateModule.forChild(),
|
|
@@ -21,6 +20,6 @@ import { CommonModule } from '@angular/common'
|
|
|
21
20
|
UtilSharedModule,
|
|
22
21
|
MatProgressSpinnerModule,
|
|
23
22
|
],
|
|
24
|
-
exports: [
|
|
23
|
+
exports: [],
|
|
25
24
|
})
|
|
26
25
|
export class UiWidgetsModule {}
|
|
@@ -17,10 +17,17 @@ export async function openDataset(
|
|
|
17
17
|
namespace?: string
|
|
18
18
|
wfsVersion?: WfsVersion
|
|
19
19
|
wfsFeatureType?: string
|
|
20
|
-
}
|
|
20
|
+
},
|
|
21
|
+
cacheActive?: boolean
|
|
21
22
|
): Promise<BaseReader> {
|
|
22
23
|
const fileType = await inferDatasetType(url, typeHint)
|
|
23
|
-
let reader:
|
|
24
|
+
let reader:
|
|
25
|
+
| CsvReader
|
|
26
|
+
| JsonReader
|
|
27
|
+
| GeojsonReader
|
|
28
|
+
| ExcelReader
|
|
29
|
+
| GmlReader
|
|
30
|
+
| WfsReader
|
|
24
31
|
try {
|
|
25
32
|
switch (fileType) {
|
|
26
33
|
case 'csv':
|
|
@@ -42,6 +49,7 @@ export async function openDataset(
|
|
|
42
49
|
reader = await WfsReader.createReader(url, options.wfsFeatureType)
|
|
43
50
|
break
|
|
44
51
|
}
|
|
52
|
+
reader.setCacheActive(cacheActive)
|
|
45
53
|
reader.load()
|
|
46
54
|
return reader
|
|
47
55
|
} catch (e: any) {
|
|
@@ -61,9 +69,10 @@ export async function openDataset(
|
|
|
61
69
|
export async function readDataset(
|
|
62
70
|
url: string,
|
|
63
71
|
typeHint?: SupportedType,
|
|
64
|
-
options?: any
|
|
72
|
+
options?: any,
|
|
73
|
+
cacheActive = true
|
|
65
74
|
): Promise<DataItem[]> {
|
|
66
|
-
const reader = await openDataset(url, typeHint, options)
|
|
75
|
+
const reader = await openDataset(url, typeHint, options, cacheActive)
|
|
67
76
|
try {
|
|
68
77
|
return await reader.read()
|
|
69
78
|
} catch (e: any) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseReader } from './base'
|
|
2
|
+
|
|
3
|
+
export abstract class BaseCacheReader extends BaseReader {
|
|
4
|
+
constructor(
|
|
5
|
+
protected url: string,
|
|
6
|
+
protected cacheActive = true
|
|
7
|
+
) {
|
|
8
|
+
super(url)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
setCacheActive(value: boolean) {
|
|
12
|
+
this.cacheActive = value
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -2,13 +2,14 @@ import { BaseReader } from './base'
|
|
|
2
2
|
import { DataItem, DatasetInfo, PropertyInfo } from '../model'
|
|
3
3
|
import { getJsonDataItemsProxy, jsonToGeojsonFeature } from '../utils'
|
|
4
4
|
import { generateSqlQuery } from '../sql-utils'
|
|
5
|
+
import { BaseCacheReader } from './base-cache'
|
|
5
6
|
|
|
6
7
|
type ParseResult = {
|
|
7
8
|
items: DataItem[]
|
|
8
9
|
properties: PropertyInfo[]
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
export class BaseFileReader extends
|
|
12
|
+
export class BaseFileReader extends BaseCacheReader {
|
|
12
13
|
private parseResult_: Promise<ParseResult>
|
|
13
14
|
|
|
14
15
|
protected getData(): Promise<ParseResult> {
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
|
|
12
12
|
export class BaseReader {
|
|
13
13
|
protected selected: FieldName[] = null
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
public groupedBy: FieldGroupBy[] = null
|
|
15
|
+
public aggregations: FieldAggregation[] = null
|
|
16
16
|
protected filter: FieldFilter = null
|
|
17
17
|
protected sort: FieldSort[] = null
|
|
18
18
|
protected startIndex: number = null
|
|
@@ -28,6 +28,6 @@ export function parseExcel(buffer: ArrayBuffer): Promise<{
|
|
|
28
28
|
|
|
29
29
|
export class ExcelReader extends BaseFileReader {
|
|
30
30
|
getData() {
|
|
31
|
-
return fetchDataAsArrayBuffer(this.url).then(parseExcel)
|
|
31
|
+
return fetchDataAsArrayBuffer(this.url, this.cacheActive).then(parseExcel)
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -37,17 +37,17 @@ export function parseGml(
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export class GmlReader extends BaseFileReader {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
constructor(
|
|
41
|
+
protected url: string,
|
|
42
|
+
protected namespace: string,
|
|
43
|
+
protected version: WfsVersion,
|
|
44
|
+
protected cacheActive = true
|
|
45
|
+
) {
|
|
44
46
|
super(url)
|
|
45
|
-
this.namespace = namespace
|
|
46
|
-
this.version = version
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
protected getData() {
|
|
50
|
-
return fetchDataAsText(this.url).then((text) =>
|
|
50
|
+
return fetchDataAsText(this.url, this.cacheActive).then((text) =>
|
|
51
51
|
parseGml(text, this.namespace, this.version)
|
|
52
52
|
)
|
|
53
53
|
}
|