From c29ab22ebf58cf6ec1cd57a0ce1e0a85d9f57b95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laure-H=C3=A9l=C3=A8ne=20Bruneton?=
Date: Mon, 23 Sep 2024 15:55:39 +0200
Subject: [PATCH] wip
---
.../src/lib/common/distribution.mapper.ts | 2 +-
.../src/lib/iso19139/read-parts.ts | 3 +-
.../src/lib/model/record/metadata.model.ts | 2 +-
...nline-service-resource-input.component.css | 0
...line-service-resource-input.component.html | 34 +++
...e-service-resource-input.component.spec.ts | 21 ++
...online-service-resource-input.component.ts | 90 +++++++
.../form-field-online-resources.component.css | 0
...form-field-online-resources.component.html | 62 +++++
...m-field-online-resources.component.spec.ts | 21 ++
.../form-field-online-resources.component.ts | 242 ++++++++++++++++++
.../form-field/form-field.component.html | 7 +
.../form-field/form-field.component.ts | 8 +-
libs/feature/editor/src/lib/fields.config.ts | 11 +-
.../lib/file-input/file-input.component.html | 12 +-
.../switch-toggle/switch-toggle.component.ts | 1 +
translations/de.json | 7 +
translations/en.json | 7 +
translations/es.json | 7 +
translations/fr.json | 7 +
translations/it.json | 7 +
translations/nl.json | 7 +
translations/pt.json | 7 +
translations/sk.json | 7 +
24 files changed, 559 insertions(+), 13 deletions(-)
create mode 100644 libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css
create mode 100644 libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html
create mode 100644 libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.spec.ts
create mode 100644 libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts
create mode 100644 libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css
create mode 100644 libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html
create mode 100644 libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.spec.ts
create mode 100644 libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts
diff --git a/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts b/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts
index e5d66e3b66..21cbe69f10 100644
--- a/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts
+++ b/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts
@@ -7,7 +7,7 @@ export function matchProtocol(protocol: string): ServiceProtocol {
if (/wps/i.test(protocol)) return 'wps'
if (/ogc\W*api\W*features/i.test(protocol)) return 'ogcFeatures'
if (/esri/i.test(protocol)) return 'esriRest'
- return 'other'
+ return protocol
}
export function matchMimeType(format: string): string {
diff --git a/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts b/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts
index 34dee9e287..aee9347670 100644
--- a/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts
+++ b/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts
@@ -345,7 +345,7 @@ export function extractDatasetOnlineResources(
)
const getIsService = pipe(
getProtocol,
- map((protocol) => protocol !== 'other')
+ map((protocol) => protocol !== 'WWW:DOWNLOAD' && protocol !== 'WWW:LINK')
)
const getIsDownload = pipe(
combine(getIsService, getOnlineFunction, getProtocolStr),
@@ -381,6 +381,7 @@ export function extractDatasetOnlineResources(
mapArray(
([isService, isDownload, protocol, url, name, description, mimeType]) => {
if (isService) {
+ //FIXME: allow writing identifier only for wms and wfs?
const hasIdentifier = protocol === 'wms' || protocol === 'wfs'
return {
type: 'service',
diff --git a/libs/common/domain/src/lib/model/record/metadata.model.ts b/libs/common/domain/src/lib/model/record/metadata.model.ts
index 0589e96b7c..a843bb90d6 100644
--- a/libs/common/domain/src/lib/model/record/metadata.model.ts
+++ b/libs/common/domain/src/lib/model/record/metadata.model.ts
@@ -113,7 +113,7 @@ export type ServiceProtocol =
| 'wmts'
| 'esriRest'
| 'ogcFeatures'
- | 'other'
+ | string
export type OnlineResourceType = 'service' | 'download' | 'link' | 'endpoint'
diff --git a/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html
new file mode 100644
index 0000000000..d797669b7b
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html
@@ -0,0 +1,34 @@
+
+
+ editor.record.form.field.onlineResource.edit.protocol
+
+
+ help
+
+
+
+
+
+ {{ protocolOption.label | translate }}
+
+
+
+
+
diff --git a/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.spec.ts b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.spec.ts
new file mode 100644
index 0000000000..d158c7e40a
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing'
+import { TranslateModule } from '@ngx-translate/core'
+import { OnlineServiceResourceInputComponent } from './online-service-resource-input.component'
+
+describe('OnlineServiceResourceInputComponent', () => {
+ let component: OnlineServiceResourceInputComponent
+ let fixture: ComponentFixture
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [OnlineServiceResourceInputComponent, TranslateModule.forRoot()],
+ }).compileComponents()
+
+ fixture = TestBed.createComponent(OnlineServiceResourceInputComponent)
+ component = fixture.componentInstance
+ })
+
+ it('should create', () => {
+ expect(component).toBeTruthy()
+ })
+})
diff --git a/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts
new file mode 100644
index 0000000000..84bbdb1026
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts
@@ -0,0 +1,90 @@
+import { CommonModule } from '@angular/common'
+import {
+ ChangeDetectionStrategy,
+ Component,
+ Input,
+ OnChanges,
+} from '@angular/core'
+import { FormsModule } from '@angular/forms'
+import { MatIconModule } from '@angular/material/icon'
+import { MatRadioModule } from '@angular/material/radio'
+import { MatTooltipModule } from '@angular/material/tooltip'
+import { marker } from '@biesbjerg/ngx-translate-extract-marker'
+import {
+ DatasetServiceDistribution,
+ ServiceProtocol,
+} from '@geonetwork-ui/common/domain/model/record'
+import { TextInputComponent } from '@geonetwork-ui/ui/inputs'
+import { TranslateModule } from '@ngx-translate/core'
+
+@Component({
+ selector: 'gn-ui-online-service-resource-input',
+ templateUrl: './online-service-resource-input.component.html',
+ styleUrls: ['./online-service-resource-input.component.css'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ standalone: true,
+ imports: [
+ CommonModule,
+ MatIconModule,
+ MatTooltipModule,
+ MatRadioModule,
+ FormsModule,
+ TextInputComponent,
+ TranslateModule,
+ ],
+})
+export class OnlineServiceResourceInputComponent implements OnChanges {
+ @Input() service: Omit
+ @Input() protocolHint?: string = 'toto'
+
+ selectedProtocol: ServiceProtocol | 'other'
+
+ protocolOptions: {
+ label: string
+ value: ServiceProtocol | 'other'
+ }[] = [
+ {
+ label: 'OGC API',
+ value: 'ogcFeatures',
+ },
+ {
+ label: 'WFS',
+ value: 'wfs',
+ },
+ {
+ label: 'WMS',
+ value: 'wms',
+ },
+ {
+ label: 'WMTS',
+ value: 'wmts',
+ },
+ {
+ label: 'WPS',
+ value: 'wps',
+ },
+ {
+ label: 'ESRI REST',
+ value: 'esriRest',
+ },
+ {
+ label: marker('editor.record.onlineResource.protocol.other'),
+ value: 'other',
+ },
+ ]
+
+ ngOnChanges() {
+ this.selectedProtocol =
+ this.protocolOptions.find(
+ (option) => option.value === this.service.accessServiceProtocol
+ )?.value ?? 'other'
+ }
+
+ handleProtocolChange(protocol: ServiceProtocol | 'other') {
+ if (protocol === 'other') {
+ this.service.accessServiceProtocol = ''
+ } else {
+ this.service.accessServiceProtocol = protocol
+ }
+ }
+}
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html
new file mode 100644
index 0000000000..b9533aeb9c
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ editor.record.form.field.onlineResource.edit.title
+
+
+
+ editor.record.form.field.onlineResource.edit.description
+
+
+
+
+
+
+
+
+
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.spec.ts b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.spec.ts
new file mode 100644
index 0000000000..7145c69c5a
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing'
+import { TranslateModule } from '@ngx-translate/core'
+import { FormFieldOnlineResourcesComponent } from './form-field-online-resources.component'
+
+describe('FormFieldOnlineResourcesComponent', () => {
+ let component: FormFieldOnlineResourcesComponent
+ let fixture: ComponentFixture
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [FormFieldOnlineResourcesComponent, TranslateModule.forRoot()],
+ }).compileComponents()
+
+ fixture = TestBed.createComponent(FormFieldOnlineResourcesComponent)
+ component = fixture.componentInstance
+ })
+
+ it('should create', () => {
+ expect(component).toBeTruthy()
+ })
+})
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts
new file mode 100644
index 0000000000..bd5619ea18
--- /dev/null
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts
@@ -0,0 +1,242 @@
+import { CommonModule } from '@angular/common'
+import {
+ ChangeDetectionStrategy,
+ ChangeDetectorRef,
+ Component,
+ EventEmitter,
+ Input,
+ Output,
+ TemplateRef,
+ ViewChild,
+} from '@angular/core'
+import { MatDialog } from '@angular/material/dialog'
+import { marker } from '@biesbjerg/ngx-translate-extract-marker'
+import {
+ DatasetDownloadDistribution,
+ DatasetServiceDistribution,
+ OnlineResource,
+ OnlineResourceType,
+ ServiceEndpoint,
+} from '@geonetwork-ui/common/domain/model/record'
+import { PlatformServiceInterface } from '@geonetwork-ui/common/domain/platform.service.interface'
+import { NotificationsService } from '@geonetwork-ui/feature/notifications'
+import {
+ FileInputComponent,
+ SwitchToggleComponent,
+ SwitchToggleOption,
+ TextAreaComponent,
+ TextInputComponent,
+ UrlInputComponent,
+} from '@geonetwork-ui/ui/inputs'
+import {
+ ModalDialogComponent,
+ SortableListComponent,
+} from '@geonetwork-ui/ui/layout'
+import { TranslateModule, TranslateService } from '@ngx-translate/core'
+import { Subscription } from 'rxjs'
+import { MAX_UPLOAD_SIZE_MB } from '../../../../fields.config'
+import { OnlineResourceCardComponent } from '../../../online-resource-card/online-resource-card.component'
+import { OnlineServiceResourceInputComponent } from '../../../online-service-resource-input/online-service-resource-input.component'
+
+type OnlineNotLinkResource =
+ | DatasetDownloadDistribution
+ | DatasetServiceDistribution
+ | ServiceEndpoint
+
+@Component({
+ selector: 'gn-ui-form-field-online-resources',
+ templateUrl: './form-field-online-resources.component.html',
+ styleUrls: ['./form-field-online-resources.component.css'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ standalone: true,
+ imports: [
+ CommonModule,
+ SwitchToggleComponent,
+ FileInputComponent,
+ OnlineServiceResourceInputComponent,
+ UrlInputComponent,
+ SortableListComponent,
+ OnlineResourceCardComponent,
+ TextInputComponent,
+ TextAreaComponent,
+ TranslateModule,
+ ],
+})
+export class FormFieldOnlineResourcesComponent {
+ @Input() metadataUuid: string
+ @Input() set value(onlineResources: Array) {
+ this.allResources = onlineResources
+ this.notLinkResources = onlineResources.filter(
+ (res): res is OnlineNotLinkResource => res.type !== 'link'
+ )
+ }
+ @Output() valueChange: EventEmitter> =
+ new EventEmitter()
+
+ @ViewChild('dialogTemplate') dialogTemplate: TemplateRef
+
+ typeOptions: SwitchToggleOption[] = [
+ {
+ label: marker('editor.record.form.field.onlineResource.toggle.dataset'),
+ value: 'download',
+ checked: true,
+ },
+ {
+ label: marker('editor.record.form.field.onlineResource.toggle.service'),
+ value: 'service',
+ checked: false,
+ },
+ ]
+ selectedType: 'download' | 'service' = 'download'
+
+ private allResources: OnlineResource[] = []
+ notLinkResources: OnlineNotLinkResource[] = []
+ uploadProgress = undefined
+ uploadSubscription: Subscription = null
+ newService = {
+ type: 'service',
+ accessServiceProtocol: 'ogcFeatures',
+ identifierInService: '',
+ } as Omit
+
+ protected MAX_UPLOAD_SIZE_MB = MAX_UPLOAD_SIZE_MB
+
+ constructor(
+ private notificationsService: NotificationsService,
+ private translateService: TranslateService,
+ private platformService: PlatformServiceInterface,
+ private cd: ChangeDetectorRef,
+ private dialog: MatDialog
+ ) {}
+
+ onSelectedTypeChange(selectedType: unknown) {
+ this.selectedType = selectedType as 'download' | 'service'
+ }
+
+ handleFileChange(file: File) {
+ this.uploadProgress = 0
+ this.uploadSubscription = this.platformService
+ .attachFileToRecord(this.metadataUuid, file)
+ .subscribe({
+ next: (event) => {
+ if (event.type === 'progress') {
+ this.uploadProgress = event.progress
+ this.cd.detectChanges()
+ } else if (event.type === 'success') {
+ this.uploadProgress = undefined
+ this.cd.detectChanges()
+ const newResource: DatasetDownloadDistribution = {
+ type: 'download',
+ url: new URL(event.attachment.url),
+ name: event.attachment.fileName,
+ sizeBytes: event.sizeBytes, // WARNING: this is the only time that sizeBytes is set
+ }
+ this.valueChange.emit([...this.allResources, newResource])
+ }
+ },
+ error: (error: Error) => this.handleError(error.message),
+ })
+ }
+
+ handleUploadCancel() {
+ if (this.uploadSubscription) {
+ this.uploadProgress = undefined
+ this.uploadSubscription.unsubscribe()
+ }
+ }
+
+ handleDownloadUrlChange(url: string) {
+ try {
+ const name = url.split('/').pop()
+ const newLink: DatasetDownloadDistribution = {
+ type: 'download',
+ url: new URL(url),
+ name,
+ }
+ this.valueChange.emit([...this.allResources, newLink])
+ } catch (e) {
+ this.handleError((e as Error).message)
+ }
+ }
+
+ handleServiceUrlChange(url: string) {
+ this.valueChange.emit([
+ ...this.allResources,
+ {
+ ...this.newService,
+ url: new URL(url),
+ },
+ ])
+ //TODO: clean up this.newService and url
+ }
+
+ handleServiceModify(
+ oldService: DatasetServiceDistribution,
+ newService: DatasetServiceDistribution
+ ) {
+ oldService.accessServiceProtocol = newService.accessServiceProtocol
+ oldService.identifierInService = newService.identifierInService
+ oldService.url = newService.url
+ }
+
+ handleResourcesChange(items: unknown[]) {
+ const notLinks = items as OnlineNotLinkResource[]
+ const newResources = [
+ ...this.allResources.filter((r) => r.type === 'link'),
+ ...notLinks,
+ ]
+ this.valueChange.emit(newResources)
+ }
+
+ handleResourceModify(resource: OnlineNotLinkResource, index: number) {
+ this.openEditDialog(resource, index)
+ }
+
+ private handleError(error: string) {
+ this.uploadProgress = undefined
+ this.notificationsService.showNotification({
+ type: 'error',
+ title: this.translateService.instant(
+ 'editor.record.onlineResourceError.title'
+ ),
+ text: `${this.translateService.instant(
+ 'editor.record.onlineResourceError.body'
+ )} ${error}`,
+ closeMessage: this.translateService.instant(
+ 'editor.record.onlineResourceError.closeMessage'
+ ),
+ })
+ }
+
+ private openEditDialog(resource: OnlineNotLinkResource, index: number) {
+ const resourceCopy = {
+ ...resource,
+ }
+ this.dialog
+ .open(ModalDialogComponent, {
+ data: {
+ title: this.translateService.instant(
+ 'editor.record.form.field.onlineResource.dialogTitle'
+ ),
+ body: this.dialogTemplate,
+ bodyContext: resourceCopy,
+ confirmText: this.translateService.instant(
+ 'editor.record.form.field.onlineResource.confirm'
+ ),
+ cancelText: this.translateService.instant(
+ 'editor.record.form.field.onlineResource.cancel'
+ ),
+ },
+ })
+ .afterClosed()
+ .subscribe((confirmed: boolean) => {
+ if (!confirmed) return
+ const newNotLinks = [...this.notLinkResources]
+ newNotLinks.splice(index, 1, resourceCopy)
+ this.valueChange.emit([
+ ...this.allResources.filter((r) => r.type === 'link'),
+ ...newNotLinks,
+ ])
+ })
+ }
+}
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html b/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
index ea903d38fb..3ffbb98bde 100644
--- a/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
@@ -114,6 +114,13 @@
(valueChange)="valueChange.emit($event)"
>
+
+
+
+
+
-
-
diff --git a/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts b/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts
index 72d8f9e161..bbe6ebd21b 100644
--- a/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts
+++ b/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts
@@ -10,6 +10,7 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle'
export type SwitchToggleOption = {
label: string
+ value?: unknown
checked: boolean
}
diff --git a/translations/de.json b/translations/de.json
index 24b74e605d..3898c69239 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
"editor.record.loadError.closeMessage": "Verstanden",
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",
diff --git a/translations/en.json b/translations/en.json
index ce7750795b..95b0210b90 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "Log in",
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "Confirm",
"editor.record.form.field.onlineResource.dialogTitle": "Modify the resource preview",
"editor.record.form.field.onlineResource.edit.description": "Description",
+ "editor.record.form.field.onlineResource.edit.protocol": "Protocol",
"editor.record.form.field.onlineResource.edit.title": "Title",
"editor.record.form.field.onlineResource.fileSize": "{sizeMB}MB",
"editor.record.form.field.onlineResource.modify": "Modify",
+ "editor.record.form.field.onlineResource.toggle.dataset": "Link to a dataset",
+ "editor.record.form.field.onlineResource.toggle.service": "Link to a service",
+ "editor.record.form.field.onlineResources": "Distribution",
"editor.record.form.field.overviews": "Overviews",
"editor.record.form.field.recordUpdated": "Record Updated",
"editor.record.form.field.resourceUpdated": "Resource Updated",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "Resources",
"editor.record.form.section.about.description": "This section describes the resource.",
"editor.record.form.section.about.label": "About the resource",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "Annexes",
"editor.record.form.section.associatedResources.description": "Drop files here to associate them with the resource.",
"editor.record.form.section.associatedResources.label": "Associated resources",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "The record could not be loaded:",
"editor.record.loadError.closeMessage": "Understood",
"editor.record.loadError.title": "Error loading record",
+ "editor.record.onlineResource.protocol.other": "Other",
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
"editor.record.onlineResourceError.closeMessage": "Understood",
"editor.record.onlineResourceError.title": "Error adding resource",
diff --git a/translations/es.json b/translations/es.json
index e708c32ec0..e6a8e628e8 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "conjuntos de datos",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "",
"editor.record.form.field.resourceUpdated": "",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "",
"editor.record.loadError.closeMessage": "",
"editor.record.loadError.title": "",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",
diff --git a/translations/fr.json b/translations/fr.json
index 42a4944787..05731b5fb6 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "Se connecter",
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "Valider",
"editor.record.form.field.onlineResource.dialogTitle": "Modifier l'aperçu de la ressource",
"editor.record.form.field.onlineResource.edit.description": "Description",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "Titre",
"editor.record.form.field.onlineResource.fileSize": "{sizeMB} Mo",
"editor.record.form.field.onlineResource.modify": "Modifier",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "Aperçus",
"editor.record.form.field.recordUpdated": "Date de dernière révision",
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "Ressources",
"editor.record.form.section.about.description": "Ces informations concernent la donnée.",
"editor.record.form.section.about.label": "A propos de la ressource",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "Annexes",
"editor.record.form.section.associatedResources.description": "Déposez les jeux de données associées à cette fiche de métadonnée.",
"editor.record.form.section.associatedResources.label": "Ressources associees",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
"editor.record.loadError.closeMessage": "Compris",
"editor.record.loadError.title": "Erreur lors du chargement",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la resource:",
"editor.record.onlineResourceError.closeMessage": "Compris",
"editor.record.onlineResourceError.title": "Erreur lors de l'ajout d'une ressource",
diff --git a/translations/it.json b/translations/it.json
index 1f87f83ac5..8af8555ac7 100644
--- a/translations/it.json
+++ b/translations/it.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "",
"editor.record.form.field.resourceUpdated": "",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "",
"editor.record.loadError.closeMessage": "",
"editor.record.loadError.title": "",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",
diff --git a/translations/nl.json b/translations/nl.json
index c5895c20c4..816c832976 100644
--- a/translations/nl.json
+++ b/translations/nl.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "datasets",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "",
"editor.record.form.field.resourceUpdated": "",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "",
"editor.record.loadError.closeMessage": "",
"editor.record.loadError.title": "",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",
diff --git a/translations/pt.json b/translations/pt.json
index 64c5b7975d..10f80288a9 100644
--- a/translations/pt.json
+++ b/translations/pt.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "conjuntos de dados",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "",
"editor.record.form.field.resourceUpdated": "",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "",
"editor.record.loadError.closeMessage": "",
"editor.record.loadError.title": "",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",
diff --git a/translations/sk.json b/translations/sk.json
index 3911e28e0e..d04442f5fc 100644
--- a/translations/sk.json
+++ b/translations/sk.json
@@ -1,4 +1,5 @@
{
+ "": "",
"Add Layer As": "",
"button.login": "",
"catalog.figures.datasets": "{count, plural, =0{datasety} one{dataset} other{datasety}}",
@@ -214,9 +215,13 @@
"editor.record.form.field.onlineResource.confirm": "",
"editor.record.form.field.onlineResource.dialogTitle": "",
"editor.record.form.field.onlineResource.edit.description": "",
+ "editor.record.form.field.onlineResource.edit.protocol": "",
"editor.record.form.field.onlineResource.edit.title": "",
"editor.record.form.field.onlineResource.fileSize": "",
"editor.record.form.field.onlineResource.modify": "",
+ "editor.record.form.field.onlineResource.toggle.dataset": "",
+ "editor.record.form.field.onlineResource.toggle.service": "",
+ "editor.record.form.field.onlineResources": "",
"editor.record.form.field.overviews": "",
"editor.record.form.field.recordUpdated": "",
"editor.record.form.field.resourceUpdated": "",
@@ -239,6 +244,7 @@
"editor.record.form.page.ressources": "",
"editor.record.form.section.about.description": "",
"editor.record.form.section.about.label": "",
+ "editor.record.form.section.annexes.description": "",
"editor.record.form.section.annexes.label": "",
"editor.record.form.section.associatedResources.description": "",
"editor.record.form.section.associatedResources.label": "",
@@ -262,6 +268,7 @@
"editor.record.loadError.body": "",
"editor.record.loadError.closeMessage": "",
"editor.record.loadError.title": "",
+ "editor.record.onlineResource.protocol.other": "",
"editor.record.onlineResourceError.body": "",
"editor.record.onlineResourceError.closeMessage": "",
"editor.record.onlineResourceError.title": "",