From 990652d23d000ab0907ef9ca24c4f3e76f9f1d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr> Date: Wed, 16 Mar 2022 11:40:43 +0100 Subject: [PATCH] Delete config property from dataset entity --- .../components/instance-form.component.html | 262 ++++++------ .../cone-search-form-group.component.html | 57 --- .../cone-search-form-group.component.ts | 45 -- .../dataset/dataset-form.component.html | 114 ++++- .../dataset/dataset-form.component.ts | 162 +++++--- .../datatable-form-group.component.html | 16 - .../dataset/datatable-form-group.component.ts | 35 -- .../download-form-group.component.html | 28 -- .../dataset/download-form-group.component.ts | 44 -- .../dataset/image-form-group.component.html | 4 - .../dataset/image-form-group.component.ts | 20 - .../dataset/components/dataset/index.ts | 18 +- .../info-survey-form-group.component.html | 12 - .../info-survey-form-group.component.ts | 19 - .../dataset/samp-form-group.component.html | 12 - .../dataset/samp-form-group.component.ts | 32 -- .../server-link-form-group.component.html | 12 - .../server-link-form-group.component.ts | 32 -- .../dataset/summary-form-group.component.html | 12 - .../dataset/summary-form-group.component.ts | 32 -- .../dataset/dataset-card.component.html | 4 +- .../result/datatable-actions.component.html | 2 +- .../result/datatable-actions.component.ts | 3 +- .../result/datatable-tab.component.html | 4 +- .../result/datatable.component.html | 4 +- .../components/result/download.component.ts | 9 +- .../components/result/reminder.component.ts | 6 +- .../components/result/samp.component.ts | 6 +- .../result/url-display.component.ts | 6 +- .../src/app/metamodel/models/dataset.model.ts | 65 +-- .../metamodel/selectors/dataset.selector.ts | 2 +- conf-dev/create-db.sh | 10 +- server/public/index.php | 1 - server/src/Action/AdminFileExplorerAction.php | 11 +- server/src/Action/DatasetAction.php | 24 +- server/src/Action/DatasetListAction.php | 34 +- server/src/Entity/Dataset.php | 392 +++++++++++++++++- server/src/Handlers/LogErrorHandler.php | 2 +- 38 files changed, 829 insertions(+), 724 deletions(-) delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.ts delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.html delete mode 100644 client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.ts diff --git a/client/src/app/admin/instance/components/instance-form.component.html b/client/src/app/admin/instance/components/instance-form.component.html index bf91dd5e..50d0b6e9 100644 --- a/client/src/app/admin/instance/components/instance-form.component.html +++ b/client/src/app/admin/instance/components/instance-form.component.html @@ -1,130 +1,140 @@ <form [formGroup]="form" (ngSubmit)="submit()" novalidate> - <div class="form-group"> - <label for="name">Name</label> - <input type="text" class="form-control" id="name" name="name" formControlName="name"> - </div> - <div class="form-group"> - <label for="label">Label</label> - <input type="text" class="form-control" id="label" name="label" formControlName="label"> - </div> - <div class="form-group"> - <label for="description">Description</label> - <textarea class="form-control" rows="5" id="description" name="description" formControlName="description"></textarea> - </div> - <div class="form-group"> - <label for="display">Display</label> - <input type="number" class="form-control" id="display" name="display" formControlName="display"> - </div> - <app-data-path-form-control - [form]="form" - [rootDirectory]="rootDirectory" - [rootDirectoryIsLoading]="rootDirectoryIsLoading" - [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" - (loadRootDirectory)="loadRootDirectory.emit($event)"> - </app-data-path-form-control> - <app-file-select-form-control - [form]="form" - [disabled]="isDataPathEmpty()" - [controlName]="'portal_logo'" - [controlLabel]="'Portal logo'" - [rootDirectory]="rootDirectory" - [rootDirectoryIsLoading]="rootDirectoryIsLoading" - [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" - (loadRootDirectory)="loadRootDirectory.emit($event)"> - </app-file-select-form-control> - <div class="form-row"> - <div class="form-group col-md-6"> - <label for="design_color_picker">Instance color (picker)</label> - <input class="form-control" type="color" id="design_color_picker" [value]="form.value.design_color" formControlName="design_color"> - </div> - <div class="form-group col-md-6"> - <label for="design_color_input">Instance color (value)</label> - <input type="text" class="form-control" id="design_color_input" [value]="form.value.design_color" formControlName="design_color"> - </div> - </div> - <div class="form-row"> - <div class="form-group col-md-6"> - <label for="design_background_color_picker">Instance background color (picker)</label> - <input class="form-control" type="color" id="design_background_color_picker" [value]="form.value.design_background_color" formControlName="design_background_color"> - </div> - <div class="form-group col-md-6"> - <label for="design_background_color_input">Instance background color (value)</label> - <input type="text" class="form-control" id="design_background_color_input" [value]="form.value.design_background_color" formControlName="design_background_color"> - </div> - </div> - <app-file-select-form-control - [form]="form" - [disabled]="isDataPathEmpty()" - [controlName]="'design_logo'" - [controlLabel]="'Logo'" - [rootDirectory]="rootDirectory" - [rootDirectoryIsLoading]="rootDirectoryIsLoading" - [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" - (loadRootDirectory)="loadRootDirectory.emit($event)"> - </app-file-select-form-control> - <app-file-select-form-control - [form]="form" - [disabled]="isDataPathEmpty()" - [controlName]="'design_favicon'" - [controlLabel]="'Favicon'" - [rootDirectory]="rootDirectory" - [rootDirectoryIsLoading]="rootDirectoryIsLoading" - [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" - (loadRootDirectory)="loadRootDirectory.emit($event)"> - </app-file-select-form-control> - <div class="form-group"> - <label for="home_component">Component</label> - <select class="form-control" name="home_component" formControlName="home_component"> - <option value="WelcomeComponent">WelcomeComponent</option> - </select> - </div> - <div formGroupName="home_component_config"> - <div class="form-group"> - <label for="home_component_text">Text</label> - <textarea class="form-control" id="home_component_text" formControlName="home_component_text" rows="3"></textarea> - </div> - <app-file-select-form-control - [form]="getHomeConfigFormGroup()" - [controlName]="'home_component_logo'" - [controlLabel]="'Logo'" - [rootDirectory]="rootDirectory" - [rootDirectoryIsLoading]="rootDirectoryIsLoading" - [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" - (loadRootDirectory)="loadRootDirectory.emit($event)"> - </app-file-select-form-control> - </div> - <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="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" - id="search_multiple_all_datasets_selected" - name="search_multiple_all_datasets_selected" - formControlName="search_multiple_all_datasets_selected"> - <label class="custom-control-label" for="search_multiple_all_datasets_selected">All datasets with cone search enabled selected by default</label> - </div> - <div class="custom-control custom-switch mb-2"> - <input class="custom-control-input" type="checkbox" id="documentation_allowed" name="documentation_allowed" formControlName="documentation_allowed" (change)="checkDisableDocumentationAllowed()"> - <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 [isAnimated]="true"> + <accordion-group heading="General information" [isOpen]="true"> + <div class="form-group"> + <label for="name">Name</label> + <input type="text" class="form-control" id="name" name="name" formControlName="name"> + </div> + <div class="form-group"> + <label for="label">Label</label> + <input type="text" class="form-control" id="label" name="label" formControlName="label"> + </div> + <div class="form-group"> + <label for="description">Description</label> + <textarea class="form-control" rows="5" id="description" name="description" formControlName="description"></textarea> + </div> + <div class="form-group"> + <label for="display">Display</label> + <input type="number" class="form-control" id="display" name="display" formControlName="display"> + </div> + <app-data-path-form-control + [form]="form" + [rootDirectory]="rootDirectory" + [rootDirectoryIsLoading]="rootDirectoryIsLoading" + [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" + (loadRootDirectory)="loadRootDirectory.emit($event)"> + </app-data-path-form-control> + </accordion-group> + <accordion-group heading="Design" [isOpen]="true"> + <app-file-select-form-control + [form]="form" + [disabled]="isDataPathEmpty()" + [controlName]="'portal_logo'" + [controlLabel]="'Portal logo'" + [rootDirectory]="rootDirectory" + [rootDirectoryIsLoading]="rootDirectoryIsLoading" + [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" + (loadRootDirectory)="loadRootDirectory.emit($event)"> + </app-file-select-form-control> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="design_color_picker">Instance color (picker)</label> + <input class="form-control" type="color" id="design_color_picker" [value]="form.value.design_color" formControlName="design_color"> + </div> + <div class="form-group col-md-6"> + <label for="design_color_input">Instance color (value)</label> + <input type="text" class="form-control" id="design_color_input" [value]="form.value.design_color" formControlName="design_color"> + </div> + </div> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="design_background_color_picker">Instance background color (picker)</label> + <input class="form-control" type="color" id="design_background_color_picker" [value]="form.value.design_background_color" formControlName="design_background_color"> + </div> + <div class="form-group col-md-6"> + <label for="design_background_color_input">Instance background color (value)</label> + <input type="text" class="form-control" id="design_background_color_input" [value]="form.value.design_background_color" formControlName="design_background_color"> + </div> + </div> + <app-file-select-form-control + [form]="form" + [disabled]="isDataPathEmpty()" + [controlName]="'design_logo'" + [controlLabel]="'Logo'" + [rootDirectory]="rootDirectory" + [rootDirectoryIsLoading]="rootDirectoryIsLoading" + [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" + (loadRootDirectory)="loadRootDirectory.emit($event)"> + </app-file-select-form-control> + <app-file-select-form-control + [form]="form" + [disabled]="isDataPathEmpty()" + [controlName]="'design_favicon'" + [controlLabel]="'Favicon'" + [rootDirectory]="rootDirectory" + [rootDirectoryIsLoading]="rootDirectoryIsLoading" + [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" + (loadRootDirectory)="loadRootDirectory.emit($event)"> + </app-file-select-form-control> + </accordion-group> + <accordion-group heading="Home page" [isOpen]="true"> + <div class="form-group"> + <label for="home_component">Component</label> + <select class="form-control" name="home_component" formControlName="home_component"> + <option value="WelcomeComponent">WelcomeComponent</option> + </select> + </div> + <div formGroupName="home_component_config"> + <div class="form-group"> + <label for="home_component_text">Text</label> + <textarea class="form-control" id="home_component_text" formControlName="home_component_text" rows="3"></textarea> + </div> + <app-file-select-form-control + [form]="getHomeConfigFormGroup()" + [controlName]="'home_component_logo'" + [controlLabel]="'Logo'" + [rootDirectory]="rootDirectory" + [rootDirectoryIsLoading]="rootDirectoryIsLoading" + [rootDirectoryIsLoaded]="rootDirectoryIsLoaded" + (loadRootDirectory)="loadRootDirectory.emit($event)"> + </app-file-select-form-control> + </div> + </accordion-group> + <accordion-group heading="Functionalities" [isOpen]="true"> + <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="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" + id="search_multiple_all_datasets_selected" + name="search_multiple_all_datasets_selected" + formControlName="search_multiple_all_datasets_selected"> + <label class="custom-control-label" for="search_multiple_all_datasets_selected">All datasets with cone search enabled selected by default</label> + </div> + <div class="custom-control custom-switch mb-2"> + <input class="custom-control-input" type="checkbox" id="documentation_allowed" name="documentation_allowed" formControlName="documentation_allowed" (change)="checkDisableDocumentationAllowed()"> + <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> + </accordion> <div class="form-group pt-4"> <ng-content></ng-content> </div> diff --git a/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.html deleted file mode 100644 index 7ebd5320..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.html +++ /dev/null @@ -1,57 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Cone-search panel" [isDisabled]="isDisabled"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="cone_search_enabled" name="cone_search_enabled" formControlName="cone_search_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="cone_search_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="cone_search_opened" name="cone_search_opened" formControlName="cone_search_opened"> - <label class="custom-control-label" for="cone_search_opened">Opened</label> - </div> - <div class="form-group"> - <div class="form-row"> - <div class="col-md-6"> - <label for="cone_search_column_ra">Column RA</label> - <select class="form-control" id="cone_search_column_ra" name="cone_search_column_ra" formControlName="cone_search_column_ra"> - <option *ngFor="let attribute of attributeList" [ngValue]="attribute.id">{{ attribute.form_label }}</option> - </select> - </div> - <div class="col-md-6"> - <label for="cone_search_column_dec">Column DEC</label> - <select class="form-control" id="cone_search_column_dec" name="cone_search_column_dec" formControlName="cone_search_column_dec"> - <option *ngFor="let attribute of attributeList" [ngValue]="attribute.id">{{ attribute.form_label }}</option> - </select> - </div> - </div> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="cone_search_plot_enabled" name="cone_search_plot_enabled" formControlName="cone_search_plot_enabled"> - <label class="custom-control-label" for="cone_search_plot_enabled">Activate plot</label> - </div> - <div *ngIf="form.controls.cone_search_plot_enabled.value" class="mt-2 table-responsive"> - <table class="table" aria-describedby="cone-search configuration"> - <thead> - <tr> - <th scope="col">Name</th> - <th scope="col">Enabled</th> - <th scope="col">Display</th> - </tr> - </thead> - <tbody> - <tr> - <td class="align-middle">SDSS (DR16)</td> - <td class="align-middle"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="cone_search_sdss_enabled" name="cone_search_sdss_enabled" formControlName="cone_search_sdss_enabled"> - <label class="custom-control-label" for="cone_search_sdss_enabled"></label> - </div> - </td> - <td class="align-middle"> - <input type="number" class="form-control" value="10" id="cone_search_sdss_display" name="cone_search_sdss_display" formControlName="cone_search_sdss_display"> - </td> - </tr> - </tbody> - </table> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.ts deleted file mode 100644 index 8aed004a..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/cone-search-form-group.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -import { Attribute } from 'src/app/metamodel/models'; - -@Component({ - selector: 'app-cone-search-form-group', - templateUrl: 'cone-search-form-group.component.html' -}) -export class ConeSearchFormGroupComponent implements OnInit { - @Input() form: FormGroup; - @Input() isDisabled: boolean; - @Input() attributeList: Attribute[]; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.cone_search_enabled.value) { - this.form.controls.cone_search_opened.enable(); - this.form.controls.cone_search_column_ra.enable(); - this.form.controls.cone_search_column_dec.enable(); - this.form.controls.cone_search_plot_enabled.enable(); - this.form.controls.cone_search_sdss_enabled.enable(); - this.form.controls.cone_search_sdss_display.enable(); - } else { - this.form.controls.cone_search_opened.setValue(false); - this.form.controls.cone_search_opened.disable(); - this.form.controls.cone_search_column_ra.disable(); - this.form.controls.cone_search_column_dec.disable(); - this.form.controls.cone_search_plot_enabled.setValue(false); - this.form.controls.cone_search_plot_enabled.disable(); - } - } -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.html b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.html index 4a268c6c..082327ae 100644 --- a/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.html +++ b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.html @@ -60,14 +60,112 @@ <label class="custom-control-label" for="private"><span class="fas fa-lock"></span> Private</label> </div> </accordion-group> - <app-info-survey-form-group [form]="infoSurveyFormGroup"></app-info-survey-form-group> - <app-image-form-group [form]="imageFormGroup" [isDisabled]="isNewDataset"></app-image-form-group> - <app-cone-search-form-group [form]="coneSearchFormGroup" [isDisabled]="isNewDataset" [attributeList]="attributeList"></app-cone-search-form-group> - <app-download-form-group [form]="downloadFormGroup"></app-download-form-group> - <app-summary-form-group [form]="summaryFormGroup"></app-summary-form-group> - <app-server-link-form-group [form]="serverlinkFormGroup"></app-server-link-form-group> - <app-samp-form-group [form]="sampFormGroup"></app-samp-form-group> - <app-datatable-form-group [form]="datatableFormGroup"></app-datatable-form-group> + <accordion-group heading="Info survey" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="info_survey_enabled" name="info_survey_enabled" formControlName="info_survey_enabled" (change)="checkInfoSurveyDisableOpened()"> + <label class="custom-control-label" for="info_survey_enabled">Enabled</label> + </div> + <div class="form-group"> + <label for="info_survey_label">Label</label> + <input type="text" class="form-control" id="info_survey_label" name="info_survey_label" formControlName="info_survey_label"> + </div> + </accordion-group> + <accordion-group heading="Cone-search" [isOpen]="!isNewDataset" [isDisabled]="isNewDataset"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="cone_search_enabled" name="cone_search_enabled" formControlName="cone_search_enabled" (change)="checkConeSearchDisableOpened()"> + <label class="custom-control-label" for="cone_search_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="cone_search_opened" name="cone_search_opened" formControlName="cone_search_opened"> + <label class="custom-control-label" for="cone_search_opened">Opened</label> + </div> + <div class="form-group"> + <div class="form-row"> + <div class="col-md-6"> + <label for="cone_search_column_ra">Column RA</label> + <select class="form-control" id="cone_search_column_ra" name="cone_search_column_ra" formControlName="cone_search_column_ra"> + <option *ngFor="let attribute of attributeList" [ngValue]="attribute.id">{{ attribute.form_label }}</option> + </select> + </div> + <div class="col-md-6"> + <label for="cone_search_column_dec">Column DEC</label> + <select class="form-control" id="cone_search_column_dec" name="cone_search_column_dec" formControlName="cone_search_column_dec"> + <option *ngFor="let attribute of attributeList" [ngValue]="attribute.id">{{ attribute.form_label }}</option> + </select> + </div> + </div> + </div> + </accordion-group> + <accordion-group heading="Download" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_enabled" name="download_enabled" formControlName="download_enabled" (change)="checkDownloadDisableOpened()"> + <label class="custom-control-label" for="download_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_opened" name="download_opened" formControlName="download_opened"> + <label class="custom-control-label" for="download_opened">Opened</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_csv" name="download_csv" formControlName="download_csv"> + <label class="custom-control-label" for="download_csv">Display download results button in CSV format</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_ascii" name="download_ascii" formControlName="download_ascii"> + <label class="custom-control-label" for="download_ascii">Display download results button in ASCII format</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_vo" name="download_vo" formControlName="download_vo"> + <label class="custom-control-label" for="download_vo">Display download results button in VO format</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="download_archive" name="download_archive" formControlName="download_archive"> + <label class="custom-control-label" for="download_archive">Display download results archive button</label> + </div> + </accordion-group> + <accordion-group heading="Summary" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="summary_enabled" name="summary_enabled" formControlName="summary_enabled" (change)="checkSummaryDisableOpened()"> + <label class="custom-control-label" for="summary_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="summary_opened" name="summary_opened" formControlName="summary_opened"> + <label class="custom-control-label" for="summary_opened">Opened</label> + </div> + </accordion-group> + <accordion-group heading="Server link" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="server_link_enabled" name="server_link_enabled" formControlName="server_link_enabled" (change)="checkServerLinkDisableOpened()"> + <label class="custom-control-label" for="server_link_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="server_link_opened" name="server_link_opened" formControlName="server_link_opened"> + <label class="custom-control-label" for="server_link_opened">Opened</label> + </div> + </accordion-group> + <accordion-group heading="Samp" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="samp_enabled" name="samp_enabled" formControlName="samp_enabled" (change)="checkSampDisablOpened()"> + <label class="custom-control-label" for="samp_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="samp_opened" name="samp_opened" formControlName="samp_opened"> + <label class="custom-control-label" for="samp_opened">Opened</label> + </div> + </accordion-group> + <accordion-group heading="Datatable" [isOpen]="true"> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="datatable_enabled" name="datatable_enabled" formControlName="datatable_enabled" (change)="checkDatatableDisablOpened()"> + <label class="custom-control-label" for="datatable_enabled">Enabled</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="datatable_opened" name="datatable_opened" formControlName="datatable_opened"> + <label class="custom-control-label" for="datatable_opened">Open the results datatable accordion</label> + </div> + <div class="custom-control custom-switch"> + <input class="custom-control-input" type="checkbox" id="datatable_selectable_rows" name="datatable_selectable_rows" formControlName="datatable_selectable_rows"> + <label class="custom-control-label" for="datatable_selectable_rows">Datatable rows selectable</label> + </div> + </accordion-group> </accordion> <div class="form-group mt-3"> <ng-content></ng-content> diff --git a/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.ts b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.ts index de141e1f..9961700e 100644 --- a/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.ts +++ b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.ts @@ -35,75 +35,37 @@ export class DatasetFormComponent implements OnInit, OnChanges { public isNewDataset = true; - public infoSurveyFormGroup = new FormGroup({ - survey_enabled: new FormControl(false), - survey_label: new FormControl('More about this survey', [Validators.required]) - }); - - public imageFormGroup = new FormGroup({ - - }); - - public coneSearchFormGroup = new FormGroup({ + public form = new FormGroup({ + name: new FormControl('', [Validators.required]), + label: new FormControl('', [Validators.required]), + survey_name: new FormControl('', [Validators.required]), + table_ref: new FormControl('', [Validators.required]), + id_dataset_family: new FormControl('', [Validators.required]), + description: new FormControl('', [Validators.required]), + data_path: new FormControl(''), + display: new FormControl('', [Validators.required]), + info_survey_enabled: new FormControl(false), + info_survey_label: new FormControl('More about this survey', [Validators.required]), cone_search_enabled: new FormControl(false), cone_search_opened: new FormControl({value: false, disabled: true}), cone_search_column_ra: new FormControl({value: false, disabled: true}), cone_search_column_dec: new FormControl({value: false, disabled: true}), - cone_search_plot_enabled: new FormControl({value: false, disabled: true}), - cone_search_sdss_enabled: new FormControl({value: false, disabled: true}), - cone_search_sdss_display: new FormControl({value: false, disabled: true}), - cone_search_background: new FormControl({value: [], disabled: true}) - }); - - public downloadFormGroup = new FormGroup({ download_enabled: new FormControl(true), download_opened: new FormControl(false), download_csv: new FormControl(true), download_ascii: new FormControl(true), download_vo: new FormControl(false), - download_archive: new FormControl(false) - }); - - public summaryFormGroup = new FormGroup({ + download_archive: new FormControl(false), summary_enabled: new FormControl(false), - summary_opened: new FormControl({value: false, disabled: true}) - }); - - public serverlinkFormGroup = new FormGroup({ + summary_opened: new FormControl({value: false, disabled: true}), server_link_enabled: new FormControl(false), - server_link_opened: new FormControl({value: false, disabled: true}) - }); - - public sampFormGroup = new FormGroup({ + server_link_opened: new FormControl({value: false, disabled: true}), samp_enabled: new FormControl(false), - samp_opened: new FormControl({value: false, disabled: true}) - }); - - public datatableFormGroup = new FormGroup({ + samp_opened: new FormControl({value: false, disabled: true}), datatable_enabled: new FormControl(true), datatable_opened: new FormControl(true), - datatable_selectable_rows: new FormControl(false) - }); - - public form = new FormGroup({ - name: new FormControl('', [Validators.required]), - label: new FormControl('', [Validators.required]), - survey_name: new FormControl('', [Validators.required]), - table_ref: new FormControl('', [Validators.required]), - id_dataset_family: new FormControl('', [Validators.required]), - description: new FormControl('', [Validators.required]), - data_path: new FormControl(''), - display: new FormControl('', [Validators.required]), - public: new FormControl('', [Validators.required]), - config: new FormGroup({ - survey: this.infoSurveyFormGroup, - cone_search: this.coneSearchFormGroup, - download: this.downloadFormGroup, - summary: this.summaryFormGroup, - server_link: this.serverlinkFormGroup, - samp: this.sampFormGroup, - datatable: this.datatableFormGroup - }) + datatable_selectable_rows: new FormControl(false), + public: new FormControl('', [Validators.required]) }); ngOnInit() { @@ -115,6 +77,14 @@ export class DatasetFormComponent implements OnInit, OnChanges { if (this.idDatasetFamily) { this.form.controls.id_dataset_family.setValue(this.idDatasetFamily); } + + this.checkInfoSurveyDisableOpened(); + this.checkConeSearchDisableOpened(); + this.checkDownloadDisableOpened(); + this.checkSummaryDisableOpened(); + this.checkServerLinkDisableOpened(); + this.checkSampDisablOpened(); + this.checkDatatableDisablOpened(); } ngOnChanges(changes: SimpleChanges) { @@ -148,4 +118,86 @@ export class DatasetFormComponent implements OnInit, OnChanges { onChangeDataPath(path: string) { this.loadRootDirectory.emit(`${this.instance.data_path}${path}`); } + + checkInfoSurveyDisableOpened() { + if (this.form.controls.info_survey_enabled.value) { + this.form.controls.info_survey_label.enable(); + } else { + this.form.controls.info_survey_enabled.setValue(false); + this.form.controls.info_survey_label.disable(); + } + } + + checkConeSearchDisableOpened() { + if (this.form.controls.cone_search_enabled.value) { + this.form.controls.cone_search_opened.enable(); + this.form.controls.cone_search_column_ra.enable(); + this.form.controls.cone_search_column_dec.enable(); + } else { + this.form.controls.cone_search_opened.setValue(false); + this.form.controls.cone_search_opened.disable(); + this.form.controls.cone_search_column_ra.disable(); + this.form.controls.cone_search_column_dec.disable(); + } + } + + checkDownloadDisableOpened() { + if (this.form.controls.download_enabled.value) { + this.form.controls.download_opened.enable(); + this.form.controls.download_csv.enable(); + this.form.controls.download_ascii.enable(); + this.form.controls.download_vo.enable(); + this.form.controls.download_archive.enable(); + } else { + this.form.controls.download_opened.setValue(false); + this.form.controls.download_opened.disable(); + this.form.controls.download_csv.setValue(false); + this.form.controls.download_csv.disable(); + this.form.controls.download_ascii.setValue(false); + this.form.controls.download_ascii.disable(); + this.form.controls.download_vo.setValue(false); + this.form.controls.download_vo.disable(); + this.form.controls.download_archive.setValue(false); + this.form.controls.download_archive.disable(); + } + } + + checkSummaryDisableOpened() { + if (this.form.controls.summary_enabled.value) { + this.form.controls.summary_opened.enable(); + } else { + this.form.controls.summary_opened.setValue(false); + this.form.controls.summary_opened.disable(); + } + } + + checkServerLinkDisableOpened() { + if (this.form.controls.server_link_enabled.value) { + this.form.controls.server_link_opened.enable(); + } else { + this.form.controls.server_link_opened.setValue(false); + this.form.controls.server_link_opened.disable(); + } + } + + checkSampDisablOpened() { + if (this.form.controls.samp_enabled.value) { + this.form.controls.samp_opened.enable(); + } else { + this.form.controls.samp_opened.setValue(false); + this.form.controls.samp_opened.disable(); + } + } + + checkDatatableDisablOpened() { + if (this.form.controls.datatable_enabled.value) { + this.form.controls.datatable_opened.enable(); + this.form.controls.datatable_selectable_rows.enable(); + } else { + this.form.controls.datatable_opened.setValue(false); + this.form.controls.datatable_opened.disable(); + this.form.controls.datatable_selectable_rows.setValue(false); + this.form.controls.datatable_selectable_rows.disable(); + } + } } diff --git a/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.html deleted file mode 100644 index 8b2e1b6f..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.html +++ /dev/null @@ -1,16 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Datatable panel"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="datatable_enabled" name="datatable_enabled" formControlName="datatable_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="datatable_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="datatable_opened" name="datatable_opened" formControlName="datatable_opened"> - <label class="custom-control-label" for="datatable_opened">Open the results datatable accordion</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="datatable_selectable_rows" name="datatable_selectable_rows" formControlName="datatable_selectable_rows"> - <label class="custom-control-label" for="datatable_selectable_rows">Datatable rows selectable</label> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.ts deleted file mode 100644 index 7edf8c2f..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/datatable-form-group.component.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-datatable-form-group', - templateUrl: 'datatable-form-group.component.html' -}) -export class DatatableFormGroupComponent implements OnInit { - @Input() form: FormGroup; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.datatable_enabled.value) { - this.form.controls.datatable_opened.enable(); - this.form.controls.datatable_selectable_rows.enable(); - } else { - this.form.controls.datatable_opened.setValue(false); - this.form.controls.datatable_opened.disable(); - this.form.controls.datatable_selectable_rows.setValue(false); - this.form.controls.datatable_selectable_rows.disable(); - } - } -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.html deleted file mode 100644 index 39d3b05c..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.html +++ /dev/null @@ -1,28 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Download panel"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_enabled" name="download_enabled" formControlName="download_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="download_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_opened" name="download_opened" formControlName="download_opened"> - <label class="custom-control-label" for="download_opened">Opened</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_csv" name="download_csv" formControlName="download_csv"> - <label class="custom-control-label" for="download_csv">Display download results button in CSV format</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_ascii" name="download_ascii" formControlName="download_ascii"> - <label class="custom-control-label" for="download_ascii">Display download results button in ASCII format</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_vo" name="download_vo" formControlName="download_vo"> - <label class="custom-control-label" for="download_vo">Display download results button in VO format</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="download_archive" name="download_archive" formControlName="download_archive"> - <label class="custom-control-label" for="download_archive">Display download results archive button</label> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.ts deleted file mode 100644 index 315de5ad..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/download-form-group.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-download-form-group', - templateUrl: 'download-form-group.component.html' -}) -export class DownloadFormGroupComponent implements OnInit { - @Input() form: FormGroup; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.download_enabled.value) { - this.form.controls.download_opened.enable(); - this.form.controls.download_csv.enable(); - this.form.controls.download_ascii.enable(); - this.form.controls.download_vo.enable(); - this.form.controls.download_archive.enable(); - } else { - this.form.controls.download_opened.setValue(false); - this.form.controls.download_opened.disable(); - this.form.controls.download_csv.setValue(false); - this.form.controls.download_csv.disable(); - this.form.controls.download_ascii.setValue(false); - this.form.controls.download_ascii.disable(); - this.form.controls.download_vo.setValue(false); - this.form.controls.download_vo.disable(); - this.form.controls.download_archive.setValue(false); - this.form.controls.download_archive.disable(); - } - } -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.html deleted file mode 100644 index 1903dda8..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.html +++ /dev/null @@ -1,4 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group [isDisabled]="isDisabled" heading="Images configuration"> - </accordion-group> -</form> \ No newline at end of file diff --git a/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.ts deleted file mode 100644 index ec22a4cf..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/image-form-group.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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 } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-image-form-group', - templateUrl: 'image-form-group.component.html' -}) -export class ImageFormGroupComponent { - @Input() form: FormGroup; - @Input() isDisabled: boolean; -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/index.ts b/client/src/app/admin/instance/dataset/components/dataset/index.ts index aad69881..a877b8c2 100644 --- a/client/src/app/admin/instance/dataset/components/dataset/index.ts +++ b/client/src/app/admin/instance/dataset/components/dataset/index.ts @@ -9,24 +9,8 @@ import { DatasetCardComponent } from './dataset-card.component'; import { DatasetFormComponent } from './dataset-form.component'; -import { InfoSurveyFormGroupComponent } from './info-survey-form-group.component'; -import { ImageFormGroupComponent } from './image-form-group.component'; -import { ConeSearchFormGroupComponent } from './cone-search-form-group.component'; -import { DownloadFormGroupComponent } from './download-form-group.component'; -import { SummaryFormGroupComponent } from './summary-form-group.component'; -import { ServerLinkFormGroupComponent } from './server-link-form-group.component'; -import { SampFormGroupComponent } from './samp-form-group.component'; -import { DatatableFormGroupComponent } from './datatable-form-group.component'; export const datasetComponents = [ DatasetCardComponent, - DatasetFormComponent, - InfoSurveyFormGroupComponent, - ImageFormGroupComponent, - ConeSearchFormGroupComponent, - DownloadFormGroupComponent, - SummaryFormGroupComponent, - ServerLinkFormGroupComponent, - SampFormGroupComponent, - DatatableFormGroupComponent + DatasetFormComponent ]; diff --git a/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.html deleted file mode 100644 index df4f4f61..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.html +++ /dev/null @@ -1,12 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Info survey"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="survey_enabled" name="survey_enabled" formControlName="survey_enabled"> - <label class="custom-control-label" for="survey_enabled">Enabled</label> - </div> - <div class="form-group"> - <label for="survey_label">Label</label> - <input type="text" class="form-control" id="survey_label" name="survey_label" formControlName="survey_label"> - </div> - </accordion-group> -</form> \ No newline at end of file diff --git a/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.ts deleted file mode 100644 index 9e2ae468..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/info-survey-form-group.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * 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 } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-info-survey-form-group', - templateUrl: 'info-survey-form-group.component.html' -}) -export class InfoSurveyFormGroupComponent { - @Input() form: FormGroup; -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.html deleted file mode 100644 index 04b446c6..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.html +++ /dev/null @@ -1,12 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="SAMP panel"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="samp_enabled" name="samp_enabled" formControlName="samp_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="samp_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="samp_opened" name="samp_opened" formControlName="samp_opened"> - <label class="custom-control-label" for="samp_opened">Opened</label> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.ts deleted file mode 100644 index b24dc967..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/samp-form-group.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-samp-form-group', - templateUrl: 'samp-form-group.component.html' -}) -export class SampFormGroupComponent implements OnInit { - @Input() form: FormGroup; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.samp_enabled.value) { - this.form.controls.samp_opened.enable(); - } else { - this.form.controls.samp_opened.setValue(false); - this.form.controls.samp_opened.disable(); - } - } -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.html deleted file mode 100644 index ea4fad19..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.html +++ /dev/null @@ -1,12 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Server link panel"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="server_link_enabled" name="server_link_enabled" formControlName="server_link_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="server_link_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="server_link_opened" name="server_link_opened" formControlName="server_link_opened"> - <label class="custom-control-label" for="server_link_opened">Opened</label> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.ts deleted file mode 100644 index d20d9f17..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/server-link-form-group.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-server-link-form-group', - templateUrl: 'server-link-form-group.component.html' -}) -export class ServerLinkFormGroupComponent implements OnInit { - @Input() form: FormGroup; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.server_link_enabled.value) { - this.form.controls.server_link_opened.enable(); - } else { - this.form.controls.server_link_opened.setValue(false); - this.form.controls.server_link_opened.disable(); - } - } -} diff --git a/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.html b/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.html deleted file mode 100644 index 0161b382..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.html +++ /dev/null @@ -1,12 +0,0 @@ -<form [formGroup]="form" novalidate> - <accordion-group heading="Summary panel"> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="summary_enabled" name="summary_enabled" formControlName="summary_enabled" (change)="checkDisablOpened()"> - <label class="custom-control-label" for="summary_enabled">Enabled</label> - </div> - <div class="custom-control custom-switch"> - <input class="custom-control-input" type="checkbox" id="summary_opened" name="summary_opened" formControlName="summary_opened"> - <label class="custom-control-label" for="summary_opened">Opened</label> - </div> - </accordion-group> -</form> diff --git a/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.ts b/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.ts deleted file mode 100644 index cd43f4dc..00000000 --- a/client/src/app/admin/instance/dataset/components/dataset/summary-form-group.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; - -@Component({ - selector: 'app-summary-form-group', - templateUrl: 'summary-form-group.component.html' -}) -export class SummaryFormGroupComponent implements OnInit { - @Input() form: FormGroup; - - ngOnInit() { - this.checkDisablOpened(); - } - - checkDisablOpened() { - if (this.form.controls.summary_enabled.value) { - this.form.controls.summary_opened.enable(); - } else { - this.form.controls.summary_opened.setValue(false); - this.form.controls.summary_opened.disable(); - } - } -} diff --git a/client/src/app/instance/search/components/dataset/dataset-card.component.html b/client/src/app/instance/search/components/dataset/dataset-card.component.html index 07daf796..91e9561b 100644 --- a/client/src/app/instance/search/components/dataset/dataset-card.component.html +++ b/client/src/app/instance/search/components/dataset/dataset-card.component.html @@ -10,7 +10,7 @@ <div class="row"> <p class="my-3">{{ dataset.description }}</p> </div> - <div *ngIf="dataset.config.survey.survey_enabled" class="row"> + <div *ngIf="dataset.info_survey_enabled" class="row"> <button class="btn btn-link p-0" popover="{{ survey.description }}" popoverTitle="{{ survey.label }}" @@ -18,7 +18,7 @@ [outsideClick]="true" triggers="mouseenter:mouseleave"> <small> - {{ dataset.config.survey.survey_label }} <span class="fas fa-question-circle"></span> + {{ dataset.info_survey_label }} <span class="fas fa-question-circle"></span> </small> </button> </div> diff --git a/client/src/app/instance/search/components/result/datatable-actions.component.html b/client/src/app/instance/search/components/result/datatable-actions.component.html index 38e119df..a9a9a6e3 100644 --- a/client/src/app/instance/search/components/result/datatable-actions.component.html +++ b/client/src/app/instance/search/components/result/datatable-actions.component.html @@ -1,4 +1,4 @@ -<div *ngIf="getDataset().config.datatable.datatable_selectable_rows" class="btn-group mb-2" dropdown [isDisabled]="selectedData.length < 1"> +<div *ngIf="getDataset().datatable_selectable_rows" class="btn-group mb-2" dropdown [isDisabled]="selectedData.length < 1"> <button id="button-basic" dropdownToggle type="button" class="btn btn-primary dropdown-toggle" aria-controls="dropdown-basic"> Actions <span class="caret"></span> </button> diff --git a/client/src/app/instance/search/components/result/datatable-actions.component.ts b/client/src/app/instance/search/components/result/datatable-actions.component.ts index 73f55fd8..8b3b7ef2 100644 --- a/client/src/app/instance/search/components/result/datatable-actions.component.ts +++ b/client/src/app/instance/search/components/result/datatable-actions.component.ts @@ -29,8 +29,7 @@ export class DatatableActionsComponent { * @return boolean */ getConfigDownloadResultFormat(format: string): boolean { - const dataset = this.getDataset(); - return dataset.config.download[format]; + return this.getDataset()[format]; } getDataset() { diff --git a/client/src/app/instance/search/components/result/datatable-tab.component.html b/client/src/app/instance/search/components/result/datatable-tab.component.html index 3a9773c0..c40a535f 100644 --- a/client/src/app/instance/search/components/result/datatable-tab.component.html +++ b/client/src/app/instance/search/components/result/datatable-tab.component.html @@ -1,5 +1,5 @@ -<accordion *ngIf="(datasetList | datasetByName:datasetSelected).config.datatable.datatable_enabled" [isAnimated]="true"> - <accordion-group #ag [isOpen]="(datasetList | datasetByName:datasetSelected).config.datatable.datatable_opened" [panelClass]="'custom-accordion'" class="my-2"> +<accordion *ngIf="(datasetList | datasetByName:datasetSelected).datatable_enabled" [isAnimated]="true"> + <accordion-group #ag [isOpen]="(datasetList | datasetByName:datasetSelected).datatable_opened" [panelClass]="'custom-accordion'" class="my-2"> <button class="btn btn-link btn-block clearfix" accordion-heading> <span class="pull-left float-left"> Display result details diff --git a/client/src/app/instance/search/components/result/datatable.component.html b/client/src/app/instance/search/components/result/datatable.component.html index 587d19ee..6fac9c53 100644 --- a/client/src/app/instance/search/components/result/datatable.component.html +++ b/client/src/app/instance/search/components/result/datatable.component.html @@ -4,7 +4,7 @@ <table class="table table-bordered table-hover" aria-describedby="List of results"> <thead> <tr> - <th *ngIf="dataset.config.datatable.datatable_selectable_rows" scope="col">#</th> + <th *ngIf="dataset.datatable_selectable_rows" scope="col">#</th> <th *ngFor="let attribute of getOutputList()" scope="col" class="clickable" (click)="sort(attribute.id)"> {{ attribute.label }} <span *ngIf="attribute.id === sortedCol" class="pl-2"> @@ -28,7 +28,7 @@ </thead> <tbody> <tr *ngFor="let datum of data"> - <td *ngIf="dataset.config.datatable.datatable_selectable_rows" class="data-selected" + <td *ngIf="dataset.datatable_selectable_rows" class="data-selected" (click)="toggleSelection(datum)"> <button class="btn btn-block text-left p-0 m-0"> <span *ngIf="!isSelected(datum)"> diff --git a/client/src/app/instance/search/components/result/download.component.ts b/client/src/app/instance/search/components/result/download.component.ts index e9e03f92..d5a16313 100644 --- a/client/src/app/instance/search/components/result/download.component.ts +++ b/client/src/app/instance/search/components/result/download.component.ts @@ -38,8 +38,7 @@ export class DownloadComponent { * @return boolean */ isDownloadActivated(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.download.download_enabled; + return this.datasetList.find(d => d.name === this.datasetSelected).download_enabled; } /** @@ -48,8 +47,7 @@ export class DownloadComponent { * @return boolean */ isDownloadOpened(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.download.download_opened; + return this.datasetList.find(d => d.name === this.datasetSelected).download_opened; } /** @@ -60,8 +58,7 @@ export class DownloadComponent { * @return boolean */ getConfigDownloadResultFormat(format: string): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.download[format]; + return this.datasetList.find(d => d.name === this.datasetSelected)[format]; } downloadResult(format: string) { diff --git a/client/src/app/instance/search/components/result/reminder.component.ts b/client/src/app/instance/search/components/result/reminder.component.ts index c81115c7..71c94e90 100644 --- a/client/src/app/instance/search/components/result/reminder.component.ts +++ b/client/src/app/instance/search/components/result/reminder.component.ts @@ -38,8 +38,7 @@ export class ReminderComponent { * @return boolean */ isSummaryActivated(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.summary.summary_enabled; + return this.datasetList.find(d => d.name === this.datasetSelected).summary_enabled; } /** @@ -48,8 +47,7 @@ export class ReminderComponent { * @return boolean */ isSummaryOpened(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.summary.summary_opened; + return this.datasetList.find(d => d.name === this.datasetSelected).summary_opened; } /** diff --git a/client/src/app/instance/search/components/result/samp.component.ts b/client/src/app/instance/search/components/result/samp.component.ts index 8bc0b135..be61e1c9 100644 --- a/client/src/app/instance/search/components/result/samp.component.ts +++ b/client/src/app/instance/search/components/result/samp.component.ts @@ -33,8 +33,7 @@ export class SampComponent { * @return boolean */ isSampActivated(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.samp.samp_enabled; + return this.datasetList.find(d => d.name === this.datasetSelected).samp_enabled; } /** @@ -43,8 +42,7 @@ export class SampComponent { * @return boolean */ isSampOpened(): boolean { - const dataset = this.datasetList.find(d => d.name === this.datasetSelected); - return dataset.config.samp.samp_opened; + return this.datasetList.find(d => d.name === this.datasetSelected).samp_opened; } /** diff --git a/client/src/app/instance/search/components/result/url-display.component.ts b/client/src/app/instance/search/components/result/url-display.component.ts index 145a36d0..ff9cd13c 100644 --- a/client/src/app/instance/search/components/result/url-display.component.ts +++ b/client/src/app/instance/search/components/result/url-display.component.ts @@ -40,8 +40,7 @@ export class UrlDisplayComponent { * @return boolean */ urlDisplayEnabled(): boolean { - const config = this.datasetList.find(d => d.name === this.datasetSelected).config; - return config.server_link.server_link_enabled; + return this.datasetList.find(d => d.name === this.datasetSelected).server_link_enabled; } /** @@ -50,8 +49,7 @@ export class UrlDisplayComponent { * @return boolean */ urlDisplayOpened(): boolean { - const config = this.datasetList.find(d => d.name === this.datasetSelected).config; - return config.server_link.server_link_opened; + return this.datasetList.find(d => d.name === this.datasetSelected).server_link_opened; } /** diff --git a/client/src/app/metamodel/models/dataset.model.ts b/client/src/app/metamodel/models/dataset.model.ts index 7c7baa5d..4b9b5d1d 100644 --- a/client/src/app/metamodel/models/dataset.model.ts +++ b/client/src/app/metamodel/models/dataset.model.ts @@ -19,50 +19,29 @@ export interface Dataset { description: string; display: number; data_path: string; + public: boolean; + info_survey_enabled: boolean; + info_survey_label: string; + cone_search_enabled: boolean; + cone_search_opened: boolean; + cone_search_column_ra: number; + cone_search_column_dec: number; + download_enabled: boolean; + download_opened: boolean; + download_csv: boolean; + download_ascii: boolean; + download_vo: boolean; + download_archive: boolean; + summary_enabled: boolean; + summary_opened: boolean; + server_link_enabled: boolean; + server_link_opened: boolean; + samp_enabled: boolean; + samp_opened: boolean; + datatable_enabled: boolean; + datatable_opened: boolean; + datatable_selectable_rows: boolean; survey_name: string; id_dataset_family: number; - public: boolean; full_data_path: string; - config: { - images: any[], - survey: { - survey_enabled: boolean; - survey_label: string; - }, - cone_search: { - cone_search_enabled: boolean; - cone_search_opened: boolean; - cone_search_column_ra: number; - cone_search_column_dec: number; - cone_search_plot_enabled: boolean; - cone_search_sdss_enabled: boolean; - cone_search_sdss_display: number; - cone_search_background: {id: number, enabled: boolean, display: number}[]; - }, - download: { - download_enabled: boolean; - download_opened: boolean; - download_csv: boolean; - download_ascii: boolean; - download_vo: boolean; - download_archive: boolean; - }, - summary: { - summary_enabled: boolean; - summary_opened: boolean; - }, - server_link: { - server_link_enabled: boolean; - server_link_opened: boolean; - }, - samp: { - samp_enabled: boolean; - samp_opened: boolean; - }, - datatable: { - datatable_enabled: boolean; - datatable_opened: boolean; - datatable_selectable_rows: boolean; - } - }; } diff --git a/client/src/app/metamodel/selectors/dataset.selector.ts b/client/src/app/metamodel/selectors/dataset.selector.ts index d456b9e1..9ae3b873 100644 --- a/client/src/app/metamodel/selectors/dataset.selector.ts +++ b/client/src/app/metamodel/selectors/dataset.selector.ts @@ -60,5 +60,5 @@ export const selectDatasetNameByRoute = createSelector( export const selectAllConeSearchDatasets = createSelector( selectAllDatasets, - datasetList => datasetList.filter(dataset => dataset.config.cone_search.cone_search_enabled) + datasetList => datasetList.filter(dataset => dataset.cone_search_enabled) ); \ No newline at end of file diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh index 3c9463a9..61395832 100644 --- a/conf-dev/create-db.sh +++ b/conf-dev/create-db.sh @@ -73,11 +73,11 @@ curl -d '{"label":"SVOM dataset family","display":20,"opened":true}' --header 'C curl -d '{"label":"IRiS dataset family","display":30,"opened":true}' --header 'Content-Type: application/json' -X POST http://localhost/instance/default/dataset-family # Add datasets -curl -d '{"name":"vipers_dr2_w1","table_ref":"aspic_vipers_dr2_w1","label":"VIPERS-W1 (DR2)","description":"VIPERS W1 dataset","display":10,"data_path":"\/ASPIC\/VIPERS_DR2","config":{"images":[],"survey":{"survey_enabled":true,"survey_label":"More about this survey"},"cone_search":{"cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"cone_search_plot_enabled":false,"cone_search_sdss_enabled":true,"cone_search_sdss_display":10,"cone_search_background":[]},"download":{"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true},"summary":{"summary_enabled":true,"summary_opened":false},"server_link":{"server_link_enabled":false,"server_link_opened":false},"samp":{"samp_enabled":false,"samp_opened":false},"datatable":{"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false}},"public":true,"survey_name":"anis_survey"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/1/dataset -curl -d '{"name":"sp_cards","table_ref":"sp_cards","label":"SP Metadata","description":"Contains metadata of scientific products (Core Program & General Program)","display":30,"data_path":"","config":{"images":[],"survey":{"survey_enabled":true,"survey_label":"More about this survey"},"cone_search":{"cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"cone_search_plot_enabled":false,"cone_search_sdss_enabled":true,"cone_search_sdss_display":10,"cone_search_background":[]},"download":{"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true},"summary":{"summary_enabled":true,"summary_opened":false},"server_link":{"server_link_enabled":false,"server_link_opened":false},"samp":{"samp_enabled":false,"samp_opened":false},"datatable":{"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false}},"public":true,"survey_name":"svom"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/2/dataset -curl -d '{"name":"observations","table_ref":"v_observation","label":"IRiS obs","description":"IRiS observations","display":10,"data_path":"\/IRIS\/observations","config":{"images":[],"survey":{"survey_enabled":true,"survey_label":"More about this survey"},"cone_search":{"cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"cone_search_plot_enabled":false,"cone_search_sdss_enabled":true,"cone_search_sdss_display":10,"cone_search_background":[]},"download":{"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true},"summary":{"summary_enabled":true,"summary_opened":false},"server_link":{"server_link_enabled":false,"server_link_opened":false},"samp":{"samp_enabled":false,"samp_opened":false},"datatable":{"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false}},"public":true,"survey_name":"iris"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/3/dataset -curl -d '{"name":"vvds_f02_udeep","table_ref":"aspic_vvds_f02_udeep","label":"VVDS2h Ultra Deep","description":"VVDS2h Ultra Deep","display":20,"data_path":"","config":{"images":[],"survey":{"survey_enabled":true,"survey_label":"More about this survey"},"cone_search":{"cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"cone_search_plot_enabled":false,"cone_search_sdss_enabled":true,"cone_search_sdss_display":10,"cone_search_background":[]},"download":{"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true},"summary":{"summary_enabled":true,"summary_opened":false},"server_link":{"server_link_enabled":false,"server_link_opened":false},"samp":{"samp_enabled":false,"samp_opened":false},"datatable":{"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false}},"public":true,"survey_name":"anis_survey"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/1/dataset -curl -d '{"name":"products","table_ref":"products","label":"Scientific Products","description":"SR3 & SR4 products list","display":20,"data_path":"","config":{"survey":{"survey_enabled":false,"survey_label":"More about this survey"},"cone_search":{"cone_search_enabled":false,"cone_search_opened":false,"cone_search_column_ra":false,"cone_search_column_dec":false,"cone_search_plot_enabled":false,"cone_search_sdss_enabled":false,"cone_search_sdss_display":false,"cone_search_background":[]},"download":{"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":false},"summary":{"summary_enabled":false,"summary_opened":false},"server_link":{"server_link_enabled":false,"server_link_opened":false},"samp":{"samp_enabled":false,"samp_opened":false},"datatable":{"datatable_enabled":true,"datatable_opened":true,"datatable_selectable_rows":false}},"public":true,"survey_name":"svom"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/2/dataset +curl -d '{"name":"vipers_dr2_w1","table_ref":"aspic_vipers_dr2_w1","label":"VIPERS-W1 (DR2)","description":"VIPERS W1 dataset","display":10,"data_path":"\/ASPIC\/VIPERS_DR2","public":true,"info_survey_enabled":true,"info_survey_label":"More about this survey","cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true,"summary_enabled":true,"summary_opened":false,"server_link_enabled":false,"server_link_opened":false,"samp_enabled":false,"samp_opened":false,"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false,"survey_name":"anis_survey"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/1/dataset +curl -d '{"name":"sp_cards","table_ref":"sp_cards","label":"SP Metadata","description":"Contains metadata of scientific products (Core Program & General Program)","display":30,"data_path":"","public":true,"info_survey_enabled":true,"info_survey_label":"More about this survey","cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true,"summary_enabled":true,"summary_opened":false,"server_link_enabled":false,"server_link_opened":false,"samp_enabled":false,"samp_opened":false,"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false,"survey_name":"svom"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/2/dataset +curl -d '{"name":"observations","table_ref":"v_observation","label":"IRiS obs","description":"IRiS observations","display":10,"data_path":"\/IRIS\/observations","public":true,"info_survey_enabled":true,"info_survey_label":"More about this survey","cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true,"summary_enabled":true,"summary_opened":false,"server_link_enabled":false,"server_link_opened":false,"samp_enabled":false,"samp_opened":false,"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false,"survey_name":"iris"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/3/dataset +curl -d '{"name":"vvds_f02_udeep","table_ref":"aspic_vvds_f02_udeep","label":"VVDS2h Ultra Deep","description":"VVDS2h Ultra Deep","display":20,"data_path":"","public":true,"info_survey_enabled":true,"info_survey_label":"More about this survey","cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true,"summary_enabled":true,"summary_opened":false,"server_link_enabled":false,"server_link_opened":false,"samp_enabled":false,"samp_opened":false,"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false,"survey_name":"anis_survey"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/1/dataset +curl -d '{"name":"products","table_ref":"products","label":"Scientific Products","description":"SR3 & SR4 products list","display":20,"data_path":"","public":true,"info_survey_enabled":true,"info_survey_label":"More about this survey","cone_search_enabled":false,"cone_search_opened":true,"cone_search_column_ra":null,"cone_search_column_dec":null,"download_enabled":true,"download_opened":false,"download_csv":true,"download_ascii":true,"download_vo":false,"download_archive":true,"summary_enabled":true,"summary_opened":false,"server_link_enabled":false,"server_link_opened":false,"samp_enabled":false,"samp_opened":false,"datatable_enabled":true,"datatable_opened":false,"datatable_selectable_rows":false,"survey_name":"svom"}' --header 'Content-Type: application/json' -X POST http://localhost/dataset-family/2/dataset # Add vipers_dr2_w1 attributes curl -d '{"label":"Default","display":10,"opened":true}' --header 'Content-Type: application/json' -X POST http://localhost/dataset/vipers_dr2_w1/criteria-family diff --git a/server/public/index.php b/server/public/index.php index d447c9c2..9219c50b 100644 --- a/server/public/index.php +++ b/server/public/index.php @@ -41,7 +41,6 @@ if (is_string($ded)) { } $errorHandler = new LogErrorHandler($app->getCallableResolver(), $app->getResponseFactory()); -$errorHandler->forceContentType('application/json'); $errorHandler->setLogger($container->get('logger')); // Add Error Handling Middleware (JSON only) diff --git a/server/src/Action/AdminFileExplorerAction.php b/server/src/Action/AdminFileExplorerAction.php index 75fb8ee9..0e734b8b 100644 --- a/server/src/Action/AdminFileExplorerAction.php +++ b/server/src/Action/AdminFileExplorerAction.php @@ -12,8 +12,8 @@ declare(strict_types=1); namespace App\Action; -use Psr\Http\Message\ServerRequestInterface as Request; -use Psr\Http\Message\ResponseInterface as Response; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Message\ResponseInterface; use Slim\Exception\HttpNotFoundException; use Slim\Exception\HttpBadRequestException; @@ -49,8 +49,11 @@ final class AdminFileExplorerAction * * @return ResponseInterface */ - public function __invoke(Request $request, Response $response, array $args): Response - { + public function __invoke( + ServerRequestInterface $request, + ResponseInterface $response, + array $args + ): ResponseInterface { if ($request->getMethod() === OPTIONS) { return $response->withHeader('Access-Control-Allow-Methods', 'GET, OPTIONS'); } diff --git a/server/src/Action/DatasetAction.php b/server/src/Action/DatasetAction.php index d6585e1a..33cb5f7c 100644 --- a/server/src/Action/DatasetAction.php +++ b/server/src/Action/DatasetAction.php @@ -66,7 +66,6 @@ final class DatasetAction extends AbstractAction 'description', 'display', 'data_path', - 'config', 'public', 'id_dataset_family' ); @@ -118,8 +117,29 @@ final class DatasetAction extends AbstractAction $dataset->setDatasetFamily($family); $dataset->setDisplay($parsedBody['display']); $dataset->setDataPath($parsedBody['data_path']); - $dataset->setConfig($parsedBody['config']); $dataset->setPublic($parsedBody['public']); + $dataset->setInfoSurveyEnabled($parsedBody['info_survey_enabled']); + $dataset->setInfoSurveyLabel($parsedBody['info_survey_label']); + $dataset->setConeSearchEnabled($parsedBody['cone_search_enabled']); + $dataset->setConeSearchOpened($parsedBody['cone_search_opened']); + $dataset->setConeSearchColumnRa($parsedBody['cone_search_column_ra']); + $dataset->setConeSearchColumnDec($parsedBody['cone_search_column_dec']); + $dataset->setDownloadEnabled($parsedBody['download_enabled']); + $dataset->setDownloadOpened($parsedBody['download_opened']); + $dataset->setDownloadCsv($parsedBody['download_csv']); + $dataset->setDownloadAscii($parsedBody['download_ascii']); + $dataset->setDownloadVo($parsedBody['download_vo']); + $dataset->setDownloadArchive($parsedBody['download_archive']); + $dataset->setSummaryEnabled($parsedBody['summary_enabled']); + $dataset->setSummaryOpened($parsedBody['summary_opened']); + $dataset->setServerLinkEnabled($parsedBody['server_link_enabled']); + $dataset->setServerLinkOpened($parsedBody['server_link_opened']); + $dataset->setSampEnabled($parsedBody['samp_enabled']); + $dataset->setSampOpened($parsedBody['samp_opened']); + $dataset->setDatatableEnabled($parsedBody['datatable_enabled']); + $dataset->setDatatableOpened($parsedBody['datatable_opened']); + $dataset->setDatatableSelectableRows($parsedBody['datatable_selectable_rows']); + $this->em->flush(); } } diff --git a/server/src/Action/DatasetListAction.php b/server/src/Action/DatasetListAction.php index 1c828f2e..fca5a341 100644 --- a/server/src/Action/DatasetListAction.php +++ b/server/src/Action/DatasetListAction.php @@ -12,8 +12,8 @@ declare(strict_types=1); namespace App\Action; -use Psr\Http\Message\ServerRequestInterface as Request; -use Psr\Http\Message\ResponseInterface as Response; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Message\ResponseInterface; use Slim\Exception\HttpBadRequestException; use Slim\Exception\HttpNotFoundException; use App\Entity\Survey; @@ -36,8 +36,11 @@ final class DatasetListAction extends AbstractAction * * @return ResponseInterface */ - public function __invoke(Request $request, Response $response, array $args): Response - { + public function __invoke( + ServerRequestInterface $request, + ResponseInterface $response, + array $args + ): ResponseInterface { if ($request->getMethod() === OPTIONS) { return $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); } @@ -70,7 +73,6 @@ final class DatasetListAction extends AbstractAction 'description', 'display', 'data_path', - 'config', 'public', 'survey_name' ); @@ -122,8 +124,28 @@ final class DatasetListAction extends AbstractAction $dataset->setDescription($parsedBody['description']); $dataset->setDisplay($parsedBody['display']); $dataset->setDataPath($parsedBody['data_path']); - $dataset->setConfig($parsedBody['config']); $dataset->setPublic($parsedBody['public']); + $dataset->setInfoSurveyEnabled($parsedBody['info_survey_enabled']); + $dataset->setInfoSurveyLabel($parsedBody['info_survey_label']); + $dataset->setConeSearchEnabled($parsedBody['cone_search_enabled']); + $dataset->setConeSearchOpened($parsedBody['cone_search_opened']); + $dataset->setConeSearchColumnRa($parsedBody['cone_search_column_ra']); + $dataset->setConeSearchColumnDec($parsedBody['cone_search_column_dec']); + $dataset->setDownloadEnabled($parsedBody['download_enabled']); + $dataset->setDownloadOpened($parsedBody['download_opened']); + $dataset->setDownloadCsv($parsedBody['download_csv']); + $dataset->setDownloadAscii($parsedBody['download_ascii']); + $dataset->setDownloadVo($parsedBody['download_vo']); + $dataset->setDownloadArchive($parsedBody['download_archive']); + $dataset->setSummaryEnabled($parsedBody['summary_enabled']); + $dataset->setSummaryOpened($parsedBody['summary_opened']); + $dataset->setServerLinkEnabled($parsedBody['server_link_enabled']); + $dataset->setServerLinkOpened($parsedBody['server_link_opened']); + $dataset->setSampEnabled($parsedBody['samp_enabled']); + $dataset->setSampOpened($parsedBody['samp_opened']); + $dataset->setDatatableEnabled($parsedBody['datatable_enabled']); + $dataset->setDatatableOpened($parsedBody['datatable_opened']); + $dataset->setDatatableSelectableRows($parsedBody['datatable_selectable_rows']); $dataset->setSurvey($survey); $dataset->setDatasetFamily($datasetFamily); diff --git a/server/src/Entity/Dataset.php b/server/src/Entity/Dataset.php index 805deb56..db0e655e 100644 --- a/server/src/Entity/Dataset.php +++ b/server/src/Entity/Dataset.php @@ -67,18 +67,158 @@ class Dataset implements \JsonSerializable protected $dataPath; /** - * @var array + * @var bool * - * @Column(type="json", nullable=true) + * @Column(type="boolean", nullable=false) */ - protected $config; + protected $public; /** * @var bool * - * @Column(type="boolean", nullable=false) + * @Column(type="boolean", name="info_survey_enabled", nullable=false) */ - protected $public; + protected $infoSurveyEnabled; + + /** + * @var string + * + * @Column(type="string", name="info_survey_label", nullable=false) + */ + protected $infoSurveyLabel; + + /** + * @var bool + * + * @Column(type="boolean", name="cone_search_enabled", nullable=false) + */ + protected $coneSearchEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="cone_search_opened", nullable=false) + */ + protected $coneSearchOpened; + + /** + * @var string + * + * @Column(type="string", name="cone_search_column_ra", nullable=true) + */ + protected $coneSearchColumnRa; + + /** + * @var string + * + * @Column(type="string", name="cone_search_column_dec", nullable=true) + */ + protected $coneSearchColumnDec; + + /** + * @var bool + * + * @Column(type="boolean", name="download_enabled", nullable=false) + */ + protected $downloadEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="download_opened", nullable=false) + */ + protected $downloadOpened; + + /** + * @var bool + * + * @Column(type="boolean", name="download_csv", nullable=false) + */ + protected $downloadCsv; + + /** + * @var bool + * + * @Column(type="boolean", name="download_ascii", nullable=false) + */ + protected $downloadAscii; + + /** + * @var bool + * + * @Column(type="boolean", name="download_vo", nullable=false) + */ + protected $downloadVo; + + /** + * @var bool + * + * @Column(type="boolean", name="download_archive", nullable=false) + */ + protected $downloadArchive; + + /** + * @var bool + * + * @Column(type="boolean", name="summary_enabled", nullable=false) + */ + protected $summaryEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="summary_opened", nullable=false) + */ + protected $summaryOpened; + + /** + * @var bool + * + * @Column(type="boolean", name="server_link_enabled", nullable=false) + */ + protected $serverLinkEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="server_link_opened", nullable=false) + */ + protected $serverLinkOpened; + + /** + * @var bool + * + * @Column(type="boolean", name="samp_enabled", nullable=false) + */ + protected $sampEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="samp_opened", nullable=false) + */ + protected $sampOpened; + + /** + * @var bool + * + * @Column(type="boolean", name="datatable_enabled", nullable=false) + */ + protected $datatableEnabled; + + /** + * @var bool + * + * @Column(type="boolean", name="datatable_opened", nullable=false) + */ + protected $datatableOpened; + + /** + * @var bool + * + * @Column(type="boolean", name="datatable_selectable_rows", nullable=false) + */ + protected $datatableSelectableRows; /** * @var Survey @@ -164,16 +304,6 @@ class Dataset implements \JsonSerializable $this->dataPath = $dataPath; } - public function getConfig() - { - return $this->config; - } - - public function setConfig($config) - { - $this->config = $config; - } - public function getPublic() { return $this->public; @@ -189,6 +319,216 @@ class Dataset implements \JsonSerializable return $this->survey; } + public function getInfoSurveyEnabled() + { + return $this->infoSurveyEnabled; + } + + public function setInfoSurveyEnabled($infoSurveyEnabled) + { + $this->infoSurveyEnabled = $infoSurveyEnabled; + } + + public function getInfoSurveyLabel() + { + return $this->infoSurveyLabel; + } + + public function setInfoSurveyLabel($infoSurveyLabel) + { + $this->infoSurveyLabel = $infoSurveyLabel; + } + + public function getConeSearchEnabled() + { + return $this->coneSearchEnabled; + } + + public function setConeSearchEnabled($coneSearchEnabled) + { + $this->coneSearchEnabled = $coneSearchEnabled; + } + + public function getConeSearchOpened() + { + return $this->coneSearchOpened; + } + + public function setConeSearchOpened($coneSearchOpened) + { + $this->coneSearchOpened = $coneSearchOpened; + } + + public function getConeSearchColumnRa() + { + return $this->coneSearchColumnRa; + } + + public function setConeSearchColumnRa($coneSearchColumnRa) + { + $this->coneSearchColumnRa = $coneSearchColumnRa; + } + + public function getConeSearchColumnDec() + { + return $this->coneSearchColumnDec; + } + + public function setConeSearchColumnDec($coneSearchColumnDec) + { + $this->coneSearchColumnDec = $coneSearchColumnDec; + } + + public function getDownloadEnabled() + { + return $this->downloadEnabled; + } + + public function setDownloadEnabled($downloadEnabled) + { + $this->downloadEnabled = $downloadEnabled; + } + + public function getDownloadOpened() + { + return $this->downloadOpened; + } + + public function setDownloadOpened($downloadOpened) + { + $this->downloadOpened = $downloadOpened; + } + + public function getDownloadCsv() + { + return $this->downloadCsv; + } + + public function setDownloadCsv($downloadCsv) + { + $this->downloadCsv = $downloadCsv; + } + + public function getDownloadAscii() + { + return $this->downloadAscii; + } + + public function setDownloadAscii($downloadAscii) + { + $this->downloadAscii = $downloadAscii; + } + + public function getDownloadVo() + { + return $this->downloadVo; + } + + public function setDownloadVo($downloadVo) + { + $this->downloadVo = $downloadVo; + } + + public function getDownloadArchive() + { + return $this->downloadArchive; + } + + public function setDownloadArchive($downloadArchive) + { + $this->downloadArchive = $downloadArchive; + } + + public function getSummaryEnabled() + { + return $this->summaryEnabled; + } + + public function setSummaryEnabled($summaryEnabled) + { + $this->summaryEnabled = $summaryEnabled; + } + + public function getSummaryOpened() + { + return $this->summaryOpened; + } + + public function setSummaryOpened($summaryOpened) + { + $this->summaryOpened = $summaryOpened; + } + + public function getServerLinkEnabled() + { + return $this->serverLinkEnabled; + } + + public function setServerLinkEnabled($serverLinkEnabled) + { + $this->serverLinkEnabled = $serverLinkEnabled; + } + + public function getServerLinkOpened() + { + return $this->serverLinkOpened; + } + + public function setServerLinkOpened($serverLinkOpened) + { + $this->serverLinkOpened = $serverLinkOpened; + } + + public function getSampEnabled() + { + return $this->sampEnabled; + } + + public function setSampEnabled($sampEnabled) + { + $this->sampEnabled = $sampEnabled; + } + + public function getSampOpened() + { + return $this->sampOpened; + } + + public function setSampOpened($sampOpened) + { + $this->sampOpened = $sampOpened; + } + + public function getDatatableEnabled() + { + return $this->datatableEnabled; + } + + public function setDatatableEnabled($datatableEnabled) + { + $this->datatableEnabled = $datatableEnabled; + } + + public function getDatatableOpened() + { + return $this->datatableOpened; + } + + public function setDatatableOpened($datatableOpened) + { + $this->datatableOpened = $datatableOpened; + } + + public function getDatatableSelectableRows() + { + return $this->datatableSelectableRows; + } + + public function setDatatableSelectableRows($datatableSelectableRows) + { + $this->datatableSelectableRows = $datatableSelectableRows; + } + public function setSurvey($survey) { $this->survey = $survey; @@ -223,8 +563,28 @@ class Dataset implements \JsonSerializable 'description' => $this->getDescription(), 'display' => $this->getDisplay(), 'data_path' => $this->getDataPath(), - 'config' => $this->getConfig(), 'public' => $this->getPublic(), + 'info_survey_enabled' => $this->getInfoSurveyEnabled(), + 'info_survey_label' => $this->getInfoSurveyLabel(), + 'cone_search_enabled' => $this->getConeSearchEnabled(), + 'cone_search_opened' => $this->getConeSearchOpened(), + 'cone_search_column_ra' => $this->getConeSearchColumnRa(), + 'cone_search_column_dec' => $this->getConeSearchColumnDec(), + 'download_enabled' => $this->getDownloadEnabled(), + 'download_opened' => $this->getDownloadOpened(), + 'download_csv' => $this->getDownloadCsv(), + 'download_ascii' => $this->getDownloadAscii(), + 'download_vo' => $this->getDownloadVo(), + 'download_archive' => $this->getDownloadArchive(), + 'summary_enabled' => $this->getSummaryEnabled(), + 'summary_opened' => $this->getSummaryOpened(), + 'server_link_enabled' => $this->getServerLinkEnabled(), + 'server_link_opened' => $this->getServerLinkOpened(), + 'samp_enabled' => $this->getSampEnabled(), + 'samp_opened' => $this->getSampOpened(), + 'datatable_enabled' => $this->getDatatableEnabled(), + 'datatable_opened' => $this->getDatatableOpened(), + 'datatable_selectable_rows' => $this->getDatatableSelectableRows(), 'survey_name' => $this->getSurvey()->getName(), 'id_dataset_family' => $this->getDatasetFamily()->getId(), 'full_data_path' => $this->getFullDataPath() diff --git a/server/src/Handlers/LogErrorHandler.php b/server/src/Handlers/LogErrorHandler.php index 4d1d1cdf..4dfba888 100644 --- a/server/src/Handlers/LogErrorHandler.php +++ b/server/src/Handlers/LogErrorHandler.php @@ -47,6 +47,6 @@ class LogErrorHandler extends ErrorHandler */ protected function logError(string $error): void { - $this->logger->info($error); + $this->logger->error($error); } } -- GitLab