From 72d5a8eed09e038f992a02b4defbdaeeba79f8d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr> Date: Wed, 25 Aug 2021 12:41:12 +0200 Subject: [PATCH] Custom label for Instance navbar (admin) --- .../documentation-form-group.component.html | 6 +++++- .../components/instance/instance-form.component.ts | 12 +++++++++++- .../instance/search-form-group.component.html | 14 +++++++++++--- .../instance/search-form-group.component.ts | 10 ++++++++++ client/src/app/instance/instance.component.ts | 6 +++--- client/src/app/metamodel/models/instance.model.ts | 3 +++ 6 files changed, 43 insertions(+), 8 deletions(-) diff --git a/client/src/app/admin/components/instance/documentation-form-group.component.html b/client/src/app/admin/components/instance/documentation-form-group.component.html index 43949bec..38086d74 100644 --- a/client/src/app/admin/components/instance/documentation-form-group.component.html +++ b/client/src/app/admin/components/instance/documentation-form-group.component.html @@ -1,8 +1,12 @@ <form [formGroup]="form" novalidate> <accordion-group heading="Documentation"> - <div class="custom-control custom-switch"> + <div class="custom-control custom-switch mb-2"> <input class="custom-control-input" type="checkbox" id="documentation_allowed" name="documentation_allowed" formControlName="documentation_allowed"> <label class="custom-control-label" for="documentation_allowed">Documentation allowed</label> </div> + <div class="form-group"> + <label for="documentation_label">Label</label> + <input type="text" class="form-control" id="documentation_label" formControlName="documentation_label"> + </div> </accordion-group> </form> \ No newline at end of file diff --git a/client/src/app/admin/components/instance/instance-form.component.ts b/client/src/app/admin/components/instance/instance-form.component.ts index 450692ba..8d440376 100644 --- a/client/src/app/admin/components/instance/instance-form.component.ts +++ b/client/src/app/admin/components/instance/instance-form.component.ts @@ -32,12 +32,15 @@ export class InstanceFormComponent implements OnInit { public searchFormGroup = new FormGroup({ search_by_criteria_allowed: new FormControl(true), + search_by_criteria_label: new FormControl({value: 'Search', disabled: true}), search_multiple_allowed: new FormControl(false), + search_multiple_label: new FormControl({value: 'Search multiple', disabled: true}), search_multiple_all_datasets_selected: new FormControl({value: false, disabled: true}) }); public documentationFormGroup = new FormGroup({ - documentation_allowed: new FormControl(false) + documentation_allowed: new FormControl(false), + documentation_label: new FormControl({value: 'Documentation', disabled: true}) }); public form = new FormGroup({ @@ -55,8 +58,15 @@ export class InstanceFormComponent implements OnInit { if (this.instance) { this.form.patchValue(this.instance); if (this.searchFormGroup.controls.search_multiple_allowed.value) { + this.searchFormGroup.controls.search_multiple_label.enable(); this.searchFormGroup.controls.search_multiple_all_datasets_selected.enable(); } + if (this.searchFormGroup.controls.search_by_criteria_allowed.value) { + this.searchFormGroup.controls.search_by_criteria_label.enable(); + } + if (this.documentationFormGroup.controls.documentation_allowed) { + this.documentationFormGroup.controls.documentation_label.enable(); + } } } diff --git a/client/src/app/admin/components/instance/search-form-group.component.html b/client/src/app/admin/components/instance/search-form-group.component.html index 4caf2ca7..1c12343c 100644 --- a/client/src/app/admin/components/instance/search-form-group.component.html +++ b/client/src/app/admin/components/instance/search-form-group.component.html @@ -1,13 +1,21 @@ <form [formGroup]="form" novalidate> <accordion-group heading="Search"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="search_by_criteria_allowed" name="search_by_criteria_allowed" formControlName="search_by_criteria_allowed"> + <div class="custom-control custom-switch mb-2"> + <input class="custom-control-input" type="checkbox" id="search_by_criteria_allowed" name="search_by_criteria_allowed" formControlName="search_by_criteria_allowed" (change)="checkDisableSearchByCriteriaAllowed()"> <label class="custom-control-label" for="search_by_criteria_allowed">Classic search allowed</label> </div> - <div class="custom-control custom-switch"> + <div class="form-group"> + <label for="search_by_criteria_label">Label</label> + <input type="text" class="form-control" id="search_by_criteria_label" formControlName="search_by_criteria_label"> + </div> + <div class="custom-control custom-switch mb-2"> <input class="custom-control-input" type="checkbox" id="search_multiple_allowed" name="search_multiple_allowed" formControlName="search_multiple_allowed" (change)="checkDisableAllDatasetsSelected()"> <label class="custom-control-label" for="search_multiple_allowed">Search multiple allowed</label> </div> + <div class="form-group"> + <label for="search_multiple_label">Label</label> + <input type="text" class="form-control" id="search_multiple_label" formControlName="search_multiple_label"> + </div> <div class="custom-control custom-switch"> <input class="custom-control-input" type="checkbox" diff --git a/client/src/app/admin/components/instance/search-form-group.component.ts b/client/src/app/admin/components/instance/search-form-group.component.ts index 3751aa37..4a96c1bf 100644 --- a/client/src/app/admin/components/instance/search-form-group.component.ts +++ b/client/src/app/admin/components/instance/search-form-group.component.ts @@ -17,10 +17,20 @@ import { FormGroup } from '@angular/forms'; export class SearchFormGroupComponent { @Input() form: FormGroup; + checkDisableSearchByCriteriaAllowed() { + if (this.form.controls.search_by_criteria_allowed.value) { + this.form.controls.search_by_criteria_label.enable(); + } else { + this.form.controls.search_by_criteria_label.disable(); + } + } + checkDisableAllDatasetsSelected() { if (this.form.controls.search_multiple_allowed.value) { + this.form.controls.search_multiple_label.enable(); this.form.controls.search_multiple_all_datasets_selected.enable(); } else { + this.form.controls.search_multiple_label.disable(); this.form.controls.search_multiple_all_datasets_selected.setValue(false); this.form.controls.search_multiple_all_datasets_selected.disable(); } diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts index b6f2875b..202dddf8 100644 --- a/client/src/app/instance/instance.component.ts +++ b/client/src/app/instance/instance.component.ts @@ -54,13 +54,13 @@ export class InstanceComponent implements OnInit, OnDestroy { Promise.resolve(null).then(() => this.store.dispatch(surveyActions.loadSurveyList())); this.instanceSubscription = this.instance.subscribe(instance => { if (instance.config.search.search_by_criteria_allowed) { - this.links.push({ label: 'Search', icon: 'fas fa-search', routerLink: 'search' }); + this.links.push({ label: instance.config.search.search_by_criteria_label, icon: 'fas fa-search', routerLink: 'search' }); } if (instance.config.search.search_multiple_allowed) { - this.links.push({ label: 'Search multiple', icon: 'fas fa-search-plus', routerLink: 'search-multiple' }); + this.links.push({ label: instance.config.search.search_multiple_label, icon: 'fas fa-search-plus', routerLink: 'search-multiple' }); } if (instance.config.documentation.documentation_allowed) { - this.links.push({ label: 'Documentation', icon: 'fas fa-question', routerLink: 'documentation' }); + this.links.push({ label: instance.config.documentation.documentation_label, icon: 'fas fa-question', routerLink: 'documentation' }); } if (instance.config.design.design_favicon !== '') { this.favIcon.href = `${this.config.apiUrl}/download-instance-file/${instance.name}/${instance.config.design.design_favicon}`; diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts index 6faeb2e7..8967807a 100644 --- a/client/src/app/metamodel/models/instance.model.ts +++ b/client/src/app/metamodel/models/instance.model.ts @@ -19,11 +19,14 @@ export interface Instance { }; search: { search_by_criteria_allowed: boolean; + search_by_criteria_label: string; search_multiple_allowed: boolean; + search_multiple_label: string; search_multiple_all_datasets_selected: boolean; }; documentation: { documentation_allowed: boolean; + documentation_label: string; }; }; nb_dataset_families: number; -- GitLab