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": "",