From d886b5246a71647a25311ec566a331a3a50b9981 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Thu, 6 Oct 2022 17:32:13 +0200
Subject: [PATCH] #85 => WIP (resolver_enabled)

---
 .../cone-search-config-form.component.html    |  4 +++
 .../cone-search-config-form.component.ts      |  3 +++
 .../components/cone-search.component.html     |  2 +-
 .../components/cone-search.component.ts       |  1 +
 .../position/cone-search-panel.component.html |  1 +
 .../criteria/cone-search-tab.component.html   |  1 +
 .../models/cone-search-config.model.ts        |  1 +
 conf-dev/create-db.sh                         |  2 +-
 .../__CG__AppEntityConeSearchConfig.php       | 26 +++++++++++++++++--
 server/src/Action/ConeSearchConfigAction.php  |  3 +++
 server/src/Entity/ConeSearchConfig.php        | 20 +++++++++++++-
 11 files changed, 59 insertions(+), 5 deletions(-)

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 ca1a671e..1f6f0fb1 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
@@ -23,6 +23,10 @@
             </div>
         </div>
     </div>
+    <div class="custom-control custom-switch">
+        <input class="custom-control-input" type="checkbox" id="resolver_enabled" name="resolver_enabled" formControlName="resolver_enabled">
+        <label class="custom-control-label" for="resolver_enabled">Resolver enabled</label>
+    </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 3a2ff5a3..c07eebe0 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
@@ -27,6 +27,7 @@ export class ConeSearchConfigFormComponent implements OnInit {
         opened: new UntypedFormControl({value: false, disabled: true}),
         column_ra: new UntypedFormControl({value: false, disabled: true}),
         column_dec: new UntypedFormControl({value: false, disabled: true}),
+        resolver_enabled: new UntypedFormControl({value: false, disabled: true}),
         plot_enabled: new UntypedFormControl(false),
     });
 
@@ -40,12 +41,14 @@ export class ConeSearchConfigFormComponent implements OnInit {
             this.form.controls.opened.enable();
             this.form.controls.column_ra.enable();
             this.form.controls.column_dec.enable();
+            this.form.controls.resolver_enabled.enable();
             this.form.controls.plot_enabled.enable();
         } else {
             this.form.controls.opened.setValue(false);
             this.form.controls.opened.disable();
             this.form.controls.column_ra.disable();
             this.form.controls.column_dec.disable();
+            this.form.controls.resolver_enabled.disable();
             this.form.controls.plot_enabled.disable();
         }
     }
diff --git a/client/src/app/instance/cone-search/components/cone-search.component.html b/client/src/app/instance/cone-search/components/cone-search.component.html
index 0d5da742..c2e0feb8 100644
--- a/client/src/app/instance/cone-search/components/cone-search.component.html
+++ b/client/src/app/instance/cone-search/components/cone-search.component.html
@@ -1,4 +1,4 @@
-<div class="row pb-4">
+<div class="row pb-4" *ngIf="resolverEnabled">
     <div class="col">
         <app-resolver
             [coneSearch]="coneSearch"
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 5ded610d..cf3dc7d3 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
@@ -27,6 +27,7 @@ import { nanValidator, rangeValidator } from '../validators';
 })
 export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy {
     @Input() coneSearch: ConeSearch;
+    @Input() resolverEnabled: boolean;
     @Input() resolverIsLoading: boolean;
     @Input() resolverIsLoaded: boolean;
     @Output() retrieveCoordinates: EventEmitter<string> = new EventEmitter();
diff --git a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html
index 52e4398f..e13cbbdb 100644
--- a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html
+++ b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html
@@ -6,6 +6,7 @@
                 <div class="col">
                     <app-cone-search
                         [coneSearch]="coneSearch"
+                        [resolverEnabled]="true"
                         [resolverIsLoading]="resolverIsLoading"
                         [resolverIsLoaded]="resolverIsLoaded"
                         (retrieveCoordinates)="retrieveCoordinates.emit($event)"
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 d0991f52..c902914e 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
@@ -16,6 +16,7 @@
             <div class="col">
                 <app-cone-search
                     [coneSearch]="coneSearch"
+                    [resolverEnabled]="coneSearchConfig.resolver_enabled"
                     [resolverIsLoading]="resolverIsLoading"
                     [resolverIsLoaded]="resolverIsLoaded"
                     (retrieveCoordinates)="retrieveCoordinates.emit($event)"
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 b067ff0d..bd4da83f 100644
--- a/client/src/app/metamodel/models/cone-search-config.model.ts
+++ b/client/src/app/metamodel/models/cone-search-config.model.ts
@@ -18,5 +18,6 @@ export interface ConeSearchConfig {
     opened: boolean;
     column_ra: number;
     column_dec: number;
+    resolver_enabled: boolean;
     plot_enabled: boolean;
 }
diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh
index 5375f265..1b782bb2 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,"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,"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 42b64ffd..07cbe981 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', 'plotEnabled'];
+            return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'plotEnabled'];
         }
 
-        return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'plotEnabled'];
+        return ['__isInitialized__', 'id', 'enabled', 'opened', 'columnRa', 'columnDec', 'resolverEnabled', 'plotEnabled'];
     }
 
     /**
@@ -280,6 +280,28 @@ class ConeSearchConfig extends \App\Entity\ConeSearchConfig implements \Doctrine
         return parent::setColumnDec($columnDec);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getResolverEnabled()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getResolverEnabled', []);
+
+        return parent::getResolverEnabled();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setResolverEnabled($resolverEnabled)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setResolverEnabled', [$resolverEnabled]);
+
+        return parent::setResolverEnabled($resolverEnabled);
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/server/src/Action/ConeSearchConfigAction.php b/server/src/Action/ConeSearchConfigAction.php
index 8d2be835..373af256 100644
--- a/server/src/Action/ConeSearchConfigAction.php
+++ b/server/src/Action/ConeSearchConfigAction.php
@@ -108,6 +108,7 @@ final class ConeSearchConfigAction extends AbstractAction
             'opened',
             'column_ra',
             'column_dec',
+            'resolver_enabled',
             'plot_enabled'
         );
 
@@ -135,6 +136,7 @@ final class ConeSearchConfigAction extends AbstractAction
         $coneSearchConfig->setOpened($parsedBody['opened']);
         $coneSearchConfig->setColumnRa($parsedBody['column_ra']);
         $coneSearchConfig->setColumnDec($parsedBody['column_dec']);
+        $coneSearchConfig->setResolverEnabled($parsedBody['resolver_enabled']);
         $coneSearchConfig->setPlotEnabled($parsedBody['plot_enabled']);
 
         $dataset->setConeSearchConfig($coneSearchConfig);
@@ -157,6 +159,7 @@ final class ConeSearchConfigAction extends AbstractAction
         $coneSearchConfig->setOpened($parsedBody['opened']);
         $coneSearchConfig->setColumnRa($parsedBody['column_ra']);
         $coneSearchConfig->setColumnDec($parsedBody['column_dec']);
+        $coneSearchConfig->setResolverEnabled($parsedBody['resolver_enabled']);
         $coneSearchConfig->setPlotEnabled($parsedBody['plot_enabled']);
         $this->em->flush();
     }
diff --git a/server/src/Entity/ConeSearchConfig.php b/server/src/Entity/ConeSearchConfig.php
index 5d635825..47725a9d 100644
--- a/server/src/Entity/ConeSearchConfig.php
+++ b/server/src/Entity/ConeSearchConfig.php
@@ -58,6 +58,13 @@ class ConeSearchConfig implements \JsonSerializable
      */
     protected $columnDec;
 
+    /**
+     * @var bool
+     *
+     * @Column(type="boolean", name="resolver_enabled", nullable=false, options={"default" : true})
+     */
+    protected $resolverEnabled;
+
     /**
      * @var bool
      *
@@ -110,6 +117,16 @@ class ConeSearchConfig implements \JsonSerializable
         $this->columnDec = $columnDec;
     }
 
+    public function getResolverEnabled()
+    {
+        return $this->resolverEnabled;
+    }
+
+    public function setResolverEnabled($resolverEnabled)
+    {
+        $this->resolverEnabled = $resolverEnabled;
+    }
+
     public function getPlotEnabled()
     {
         return $this->plotEnabled;
@@ -128,7 +145,8 @@ class ConeSearchConfig implements \JsonSerializable
             'opened' => $this->getOpened(),
             'column_ra' => $this->getColumnRa(),
             'column_dec' => $this->getColumnDec(),
-            'plot_enabled' => $this->getPlotEnabled(),
+            'resolver_enabled' => $this->getResolverEnabled(),
+            'plot_enabled' => $this->getPlotEnabled()
         ];
     }
 }
-- 
GitLab