geonetwork-ui 2.5.0-dev.bd37f68b3 → 2.5.0-dev.d0fe8c9ac
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/results-table/results-table-container.component.mjs +1 -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/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/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 +3 -3
- package/esm2022/translations/en.json +4 -12
- package/esm2022/translations/es.json +3 -3
- package/esm2022/translations/fr.json +15 -15
- package/esm2022/translations/it.json +20 -20
- package/esm2022/translations/nl.json +3 -3
- package/esm2022/translations/pt.json +3 -3
- package/fesm2022/geonetwork-ui.mjs +456 -208
- 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/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/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/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/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 +3 -3
- package/translations/en.json +4 -12
- package/translations/es.json +3 -3
- package/translations/fr.json +15 -15
- package/translations/it.json +20 -20
- package/translations/nl.json +3 -3
- package/translations/pt.json +3 -3
- package/translations/sk.json +3 -3
|
@@ -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
|
}
|
|
@@ -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> {
|
|
@@ -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
|
}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
|
|
2
2
|
import { DataItem, DatasetInfo, PropertyInfo } from '../model'
|
|
3
3
|
import { fetchDataAsText } from '../utils'
|
|
4
|
-
import { BaseReader } from './base'
|
|
5
4
|
import { GmlReader, parseGml } from './gml'
|
|
6
5
|
import { GeojsonReader, parseGeojson } from './geojson'
|
|
7
6
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
7
|
+
import { BaseCacheReader } from './base-cache'
|
|
8
8
|
|
|
9
|
-
export class WfsReader extends
|
|
9
|
+
export class WfsReader extends BaseCacheReader {
|
|
10
10
|
endpoint: WfsEndpoint
|
|
11
11
|
featureTypeName: string
|
|
12
12
|
version: WfsVersion
|
|
13
13
|
|
|
14
|
-
constructor(
|
|
15
|
-
|
|
14
|
+
constructor(
|
|
15
|
+
url: string,
|
|
16
|
+
wfsEndpoint: WfsEndpoint,
|
|
17
|
+
featureTypeName: string,
|
|
18
|
+
cacheActive?: boolean
|
|
19
|
+
) {
|
|
20
|
+
super(url, cacheActive)
|
|
16
21
|
this.endpoint = wfsEndpoint
|
|
17
22
|
this.featureTypeName = featureTypeName
|
|
18
23
|
this.version = this.endpoint.getVersion()
|
|
@@ -117,7 +122,7 @@ export class WfsReader extends BaseReader {
|
|
|
117
122
|
url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
return fetchDataAsText(url).then((text) =>
|
|
125
|
+
return fetchDataAsText(url, this.cacheActive).then((text) =>
|
|
121
126
|
asJson
|
|
122
127
|
? parseGeojson(text)
|
|
123
128
|
: parseGml(text, this.featureTypeName, this.version)
|
|
@@ -51,39 +51,43 @@ export function fetchHeaders(url: string): Promise<DatasetHeaders> {
|
|
|
51
51
|
})
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
export function fetchDataAsText(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
export function fetchDataAsText(
|
|
55
|
+
url: string,
|
|
56
|
+
cacheActive: boolean
|
|
57
|
+
): Promise<string> {
|
|
58
|
+
const fetchFactory = () =>
|
|
59
|
+
sharedFetch(url)
|
|
60
|
+
.catch((error) => {
|
|
61
|
+
throw FetchError.corsOrNetwork(error.message)
|
|
62
|
+
})
|
|
63
|
+
.then(async (response) => {
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
throw FetchError.http(response.status, await response.text())
|
|
66
|
+
}
|
|
67
|
+
return response.text()
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
return cacheActive ? useCache(fetchFactory, url, 'asText') : fetchFactory()
|
|
70
71
|
}
|
|
71
|
-
export function fetchDataAsArrayBuffer(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
72
|
+
export function fetchDataAsArrayBuffer(
|
|
73
|
+
url: string,
|
|
74
|
+
cacheActive: boolean
|
|
75
|
+
): Promise<ArrayBuffer> {
|
|
76
|
+
const fetchFactory = () =>
|
|
77
|
+
sharedFetch(url)
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
throw FetchError.corsOrNetwork(error.message)
|
|
80
|
+
})
|
|
81
|
+
.then(async (response) => {
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
throw FetchError.http(response.status, await response.text())
|
|
84
|
+
}
|
|
85
|
+
// convert to a numeric array so that we can store the response in cache
|
|
86
|
+
return Array.from(new Uint8Array(await response.arrayBuffer()))
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
cacheActive ? useCache(fetchFactory, url, 'asArrayBuffer') : fetchFactory()
|
|
87
91
|
).then((array) => {
|
|
88
92
|
return new Uint8Array(array).buffer
|
|
89
93
|
})
|
package/translations/de.json
CHANGED
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"chart.type.lineSmooth": "Geglättes Liniendiagramm",
|
|
21
21
|
"chart.type.pie": "Kreisdiagramm",
|
|
22
22
|
"dashboard.catalog.allRecords": "Metadatenkatalog",
|
|
23
|
-
"dashboard.catalog.contacts": "Kontakte",
|
|
24
|
-
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
25
23
|
"dashboard.createRecord": "Neuer Eintrag",
|
|
26
24
|
"dashboard.importRecord": "",
|
|
27
25
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -34,7 +32,6 @@
|
|
|
34
32
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
35
33
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
36
34
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
37
|
-
"dashboard.records.templates": "Vorlagen",
|
|
38
35
|
"dashboard.records.userDetail": "Name",
|
|
39
36
|
"dashboard.records.userEmail": "E-Mail",
|
|
40
37
|
"dashboard.records.username": "Benutzername",
|
|
@@ -425,6 +422,7 @@
|
|
|
425
422
|
"record.action.download": "Herunterladen",
|
|
426
423
|
"record.action.duplicate": "",
|
|
427
424
|
"record.action.duplicating": "",
|
|
425
|
+
"record.action.rollback": "",
|
|
428
426
|
"record.action.view": "Anzeigen",
|
|
429
427
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
430
428
|
"record.feature.limit": "Die Ressource enthält mehr als {count} Features und kann hier nicht angezeigt werden.",
|
|
@@ -547,6 +545,8 @@
|
|
|
547
545
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
548
546
|
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
549
547
|
"search.field.sortBy": "Sortieren nach:",
|
|
548
|
+
"search.filters.availableServices.download": "",
|
|
549
|
+
"search.filters.availableServices.view": "",
|
|
550
550
|
"search.filters.changeDate": "Letzte Aktualisierung",
|
|
551
551
|
"search.filters.clear": "Zurücksetzen",
|
|
552
552
|
"search.filters.contact": "Kontakte",
|
package/translations/en.json
CHANGED
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"chart.type.lineSmooth": "smooth line chart",
|
|
21
21
|
"chart.type.pie": "pie chart",
|
|
22
22
|
"dashboard.catalog.allRecords": "Datasets",
|
|
23
|
-
"dashboard.catalog.contacts": "Contacts",
|
|
24
|
-
"dashboard.catalog.thesaurus": "Thesaurus",
|
|
25
23
|
"dashboard.createRecord": "New dataset",
|
|
26
24
|
"dashboard.importRecord": "Import",
|
|
27
25
|
"dashboard.importRecord.importExternal": "Import an external file",
|
|
@@ -34,21 +32,12 @@
|
|
|
34
32
|
"dashboard.records.myDraft": "My drafts",
|
|
35
33
|
"dashboard.records.myRecords": "My datasets",
|
|
36
34
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
37
|
-
"dashboard.records.templates": "Templates",
|
|
38
35
|
"dashboard.records.userDetail": "Name",
|
|
39
36
|
"dashboard.records.userEmail": "Email",
|
|
40
37
|
"dashboard.records.username": "Username",
|
|
41
38
|
"dashboard.records.users": "{count, plural, =1{user} other{users}}",
|
|
42
39
|
"datafeeder.analysisProgressBar.illustration.fileFormatDetection": "File format \n detection",
|
|
43
|
-
"datafeeder.
|
|
44
|
-
"datafeeder.analysisProgressBar.illustration.samplingData": "Sampling \n data",
|
|
45
|
-
"datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
|
|
46
|
-
"datafeeder.analysisProgressBar.title": "Analysis in progress",
|
|
47
|
-
"datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
|
|
48
|
-
"datafeeder.datasetValidation.submitButton": "OK, my data is correct",
|
|
49
|
-
"datafeeder.datasetValidation.title": "Make sure your data is correct",
|
|
50
|
-
"datafeeder.datasetValidation.unknown": " - ",
|
|
51
|
-
"datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
|
|
40
|
+
"datafeeder.anaeditor.record.saveStatus.recordNotPublishedasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
|
|
52
41
|
"datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
|
|
53
42
|
"datafeeder.form.abstract": "How would you describe your dataset?",
|
|
54
43
|
"datafeeder.form.datepicker": "Do you know when the dataset was created?",
|
|
@@ -425,6 +414,7 @@
|
|
|
425
414
|
"record.action.download": "Download",
|
|
426
415
|
"record.action.duplicate": "Duplicate",
|
|
427
416
|
"record.action.duplicating": "Duplicating...",
|
|
417
|
+
"record.action.rollback": "Rollback",
|
|
428
418
|
"record.action.view": "View",
|
|
429
419
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
430
420
|
"record.feature.limit": "The resource contains more than {count} features and cannot be displayed here.",
|
|
@@ -547,6 +537,8 @@
|
|
|
547
537
|
"search.error.recordNotFound": "The dataset with identifier \"{ id }\" could not be found.",
|
|
548
538
|
"search.field.any.placeholder": "Search datasets ...",
|
|
549
539
|
"search.field.sortBy": "Sort by:",
|
|
540
|
+
"search.filters.availableServices.download": "",
|
|
541
|
+
"search.filters.availableServices.view": "",
|
|
550
542
|
"search.filters.changeDate": "Updated",
|
|
551
543
|
"search.filters.clear": "Reset",
|
|
552
544
|
"search.filters.contact": "Contacts",
|
package/translations/es.json
CHANGED
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"chart.type.lineSmooth": "gráfico de líneas suave",
|
|
21
21
|
"chart.type.pie": "gráfico circular",
|
|
22
22
|
"dashboard.catalog.allRecords": "",
|
|
23
|
-
"dashboard.catalog.contacts": "",
|
|
24
|
-
"dashboard.catalog.thesaurus": "",
|
|
25
23
|
"dashboard.createRecord": "",
|
|
26
24
|
"dashboard.importRecord": "",
|
|
27
25
|
"dashboard.importRecord.importExternal": "",
|
|
@@ -34,7 +32,6 @@
|
|
|
34
32
|
"dashboard.records.myDraft": "Mis borradores",
|
|
35
33
|
"dashboard.records.myRecords": "Mis Registros",
|
|
36
34
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
37
|
-
"dashboard.records.templates": "",
|
|
38
35
|
"dashboard.records.userDetail": "",
|
|
39
36
|
"dashboard.records.userEmail": "",
|
|
40
37
|
"dashboard.records.username": "",
|
|
@@ -425,6 +422,7 @@
|
|
|
425
422
|
"record.action.download": "",
|
|
426
423
|
"record.action.duplicate": "",
|
|
427
424
|
"record.action.duplicating": "",
|
|
425
|
+
"record.action.rollback": "",
|
|
428
426
|
"record.action.view": "",
|
|
429
427
|
"record.externalViewer.open": "",
|
|
430
428
|
"record.feature.limit": "",
|
|
@@ -547,6 +545,8 @@
|
|
|
547
545
|
"search.error.recordNotFound": "",
|
|
548
546
|
"search.field.any.placeholder": "",
|
|
549
547
|
"search.field.sortBy": "",
|
|
548
|
+
"search.filters.availableServices.download": "",
|
|
549
|
+
"search.filters.availableServices.view": "",
|
|
550
550
|
"search.filters.changeDate": "Última actualización",
|
|
551
551
|
"search.filters.clear": "",
|
|
552
552
|
"search.filters.contact": "",
|
package/translations/fr.json
CHANGED
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"chart.type.lineSmooth": "ligne lisse",
|
|
21
21
|
"chart.type.pie": "camembert",
|
|
22
22
|
"dashboard.catalog.allRecords": "Jeux de données",
|
|
23
|
-
"dashboard.catalog.contacts": "Annuaire",
|
|
24
|
-
"dashboard.catalog.thesaurus": "Thésaurus",
|
|
25
23
|
"dashboard.createRecord": "Nouveau jeu de données",
|
|
26
24
|
"dashboard.importRecord": "Importer",
|
|
27
25
|
"dashboard.importRecord.importExternal": "Importer un jeu de données externe",
|
|
@@ -34,7 +32,6 @@
|
|
|
34
32
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
35
33
|
"dashboard.records.myRecords": "Mes jeux de données",
|
|
36
34
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
37
|
-
"dashboard.records.templates": "Modèles pré-remplis",
|
|
38
35
|
"dashboard.records.userDetail": "Nom",
|
|
39
36
|
"dashboard.records.userEmail": "Email",
|
|
40
37
|
"dashboard.records.username": "Nom d'utilisateur",
|
|
@@ -161,7 +158,7 @@
|
|
|
161
158
|
"domain.contact.role.point_of_contact": "Point de contact",
|
|
162
159
|
"domain.contact.role.principal_investigator": "Chercheur principal",
|
|
163
160
|
"domain.contact.role.processor": "Processeur",
|
|
164
|
-
"domain.contact.role.publisher": "
|
|
161
|
+
"domain.contact.role.publisher": "Producteur",
|
|
165
162
|
"domain.contact.role.resource_provider": "Fournisseur",
|
|
166
163
|
"domain.contact.role.rights_holder": "Détenteur des droits",
|
|
167
164
|
"domain.contact.role.sponsor": "Sponsor",
|
|
@@ -225,7 +222,7 @@
|
|
|
225
222
|
"editor.record.form.constraint.otherConstraints": "Autres contraintes",
|
|
226
223
|
"editor.record.form.constraint.securityConstraints": "Contraintes de sécurité",
|
|
227
224
|
"editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
|
|
228
|
-
"editor.record.form.field.abstract": "
|
|
225
|
+
"editor.record.form.field.abstract": "Description",
|
|
229
226
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
230
227
|
"editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
|
|
231
228
|
"editor.record.form.field.contacts.placeholder": "Choisissez un contact",
|
|
@@ -267,14 +264,14 @@
|
|
|
267
264
|
"editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
|
|
268
265
|
"editor.record.form.keywords.place.withoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
|
|
269
266
|
"editor.record.form.keywords.placeholder": "Sélectionnez un mot-clé",
|
|
270
|
-
"editor.record.form.license.cc-by": "",
|
|
271
|
-
"editor.record.form.license.cc-by-sa": "",
|
|
272
|
-
"editor.record.form.license.cc-zero": "",
|
|
267
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
268
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
269
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
273
270
|
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
274
271
|
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
275
|
-
"editor.record.form.license.odbl": "",
|
|
276
|
-
"editor.record.form.license.odc-by": "",
|
|
277
|
-
"editor.record.form.license.pddl": "",
|
|
272
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
273
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
274
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
278
275
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
279
276
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
280
277
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
@@ -327,7 +324,7 @@
|
|
|
327
324
|
"editor.record.resourceError.closeMessage": "Compris",
|
|
328
325
|
"editor.record.resourceError.title": "Erreur avec les pièces jointes",
|
|
329
326
|
"editor.record.saveStatus.draftWithChangesPending": "Sauvegardé - Modifications non publiées",
|
|
330
|
-
"editor.record.saveStatus.recordNotPublished": "",
|
|
327
|
+
"editor.record.saveStatus.recordNotPublished": "Sauvegardé - non publié",
|
|
331
328
|
"editor.record.saveStatus.recordUpToDate": "Sauvegardé - Jeu de données à jour",
|
|
332
329
|
"editor.record.undo.confirmation.cancelText": "Garder les modifications",
|
|
333
330
|
"editor.record.undo.confirmation.confirmText": "Retirer les modifications",
|
|
@@ -337,7 +334,7 @@
|
|
|
337
334
|
"editor.record.undo.tooltip.enabled": "Cliquer sur ce bouton pour annuler les modifications apportées à ce jeu de données",
|
|
338
335
|
"editor.record.upToDate": "Ce jeu de données est à jour",
|
|
339
336
|
"editor.sidebar.logout": "Se déconnecter",
|
|
340
|
-
"editor.sidebar.menu.editor": "",
|
|
337
|
+
"editor.sidebar.menu.editor": "Editeur",
|
|
341
338
|
"editor.temporary.disabled": "Pas encore implémenté",
|
|
342
339
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
343
340
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -385,7 +382,7 @@
|
|
|
385
382
|
"map.add.layer": "Ajouter une couche",
|
|
386
383
|
"map.add.layer.catalog": "Du catalogue",
|
|
387
384
|
"map.add.layer.file": "À partir d'un fichier",
|
|
388
|
-
"map.add.layer.ogc.api": "",
|
|
385
|
+
"map.add.layer.ogc.api": "Depuis un service OGC API",
|
|
389
386
|
"map.add.layer.wfs": "Depuis un service WFS",
|
|
390
387
|
"map.add.layer.wms": "Depuis un service WMS",
|
|
391
388
|
"map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
|
|
@@ -398,7 +395,7 @@
|
|
|
398
395
|
"map.loading.data": "Chargement des données...",
|
|
399
396
|
"map.loading.service": "Chargement du service...",
|
|
400
397
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
401
|
-
"map.ogc.urlInput.hint": "",
|
|
398
|
+
"map.ogc.urlInput.hint": "Entrez l'URL du service OGC API",
|
|
402
399
|
"map.select.layer": "Source de données",
|
|
403
400
|
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
404
401
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
@@ -425,6 +422,7 @@
|
|
|
425
422
|
"record.action.download": "Télécharger",
|
|
426
423
|
"record.action.duplicate": "Dupliquer",
|
|
427
424
|
"record.action.duplicating": "Duplication...",
|
|
425
|
+
"record.action.rollback": "Restaurer",
|
|
428
426
|
"record.action.view": "Voir",
|
|
429
427
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
430
428
|
"record.feature.limit": "La ressource contient plus de {count} entités et ne peut pas être affichée ici.",
|
|
@@ -547,6 +545,8 @@
|
|
|
547
545
|
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
548
546
|
"search.field.any.placeholder": "Rechercher un jeu de données...",
|
|
549
547
|
"search.field.sortBy": "Trier par :",
|
|
548
|
+
"search.filters.availableServices.download": "",
|
|
549
|
+
"search.filters.availableServices.view": "",
|
|
550
550
|
"search.filters.changeDate": "Mise à jour",
|
|
551
551
|
"search.filters.clear": "Réinitialiser",
|
|
552
552
|
"search.filters.contact": "Contacts",
|