Newer
Older
/**
* This file is part of Anis Client.
*
* @copyright Laboratoire d'Astrophysique de Marseille / CNRS
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';
import { UntypedFormGroup, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';
import { Instance } from 'src/app/metamodel/models';
import { FileInfo } from 'src/app/admin/store/models';
@Component({
selector: 'app-instance-form',
templateUrl: 'instance-form.component.html'
})
export class InstanceFormComponent implements OnInit {
@Input() instance: Instance;
@Input() filesIsLoading: boolean;
@Input() filesIsLoaded: boolean;
@Output() loadRootDirectory: EventEmitter<string> = new EventEmitter();
@Output() onSubmit: EventEmitter<Instance> = new EventEmitter();
footerLogosFormArray = new UntypedFormArray([]);
public form = new UntypedFormGroup({
name: new UntypedFormControl('', [Validators.required]),
label: new UntypedFormControl('', [Validators.required]),
description: new UntypedFormControl('', [Validators.required]),
scientific_manager: new UntypedFormControl('', [Validators.required]),
instrument: new UntypedFormControl('', [Validators.required]),
wavelength_domain: new UntypedFormControl('', [Validators.required]),
display: new UntypedFormControl('', [Validators.required]),
data_path: new UntypedFormControl(''),
files_path: new UntypedFormControl(''),
public: new UntypedFormControl(true, [Validators.required]),
portal_logo: new UntypedFormControl(''),
design_color: new UntypedFormControl('#7AC29A', [Validators.required]),
design_background_color: new UntypedFormControl('#FFFFFF', [Validators.required]),
design_logo: new UntypedFormControl(''),
design_favicon: new UntypedFormControl(''),
navbar_background_color: new UntypedFormControl('#F8F9FA'),
navbar_border_bottom_color: new UntypedFormControl('#DEE2E6'),
navbar_color_href: new UntypedFormControl('#000000'),
navbar_font_family: new UntypedFormControl('auto'),
navbar_sign_in_btn_color: new UntypedFormControl('#28A745'),
navbar_user_btn_color: new UntypedFormControl('#7AC29A'),
footer_background_color: new UntypedFormControl('#F8F9FA'),
footer_border_top_color: new UntypedFormControl('#DEE2E6'),
footer_text_color: new UntypedFormControl('#000000'),
footer_logos: this.footerLogosFormArray,
family_border_color: new UntypedFormControl('#DFDFDF'),
family_header_background_color: new UntypedFormControl('#F7F7F7'),
family_title_color: new UntypedFormControl('#007BFF'),
family_title_bold: new UntypedFormControl(false),
family_background_color: new UntypedFormControl('#FFFFFF'),
family_color: new UntypedFormControl('#212529'),
progress_bar_title: new UntypedFormControl('Dataset search'),
progress_bar_title_color: new UntypedFormControl('#000000'),
progress_bar_subtitle: new UntypedFormControl('Select a dataset, add criteria, select output columns and display the result.'),
progress_bar_subtitle_color: new UntypedFormControl('#6C757D'),
progress_bar_step_dataset_title: new UntypedFormControl('Dataset selection'),
progress_bar_step_criteria_title: new UntypedFormControl('Search criteria'),
progress_bar_step_output_title: new UntypedFormControl('Output columns'),
progress_bar_step_result_title: new UntypedFormControl('Result table'),
progress_bar_color: new UntypedFormControl('#E9ECEF'),
progress_bar_active_color: new UntypedFormControl('#7AC29A'),
progress_bar_circle_color: new UntypedFormControl('#FFFFFF'),
progress_bar_circle_icon_color: new UntypedFormControl('#CCCCCC'),
progress_bar_circle_icon_active_color: new UntypedFormControl('#FFFFFF'),
progress_bar_text_color: new UntypedFormControl('#91B2BF'),
result_header_background_color: new UntypedFormControl('#E9ECEF'),
result_header_text_color: new UntypedFormControl('#000000'),
result_header_btn_color: new UntypedFormControl('#007BFF'),
result_header_btn_hover_color: new UntypedFormControl('#0069D9'),
result_header_btn_text_color: new UntypedFormControl('#FFFFFF'),
result_datatable_bordered: new UntypedFormControl(true),
result_datatable_border_color: new UntypedFormControl('#DEE2E6'),
result_datatable_header_background_color: new UntypedFormControl('#FFFFFF'),
result_datatable_header_text_color: new UntypedFormControl('#000000'),
result_datatable_rows_background_color: new UntypedFormControl('#FFFFFF'),
result_datatable_rows_text_color: new UntypedFormControl('#000000'),
result_datatable_sorted_color: new UntypedFormControl('#C5C5C5'),
result_datatable_sorted_active_color: new UntypedFormControl('#000000'),
result_datatable_link_color: new UntypedFormControl('#007BFF'),
result_datatable_link_hover_color: new UntypedFormControl('#0056B3'),
result_datatable_rows_selected_color: new UntypedFormControl('#7AC29A'),
samp_enabled: new UntypedFormControl(true),
back_to_portal: new UntypedFormControl(true),
search_by_criteria_allowed: new UntypedFormControl(true),
search_by_criteria_label: new UntypedFormControl({value: 'Search', disabled: false}),
search_multiple_allowed: new UntypedFormControl(false),
search_multiple_label: new UntypedFormControl({value: 'Search multiple', disabled: true}),
search_multiple_all_datasets_selected: new UntypedFormControl({value: false, disabled: true}),
documentation_allowed: new UntypedFormControl(false),
documentation_label: new UntypedFormControl({value: 'Documentation', disabled: true})
ngOnInit() {
if (this.instance) {
this.form.patchValue(this.instance);
if (this.form.controls.search_multiple_allowed.value) {
this.form.controls.search_multiple_label.enable();
this.form.controls.search_multiple_all_datasets_selected.enable();
if (this.form.controls.search_by_criteria_allowed.value) {
this.form.controls.search_by_criteria_label.enable();
if (this.form.controls.documentation_allowed.value) {
this.form.controls.documentation_label.enable();
isDataPathEmpty() {
return this.form.controls.data_path.value == '';
isFilesPathEmpty() {
return this.form.controls.files_path.value == '';
}
onChangeFilesPath(path: string) {
this.loadRootDirectory.emit(`${this.form.controls.data_path.value}${path}`)
}
this.loadRootDirectory.emit(`${this.form.controls.data_path.value}${this.form.controls.files_path.value}${path}`);
return this.form.controls.home_component_config as UntypedFormGroup;
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
}
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();
}
}
checkDisableDocumentationAllowed() {
if (this.form.controls.documentation_allowed.value) {
this.form.controls.documentation_label.enable();
} else {
this.form.controls.documentation_label.disable();
}
}
getFooterLogoListByDisplay() {
return [...this.instance.footer_logos].sort((a, b) => a.display - b.display);
}
submit() {
if (this.instance) {
this.onSubmit.emit({
...this.instance,