diff --git a/apps/metadata-editor-e2e/src/e2e/edit.cy.ts b/apps/metadata-editor-e2e/src/e2e/edit.cy.ts index 44c3c64479..0fe966b57c 100644 --- a/apps/metadata-editor-e2e/src/e2e/edit.cy.ts +++ b/apps/metadata-editor-e2e/src/e2e/edit.cy.ts @@ -464,10 +464,7 @@ describe('editor form', () => { .find('gn-ui-url-input') .find('input') .type('http://example.com/wms') - cy.get('gn-ui-form-field-online-resources') - .find('gn-ui-url-input') - .find('button') - .click() + cy.get('gn-ui-form-field-online-resources').find('button').eq(2).click() cy.editor_publishAndReload() cy.get('@saveStatus').should('eq', 'record_up_to_date') cy.get('@resourcePageBtn').click() diff --git a/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html b/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html index c789c63c97..1281ce6a9b 100644 --- a/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +++ b/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html @@ -22,7 +22,7 @@ class="mt-3.5" [value]="constraint_.url?.toString()" (valueChange)="handleURLChange($event)" - [showUploadButton]="false" + [showValidateButton]="false" > 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 index d7e845ff71..f425e7a6b1 100644 --- 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 @@ -26,8 +26,33 @@

- + +
+ + + + + + +
+ + + editor.record.form.field.onlineResource.edit.identifier.submit + +
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 index 9b4f6a187a..d58b885cac 100644 --- 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 @@ -2,8 +2,10 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, + EventEmitter, Input, OnChanges, + Output, } from '@angular/core' import { FormsModule } from '@angular/forms' import { MatRadioModule } from '@angular/material/radio' @@ -13,8 +15,18 @@ import { DatasetServiceDistribution, ServiceProtocol, } from '@geonetwork-ui/common/domain/model/record' -import { TextInputComponent } from '@geonetwork-ui/ui/inputs' +import { + ButtonComponent, + TextInputComponent, + UrlInputComponent, +} from '@geonetwork-ui/ui/inputs' import { TranslateModule } from '@ngx-translate/core' +import { + NgIconComponent, + provideIcons, + provideNgIconsConfig, +} from '@ng-icons/core' +import { iconoirCloudUpload } from '@ng-icons/iconoir' @Component({ selector: 'gn-ui-online-service-resource-input', @@ -23,18 +35,29 @@ import { TranslateModule } from '@ngx-translate/core' changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ + ButtonComponent, CommonModule, + FormsModule, MatTooltipModule, MatRadioModule, - FormsModule, + NgIconComponent, TextInputComponent, TranslateModule, + UrlInputComponent, + ], + providers: [ + provideIcons({ iconoirCloudUpload }), + provideNgIconsConfig({ + size: '1.5em', + }), ], }) export class OnlineServiceResourceInputComponent implements OnChanges { @Input() service: Omit @Input() protocolHint?: string @Input() disabled? = false + @Output() urlChange: EventEmitter = new EventEmitter() + @Output() identifierSubmit: EventEmitter = new EventEmitter() selectedProtocol: ServiceProtocol @@ -78,4 +101,22 @@ export class OnlineServiceResourceInputComponent implements OnChanges { (option) => option.value === this.service.accessServiceProtocol )?.value ?? 'other' } + + handleUrlChange(url: string) { + if (!url) return + this.urlChange.emit(url) + } + + submitIdentifier(identifier: string) { + if (!identifier) return + this.identifierSubmit.emit(identifier) + } + + getIdentifierPlaceholder(): string { + const baseKey = + 'editor.record.form.field.onlineResource.edit.identifier.placeholder' + return this.service.accessServiceProtocol === 'wps' + ? `${baseKey}.wps` + : baseKey + } } diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html index dd83fc7362..8322aa8b59 100644 --- a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html @@ -42,7 +42,7 @@

class="w-full" [disabled]="true" [value]="onlineResource.url" - [showUploadButton]="false" + [showValidateButton]="false" [disabled]="disabled$ | async" > 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 index 3d54511b29..e5490d2733 100644 --- 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 @@ -23,13 +23,9 @@ - -
class="w-full" [disabled]="true" [value]="onlineResource.url" - [showUploadButton]="false" + [showValidateButton]="false" > 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 index d5ebd80cfd..86b12e3192 100644 --- 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 @@ -174,6 +174,16 @@ export class FormFieldOnlineResourcesComponent { ]) } + handleIdentifierSubmit(identifier: string) { + this.valueChange.emit([ + ...this.allResources, + { + ...this.newService, + url: new URL('https://TODO.gov'), + }, + ]) + } + handleServiceModify( oldService: DatasetServiceDistribution, newService: DatasetServiceDistribution diff --git a/libs/ui/inputs/src/lib/url-input/url-input.component.html b/libs/ui/inputs/src/lib/url-input/url-input.component.html index 923783154e..b8a48a39bf 100644 --- a/libs/ui/inputs/src/lib/url-input/url-input.component.html +++ b/libs/ui/inputs/src/lib/url-input/url-input.component.html @@ -21,12 +21,14 @@ - + + + diff --git a/libs/ui/inputs/src/lib/url-input/url-input.component.stories.ts b/libs/ui/inputs/src/lib/url-input/url-input.component.stories.ts index c19b4e7de5..1a676d4f9b 100644 --- a/libs/ui/inputs/src/lib/url-input/url-input.component.stories.ts +++ b/libs/ui/inputs/src/lib/url-input/url-input.component.stories.ts @@ -20,7 +20,7 @@ export const Primary: StoryObj = { value: 'http://aaa.org/bbb', placeholder: 'write a URL here', disabled: false, - showUploadButton: true, + showValidateButton: true, }, } @@ -46,12 +46,12 @@ export const WithoutUploadButton: StoryObj = { value: null, disabled: false, placeholder: 'https://mysite.org/file', - showUploadButton: false, + showValidateButton: false, }, render: (args) => ({ props: args, template: ` - `, }), diff --git a/libs/ui/inputs/src/lib/url-input/url-input.component.ts b/libs/ui/inputs/src/lib/url-input/url-input.component.ts index d725c4bc1b..65a2aeef63 100644 --- a/libs/ui/inputs/src/lib/url-input/url-input.component.ts +++ b/libs/ui/inputs/src/lib/url-input/url-input.component.ts @@ -45,7 +45,7 @@ export class UrlInputComponent { @Input() extraClass = '' @Input() placeholder = 'https://' @Input() disabled: boolean - @Input() showUploadButton = true + @Input() showValidateButton = true /** * This will emit null if the field is emptied diff --git a/translations/de.json b/translations/de.json index 910d1c886c..652ee67880 100644 --- a/translations/de.json +++ b/translations/de.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Ebenenname", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Prozessname", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Link zum Dienst", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "", diff --git a/translations/en.json b/translations/en.json index a133e09cc9..1fd456b951 100644 --- a/translations/en.json +++ b/translations/en.json @@ -226,6 +226,9 @@ "editor.record.form.field.onlineResource.dialogTitle": "Modify the dataset preview", "editor.record.form.field.onlineResource.edit.description": "Description", "editor.record.form.field.onlineResource.edit.protocol": "Protocol", + "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Layer name", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Process name", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Link to the service", "editor.record.form.field.onlineResource.edit.title": "Title", "editor.record.form.field.onlineResource.fileSize": "{sizeMB}MB", "editor.record.form.field.onlineResource.modify": "Modify", diff --git a/translations/es.json b/translations/es.json index c331eb2040..e13e78b190 100644 --- a/translations/es.json +++ b/translations/es.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Nombre de la capa", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nombre del proceso", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Enlace al servicio", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "", diff --git a/translations/fr.json b/translations/fr.json index 781cd7e099..b3a2734734 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -226,6 +226,9 @@ "editor.record.form.field.onlineResource.dialogTitle": "Modifier l'aperçu du jeu de données", "editor.record.form.field.onlineResource.edit.description": "Description", "editor.record.form.field.onlineResource.edit.protocol": "Protocole", + "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nom de la couche", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nom du processus", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Lier le service", "editor.record.form.field.onlineResource.edit.title": "Titre", "editor.record.form.field.onlineResource.fileSize": "{sizeMB} Mo", "editor.record.form.field.onlineResource.modify": "Modifier", diff --git a/translations/it.json b/translations/it.json index 26beec3f06..96f27ff851 100644 --- a/translations/it.json +++ b/translations/it.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Nome del livello", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nome del processo", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Collegamento al servizio", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "", diff --git a/translations/nl.json b/translations/nl.json index 428c012fa4..cc27530324 100644 --- a/translations/nl.json +++ b/translations/nl.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Laagnaam", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Procesnaam", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Link naar de dienst", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "", diff --git a/translations/pt.json b/translations/pt.json index c5ceccddac..4ebc167b7f 100644 --- a/translations/pt.json +++ b/translations/pt.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Nome da camada", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nome do processo", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Link para o serviço", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "", diff --git a/translations/sk.json b/translations/sk.json index 9081d8f0d8..7024b85a12 100644 --- a/translations/sk.json +++ b/translations/sk.json @@ -226,6 +226,9 @@ "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.identifier.placeholder": "Názov vrstvy", + "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Názov procesu", + "editor.record.form.field.onlineResource.edit.identifier.submit": "Odkaz na službu", "editor.record.form.field.onlineResource.edit.title": "", "editor.record.form.field.onlineResource.fileSize": "", "editor.record.form.field.onlineResource.modify": "",