From 92bc4590c0b2f5598d595c45bd510f6efa5b3e06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Sun, 23 Oct 2022 19:46:43 +0200
Subject: [PATCH] #89 => selected columns and pagination text color

---
 .../components/instance-form.component.html   | 22 +++++++++
 .../components/instance-form.component.ts     |  2 +
 .../app/instance/instance.component.spec.ts   |  2 +
 client/src/app/instance/instance.component.ts |  4 ++
 .../output/output-by-category.component.html  |  2 +-
 .../output/output-by-category.component.ts    |  1 -
 .../output/output-by-family.component.html    |  3 +-
 .../output/output-by-family.component.ts      |  1 -
 .../output/output-tabs.component.html         |  1 -
 .../output/output-tabs.component.ts           |  1 -
 .../components/progress-bar.component.spec.ts |  4 ++
 .../result/datatable.component.html           |  2 +-
 .../search/containers/output.component.html   |  1 -
 .../effects/search-multiple.effects.spec.ts   |  4 ++
 .../app/metamodel/models/instance.model.ts    | 12 +++--
 client/src/test-data.ts                       |  6 +++
 conf-dev/create-db.sh                         |  2 +-
 .../__CG__AppEntityInstance.php               | 48 ++++++++++++++++++-
 server/src/Action/InstanceAction.php          |  4 ++
 server/src/Action/InstanceListAction.php      |  4 ++
 server/src/Entity/Instance.php                | 38 +++++++++++++++
 server/tests/Action/InstanceActionTest.php    |  2 +
 .../tests/Action/InstanceListActionTest.php   |  2 +
 23 files changed, 151 insertions(+), 17 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 7cb4b4ab..18400ff0 100644
--- a/client/src/app/admin/instance/components/instance-form.component.html
+++ b/client/src/app/admin/instance/components/instance-form.component.html
@@ -555,6 +555,18 @@
                 </div>
             </div>
         </accordion-group>
+        <accordion-group heading="[Search] Design output columns" [isOpen]="false">
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="output_columns_selected_color_picker">Output columns selected color (picker)</label>
+                    <input class="form-control" type="color" id="output_columns_selected_color_picker" [value]="form.value.output_columns_selected_color" formControlName="output_columns_selected_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="output_columns_selected_color_input">Output columns selected color (value)</label>
+                    <input type="text" class="form-control" id="output_columns_selected_color_input" [value]="form.value.output_columns_selected_color" formControlName="output_columns_selected_color">
+                </div>
+            </div>
+        </accordion-group>
         <accordion-group heading="[Search] Design result datatable" [isOpen]="false">
             <div class="custom-control custom-switch mb-2">
                 <input class="custom-control-input" type="checkbox" id="result_datatable_bordered" name="result_datatable_bordered" formControlName="result_datatable_bordered">
@@ -660,6 +672,16 @@
                     <input type="text" class="form-control" id="result_datatable_rows_selected_color_input" [value]="form.value.result_datatable_rows_selected_color" formControlName="result_datatable_rows_selected_color">
                 </div>
             </div>
+            <div class="form-row">
+                <div class="form-group col-md-6">
+                    <label for="result_datatable_pagination_text_color_picker">Result datatable pagination text color (picker)</label>
+                    <input class="form-control" type="color" id="result_datatable_pagination_text_color_picker" [value]="form.value.result_datatable_pagination_text_color" formControlName="result_datatable_pagination_text_color">
+                </div>
+                <div class="form-group col-md-6">
+                    <label for="result_datatable_pagination_text_color_input">Result datatable pagination text color (value)</label>
+                    <input type="text" class="form-control" id="result_datatable_pagination_text_color_input" [value]="form.value.result_datatable_pagination_text_color" formControlName="result_datatable_pagination_text_color">
+                </div>
+            </div>
         </accordion-group>
         <accordion-group heading="Functionalities" [isOpen]="false">
             <div class="custom-control custom-switch mb-2">
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 62ede458..f06b34b9 100644
--- a/client/src/app/admin/instance/components/instance-form.component.ts
+++ b/client/src/app/admin/instance/components/instance-form.component.ts
@@ -90,6 +90,7 @@ export class InstanceFormComponent implements OnInit {
         search_info_btn_color: new UntypedFormControl('#007BFF'),
         search_info_btn_hover_color: new UntypedFormControl('#0069D9'),
         search_info_btn_text_color: new UntypedFormControl('#FFFFFF'),
+        output_columns_selected_color: new UntypedFormControl('#7AC29A'),
         result_datatable_bordered: new UntypedFormControl(true),
         result_datatable_border_color: new UntypedFormControl('#DEE2E6'),
         result_datatable_header_background_color: new UntypedFormControl('#FFFFFF'),
@@ -101,6 +102,7 @@ export class InstanceFormComponent implements OnInit {
         result_datatable_link_color: new UntypedFormControl('#007BFF'),
         result_datatable_link_hover_color: new UntypedFormControl('#0056B3'),
         result_datatable_rows_selected_color: new UntypedFormControl('#7AC29A'),
+        result_datatable_pagination_text_color: new UntypedFormControl('#212529'),
         samp_enabled: new UntypedFormControl(true),
         back_to_portal: new UntypedFormControl(true),
         user_menu_enabled: new UntypedFormControl(true),
diff --git a/client/src/app/instance/instance.component.spec.ts b/client/src/app/instance/instance.component.spec.ts
index 1d9b0ae9..7b37c0a4 100644
--- a/client/src/app/instance/instance.component.spec.ts
+++ b/client/src/app/instance/instance.component.spec.ts
@@ -137,6 +137,7 @@ describe('[Instance] InstanceComponent', () => {
             search_info_btn_color: '#007BFF',
             search_info_btn_hover_color: '#0069D9',
             search_info_btn_text_color: '#FFFFFF',
+            output_columns_selected_color: '#7AC29A',
             result_datatable_bordered: true,
             result_datatable_border_color: '#DEE2E6',
             result_datatable_header_background_color: '#FFFFFF',
@@ -148,6 +149,7 @@ describe('[Instance] InstanceComponent', () => {
             result_datatable_link_color: '#007BFF',
             result_datatable_link_hover_color: '#0056B3',
             result_datatable_rows_selected_color: '#7AC29A',
+            result_datatable_pagination_text_color: '#212529',
             samp_enabled: true,
             back_to_portal: true,
             user_menu_enabled: true,
diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts
index cdde22ad..65b337f2 100644
--- a/client/src/app/instance/instance.component.ts
+++ b/client/src/app/instance/instance.component.ts
@@ -168,6 +168,9 @@ export class InstanceComponent implements OnInit, OnDestroy {
                     });
                     this.style.setStyle('.search-dataset-selected', 'color', instance.dataset_selected_icon_color);
 
+                    // Output columns
+                    this.style.setStyle('.output_columns_selected', 'color', instance.output_columns_selected_color);
+
                     // Search info
                     this.style.setStyles('.anis-result-header.jumbotron', {
                         'background-color': instance.search_info_background_color,
@@ -203,6 +206,7 @@ export class InstanceComponent implements OnInit, OnDestroy {
                     this.style.setStyle('#datatable.table a.btn-outline-primary:hover', 'color', instance.result_datatable_link_hover_color);
                     this.style.setStyle('#datatable.table a.btn-outline-primary:hover', 'background-color', instance.result_datatable_rows_background_color);
                     this.style.setStyle('#datatable.table a.btn-outline-primary:hover', 'border-color', instance.result_datatable_link_hover_color);
+                    this.style.setStyle('.datatable-pagination', 'color', instance.result_datatable_pagination_text_color);
                 }
             }
         });
diff --git a/client/src/app/instance/search/components/output/output-by-category.component.html b/client/src/app/instance/search/components/output/output-by-category.component.html
index dde866cb..b9312f31 100644
--- a/client/src/app/instance/search/components/output/output-by-category.component.html
+++ b/client/src/app/instance/search/components/output/output-by-category.component.html
@@ -17,7 +17,7 @@
     <div *ngFor="let attribute of attributeList">
         <div *ngIf="isSelected(attribute.id)">
             <button class="btn btn-block text-left py-1 m-0 rounded-0" (click)="toggleSelection(attribute.id)">
-                <span class="fas fa-fw fa-check-square" [ngStyle]="{ 'color': designColor }"></span> 
+                <span class="fas fa-fw fa-check-square output_columns_selected"></span> 
                 &nbsp;
                 <app-attribute-label [label]="attribute.form_label" [description]="attribute.description"></app-attribute-label>
             </button>
diff --git a/client/src/app/instance/search/components/output/output-by-category.component.ts b/client/src/app/instance/search/components/output/output-by-category.component.ts
index 84e593e1..7ccac74c 100644
--- a/client/src/app/instance/search/components/output/output-by-category.component.ts
+++ b/client/src/app/instance/search/components/output/output-by-category.component.ts
@@ -25,7 +25,6 @@ export class OutputByCategoryComponent {
     @Input() categoryLabel: string;
     @Input() attributeList: Attribute[];
     @Input() outputList: number[];
-    @Input() designColor: string;
     @Input() isAllSelected: boolean;
     @Input() isAllUnselected: boolean;
     @Output() change: EventEmitter<number[]> = new EventEmitter();
diff --git a/client/src/app/instance/search/components/output/output-by-family.component.html b/client/src/app/instance/search/components/output/output-by-family.component.html
index b880a0bb..ab978a3c 100644
--- a/client/src/app/instance/search/components/output/output-by-family.component.html
+++ b/client/src/app/instance/search/components/output/output-by-family.component.html
@@ -4,8 +4,7 @@
         <app-output-by-category 
             [categoryLabel]="category.label" 
             [attributeList]="getAttributeByCategory(category.id)"
-            [outputList]="outputList" 
-            [designColor]="designColor"
+            [outputList]="outputList"
             [isAllSelected]="getIsAllSelected(category.id)"
             [isAllUnselected]="getIsAllUnselected(category.id)" 
             (change)="emitChange($event)">
diff --git a/client/src/app/instance/search/components/output/output-by-family.component.ts b/client/src/app/instance/search/components/output/output-by-family.component.ts
index 522f090c..a5adc6fe 100644
--- a/client/src/app/instance/search/components/output/output-by-family.component.ts
+++ b/client/src/app/instance/search/components/output/output-by-family.component.ts
@@ -25,7 +25,6 @@ export class OutputByFamilyComponent {
     @Input() outputCategoryList: OutputCategory[];
     @Input() attributeList: Attribute[];
     @Input() outputList: number[];
-    @Input() designColor: string;
     @Output() change: EventEmitter<number[]> = new EventEmitter();
 
     /**
diff --git a/client/src/app/instance/search/components/output/output-tabs.component.html b/client/src/app/instance/search/components/output/output-tabs.component.html
index 597dfc40..1d297378 100644
--- a/client/src/app/instance/search/components/output/output-tabs.component.html
+++ b/client/src/app/instance/search/components/output/output-tabs.component.html
@@ -13,7 +13,6 @@
             [attributeList]="attributeList"
             [outputCategoryList]="outputCategoryList" 
             [outputList]="outputList"
-            [designColor]="designColor"
             (change)="change.emit($event)">
         </app-output-by-family>
     </accordion-group>
diff --git a/client/src/app/instance/search/components/output/output-tabs.component.ts b/client/src/app/instance/search/components/output/output-tabs.component.ts
index 28cdb42f..fb7f25a5 100644
--- a/client/src/app/instance/search/components/output/output-tabs.component.ts
+++ b/client/src/app/instance/search/components/output/output-tabs.component.ts
@@ -25,6 +25,5 @@ export class OutputTabsComponent {
     @Input() outputCategoryList: OutputCategory[];
     @Input() attributeList: Attribute[];
     @Input() outputList: number[];
-    @Input() designColor: string;
     @Output() change: EventEmitter<number[]> = new EventEmitter();
 }
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 e78614a6..a48a6d91 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
@@ -110,6 +110,7 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             search_info_btn_color: '#007BFF',
             search_info_btn_hover_color: '#0069D9',
             search_info_btn_text_color: '#FFFFFF',
+            output_columns_selected_color: '#7AC29A',
             result_datatable_bordered: true,
             result_datatable_border_color: '#DEE2E6',
             result_datatable_header_background_color: '#FFFFFF',
@@ -121,6 +122,7 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             result_datatable_link_color: '#007BFF',
             result_datatable_link_hover_color: '#0056B3',
             result_datatable_rows_selected_color: '#7AC29A',
+            result_datatable_pagination_text_color: '#212529',
             samp_enabled: true,
             back_to_portal: true,
             user_menu_enabled: true,
@@ -203,6 +205,7 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             search_info_btn_color: '#007BFF',
             search_info_btn_hover_color: '#0069D9',
             search_info_btn_text_color: '#FFFFFF',
+            output_columns_selected_color: '#7AC29A',
             result_datatable_bordered: true,
             result_datatable_border_color: '#DEE2E6',
             result_datatable_header_background_color: '#FFFFFF',
@@ -214,6 +217,7 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => {
             result_datatable_link_color: '#007BFF',
             result_datatable_link_hover_color: '#0056B3',
             result_datatable_rows_selected_color: '#7AC29A',
+            result_datatable_pagination_text_color: '#212529',
             samp_enabled: true,
             back_to_portal: true,
             user_menu_enabled: true,
diff --git a/client/src/app/instance/search/components/result/datatable.component.html b/client/src/app/instance/search/components/result/datatable.component.html
index 04eadde0..313e0285 100644
--- a/client/src/app/instance/search/components/result/datatable.component.html
+++ b/client/src/app/instance/search/components/result/datatable.component.html
@@ -55,7 +55,7 @@
         </tbody>
     </table>
 </div>
-<div class="row mt-3">
+<div class="row mt-3 datatable-pagination">
     <div class="col">
         Show 
         <select class="custom-select" (change)="changeNbItems($event)">
diff --git a/client/src/app/instance/search/containers/output.component.html b/client/src/app/instance/search/containers/output.component.html
index bf62d14f..bef2a9cc 100644
--- a/client/src/app/instance/search/containers/output.component.html
+++ b/client/src/app/instance/search/containers/output.component.html
@@ -18,7 +18,6 @@
             [outputFamilyList]="outputFamilyList | async"
             [outputCategoryList]="outputCategoryList | async"
             [outputList]="outputList | async"
-            [designColor]="(instance | async).design_color"
             (change)="updateOutputList($event)">
         </app-output-tabs>
     </div>
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 379c5af8..702eef0c 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
@@ -192,6 +192,7 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     search_info_btn_color: '#007BFF',
                     search_info_btn_hover_color: '#0069D9',
                     search_info_btn_text_color: '#FFFFFF',
+                    output_columns_selected_color: '#7AC29A',
                     result_datatable_bordered: true,
                     result_datatable_border_color: '#DEE2E6',
                     result_datatable_header_background_color: '#FFFFFF',
@@ -203,6 +204,7 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     result_datatable_link_color: '#007BFF',
                     result_datatable_link_hover_color: '#0056B3',
                     result_datatable_rows_selected_color: '#7AC29A',
+                    result_datatable_pagination_text_color: '#212529',
                     samp_enabled: true,
                     back_to_portal: true,
                     user_menu_enabled: true,
@@ -328,6 +330,7 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     search_info_btn_color: '#007BFF',
                     search_info_btn_hover_color: '#0069D9',
                     search_info_btn_text_color: '#FFFFFF',
+                    output_columns_selected_color: '#7AC29A',
                     result_datatable_bordered: true,
                     result_datatable_border_color: '#DEE2E6',
                     result_datatable_header_background_color: '#FFFFFF',
@@ -339,6 +342,7 @@ describe('[Instance][Store] SearchMultipleEffects', () => {
                     result_datatable_link_color: '#007BFF',
                     result_datatable_link_hover_color: '#0056B3',
                     result_datatable_rows_selected_color: '#7AC29A',
+                    result_datatable_pagination_text_color: '#212529',
                     samp_enabled: true,
                     back_to_portal: true,
                     user_menu_enabled: true,
diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts
index bcefacc6..e8365084 100644
--- a/client/src/app/metamodel/models/instance.model.ts
+++ b/client/src/app/metamodel/models/instance.model.ts
@@ -77,17 +77,19 @@ export interface Instance {
     search_info_btn_color: string;
     search_info_btn_hover_color: string;
     search_info_btn_text_color: string;
+    output_columns_selected_color: string;
     result_datatable_bordered: boolean;
     result_datatable_border_color: string;
     result_datatable_header_background_color: string;
     result_datatable_header_text_color: string;
     result_datatable_rows_background_color: string;
     result_datatable_rows_text_color: string;
-    result_datatable_sorted_color: string,
-    result_datatable_sorted_active_color: string,
-    result_datatable_link_color: string,
-    result_datatable_link_hover_color: string,
-    result_datatable_rows_selected_color: string,
+    result_datatable_sorted_color: string;
+    result_datatable_sorted_active_color: string;
+    result_datatable_link_color: string;
+    result_datatable_link_hover_color: string;
+    result_datatable_rows_selected_color: string;
+    result_datatable_pagination_text_color: string;
     samp_enabled: boolean;
     back_to_portal: boolean;
     user_menu_enabled: boolean;
diff --git a/client/src/test-data.ts b/client/src/test-data.ts
index 800550ec..bdf90102 100644
--- a/client/src/test-data.ts
+++ b/client/src/test-data.ts
@@ -107,6 +107,7 @@ export const INSTANCE_LIST: Instance[] = [
         search_info_btn_color: '#007BFF',
         search_info_btn_hover_color: '#0069D9',
         search_info_btn_text_color: '#FFFFFF',
+        output_columns_selected_color: '#7AC29A',
         result_datatable_bordered: true,
         result_datatable_border_color: '#DEE2E6',
         result_datatable_header_background_color: '#FFFFFF',
@@ -118,6 +119,7 @@ export const INSTANCE_LIST: Instance[] = [
         result_datatable_link_color: '#007BFF',
         result_datatable_link_hover_color: '#0056B3',
         result_datatable_rows_selected_color: '#7AC29A',
+        result_datatable_pagination_text_color: '#212529',
         samp_enabled: true,
         back_to_portal: true,
         user_menu_enabled: true,
@@ -194,6 +196,7 @@ export const INSTANCE_LIST: Instance[] = [
         search_info_btn_color: '#007BFF',
         search_info_btn_hover_color: '#0069D9',
         search_info_btn_text_color: '#FFFFFF',
+        output_columns_selected_color: '#7AC29A',
         result_datatable_bordered: true,
         result_datatable_border_color: '#DEE2E6',
         result_datatable_header_background_color: '#FFFFFF',
@@ -205,6 +208,7 @@ export const INSTANCE_LIST: Instance[] = [
         result_datatable_link_color: '#007BFF',
         result_datatable_link_hover_color: '#0056B3',
         result_datatable_rows_selected_color: '#7AC29A',
+        result_datatable_pagination_text_color: '#212529',
         samp_enabled: true,
         back_to_portal: true,
         user_menu_enabled: true,
@@ -283,6 +287,7 @@ export const INSTANCE: Instance = {
     search_info_btn_color: '#007BFF',
     search_info_btn_hover_color: '#0069D9',
     search_info_btn_text_color: '#FFFFFF',
+    output_columns_selected_color: '#7AC29A',
     result_datatable_bordered: true,
     result_datatable_border_color: '#DEE2E6',
     result_datatable_header_background_color: '#FFFFFF',
@@ -294,6 +299,7 @@ export const INSTANCE: Instance = {
     result_datatable_link_color: '#007BFF',
     result_datatable_link_hover_color: '#0056B3',
     result_datatable_rows_selected_color: '#7AC29A',
+    result_datatable_pagination_text_color: '#212529',
     samp_enabled: true,
     back_to_portal: true,
     user_menu_enabled: true,
diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh
index 5fbdb5a7..1e64f80b 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_text_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","search_next_btn_color":"#007BFF","search_next_btn_hover_color":"#007BFF","search_next_btn_hover_text_color":"#FFFFFF","search_back_btn_color":"#6C757D","search_back_btn_hover_color":"#6C757D","search_back_btn_hover_text_color":"#FFFFFF","dataset_select_btn_color":"#6C757D","dataset_select_btn_hover_color":"#6C757D","dataset_select_btn_hover_text_color":"#FFFFFF","dataset_selected_icon_color":"#28A745","search_info_background_color":"#E9ECEF","search_info_text_color":"#000000","search_info_criterion_background_color":"#7AC29A","search_info_criterion_text_color":"#000000","search_info_btn_color":"#007BFF","search_info_btn_hover_color":"#0069D9","search_info_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_text_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","search_next_btn_color":"#007BFF","search_next_btn_hover_color":"#007BFF","search_next_btn_hover_text_color":"#FFFFFF","search_back_btn_color":"#6C757D","search_back_btn_hover_color":"#6C757D","search_back_btn_hover_text_color":"#FFFFFF","dataset_select_btn_color":"#6C757D","dataset_select_btn_hover_color":"#6C757D","dataset_select_btn_hover_text_color":"#FFFFFF","dataset_selected_icon_color":"#28A745","search_info_background_color":"#E9ECEF","search_info_text_color":"#000000","search_info_criterion_background_color":"#7AC29A","search_info_criterion_text_color":"#000000","search_info_btn_color":"#007BFF","search_info_btn_hover_color":"#0069D9","search_info_btn_text_color":"#FFFFFF","output_columns_selected_color":"#7AC29A","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","result_datatable_pagination_text_color":"#212529","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 ed8dafce..46313bf8 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', 'familyTextColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'searchNextBtnColor', 'searchNextBtnHoverColor', 'searchNextBtnHoverTextColor', 'searchBackBtnColor', 'searchBackBtnHoverColor', 'searchBackBtnHoverTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnHoverTextColor', 'datasetSelectedIconColor', 'searchInfoBackgroundColor', 'searchInfoTextColor', 'searchInfoCriterionBackgroundColor', 'searchInfoCriterionTextColor', 'searchInfoBtnColor', 'searchInfoBtnHoverColor', 'searchInfoBtnTextColor', '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', 'familyTextColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'searchNextBtnColor', 'searchNextBtnHoverColor', 'searchNextBtnHoverTextColor', 'searchBackBtnColor', 'searchBackBtnHoverColor', 'searchBackBtnHoverTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnHoverTextColor', 'datasetSelectedIconColor', 'searchInfoBackgroundColor', 'searchInfoTextColor', 'searchInfoCriterionBackgroundColor', 'searchInfoCriterionTextColor', 'searchInfoBtnColor', 'searchInfoBtnHoverColor', 'searchInfoBtnTextColor', 'outputColumnsSelectedColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'resultDatatablePaginationTextColor', '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', 'familyTextColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'searchNextBtnColor', 'searchNextBtnHoverColor', 'searchNextBtnHoverTextColor', 'searchBackBtnColor', 'searchBackBtnHoverColor', 'searchBackBtnHoverTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnHoverTextColor', 'datasetSelectedIconColor', 'searchInfoBackgroundColor', 'searchInfoTextColor', 'searchInfoCriterionBackgroundColor', 'searchInfoCriterionTextColor', 'searchInfoBtnColor', 'searchInfoBtnHoverColor', 'searchInfoBtnTextColor', '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', 'familyTextColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarStepDatasetTitle', 'progressBarStepCriteriaTitle', 'progressBarStepOutputTitle', 'progressBarStepResultTitle', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'searchNextBtnColor', 'searchNextBtnHoverColor', 'searchNextBtnHoverTextColor', 'searchBackBtnColor', 'searchBackBtnHoverColor', 'searchBackBtnHoverTextColor', 'datasetSelectBtnColor', 'datasetSelectBtnHoverColor', 'datasetSelectBtnHoverTextColor', 'datasetSelectedIconColor', 'searchInfoBackgroundColor', 'searchInfoTextColor', 'searchInfoCriterionBackgroundColor', 'searchInfoCriterionTextColor', 'searchInfoBtnColor', 'searchInfoBtnHoverColor', 'searchInfoBtnTextColor', 'outputColumnsSelectedColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'resultDatatablePaginationTextColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies'];
     }
 
     /**
@@ -1534,6 +1534,28 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setSearchInfoBtnTextColor($searchInfoBtnTextColor);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getOutputColumnsSelectedColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getOutputColumnsSelectedColor', []);
+
+        return parent::getOutputColumnsSelectedColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setOutputColumnsSelectedColor($outputColumnsSelectedColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setOutputColumnsSelectedColor', [$outputColumnsSelectedColor]);
+
+        return parent::setOutputColumnsSelectedColor($outputColumnsSelectedColor);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -1776,6 +1798,28 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy
         return parent::setResultDatatableRowsSelectedColor($resultDatatableRowsSelectedColor);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function getResultDatatablePaginationTextColor()
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getResultDatatablePaginationTextColor', []);
+
+        return parent::getResultDatatablePaginationTextColor();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function setResultDatatablePaginationTextColor($resultDatatablePaginationTextColor)
+    {
+
+        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setResultDatatablePaginationTextColor', [$resultDatatablePaginationTextColor]);
+
+        return parent::setResultDatatablePaginationTextColor($resultDatatablePaginationTextColor);
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/server/src/Action/InstanceAction.php b/server/src/Action/InstanceAction.php
index 2739ed32..f48d9504 100644
--- a/server/src/Action/InstanceAction.php
+++ b/server/src/Action/InstanceAction.php
@@ -125,6 +125,7 @@ final class InstanceAction extends AbstractAction
                 'search_info_btn_color',
                 'search_info_btn_hover_color',
                 'search_info_btn_text_color',
+                'output_columns_selected_color',
                 'result_datatable_bordered',
                 'result_datatable_border_color',
                 'result_datatable_header_background_color',
@@ -136,6 +137,7 @@ final class InstanceAction extends AbstractAction
                 'result_datatable_link_color',
                 'result_datatable_link_hover_color',
                 'result_datatable_rows_selected_color',
+                'result_datatable_pagination_text_color',
                 'samp_enabled',
                 'back_to_portal',
                 'user_menu_enabled',
@@ -242,6 +244,7 @@ final class InstanceAction extends AbstractAction
         $instance->setSearchInfoBtnColor($parsedBody['search_info_btn_color']);
         $instance->setSearchInfoBtnHoverColor($parsedBody['search_info_btn_hover_color']);
         $instance->setSearchInfoBtnTextColor($parsedBody['search_info_btn_text_color']);
+        $instance->setOutputColumnsSelectedColor($parsedBody['output_columns_selected_color']);
         $instance->setResultDatatableBordered($parsedBody['result_datatable_bordered']);
         $instance->setResultDatatableBorderColor($parsedBody['result_datatable_border_color']);
         $instance->setResultDatatableHeaderBackgroundColor($parsedBody['result_datatable_header_background_color']);
@@ -253,6 +256,7 @@ final class InstanceAction extends AbstractAction
         $instance->setResultDatatableLinkColor($parsedBody['result_datatable_link_color']);
         $instance->setResultDatatableLinkHoverColor($parsedBody['result_datatable_link_hover_color']);
         $instance->setResultDatatableRowsSelectedColor($parsedBody['result_datatable_rows_selected_color']);
+        $instance->setResultDatatablePaginationTextColor($parsedBody['result_datatable_pagination_text_color']);
         $instance->setSampEnabled($parsedBody['samp_enabled']);
         $instance->setUserMenuEnabled($parsedBody['user_menu_enabled']);
         $instance->setBackToPortal($parsedBody['back_to_portal']);
diff --git a/server/src/Action/InstanceListAction.php b/server/src/Action/InstanceListAction.php
index c188551a..d4d5caa0 100644
--- a/server/src/Action/InstanceListAction.php
+++ b/server/src/Action/InstanceListAction.php
@@ -125,6 +125,7 @@ final class InstanceListAction extends AbstractAction
                 'search_info_btn_color',
                 'search_info_btn_hover_color',
                 'search_info_btn_text_color',
+                'output_columns_selected_color',
                 'result_datatable_bordered',
                 'result_datatable_border_color',
                 'result_datatable_header_background_color',
@@ -136,6 +137,7 @@ final class InstanceListAction extends AbstractAction
                 'result_datatable_link_color',
                 'result_datatable_link_hover_color',
                 'result_datatable_rows_selected_color',
+                'result_datatable_pagination_text_color',
                 'samp_enabled',
                 'back_to_portal',
                 'user_menu_enabled',
@@ -236,6 +238,7 @@ final class InstanceListAction extends AbstractAction
         $instance->setSearchInfoBtnColor($parsedBody['search_info_btn_color']);
         $instance->setSearchInfoBtnHoverColor($parsedBody['search_info_btn_hover_color']);
         $instance->setSearchInfoBtnTextColor($parsedBody['search_info_btn_text_color']);
+        $instance->setOutputColumnsSelectedColor($parsedBody['output_columns_selected_color']);
         $instance->setResultDatatableBordered($parsedBody['result_datatable_bordered']);
         $instance->setResultDatatableBorderColor($parsedBody['result_datatable_border_color']);
         $instance->setResultDatatableHeaderBackgroundColor($parsedBody['result_datatable_header_background_color']);
@@ -247,6 +250,7 @@ final class InstanceListAction extends AbstractAction
         $instance->setResultDatatableLinkColor($parsedBody['result_datatable_link_color']);
         $instance->setResultDatatableLinkHoverColor($parsedBody['result_datatable_link_hover_color']);
         $instance->setResultDatatableRowsSelectedColor($parsedBody['result_datatable_rows_selected_color']);
+        $instance->setResultDatatablePaginationTextColor($parsedBody['result_datatable_pagination_text_color']);
         $instance->setSampEnabled($parsedBody['samp_enabled']);
         $instance->setBackToPortal($parsedBody['back_to_portal']);
         $instance->setUserMenuEnabled($parsedBody['user_menu_enabled']);
diff --git a/server/src/Entity/Instance.php b/server/src/Entity/Instance.php
index 626ae64f..ce294d09 100644
--- a/server/src/Entity/Instance.php
+++ b/server/src/Entity/Instance.php
@@ -476,6 +476,13 @@ class Instance implements \JsonSerializable
      */
     protected $searchInfoBtnTextColor;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="output_columns_selected_color", nullable=false, options={"default" : "#7AC29A"})
+     */
+    protected $outputColumnsSelectedColor;
+
     /**
      * @var bool
      *
@@ -567,6 +574,15 @@ class Instance implements \JsonSerializable
      */
     protected $resultDatatableRowsSelectedColor;
 
+    /**
+     * @var string
+     *
+     * @Column(type="string", name="result_datatable_pagination_text_color", nullable=false, options={
+     *     "default" : "#212529"
+     * })
+     */
+    protected $resultDatatablePaginationTextColor;
+
     /**
      * @var bool
      *
@@ -1266,6 +1282,16 @@ class Instance implements \JsonSerializable
         $this->searchInfoBtnTextColor = $searchInfoBtnTextColor;
     }
 
+    public function getOutputColumnsSelectedColor()
+    {
+        return $this->outputColumnsSelectedColor;
+    }
+
+    public function setOutputColumnsSelectedColor($outputColumnsSelectedColor)
+    {
+        $this->outputColumnsSelectedColor = $outputColumnsSelectedColor;
+    }
+
     public function getResultDatatableBordered()
     {
         return $this->resultDatatableBordered;
@@ -1376,6 +1402,16 @@ class Instance implements \JsonSerializable
         $this->resultDatatableRowsSelectedColor = $resultDatatableRowsSelectedColor;
     }
 
+    public function getResultDatatablePaginationTextColor()
+    {
+        return $this->resultDatatablePaginationTextColor;
+    }
+
+    public function setResultDatatablePaginationTextColor($resultDatatablePaginationTextColor)
+    {
+        $this->resultDatatablePaginationTextColor = $resultDatatablePaginationTextColor;
+    }
+
     public function getSampEnabled()
     {
         return $this->sampEnabled;
@@ -1555,6 +1591,7 @@ class Instance implements \JsonSerializable
             'search_info_btn_color' => $this->getSearchInfoBtnColor(),
             'search_info_btn_hover_color' => $this->getSearchInfoBtnHoverColor(),
             'search_info_btn_text_color' => $this->getSearchInfoBtnTextColor(),
+            'output_columns_selected_color' => $this->getOutputColumnsSelectedColor(),
             'result_datatable_bordered' => $this->getResultDatatableBordered(),
             'result_datatable_border_color' => $this->getResultDatatableBorderColor(),
             'result_datatable_header_background_color' => $this->getResultDatatableHeaderBackgroundColor(),
@@ -1566,6 +1603,7 @@ class Instance implements \JsonSerializable
             'result_datatable_link_color' => $this->getResultDatatableLinkColor(),
             'result_datatable_link_hover_color' => $this->getResultDatatableLinkHoverColor(),
             'result_datatable_rows_selected_color' => $this->getResultDatatableRowsSelectedColor(),
+            'result_datatable_pagination_text_color' => $this->getResultDatatablePaginationTextColor(),
             'samp_enabled' => $this->getSampEnabled(),
             'back_to_portal' => $this->getBackToPortal(),
             'user_menu_enabled' => $this->getUserMenuEnabled(),
diff --git a/server/tests/Action/InstanceActionTest.php b/server/tests/Action/InstanceActionTest.php
index fa54892d..6eac8240 100644
--- a/server/tests/Action/InstanceActionTest.php
+++ b/server/tests/Action/InstanceActionTest.php
@@ -139,6 +139,7 @@ final class InstanceActionTest extends TestCase
             'search_info_btn_color' => '#007BFF',
             'search_info_btn_hover_color' => '#0069D9',
             'search_info_btn_text_color' => '#FFFFFF',
+            'output_columns_selected_color' => '#7AC29A',
             'result_datatable_bordered' => true,
             'result_datatable_border_color' => '#DEE2E6',
             'result_datatable_header_background_color' => '#FFFFFF',
@@ -150,6 +151,7 @@ final class InstanceActionTest extends TestCase
             'result_datatable_link_color' => '#007BFF',
             'result_datatable_link_hover_color' => '#0056B3',
             'result_datatable_rows_selected_color' => '#7AC29A',
+            'result_datatable_pagination_text_color' => '#212529',
             'samp_enabled' => true,
             'back_to_portal' => true,
             'user_menu_enabled' => true,
diff --git a/server/tests/Action/InstanceListActionTest.php b/server/tests/Action/InstanceListActionTest.php
index a7e76113..91aed32d 100644
--- a/server/tests/Action/InstanceListActionTest.php
+++ b/server/tests/Action/InstanceListActionTest.php
@@ -123,6 +123,7 @@ final class InstanceListActionTest extends TestCase
             'search_info_btn_color' => '#007BFF',
             'search_info_btn_hover_color' => '#0069D9',
             'search_info_btn_text_color' => '#FFFFFF',
+            'output_columns_selected_color' => '#7AC29A',
             'result_datatable_bordered' => true,
             'result_datatable_border_color' => '#DEE2E6',
             'result_datatable_header_background_color' => '#FFFFFF',
@@ -134,6 +135,7 @@ final class InstanceListActionTest extends TestCase
             'result_datatable_link_color' => '#007BFF',
             'result_datatable_link_hover_color' => '#0056B3',
             'result_datatable_rows_selected_color' => '#7AC29A',
+            'result_datatable_pagination_text_color' => '#212529',
             'samp_enabled' => true,
             'back_to_portal' => true,
             'user_menu_enabled' => true,
-- 
GitLab