diff --git a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.html b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.html index 09c4b3e1ffea6f8108eddf8967e9e8af5e0c5759..f75a949f8a9bcb0e0e5f06cff9ffde57c56d8b33 100644 --- a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.html +++ b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.html @@ -43,6 +43,14 @@ <label for="default_radius">Default radius</label> <input type="number" class="form-control" id="default_radius" name="default_radius" formControlName="default_radius"> </div> + <div class="form-group"> + <label for="default_ra_dec_unit">Default Ra & Dec unit</label> + <select class="form-control" id="default_ra_dec_unit" name="default_ra_dec_unit" formControlName="default_ra_dec_unit"> + <option></option> + <option value="degree">Degree</option> + <option value="hms">HMS</option> + </select> + </div> <div class="custom-control custom-switch"> <input class="custom-control-input" type="checkbox" id="plot_enabled" name="plot_enabled" formControlName="plot_enabled"> <label class="custom-control-label" for="plot_enabled">Plot enabled</label> diff --git a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.ts b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.ts index 6b9300cb6ab44d048021409803c1d2bc7d77e576..d42ca6195606536b3eab8629c1809ce4b612a08a 100644 --- a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.ts +++ b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config-form.component.ts @@ -31,6 +31,7 @@ export class ConeSearchConfigFormComponent implements OnInit { default_ra: new UntypedFormControl({value: null, disabled: true}), default_dec: new UntypedFormControl({value: null, disabled: true}), default_radius: new UntypedFormControl({value: 2.0, disabled: true}), + default_ra_dec_unit: new UntypedFormControl({value: 'degree', disabled: true}), plot_enabled: new UntypedFormControl({value: false, disabled: true}) }); @@ -48,6 +49,7 @@ export class ConeSearchConfigFormComponent implements OnInit { this.form.controls.default_ra.enable(); this.form.controls.default_dec.enable(); this.form.controls.default_radius.enable(); + this.form.controls.default_ra_dec_unit.enable(); this.form.controls.plot_enabled.enable(); } else { this.form.controls.opened.setValue(false); @@ -58,6 +60,7 @@ export class ConeSearchConfigFormComponent implements OnInit { this.form.controls.default_ra.disable(); this.form.controls.default_dec.disable(); this.form.controls.default_radius.disable(); + this.form.controls.default_ra_dec_unit.disable(); this.form.controls.plot_enabled.disable(); } } diff --git a/client/src/app/instance/cone-search/components/cone-search.component.ts b/client/src/app/instance/cone-search/components/cone-search.component.ts index d84ac055d0fcb85e6bd4a452ee0ceba0998dd46c..e6b5921bc58b4a7a67b21ececae92e598d58227d 100644 --- a/client/src/app/instance/cone-search/components/cone-search.component.ts +++ b/client/src/app/instance/cone-search/components/cone-search.component.ts @@ -28,6 +28,7 @@ import { nanValidator, rangeValidator } from '../validators'; export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy { @Input() coneSearch: ConeSearch; @Input() defaultRadius: number; + @Input() defaultRaDecUnit: string; @Input() resolverEnabled: boolean; @Input() resolverIsLoading: boolean; @Input() resolverIsLoaded: boolean; @@ -67,6 +68,10 @@ export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy { if (this.defaultRadius) { this.form.controls.radius.setValue(this.defaultRadius); } + + if (this.defaultRaDecUnit) { + this.unit = this.defaultRaDecUnit; + } } ngOnChanges(changes: SimpleChanges): void { diff --git a/client/src/app/instance/cone-search/components/dec.component.ts b/client/src/app/instance/cone-search/components/dec.component.ts index 7d8c3180b6f8aaf71c651477ecf8d7dc9735956f..c6f3a72aab7a69a9aa9f01f5cffd7b9be48cfea0 100644 --- a/client/src/app/instance/cone-search/components/dec.component.ts +++ b/client/src/app/instance/cone-search/components/dec.component.ts @@ -38,7 +38,12 @@ export class DecComponent implements OnInit, OnDestroy, OnChanges { public decDmsSubscription: Subscription; ngOnInit(): void { - this.form.controls.dec_dms.disable(); + if (this.unit === 'degree') { + this.form.controls.dec_dms.disable(); + } else { + this.form.controls.dec.disable(); + } + this.decControlSubscription = this.form.controls.dec.valueChanges.pipe(debounceTime(250)) .subscribe(deg => this.deg2DMS(deg)); } diff --git a/client/src/app/instance/cone-search/components/ra.component.ts b/client/src/app/instance/cone-search/components/ra.component.ts index a177faac1169541cd5b3b5dcfd50924b977af26b..3dec1ea4b7081eaedba34f6fff5e96214f2a0c45 100644 --- a/client/src/app/instance/cone-search/components/ra.component.ts +++ b/client/src/app/instance/cone-search/components/ra.component.ts @@ -38,7 +38,12 @@ export class RaComponent implements OnInit, OnDestroy, OnChanges { public raHmsFormSubscription: Subscription; ngOnInit(): void { - this.form.controls.ra_hms.disable(); + if (this.unit === 'degree') { + this.form.controls.ra_hms.disable(); + } else { + this.form.controls.ra.disable(); + } + this.raControlSubscription = this.form.controls.ra.valueChanges.pipe(debounceTime(250)) .subscribe(deg => this.deg2HMS(deg)); } diff --git a/client/src/app/instance/search/components/criteria/cone-search-tab.component.html b/client/src/app/instance/search/components/criteria/cone-search-tab.component.html index 93a49003617e6d34338da093d39e0e6fd73873eb..ce576d7087fe87bff2e67680c93e8c2f1b49fb85 100644 --- a/client/src/app/instance/search/components/criteria/cone-search-tab.component.html +++ b/client/src/app/instance/search/components/criteria/cone-search-tab.component.html @@ -17,6 +17,7 @@ <app-cone-search [coneSearch]="coneSearch" [defaultRadius]="coneSearchConfig.default_radius" + [defaultRaDecUnit]="coneSearchConfig.default_ra_dec_unit" [resolverEnabled]="coneSearchConfig.resolver_enabled" [resolverIsLoading]="resolverIsLoading" [resolverIsLoaded]="resolverIsLoaded" diff --git a/client/src/app/metamodel/models/cone-search-config.model.ts b/client/src/app/metamodel/models/cone-search-config.model.ts index e9adcd5d95e7017073fda08d22d4fb4a27e14c76..85228e87e9dabb4fb8304b680e32caa9086ed11f 100644 --- a/client/src/app/metamodel/models/cone-search-config.model.ts +++ b/client/src/app/metamodel/models/cone-search-config.model.ts @@ -22,5 +22,6 @@ export interface ConeSearchConfig { default_ra: number; default_dec: number; default_radius: number; + default_ra_dec_unit: string; plot_enabled: boolean; } diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh index b31c02585f7491eaccd8dc7c0eecbe4bb611a638..d2bc1ce19ec154f1a38463dc76a1bbd7847dc23c 100644 --- a/conf-dev/create-db.sh +++ b/conf-dev/create-db.sh @@ -96,7 +96,7 @@ curl -d '{"id":6,"name":"zflag","label":"zflag","form_label":"zflag","descriptio curl -d '{"id":7,"name":"sel_mag","label":"sel_mag","form_label":"sel_mag","description":null,"primary_key":false,"output_display":70,"criteria_display":70,"search_type":"between","type":"decimal","operator":null,"dynamic_operator":true,"min":null,"max":null,"placeholder_min":null,"placeholder_max":null,"renderer":null,"renderer_config":null,"detail_display":70,"selected":true,"order_by":true,"archive":false,"detail":false,"options":null,"vo_utype":null,"vo_ucd":null,"vo_unit":null,"vo_description":null,"vo_datatype":null,"vo_size":null,"id_criteria_family":4,"id_output_category":5,"id_detail_output_category":null}' --header 'Content-Type: application/json' -X POST http://localhost/dataset/vvds_f02_udeep/attribute # Add vvds_f02_udeep cone search -curl -d '{"enabled":true,"opened":false,"column_ra":3,"column_dec":4,"resolver_enabled":true,"default_ra":null,"default_dec":null,"default_radius":2.0,"plot_enabled":true}' --header 'Content-Type: application/json' -X POST http://localhost/dataset/vvds_f02_udeep/cone-search-config +curl -d '{"enabled":true,"opened":false,"column_ra":3,"column_dec":4,"resolver_enabled":true,"default_ra":null,"default_dec":null,"default_radius":2.0,"default_ra_dec_unit":"degree","plot_enabled":true}' --header 'Content-Type: application/json' -X POST http://localhost/dataset/vvds_f02_udeep/cone-search-config # Add vvds_f02_udeep image curl -d '{"label":"Mag i","file_path":"/IMAGES/CFHTLS_D-85_i_022559-042940_T0007_MEDIAN.fits","file_size":1498320000,"ra_min":35.994643451078,"ra_max":36.99765934121,"dec_min":-3.9943006310031,"dec_max":-4.9941936740893,"stretch":"linear","pmin":0.2,"pmax":99}' --header 'Content-Type: application/json' -X POST http://localhost/dataset/vvds_f02_udeep/image diff --git a/server/doctrine-proxy/__CG__AppEntityConeSearchConfig.php b/server/doctrine-proxy/__CG__AppEntityConeSearchConfig.php index 34418046d4fbc9c9999bbcd965b5932f1a92eecb..ddb98c40f3fbbe5c9766ed6fb22b52f66d0a498c 100644 --- a/server/doctrine-proxy/__CG__AppEntityConeSearchConfig.php +++ b/server/doctrine-proxy/__CG__AppEntityConeSearchConfig.php @@ -67,10 +67,10 @@ class ConeSearchConfig extends \App\Entity\ConeSearchConfig implements \Doctrine public function __sleep() { if ($this->__isInitialized__) { - return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'defaultRa', 'defaultDec', 'defaultRadius', 'plotEnabled']; + return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'defaultRa', 'defaultDec', 'defaultRadius', 'defaultRaDecUnit', 'plotEnabled']; } - return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'defaultRa', 'defaultDec', 'defaultRadius', 'plotEnabled']; + return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'defaultRa', 'defaultDec', 'defaultRadius', 'defaultRaDecUnit', 'plotEnabled']; } /** @@ -368,6 +368,28 @@ class ConeSearchConfig extends \App\Entity\ConeSearchConfig implements \Doctrine return parent::setDefaultRadius($defaultRadius); } + /** + * {@inheritDoc} + */ + public function getDefaultRaDecUnit() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDefaultRaDecUnit', []); + + return parent::getDefaultRaDecUnit(); + } + + /** + * {@inheritDoc} + */ + public function setDefaultRaDecUnit($defaultRaDecUnit) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDefaultRaDecUnit', [$defaultRaDecUnit]); + + return parent::setDefaultRaDecUnit($defaultRaDecUnit); + } + /** * {@inheritDoc} */ diff --git a/server/src/Action/ConeSearchConfigAction.php b/server/src/Action/ConeSearchConfigAction.php index 0ac63186dbb3f362d0549c75cb1c80381010d54c..a6ab51eacc374e49ae00447ada44cff3704ac3f2 100644 --- a/server/src/Action/ConeSearchConfigAction.php +++ b/server/src/Action/ConeSearchConfigAction.php @@ -112,6 +112,7 @@ final class ConeSearchConfigAction extends AbstractAction 'default_ra', 'default_dec', 'default_radius', + 'default_ra_dec_unit', 'plot_enabled' ); @@ -143,6 +144,7 @@ final class ConeSearchConfigAction extends AbstractAction $coneSearchConfig->setDefaultRa($parsedBody['default_ra']); $coneSearchConfig->setDefaultDec($parsedBody['default_dec']); $coneSearchConfig->setDefaultRadius($parsedBody['default_radius']); + $coneSearchConfig->setDefaultRaDecUnit($parsedBody['default_ra_dec_unit']); $coneSearchConfig->setPlotEnabled($parsedBody['plot_enabled']); $dataset->setConeSearchConfig($coneSearchConfig); @@ -169,6 +171,7 @@ final class ConeSearchConfigAction extends AbstractAction $coneSearchConfig->setDefaultRa($parsedBody['default_ra']); $coneSearchConfig->setDefaultDec($parsedBody['default_dec']); $coneSearchConfig->setDefaultRadius($parsedBody['default_radius']); + $coneSearchConfig->setDefaultRaDecUnit($parsedBody['default_ra_dec_unit']); $coneSearchConfig->setPlotEnabled($parsedBody['plot_enabled']); $this->em->flush(); } diff --git a/server/src/Entity/ConeSearchConfig.php b/server/src/Entity/ConeSearchConfig.php index 78423043a897c946c4581cf141dd37e863d005c3..9ec28c9fd6e357278983990a73dfe1245490186c 100644 --- a/server/src/Entity/ConeSearchConfig.php +++ b/server/src/Entity/ConeSearchConfig.php @@ -66,26 +66,33 @@ class ConeSearchConfig implements \JsonSerializable protected $resolverEnabled; /** - * @var bool + * @var float * * @Column(type="float", name="default_ra", nullable=true) */ protected $defaultRa; /** - * @var bool + * @var float * * @Column(type="float", name="default_dec", nullable=true) */ protected $defaultDec; /** - * @var bool + * @var float * * @Column(type="float", name="default_radius", nullable=false, options={"default" : "2.0"})) */ protected $defaultRadius; + /** + * @var string + * + * @Column(type="string", name="default_ra_dec_unit", nullable=false, options={"default" : "degree"})) + */ + protected $defaultRaDecUnit; + /** * @var bool * @@ -178,6 +185,16 @@ class ConeSearchConfig implements \JsonSerializable $this->defaultRadius = $defaultRadius; } + public function getDefaultRaDecUnit() + { + return $this->defaultRaDecUnit; + } + + public function setDefaultRaDecUnit($defaultRaDecUnit) + { + $this->defaultRaDecUnit = $defaultRaDecUnit; + } + public function getPlotEnabled() { return $this->plotEnabled; @@ -200,6 +217,7 @@ class ConeSearchConfig implements \JsonSerializable 'default_ra' => $this->getDefaultRa(), 'default_dec' => $this->getDefaultDec(), 'default_radius' => $this->getDefaultRadius(), + 'default_ra_dec_unit' => $this->getDefaultRaDecUnit(), 'plot_enabled' => $this->getPlotEnabled() ]; }