From 2cd68247538596dd8f7af556208ec350a707aedf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Tue, 27 Sep 2022 11:15:35 +0200
Subject: [PATCH] #78 => done

---
 .../components/instance-form.component.html   | 40 ++++++++
 .../components/instance-form.component.ts     |  4 +
 .../app/instance/instance.component.spec.ts   |  4 +
 .../components/progress-bar.component.html    |  4 +-
 .../components/progress-bar.component.scss    |  4 -
 .../components/progress-bar.component.spec.ts | 10 +-
 .../components/progress-bar.component.ts      |  2 +
 .../effects/search-multiple.effects.spec.ts   |  4 +
 .../app/metamodel/models/instance.model.ts    |  4 +
 client/src/test-data.ts                       | 12 +++
 conf-dev/create-db.sh                         |  2 +-
 .../__CG__AppEntityInstance.php               | 92 ++++++++++++++++++-
 server/src/Action/InstanceAction.php          |  8 ++
 server/src/Action/InstanceListAction.php      |  8 ++
 server/src/Entity/Instance.php                | 74 +++++++++++++++
 server/tests/Action/InstanceActionTest.php    |  4 +
 .../tests/Action/InstanceListActionTest.php   |  4 +
 17 files changed, 270 insertions(+), 10 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 5f55899a..185e0603 100644
--- a/client/src/app/admin/instance/components/instance-form.component.html
+++ b/client/src/app/admin/instance/components/instance-form.component.html
@@ -229,10 +229,30 @@
                 <label for="progress_bar_title">Progress bar title</label>
                 <input type="text" class="form-control" id="progress_bar_title" formControlName="progress_bar_title">
             </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_title_color_picker">Progress bar title color (picker)</label>
+                    <input class="form-control" type="color" id="progress_bar_title_color_picker" [value]="form.value.progress_bar_title_color" formControlName="progress_bar_title_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_title_color_input">Progress bar title color (value)</label>
+                    <input type="text" class="form-control" id="progress_bar_title_color_input" [value]="form.value.progress_bar_title_color" formControlName="progress_bar_title_color">
+                </div>
+            </div>
             <div class="form-group">
                 <label for="progress_bar_subtitle">Progress bar subtitle</label>
                 <input type="text" class="form-control" id="progress_bar_subtitle" formControlName="progress_bar_subtitle">
             </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_subtitle_color_picker">Progress bar subtitle color (picker)</label>
+                    <input class="form-control" type="color" id="progress_bar_subtitle_color_picker" [value]="form.value.progress_bar_subtitle_color" formControlName="progress_bar_subtitle_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_subtitle_color_input">Progress bar title color (value)</label>
+                    <input type="text" class="form-control" id="progress_bar_subtitle_color_input" [value]="form.value.progress_bar_subtitle_color" formControlName="progress_bar_subtitle_color">
+                </div>
+            </div>
             <div class="form-row">
                 <div class="form-group col-md-6">
                     <label for="progress_bar_color_picker">Progress bar color (picker)</label>
@@ -263,6 +283,26 @@
                     <input type="text" class="form-control" id="progress_bar_circle_color_input" [value]="form.value.progress_bar_circle_color" formControlName="progress_bar_circle_color">
                 </div>
             </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_circle_icon_color_picker">Progress bar icon circle color (picker)</label>
+                    <input class="form-control" type="color" id="progress_bar_circle_icon_color_picker" [value]="form.value.progress_bar_circle_icon_color" formControlName="progress_bar_circle_icon_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_circle_icon_color_input">Progress bar icon cirlce color (value)</label>
+                    <input type="text" class="form-control" id="progress_bar_circle_icon_color_input" [value]="form.value.progress_bar_circle_icon_color" formControlName="progress_bar_circle_icon_color">
+                </div>
+            </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_circle_icon_active_color_picker">Progress bar icon circle active color (picker)</label>
+                    <input class="form-control" type="color" id="progress_bar_circle_icon_active_color_picker" [value]="form.value.progress_bar_circle_icon_active_color" formControlName="progress_bar_circle_icon_active_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="progress_bar_circle_icon_active_color_input">Progress bar icon cirlce active color (value)</label>
+                    <input type="text" class="form-control" id="progress_bar_circle_icon_active_color" [value]="form.value.progress_bar_circle_icon_active_color" formControlName="progress_bar_circle_icon_active_color">
+                </div>
+            </div>
             <div class="form-row">
                 <div class="form-group col-md-6">
                     <label for="progress_bar_text_color_picker">Progress bar text color (picker)</label>
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 9f515f0d..4aff6bb2 100644
--- a/client/src/app/admin/instance/components/instance-form.component.ts
+++ b/client/src/app/admin/instance/components/instance-form.component.ts
@@ -53,10 +53,14 @@ export class InstanceFormComponent implements OnInit {
         family_title_bold: new UntypedFormControl(false),
         family_color: new UntypedFormControl('#212529'),
         progress_bar_title: new UntypedFormControl('Dataset search'),
+        progress_bar_title_color: new UntypedFormControl('#000000'),
         progress_bar_subtitle: new UntypedFormControl('Select a dataset, add criteria, select output columns and display the result.'),
+        progress_bar_subtitle_color: new UntypedFormControl('#6C757D'),
         progress_bar_color: new UntypedFormControl('#E9ECEF'),
         progress_bar_active_color: new UntypedFormControl('#7AC29A'),
         progress_bar_circle_color: new UntypedFormControl('#FFFFFF'),
+        progress_bar_circle_icon_color: new UntypedFormControl('#CCCCCC'),
+        progress_bar_circle_icon_active_color: new UntypedFormControl('#FFFFFF'),
         progress_bar_text_color: new UntypedFormControl('#91B2BF'),
         samp_enabled: new UntypedFormControl(true),
         back_to_portal: new UntypedFormControl(true),
diff --git a/client/src/app/instance/instance.component.spec.ts b/client/src/app/instance/instance.component.spec.ts
index add09718..32ae9ff6 100644
--- a/client/src/app/instance/instance.component.spec.ts
+++ b/client/src/app/instance/instance.component.spec.ts
@@ -102,10 +102,14 @@ describe('[Instance] InstanceComponent', () => {
             family_title_bold: false,
             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_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',
             samp_enabled: true,
             back_to_portal: true,
diff --git a/client/src/app/instance/search/components/progress-bar.component.html b/client/src/app/instance/search/components/progress-bar.component.html
index 7a453e3a..2ace1c67 100644
--- a/client/src/app/instance/search/components/progress-bar.component.html
+++ b/client/src/app/instance/search/components/progress-bar.component.html
@@ -1,7 +1,7 @@
 <div class="row text-center">
     <div class="col">
-        <h1>{{ instance.progress_bar_title }}</h1>
-        <p class="text-muted">{{ instance.progress_bar_subtitle }}</p>
+        <h1 [ngStyle]="{'color': instance.progress_bar_title_color }">{{ instance.progress_bar_title }}</h1>
+        <p [ngStyle]="{'color': instance.progress_bar_subtitle_color }">{{ instance.progress_bar_subtitle }}</p>
     </div>
 </div>
 <div class="progress-navigation">
diff --git a/client/src/app/instance/search/components/progress-bar.component.scss b/client/src/app/instance/search/components/progress-bar.component.scss
index 9f69ac99..598ec575 100644
--- a/client/src/app/instance/search/components/progress-bar.component.scss
+++ b/client/src/app/instance/search/components/progress-bar.component.scss
@@ -74,10 +74,6 @@
     background-color: transparent;
 }
 
-.nav-item.active .icon-circle {
-    color: white !important;
-}
-
 .nav-link.disabled {
     cursor: not-allowed;
 }
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 ba0805ad..4a0d1bd9 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
@@ -75,10 +75,14 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             family_title_bold: false,
             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_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',
             samp_enabled: true,
             back_to_portal: true,
@@ -127,10 +131,14 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             family_title_bold: false,
             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_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',
             samp_enabled: true,
             back_to_portal: true,
@@ -146,7 +154,7 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             nb_datasets: 2
         };
         component.currentStep = 'a';
-        expect(component.getNavItemIconCircleStyle('a', false)).toEqual({ 'background-color': '#7AC29A', 'border-color': '#7AC29A' });
+        expect(component.getNavItemIconCircleStyle('a', false)).toEqual({ 'background-color': '#7AC29A', 'border-color': '#7AC29A', 'color': '#FFFFFF' });
         expect(component.getNavItemIconCircleStyle('b', true)).toEqual({ 'color': '#7AC29A', 'border-color': '#7AC29A', 'background-color': '#FFFFFF' });
     });
 });
diff --git a/client/src/app/instance/search/components/progress-bar.component.ts b/client/src/app/instance/search/components/progress-bar.component.ts
index 637c8772..6bdd6b9c 100644
--- a/client/src/app/instance/search/components/progress-bar.component.ts
+++ b/client/src/app/instance/search/components/progress-bar.component.ts
@@ -79,6 +79,7 @@ export class ProgressBarComponent {
         if (this.currentStep === currentStep) {
             style['border-color'] = this.instance.progress_bar_active_color;
             style['background-color'] = this.instance.progress_bar_active_color;
+            style['color'] = this.instance.progress_bar_circle_icon_active_color;
         } else if (checked) {
             style['background-color'] = this.instance.progress_bar_circle_color;
             style['border-color'] = this.instance.progress_bar_active_color;
@@ -86,6 +87,7 @@ export class ProgressBarComponent {
         } else {
             style['border-color'] = this.instance.progress_bar_color;
             style['background-color'] = this.instance.progress_bar_circle_color;
+            style['color'] = this.instance.progress_bar_circle_icon_color;
         }
         return style;
     }
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 88a16628..f442705f 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
@@ -157,7 +157,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     family_title_bold: false,
                     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_color: '#E9ECEF',
                     progress_bar_active_color: '#7AC29A',
                     progress_bar_circle_color: '#FFFFFF',
@@ -252,7 +254,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     family_title_bold: false,
                     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_color: '#E9ECEF',
                     progress_bar_active_color: '#7AC29A',
                     progress_bar_circle_color: '#FFFFFF',
diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts
index 461faff6..73a90c24 100644
--- a/client/src/app/metamodel/models/instance.model.ts
+++ b/client/src/app/metamodel/models/instance.model.ts
@@ -40,10 +40,14 @@ export interface Instance {
     family_title_bold: boolean;
     family_color: string;
     progress_bar_title: string;
+    progress_bar_title_color: string;
     progress_bar_subtitle: string;
+    progress_bar_subtitle_color: string;
     progress_bar_color: string;
     progress_bar_active_color: string;
     progress_bar_circle_color: string;
+    progress_bar_circle_icon_color: string;
+    progress_bar_circle_icon_active_color: string;
     progress_bar_text_color: string;
     samp_enabled: boolean;
     back_to_portal: boolean;
diff --git a/client/src/test-data.ts b/client/src/test-data.ts
index 9c4787a3..62671a64 100644
--- a/client/src/test-data.ts
+++ b/client/src/test-data.ts
@@ -72,10 +72,14 @@ export const INSTANCE_LIST: Instance[] = [
         family_title_bold: false,
         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_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',
         samp_enabled: true,
         back_to_portal: true,
@@ -118,10 +122,14 @@ export const INSTANCE_LIST: Instance[] = [
         family_title_bold: false,
         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_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',
         samp_enabled: true,
         back_to_portal: true,
@@ -166,10 +174,14 @@ export const INSTANCE: Instance = {
     family_title_bold: false,
     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_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',
     samp_enabled: true,
     back_to_portal: true,
diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh
index 41a3c5ec..622ea255 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","footer_background_color":"#F8F9FA","footer_border_top_color":"#DEE2E6","footer_text_color":"#000000","family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_color":"#212529","progress_bar_title":"Dataset search","progress_bar_subtitle":"Select a dataset, add criteria, select output columns and display the result.","progress_bar_color":"#E9ECEF","progress_bar_active_color":"#7AC29A","progress_bar_circle_color":"#FFFFFF","progress_bar_text_color":"#91B2BF","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","footer_background_color":"#F8F9FA","footer_border_top_color":"#DEE2E6","footer_text_color":"#000000","family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"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_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","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 9eb14cbd..58ffa63a 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', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'progressBarTitle', 'progressBarSubtitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarTextColor', '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', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', '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', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'progressBarTitle', 'progressBarSubtitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarTextColor', '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', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
     }
 
     /**
@@ -764,6 +764,28 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setProgressBarTitle($progressBarTitle);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getProgressBarTitleColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProgressBarTitleColor', []);
+
+        return parent::getProgressBarTitleColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setProgressBarTitleColor($progressBarTitleColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProgressBarTitleColor', [$progressBarTitleColor]);
+
+        return parent::setProgressBarTitleColor($progressBarTitleColor);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -786,6 +808,28 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setProgressBarSubtitle($progressBarSubtitle);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getProgressBarSubtitleColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProgressBarSubtitleColor', []);
+
+        return parent::getProgressBarSubtitleColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setProgressBarSubtitleColor($progressBarSubtitleColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProgressBarSubtitleColor', [$progressBarSubtitleColor]);
+
+        return parent::setProgressBarSubtitleColor($progressBarSubtitleColor);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -852,6 +896,50 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setProgressBarCircleColor($progressBarCircleColor);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getProgressBarCircleIconColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProgressBarCircleIconColor', []);
+
+        return parent::getProgressBarCircleIconColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setProgressBarCircleIconColor($progressBarCircleIconColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProgressBarCircleIconColor', [$progressBarCircleIconColor]);
+
+        return parent::setProgressBarCircleIconColor($progressBarCircleIconColor);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getProgressBarCircleIconActiveColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProgressBarCircleIconActiveColor', []);
+
+        return parent::getProgressBarCircleIconActiveColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setProgressBarCircleIconActiveColor($progressBarCircleIconActiveColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProgressBarCircleIconActiveColor', [$progressBarCircleIconActiveColor]);
+
+        return parent::setProgressBarCircleIconActiveColor($progressBarCircleIconActiveColor);
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/server/src/Action/InstanceAction.php b/server/src/Action/InstanceAction.php
index f7f251a8..0f621d60 100644
--- a/server/src/Action/InstanceAction.php
+++ b/server/src/Action/InstanceAction.php
@@ -90,10 +90,14 @@ final class InstanceAction extends AbstractAction
                 'family_title_bold',
                 'family_color',
                 'progress_bar_title',
+                'progress_bar_title_color',
                 'progress_bar_subtitle',
+                'progress_bar_subtitle_color',
                 'progress_bar_color',
                 'progress_bar_active_color',
                 'progress_bar_circle_color',
+                'progress_bar_circle_icon_color',
+                'progress_bar_circle_icon_active_color',
                 'progress_bar_text_color',
                 'samp_enabled',
                 'back_to_portal',
@@ -166,10 +170,14 @@ final class InstanceAction extends AbstractAction
         $instance->setFamilyTitleBold($parsedBody['family_title_bold']);
         $instance->setFamilyColor($parsedBody['family_color']);
         $instance->setProgressBarTitle($parsedBody['progress_bar_title']);
+        $instance->setProgressBarTitleColor($parsedBody['progress_bar_title_color']);
         $instance->setProgressBarSubtitle($parsedBody['progress_bar_subtitle']);
+        $instance->setProgressBarSubtitleColor($parsedBody['progress_bar_subtitle_color']);
         $instance->setProgressBarColor($parsedBody['progress_bar_color']);
         $instance->setProgressBarActiveColor($parsedBody['progress_bar_active_color']);
         $instance->setProgressBarCircleColor($parsedBody['progress_bar_circle_color']);
+        $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->setSampEnabled($parsedBody['samp_enabled']);
         $instance->setUserMenuEnabled($parsedBody['user_menu_enabled']);
diff --git a/server/src/Action/InstanceListAction.php b/server/src/Action/InstanceListAction.php
index 3480586e..ce95c999 100644
--- a/server/src/Action/InstanceListAction.php
+++ b/server/src/Action/InstanceListAction.php
@@ -90,10 +90,14 @@ final class InstanceListAction extends AbstractAction
                 'family_title_bold',
                 'family_color',
                 'progress_bar_title',
+                'progress_bar_title_color',
                 'progress_bar_subtitle',
+                'progress_bar_subtitle_color',
                 'progress_bar_color',
                 'progress_bar_active_color',
                 'progress_bar_circle_color',
+                'progress_bar_circle_icon_color',
+                'progress_bar_circle_icon_active_color',
                 'progress_bar_text_color',
                 'samp_enabled',
                 'back_to_portal',
@@ -160,10 +164,14 @@ final class InstanceListAction extends AbstractAction
         $instance->setFamilyTitleBold($parsedBody['family_title_bold']);
         $instance->setFamilyColor($parsedBody['family_color']);
         $instance->setProgressBarTitle($parsedBody['progress_bar_title']);
+        $instance->setProgressBarTitleColor($parsedBody['progress_bar_title_color']);
         $instance->setProgressBarSubtitle($parsedBody['progress_bar_subtitle']);
+        $instance->setProgressBarSubtitleColor($parsedBody['progress_bar_subtitle_color']);
         $instance->setProgressBarColor($parsedBody['progress_bar_color']);
         $instance->setProgressBarActiveColor($parsedBody['progress_bar_active_color']);
         $instance->setProgressBarCircleColor($parsedBody['progress_bar_circle_color']);
+        $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->setSampEnabled($parsedBody['samp_enabled']);
         $instance->setBackToPortal($parsedBody['back_to_portal']);
diff --git a/server/src/Entity/Instance.php b/server/src/Entity/Instance.php
index dc66062c..95c42830 100644
--- a/server/src/Entity/Instance.php
+++ b/server/src/Entity/Instance.php
@@ -213,6 +213,13 @@ class Instance implements \JsonSerializable
      */
     protected $progressBarTitle;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="progress_bar_title_color", nullable=false, options={"default" : "#000000"})
+     */
+    protected $progressBarTitleColor;
+
     /**
      * @var string
      *
@@ -222,6 +229,13 @@ class Instance implements \JsonSerializable
      */
     protected $progressBarSubtitle;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="progress_bar_subtitle_color", nullable=false, options={"default" : "#6C757D"})
+     */
+    protected $progressBarSubtitleColor;
+
     /**
      * @var string
      *
@@ -243,6 +257,22 @@ class Instance implements \JsonSerializable
      */
     protected $progressBarCircleColor;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="progress_bar_circle_icon_color", nullable=false, options={"default" : "#CCCCCC"})
+     */
+    protected $progressBarCircleIconColor;
+
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="progress_bar_circle_icon_active_color", nullable=false, options={
+     *     "default" : "#FFFFFF"
+     * })
+     */
+    protected $progressBarCircleIconActiveColor;
+
     /**
      * @var string
      *
@@ -599,6 +629,16 @@ class Instance implements \JsonSerializable
         $this->progressBarTitle = $progressBarTitle;
     }
 
+    public function getProgressBarTitleColor()
+    {
+        return $this->progressBarTitleColor;
+    }
+
+    public function setProgressBarTitleColor($progressBarTitleColor)
+    {
+        $this->progressBarTitleColor = $progressBarTitleColor;
+    }
+
     public function getProgressBarSubtitle()
     {
         return $this->progressBarSubtitle;
@@ -609,6 +649,16 @@ class Instance implements \JsonSerializable
         $this->progressBarSubtitle = $progressBarSubtitle;
     }
 
+    public function getProgressBarSubtitleColor()
+    {
+        return $this->progressBarSubtitleColor;
+    }
+
+    public function setProgressBarSubtitleColor($progressBarSubtitleColor)
+    {
+        $this->progressBarSubtitleColor = $progressBarSubtitleColor;
+    }
+
     public function getProgressBarColor()
     {
         return $this->progressBarColor;
@@ -639,6 +689,26 @@ class Instance implements \JsonSerializable
         $this->progressBarCircleColor = $progressBarCircleColor;
     }
 
+    public function getProgressBarCircleIconColor()
+    {
+        return $this->progressBarCircleIconColor;
+    }
+
+    public function setProgressBarCircleIconColor($progressBarCircleIconColor)
+    {
+        $this->progressBarCircleIconColor = $progressBarCircleIconColor;
+    }
+
+    public function getProgressBarCircleIconActiveColor()
+    {
+        return $this->progressBarCircleIconActiveColor;
+    }
+
+    public function setProgressBarCircleIconActiveColor($progressBarCircleIconActiveColor)
+    {
+        $this->progressBarCircleIconActiveColor = $progressBarCircleIconActiveColor;
+    }
+
     public function getProgressBarTextColor()
     {
         return $this->progressBarTextColor;
@@ -793,10 +863,14 @@ class Instance implements \JsonSerializable
             'family_title_bold' => $this->getFamilyTitleBold(),
             'family_color' => $this->getFamilyColor(),
             'progress_bar_title' => $this->getProgressBarTitle(),
+            'progress_bar_title_color' => $this->getProgressBarTitleColor(),
             'progress_bar_subtitle' => $this->getProgressBarSubtitle(),
+            'progress_bar_subtitle_color' => $this->getProgressBarSubtitleColor(),
             'progress_bar_color' => $this->getProgressBarColor(),
             'progress_bar_active_color' => $this->getProgressBarActiveColor(),
             'progress_bar_circle_color' => $this->getProgressBarCircleColor(),
+            'progress_bar_circle_icon_color' => $this->getProgressBarCircleIconColor(),
+            'progress_bar_circle_icon_active_color' => $this->getProgressBarCircleIconActiveColor(),
             'progress_bar_text_color' => $this->getProgressBarTextColor(),
             'samp_enabled' => $this->getSampEnabled(),
             'back_to_portal' => $this->getBackToPortal(),
diff --git a/server/tests/Action/InstanceActionTest.php b/server/tests/Action/InstanceActionTest.php
index e49c8a66..6dabfac7 100644
--- a/server/tests/Action/InstanceActionTest.php
+++ b/server/tests/Action/InstanceActionTest.php
@@ -104,10 +104,14 @@ final class InstanceActionTest extends TestCase
             'family_title_bold' => false,
             '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_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',
             'samp_enabled' => true,
             'back_to_portal' => true,
diff --git a/server/tests/Action/InstanceListActionTest.php b/server/tests/Action/InstanceListActionTest.php
index 1cbd9326..d5f58185 100644
--- a/server/tests/Action/InstanceListActionTest.php
+++ b/server/tests/Action/InstanceListActionTest.php
@@ -88,10 +88,14 @@ final class InstanceListActionTest extends TestCase
             'family_title_bold' => false,
             '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_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',
             'home_component' => 'WelcomeComponent',
             'home_component_config' => '{}',
-- 
GitLab