From 058ccca3770e8f2e6d73a0ea8e2288fe2227ad9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Wed, 19 Oct 2022 17:54:00 +0200
Subject: [PATCH] #89 => Select dataset button color

---
 .../components/instance-form.component.html   | 32 +++++++++
 .../components/instance-form.component.ts     |  3 +
 .../app/instance/instance.component.spec.ts   |  3 +
 client/src/app/instance/instance.component.ts | 11 +++
 .../dataset/dataset-card.component.html       |  2 +-
 .../components/progress-bar.component.spec.ts |  6 ++
 .../search/containers/result.component.html   |  2 +-
 .../effects/search-multiple.effects.spec.ts   |  6 ++
 .../app/metamodel/models/instance.model.ts    |  3 +
 client/src/test-data.ts                       |  9 +++
 conf-dev/create-db.sh                         |  2 +-
 .../__CG__AppEntityInstance.php               | 70 ++++++++++++++++++-
 server/src/Action/InstanceAction.php          |  6 ++
 server/src/Action/InstanceListAction.php      |  6 ++
 server/src/Entity/Instance.php                | 54 ++++++++++++++
 server/tests/Action/InstanceActionTest.php    |  3 +
 .../tests/Action/InstanceListActionTest.php   |  3 +
 17 files changed, 216 insertions(+), 5 deletions(-)

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 2de65774..12bb88b6 100644
--- a/client/src/app/admin/instance/components/instance-form.component.html
+++ b/client/src/app/admin/instance/components/instance-form.component.html
@@ -379,6 +379,38 @@
                 </div>
             </div>
         </accordion-group>
+        <accordion-group heading="Design dataset selection" [isOpen]="false">
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_color_picker">Dataset select btn color (picker)</label>
+                    <input class="form-control" type="color" id="dataset_select_btn_color_picker" [value]="form.value.dataset_select_btn_color" formControlName="dataset_select_btn_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_color_input">Dataset select btn color (value)</label>
+                    <input type="text" class="form-control" id="dataset_select_btn_color_input" [value]="form.value.dataset_select_btn_color" formControlName="dataset_select_btn_color">
+                </div>
+            </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_hover_color_picker">Dataset select btn hover color (picker)</label>
+                    <input class="form-control" type="color" id="dataset_select_btn_hover_color_picker" [value]="form.value.dataset_select_btn_hover_color" formControlName="dataset_select_btn_hover_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_hover_color_input">Dataset select btn hover color (value)</label>
+                    <input type="text" class="form-control" id="dataset_select_btn_hover_color_input" [value]="form.value.dataset_select_btn_hover_color" formControlName="dataset_select_btn_hover_color">
+                </div>
+            </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_text_color_picker">Dataset select btn text color (picker)</label>
+                    <input class="form-control" type="color" id="dataset_select_btn_text_color_picker" [value]="form.value.dataset_select_btn_text_color" formControlName="dataset_select_btn_text_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="dataset_select_btn_text_color_input">Dataset select btn text color (value)</label>
+                    <input type="text" class="form-control" id="dataset_select_btn_text_color_input" [value]="form.value.dataset_select_btn_text_color" formControlName="dataset_select_btn_text_color">
+                </div>
+            </div>
+        </accordion-group>
         <accordion-group heading="Design result header" [isOpen]="false">
             <div class="form-row">
                 <div class="form-group col-md-6">
diff --git a/client/src/app/admin/instance/components/instance-form.component.ts b/client/src/app/admin/instance/components/instance-form.component.ts
index 37752a19..0d0bfc78 100644
--- a/client/src/app/admin/instance/components/instance-form.component.ts
+++ b/client/src/app/admin/instance/components/instance-form.component.ts
@@ -73,6 +73,9 @@ export class InstanceFormComponent implements OnInit {
         progress_bar_circle_icon_color: new UntypedFormControl('#CCCCCC'),
         progress_bar_circle_icon_active_color: new UntypedFormControl('#FFFFFF'),
         progress_bar_text_color: new UntypedFormControl('#91B2BF'),
+        dataset_select_btn_color: new UntypedFormControl('#6C757D'),
+        dataset_select_btn_hover_color: new UntypedFormControl('#6C757D'),
+        dataset_select_btn_text_color: new UntypedFormControl('#FFFFFF'),
         result_header_background_color: new UntypedFormControl('#E9ECEF'),
         result_header_text_color: new UntypedFormControl('#000000'),
         result_header_btn_color: new UntypedFormControl('#007BFF'),
diff --git a/client/src/app/instance/instance.component.spec.ts b/client/src/app/instance/instance.component.spec.ts
index 7b21a184..0e47eef6 100644
--- a/client/src/app/instance/instance.component.spec.ts
+++ b/client/src/app/instance/instance.component.spec.ts
@@ -120,6 +120,9 @@ describe('[Instance] InstanceComponent', () => {
             progress_bar_circle_icon_color: '#CCCCCC',
             progress_bar_circle_icon_active_color: '#FFFFFF',
             progress_bar_text_color: '#91B2BF',
+            dataset_select_btn_color: '#6C757D',
+            dataset_select_btn_hover_color: '#6C757D',
+            dataset_select_btn_text_color: '#FFFFFF',
             result_header_background_color: '#E9ECEF',
             result_header_text_color: '#000000',
             result_header_btn_color: '#007BFF',
diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts
index dd09a9e3..53dd7a0e 100644
--- a/client/src/app/instance/instance.component.ts
+++ b/client/src/app/instance/instance.component.ts
@@ -131,6 +131,17 @@ export class InstanceComponent implements OnInit, OnDestroy {
                     });
                     this.style.setStyle('.custom-accordion .panel-body .card', 'background-color', instance.family_background_color);
 
+                    this.style.setStyles('.dataset-select-btn.btn.btn-outline-secondary', {
+                        'color': instance.dataset_select_btn_color,
+                        'border-color': instance.dataset_select_btn_color
+                    });
+
+                    this.style.setStyles('.dataset-select-btn:hover.btn.btn-outline-secondary', {
+                        'color': instance.dataset_select_btn_text_color,
+                        'background-color': instance.dataset_select_btn_hover_color,
+                        'border-color': instance.dataset_select_btn_hover_color
+                    });
+
                     this.style.setStyles('.anis-result-header.jumbotron', {
                         'background-color': instance.result_header_background_color,
                         'color': instance.result_header_text_color
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 eebb222e..9e1086cd 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
@@ -14,7 +14,7 @@
             <div class="col-auto">
                 <button *ngIf="dataset.name !== datasetSelected && isDatasetAccessible()"
                     (click)="selectDataset(dataset.name)"
-                    class="btn btn-outline-secondary">
+                    class="dataset-select-btn btn btn-outline-secondary">
                     <span *ngIf="!dataset.public" class="fa-solid fa-lock-open"></span>
                     <span *ngIf="dataset.public" class="fa-solid fa-globe"></span>
                     Select
diff --git a/client/src/app/instance/search/components/progress-bar.component.spec.ts b/client/src/app/instance/search/components/progress-bar.component.spec.ts
index fef20050..28b9e6e1 100644
--- a/client/src/app/instance/search/components/progress-bar.component.spec.ts
+++ b/client/src/app/instance/search/components/progress-bar.component.spec.ts
@@ -93,6 +93,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             progress_bar_circle_icon_color: '#CCCCCC',
             progress_bar_circle_icon_active_color: '#FFFFFF',
             progress_bar_text_color: '#91B2BF',
+            dataset_select_btn_color: '#6C757D',
+            dataset_select_btn_hover_color: '#6C757D',
+            dataset_select_btn_text_color: '#FFFFFF',
             result_header_background_color: '#E9ECEF',
             result_header_text_color: '#000000',
             result_header_btn_color: '#007BFF',
@@ -174,6 +177,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             progress_bar_circle_icon_color: '#CCCCCC',
             progress_bar_circle_icon_active_color: '#FFFFFF',
             progress_bar_text_color: '#91B2BF',
+            dataset_select_btn_color: '#6C757D',
+            dataset_select_btn_hover_color: '#6C757D',
+            dataset_select_btn_text_color: '#FFFFFF',
             result_header_background_color: '#E9ECEF',
             result_header_text_color: '#000000',
             result_header_btn_color: '#007BFF',
diff --git a/client/src/app/instance/search/containers/result.component.html b/client/src/app/instance/search/containers/result.component.html
index 2b28026b..ad2e04a9 100644
--- a/client/src/app/instance/search/containers/result.component.html
+++ b/client/src/app/instance/search/containers/result.component.html
@@ -19,7 +19,7 @@
             </div>
         </div>
         <ng-container *ngIf="(dataLength | async) > 0">
-            <div class="anis-result-header jumbotron row mb-4 py-4">
+            <div class="anis-result-header jumbotron row mx-0 mb-4 py-4">
                 <div class="col">
                     <app-result-info
                         [instance]="instance | async"
diff --git a/client/src/app/instance/store/effects/search-multiple.effects.spec.ts b/client/src/app/instance/store/effects/search-multiple.effects.spec.ts
index f74eeb05..5f81dbfc 100644
--- a/client/src/app/instance/store/effects/search-multiple.effects.spec.ts
+++ b/client/src/app/instance/store/effects/search-multiple.effects.spec.ts
@@ -175,6 +175,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     progress_bar_circle_icon_color: '#CCCCCC',
                     progress_bar_circle_icon_active_color: '#FFFFFF',
                     progress_bar_text_color: '#91B2BF',
+                    dataset_select_btn_color: '#6C757D',
+                    dataset_select_btn_hover_color: '#6C757D',
+                    dataset_select_btn_text_color: '#FFFFFF',
                     result_header_background_color: '#E9ECEF',
                     result_header_text_color: '#000000',
                     result_header_btn_color: '#007BFF',
@@ -299,6 +302,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     progress_bar_circle_icon_color: '#CCCCCC',
                     progress_bar_circle_icon_active_color: '#FFFFFF',
                     progress_bar_text_color: '#91B2BF',
+                    dataset_select_btn_color: '#6C757D',
+                    dataset_select_btn_hover_color: '#6C757D',
+                    dataset_select_btn_text_color: '#FFFFFF',
                     result_header_background_color: '#E9ECEF',
                     result_header_text_color: '#000000',
                     result_header_btn_color: '#007BFF',
diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts
index 0b9ca70c..7ef438e0 100644
--- a/client/src/app/metamodel/models/instance.model.ts
+++ b/client/src/app/metamodel/models/instance.model.ts
@@ -60,6 +60,9 @@ export interface Instance {
     progress_bar_circle_icon_color: string;
     progress_bar_circle_icon_active_color: string;
     progress_bar_text_color: string;
+    dataset_select_btn_color: string;
+    dataset_select_btn_hover_color: string;
+    dataset_select_btn_text_color: string;
     result_header_background_color: string;
     result_header_text_color: string;
     result_header_btn_color: string;
diff --git a/client/src/test-data.ts b/client/src/test-data.ts
index f9834a36..1730875b 100644
--- a/client/src/test-data.ts
+++ b/client/src/test-data.ts
@@ -90,6 +90,9 @@ export const INSTANCE_LIST: Instance[] = [
         progress_bar_circle_icon_color: '#CCCCCC',
         progress_bar_circle_icon_active_color: '#FFFFFF',
         progress_bar_text_color: '#91B2BF',
+        dataset_select_btn_color: '#6C757D',
+        dataset_select_btn_hover_color: '#6C757D',
+        dataset_select_btn_text_color: '#FFFFFF',
         result_header_background_color: '#E9ECEF',
         result_header_text_color: '#000000',
         result_header_btn_color: '#007BFF',
@@ -165,6 +168,9 @@ export const INSTANCE_LIST: Instance[] = [
         progress_bar_circle_icon_color: '#CCCCCC',
         progress_bar_circle_icon_active_color: '#FFFFFF',
         progress_bar_text_color: '#91B2BF',
+        dataset_select_btn_color: '#6C757D',
+        dataset_select_btn_hover_color: '#6C757D',
+        dataset_select_btn_text_color: '#FFFFFF',
         result_header_background_color: '#E9ECEF',
         result_header_text_color: '#000000',
         result_header_btn_color: '#007BFF',
@@ -242,6 +248,9 @@ export const INSTANCE: Instance = {
     progress_bar_circle_icon_color: '#CCCCCC',
     progress_bar_circle_icon_active_color: '#FFFFFF',
     progress_bar_text_color: '#91B2BF',
+    dataset_select_btn_color: '#6C757D',
+    dataset_select_btn_hover_color: '#6C757D',
+    dataset_select_btn_text_color: '#FFFFFF',
     result_header_background_color: '#E9ECEF',
     result_header_text_color: '#000000',
     result_header_btn_color: '#007BFF',
diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh
index 742f1cda..e09ca9dd 100644
--- a/conf-dev/create-db.sh
+++ b/conf-dev/create-db.sh
@@ -8,7 +8,7 @@ set -e
 curl -d '{"label":"Test","dbname":"anis_test","dbtype":"pdo_pgsql","dbhost":"db","dbport":5432,"dblogin":"anis","dbpassword":"anis"}' --header 'Content-Type: application/json' -X POST http://localhost/database
 
 # Add default instance
-curl -d '{"name":"default","label":"Default instance","description":"Instance for the test","scientific_manager":"M. Durand","instrument":"Multiple","wavelength_domain":"Visible imaging / Spectroscopy","display":10,"data_path":"\/DEFAULT","files_path":"\/INSTANCE_FILES","public":true,"portal_logo":"","design_color":"#7AC29A","design_background_color":"#ffffff","design_logo":"/logo.png","design_favicon":"/favicon.ico","navbar_background_color":"#F8F9FA","navbar_border_bottom_color":"#DEE2E6","navbar_color_href":"#000000","navbar_font_family":"Roboto, sans-serif","navbar_sign_in_btn_color":"#28A745","navbar_user_btn_color":"#7AC29A","footer_background_color":"#F8F9FA","footer_border_top_color":"#DEE2E6","footer_text_color":"#000000","footer_logos":[{"href":"http:\/\/lam.fr","title":"Laboratoire d'\''Astrophysique de Marseille","file":"\/logo_lam_s.png","display":20},{"href":"http:\/\/www.univ-amu.fr","title":"Aix*Marseille Universit\u00e9","file":"\/logo_amu_s.png","display":30},{"href":"http:\/\/anis.lam.fr","title":"AstroNomical Information System","file":"\/cesam_anis40.png","display":50},{"href":"http:\/\/cesam.lam.fr","title":"Centre de donn\u00e9es Astrophysique de Marseille","file":"\/logo_cesam_s.png","display":10},{"href":"http:\/\/www.insu.cnrs.fr","title":"Institut National des Sciences de l'\''Univers","file":"\/logo_insu_s.png","display":40}],"family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_background_color":"#FFFFFF","family_color":"#212529","progress_bar_title":"Dataset search","progress_bar_title_color":"#000000","progress_bar_subtitle":"Select a dataset, add criteria, select output columns and display the result.","progress_bar_subtitle_color":"#6C757D","progress_bar_step_dataset_title":"Dataset selection","progress_bar_step_criteria_title":"Search criteria","progress_bar_step_output_title":"Output columns","progress_bar_step_result_title":"Result table","progress_bar_color":"#E9ECEF","progress_bar_active_color":"#7AC29A","progress_bar_circle_color":"#FFFFFF","progress_bar_circle_icon_color":"#CCCCCC","progress_bar_circle_icon_active_color":"#FFFFFF","progress_bar_text_color":"#91B2BF","result_header_background_color":"#E9ECEF","result_header_text_color":"#000000","result_header_btn_color":"#007BFF","result_header_btn_hover_color":"#0069D9","result_header_btn_text_color":"#FFFFFF","result_datatable_bordered":true,"result_datatable_border_color":"#DEE2E6","result_datatable_header_background_color":"#FFFFFF","result_datatable_header_text_color":"#000000","result_datatable_rows_background_color":"#FFFFFF","result_datatable_rows_text_color":"#000000","result_datatable_sorted_color":"#C5C5C5","result_datatable_sorted_active_color":"#000000","result_datatable_link_color":"#007BFF","result_datatable_link_hover_color":"#0056B3","result_datatable_rows_selected_color":"#7AC29A","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance
+curl -d '{"name":"default","label":"Default instance","description":"Instance for the test","scientific_manager":"M. Durand","instrument":"Multiple","wavelength_domain":"Visible imaging / Spectroscopy","display":10,"data_path":"\/DEFAULT","files_path":"\/INSTANCE_FILES","public":true,"portal_logo":"","design_color":"#7AC29A","design_background_color":"#ffffff","design_logo":"/logo.png","design_favicon":"/favicon.ico","navbar_background_color":"#F8F9FA","navbar_border_bottom_color":"#DEE2E6","navbar_color_href":"#000000","navbar_font_family":"Roboto, sans-serif","navbar_sign_in_btn_color":"#28A745","navbar_user_btn_color":"#7AC29A","footer_background_color":"#F8F9FA","footer_border_top_color":"#DEE2E6","footer_text_color":"#000000","footer_logos":[{"href":"http:\/\/lam.fr","title":"Laboratoire d'\''Astrophysique de Marseille","file":"\/logo_lam_s.png","display":20},{"href":"http:\/\/www.univ-amu.fr","title":"Aix*Marseille Universit\u00e9","file":"\/logo_amu_s.png","display":30},{"href":"http:\/\/anis.lam.fr","title":"AstroNomical Information System","file":"\/cesam_anis40.png","display":50},{"href":"http:\/\/cesam.lam.fr","title":"Centre de donn\u00e9es Astrophysique de Marseille","file":"\/logo_cesam_s.png","display":10},{"href":"http:\/\/www.insu.cnrs.fr","title":"Institut National des Sciences de l'\''Univers","file":"\/logo_insu_s.png","display":40}],"family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_background_color":"#FFFFFF","family_color":"#212529","progress_bar_title":"Dataset search","progress_bar_title_color":"#000000","progress_bar_subtitle":"Select a dataset, add criteria, select output columns and display the result.","progress_bar_subtitle_color":"#6C757D","progress_bar_step_dataset_title":"Dataset selection","progress_bar_step_criteria_title":"Search criteria","progress_bar_step_output_title":"Output columns","progress_bar_step_result_title":"Result table","progress_bar_color":"#E9ECEF","progress_bar_active_color":"#7AC29A","progress_bar_circle_color":"#FFFFFF","progress_bar_circle_icon_color":"#CCCCCC","progress_bar_circle_icon_active_color":"#FFFFFF","progress_bar_text_color":"#91B2BF","dataset_select_btn_color":"#6C757D","dataset_select_btn_hover_color":"#6C757D","dataset_select_btn_text_color":"#FFFFFF","result_header_background_color":"#E9ECEF","result_header_text_color":"#000000","result_header_btn_color":"#007BFF","result_header_btn_hover_color":"#0069D9","result_header_btn_text_color":"#FFFFFF","result_datatable_bordered":true,"result_datatable_border_color":"#DEE2E6","result_datatable_header_background_color":"#FFFFFF","result_datatable_header_text_color":"#000000","result_datatable_rows_background_color":"#FFFFFF","result_datatable_rows_text_color":"#000000","result_datatable_sorted_color":"#C5C5C5","result_datatable_sorted_active_color":"#000000","result_datatable_link_color":"#007BFF","result_datatable_link_hover_color":"#0056B3","result_datatable_rows_selected_color":"#7AC29A","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance
 
 # Add dataset families
 curl -d '{"label":"Default dataset family","display":10,"opened":true}' --header 'Content-Type: application/json' -X POST http://localhost/instance/default/dataset-family
diff --git a/server/doctrine-proxy/__CG__AppEntityInstance.php b/server/doctrine-proxy/__CG__AppEntityInstance.php
index 984e175b..5f9a8a35 100644
--- a/server/doctrine-proxy/__CG__AppEntityInstance.php
+++ b/server/doctrine-proxy/__CG__AppEntityInstance.php
@@ -67,10 +67,10 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
     public function __sleep()
     {
         if ($this->__isInitialized__) {
-            return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'footerLogos', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
+            return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'footerLogos', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
         }
 
-        return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'footerLogos', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
+        return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'footerLogos', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
     }
 
     /**
@@ -1160,6 +1160,72 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setProgressBarTextColor($progressBarTextColor);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getDatasetSelectBtnColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDatasetSelectBtnColor', []);
+
+        return parent::getDatasetSelectBtnColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setDatasetSelectBtnColor($datasetSelectBtnColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDatasetSelectBtnColor', [$datasetSelectBtnColor]);
+
+        return parent::setDatasetSelectBtnColor($datasetSelectBtnColor);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getDatasetSelectBtnHoverColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDatasetSelectBtnHoverColor', []);
+
+        return parent::getDatasetSelectBtnHoverColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setDatasetSelectBtnHoverColor($datasetSelectBtnHoverColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDatasetSelectBtnHoverColor', [$datasetSelectBtnHoverColor]);
+
+        return parent::setDatasetSelectBtnHoverColor($datasetSelectBtnHoverColor);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getDatasetSelectBtnTextColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDatasetSelectBtnTextColor', []);
+
+        return parent::getDatasetSelectBtnTextColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setDatasetSelectBtnTextColor($datasetSelectBtnTextColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDatasetSelectBtnTextColor', [$datasetSelectBtnTextColor]);
+
+        return parent::setDatasetSelectBtnTextColor($datasetSelectBtnTextColor);
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/server/src/Action/InstanceAction.php b/server/src/Action/InstanceAction.php
index 4ec43ed5..8c4f4219 100644
--- a/server/src/Action/InstanceAction.php
+++ b/server/src/Action/InstanceAction.php
@@ -108,6 +108,9 @@ final class InstanceAction extends AbstractAction
                 'progress_bar_circle_icon_color',
                 'progress_bar_circle_icon_active_color',
                 'progress_bar_text_color',
+                'dataset_select_btn_color',
+                'dataset_select_btn_hover_color',
+                'dataset_select_btn_text_color',
                 'result_header_background_color',
                 'result_header_text_color',
                 'result_header_btn_color',
@@ -213,6 +216,9 @@ final class InstanceAction extends AbstractAction
         $instance->setProgressBarCircleIconColor($parsedBody['progress_bar_circle_icon_color']);
         $instance->setProgressBarCircleIconActiveColor($parsedBody['progress_bar_circle_icon_active_color']);
         $instance->setProgressBarTextColor($parsedBody['progress_bar_text_color']);
+        $instance->setDatasetSelectBtnColor($parsedBody['dataset_select_btn_color']);
+        $instance->setDatasetSelectBtnHoverColor($parsedBody['dataset_select_btn_hover_color']);
+        $instance->setDatasetSelectBtnTextColor($parsedBody['dataset_select_btn_text_color']);
         $instance->setResultHeaderBackgroundColor($parsedBody['result_header_background_color']);
         $instance->setResultHeaderTextColor($parsedBody['result_header_text_color']);
         $instance->setResultHeaderBtnColor($parsedBody['result_header_btn_color']);
diff --git a/server/src/Action/InstanceListAction.php b/server/src/Action/InstanceListAction.php
index ae19e862..acc58ade 100644
--- a/server/src/Action/InstanceListAction.php
+++ b/server/src/Action/InstanceListAction.php
@@ -108,6 +108,9 @@ final class InstanceListAction extends AbstractAction
                 'progress_bar_circle_icon_color',
                 'progress_bar_circle_icon_active_color',
                 'progress_bar_text_color',
+                'dataset_select_btn_color',
+                'dataset_select_btn_hover_color',
+                'dataset_select_btn_text_color',
                 'result_header_background_color',
                 'result_header_text_color',
                 'result_header_btn_color',
@@ -207,6 +210,9 @@ final class InstanceListAction extends AbstractAction
         $instance->setProgressBarCircleIconColor($parsedBody['progress_bar_circle_icon_color']);
         $instance->setProgressBarCircleIconActiveColor($parsedBody['progress_bar_circle_icon_active_color']);
         $instance->setProgressBarTextColor($parsedBody['progress_bar_text_color']);
+        $instance->setDatasetSelectBtnColor($parsedBody['dataset_select_btn_color']);
+        $instance->setDatasetSelectBtnHoverColor($parsedBody['dataset_select_btn_hover_color']);
+        $instance->setDatasetSelectBtnTextColor($parsedBody['dataset_select_btn_text_color']);
         $instance->setResultHeaderBackgroundColor($parsedBody['result_header_background_color']);
         $instance->setResultHeaderTextColor($parsedBody['result_header_text_color']);
         $instance->setResultHeaderBtnColor($parsedBody['result_header_btn_color']);
diff --git a/server/src/Entity/Instance.php b/server/src/Entity/Instance.php
index 58fe1bc4..3963bff9 100644
--- a/server/src/Entity/Instance.php
+++ b/server/src/Entity/Instance.php
@@ -351,6 +351,27 @@ class Instance implements \JsonSerializable
      */
     protected $progressBarTextColor;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="dataset_select_btn_color", nullable=false, options={"default" : "#6C757D"})
+     */
+    protected $datasetSelectBtnColor;
+
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="dataset_select_btn_hover_color", nullable=false, options={"default" : "#6C757D"})
+     */
+    protected $datasetSelectBtnHoverColor;
+
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="dataset_select_btn_text_color", nullable=false, options={"default" : "#FFFFFF"})
+     */
+    protected $datasetSelectBtnTextColor;
+
     /**
      * @var string
      *
@@ -1006,6 +1027,36 @@ class Instance implements \JsonSerializable
         $this->progressBarTextColor = $progressBarTextColor;
     }
 
+    public function getDatasetSelectBtnColor()
+    {
+        return $this->datasetSelectBtnColor;
+    }
+
+    public function setDatasetSelectBtnColor($datasetSelectBtnColor)
+    {
+        $this->datasetSelectBtnColor = $datasetSelectBtnColor;
+    }
+
+    public function getDatasetSelectBtnHoverColor()
+    {
+        return $this->datasetSelectBtnHoverColor;
+    }
+
+    public function setDatasetSelectBtnHoverColor($datasetSelectBtnHoverColor)
+    {
+        $this->datasetSelectBtnHoverColor = $datasetSelectBtnHoverColor;
+    }
+
+    public function getDatasetSelectBtnTextColor()
+    {
+        return $this->datasetSelectBtnTextColor;
+    }
+
+    public function setDatasetSelectBtnTextColor($datasetSelectBtnTextColor)
+    {
+        $this->datasetSelectBtnTextColor = $datasetSelectBtnTextColor;
+    }
+
     public function getResultHeaderBackgroundColor()
     {
         return $this->resultHeaderBackgroundColor;
@@ -1328,6 +1379,9 @@ class Instance implements \JsonSerializable
             'progress_bar_circle_icon_color' => $this->getProgressBarCircleIconColor(),
             'progress_bar_circle_icon_active_color' => $this->getProgressBarCircleIconActiveColor(),
             'progress_bar_text_color' => $this->getProgressBarTextColor(),
+            'dataset_select_btn_color' => $this->getDatasetSelectBtnColor(),
+            'dataset_select_btn_hover_color' => $this->getDatasetSelectBtnHoverColor(),
+            'dataset_select_btn_text_color' => $this->getDatasetSelectBtnTextColor(),
             'result_header_background_color' => $this->getResultHeaderBackgroundColor(),
             'result_header_text_color' => $this->getResultHeaderTextColor(),
             'result_header_btn_color' => $this->getResultHeaderBtnColor(),
diff --git a/server/tests/Action/InstanceActionTest.php b/server/tests/Action/InstanceActionTest.php
index 0142b498..38b2afb1 100644
--- a/server/tests/Action/InstanceActionTest.php
+++ b/server/tests/Action/InstanceActionTest.php
@@ -122,6 +122,9 @@ final class InstanceActionTest extends TestCase
             'progress_bar_circle_icon_color' => '#CCCCCC',
             'progress_bar_circle_icon_active_color' => '#FFFFFF',
             'progress_bar_text_color' => '#91B2BF',
+            'dataset_select_btn_color' => '#6C757D',
+            'dataset_select_btn_hover_color' => '#6C757D',
+            'dataset_select_btn_text_color' => '#FFFFFF',
             'result_header_background_color' => '#E9ECEF',
             'result_header_text_color' => '#000000',
             'result_header_btn_color' => '#007BFF',
diff --git a/server/tests/Action/InstanceListActionTest.php b/server/tests/Action/InstanceListActionTest.php
index f376bae5..360e7516 100644
--- a/server/tests/Action/InstanceListActionTest.php
+++ b/server/tests/Action/InstanceListActionTest.php
@@ -106,6 +106,9 @@ final class InstanceListActionTest extends TestCase
             'progress_bar_circle_icon_color' => '#CCCCCC',
             'progress_bar_circle_icon_active_color' => '#FFFFFF',
             'progress_bar_text_color' => '#91B2BF',
+            'dataset_select_btn_color' => '#6C757D',
+            'dataset_select_btn_hover_color' => '#6C757D',
+            'dataset_select_btn_text_color' => '#FFFFFF',
             'result_header_background_color' => '#E9ECEF',
             'result_header_text_color' => '#000000',
             'result_header_btn_color' => '#007BFF',
-- 
GitLab