From cdfc8268576276fd26290ba9a9b67775ba56e495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr> Date: Mon, 17 Oct 2022 15:28:09 +0200 Subject: [PATCH] #89 => WIP --- .../components/instance-form.component.html | 24 +++++++ .../components/instance-form.component.ts | 3 + .../components/instance-navbar.component.html | 4 +- .../app/instance/instance.component.spec.ts | 3 + client/src/app/instance/instance.component.ts | 11 ++- .../components/progress-bar.component.spec.ts | 6 ++ .../effects/search-multiple.effects.spec.ts | 6 ++ .../app/metamodel/models/instance.model.ts | 3 + client/src/test-data.ts | 9 +++ conf-dev/create-db.sh | 2 +- .../__CG__AppEntityInstance.php | 70 ++++++++++++++++++- server/src/Action/InstanceAction.php | 6 ++ server/src/Action/InstanceListAction.php | 6 ++ server/src/Entity/Instance.php | 54 ++++++++++++++ server/tests/Action/InstanceActionTest.php | 3 + .../tests/Action/InstanceListActionTest.php | 3 + 16 files changed, 207 insertions(+), 6 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 39aa7358..d4029237 100644 --- a/client/src/app/admin/instance/components/instance-form.component.html +++ b/client/src/app/admin/instance/components/instance-form.component.html @@ -145,6 +145,30 @@ <input type="text" class="form-control" id="navbar_color_href_input" [value]="form.value.navbar_color_href" formControlName="navbar_color_href"> </div> </div> + <div class="form-group"> + <label for="navbar_font_family">Navbar font family</label> + <input type="text" class="form-control" id="navbar_font_family" name="navbar_font_family" formControlName="navbar_font_family"> + </div> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="navbar_sign_in_btn_color_picker">Navbar sign in btn color (picker)</label> + <input class="form-control" type="color" id="navbar_sign_in_btn_color_picker" [value]="form.value.navbar_sign_in_btn_color" formControlName="navbar_sign_in_btn_color"> + </div> + <div class="form-group col-md-6"> + <label for="navbar_sign_in_btn_color_input">Navbar sign in btn color (value)</label> + <input type="text" class="form-control" id="navbar_sign_in_btn_color_input" [value]="form.value.navbar_sign_in_btn_color" formControlName="navbar_sign_in_btn_color"> + </div> + </div> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="navbar_user_btn_color_picker">Navbar user btn color (picker)</label> + <input class="form-control" type="color" id="navbar_user_btn_color_picker" [value]="form.value.navbar_user_btn_color" formControlName="navbar_user_btn_color"> + </div> + <div class="form-group col-md-6"> + <label for="navbar_user_btn_color_input">Navbar user btn color (value)</label> + <input type="text" class="form-control" id="navbar_user_btn_color_input" [value]="form.value.navbar_user_btn_color" formControlName="navbar_user_btn_color"> + </div> + </div> <div class="custom-control custom-switch mb-2"> <input class="custom-control-input" type="checkbox" id="back_to_portal" name="back_to_portal" formControlName="back_to_portal"> <label class="custom-control-label" for="back_to_portal">Back to portal</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 4d8ee67c..1c4f5fd5 100644 --- a/client/src/app/admin/instance/components/instance-form.component.ts +++ b/client/src/app/admin/instance/components/instance-form.component.ts @@ -44,6 +44,9 @@ export class InstanceFormComponent implements OnInit { navbar_background_color: new UntypedFormControl('#F8F9FA'), navbar_border_bottom_color: new UntypedFormControl('#DEE2E6'), navbar_color_href: new UntypedFormControl('#000000'), + navbar_font_family: new UntypedFormControl('auto'), + navbar_sign_in_btn_color: new UntypedFormControl('#28A745'), + navbar_user_btn_color: new UntypedFormControl('#7AC29A'), footer_background_color: new UntypedFormControl('#F8F9FA'), footer_border_top_color: new UntypedFormControl('#DEE2E6'), footer_text_color: new UntypedFormControl('#000000'), diff --git a/client/src/app/instance/components/instance-navbar.component.html b/client/src/app/instance/components/instance-navbar.component.html index 83867b70..4f846778 100644 --- a/client/src/app/instance/components/instance-navbar.component.html +++ b/client/src/app/instance/components/instance-navbar.component.html @@ -51,8 +51,8 @@ Sign In / Register </button> <span *ngIf="isAuthenticated" id="dropdown-menu" dropdown> - <button id="button-basic" dropdownToggle type="button" class="btn btn-light" aria-controls="dropdown-basic"> - <span class="fa-stack" [ngStyle]="{ color: instance.design_color }"> + <button id="button-user" dropdownToggle type="button" class="btn btn-light" aria-controls="dropdown-basic"> + <span class="fa-stack"> <span class="fas fa-circle fa-2x"></span> <span class="fas fa-user fa-stack-1x fa-inverse"></span> </span> diff --git a/client/src/app/instance/instance.component.spec.ts b/client/src/app/instance/instance.component.spec.ts index df5f0ff3..a5c6cb64 100644 --- a/client/src/app/instance/instance.component.spec.ts +++ b/client/src/app/instance/instance.component.spec.ts @@ -93,6 +93,9 @@ describe('[Instance] InstanceComponent', () => { 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', diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts index 90b9a5f6..dd09a9e3 100644 --- a/client/src/app/instance/instance.component.ts +++ b/client/src/app/instance/instance.component.ts @@ -95,15 +95,24 @@ export class InstanceComponent implements OnInit, OnDestroy { if(document.styleSheets.length > 0) { this.style.setStyles('.navbar-instance', { 'background-color': instance.navbar_background_color, - 'border-bottom': `1px solid ${instance.navbar_border_bottom_color}` + 'border-bottom': `1px solid ${instance.navbar_border_bottom_color}`, + 'font-family': instance.navbar_font_family }); this.style.setStyle('.navbar-instance a', 'color', instance.navbar_color_href); this.style.setStyle('.navbar-instance a:hover', 'color', instance.navbar_color_href); this.style.setStyle('.navbar-instance a.active', 'font-weight', 'bold'); + this.style.setStyles('.navbar-instance #button-sign-in', { + 'color': instance.navbar_sign_in_btn_color, + 'border-color': instance.navbar_sign_in_btn_color + }); + this.style.setStyles('.navbar-instance #button-sign-in:hover', { + 'background-color': instance.navbar_background_color + }); this.style.setStyles('.navbar-instance #button-basic', { 'background-color': instance.navbar_background_color, 'border': 'none' }); + this.style.setStyle('.navbar-instance #button-user', 'color', instance.navbar_user_btn_color); this.style.setStyles('.footer', { 'background-color': instance.footer_background_color, 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 5934b27f..f50d456f 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 @@ -66,6 +66,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => { 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', @@ -139,6 +142,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => { 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', 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 b1c85d29..8b91fb5a 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 @@ -148,6 +148,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => { 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', @@ -264,6 +267,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => { 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', diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts index e472c380..7ed97887 100644 --- a/client/src/app/metamodel/models/instance.model.ts +++ b/client/src/app/metamodel/models/instance.model.ts @@ -31,6 +31,9 @@ export interface Instance { navbar_background_color: string; navbar_border_bottom_color: string; navbar_color_href: string; + navbar_font_family: string; + navbar_sign_in_btn_color: string; + navbar_user_btn_color: string; footer_background_color: string; footer_border_top_color: string; footer_text_color: string; diff --git a/client/src/test-data.ts b/client/src/test-data.ts index 5916b711..85092fa1 100644 --- a/client/src/test-data.ts +++ b/client/src/test-data.ts @@ -63,6 +63,9 @@ export const INSTANCE_LIST: Instance[] = [ 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', @@ -130,6 +133,9 @@ export const INSTANCE_LIST: Instance[] = [ 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', @@ -199,6 +205,9 @@ export const INSTANCE: Instance = { 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', diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh index bd7cfac6..a3cbfadb 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_background_color":"#FFFFFF","family_color":"#212529","progress_bar_title":"Dataset search","progress_bar_title_color":"#000000","progress_bar_subtitle":"Select a dataset, add criteria, select output columns and display the result.","progress_bar_subtitle_color":"#6C757D","progress_bar_color":"#E9ECEF","progress_bar_active_color":"#7AC29A","progress_bar_circle_color":"#FFFFFF","progress_bar_circle_icon_color":"#CCCCCC","progress_bar_circle_icon_active_color":"#FFFFFF","progress_bar_text_color":"#91B2BF","result_header_background_color":"#E9ECEF","result_header_text_color":"#000000","result_header_btn_color":"#007BFF","result_header_btn_hover_color":"#0069D9","result_header_btn_text_color":"#FFFFFF","result_datatable_bordered":true,"result_datatable_border_color":"#DEE2E6","result_datatable_header_background_color":"#FFFFFF","result_datatable_header_text_color":"#000000","result_datatable_rows_background_color":"#FFFFFF","result_datatable_rows_text_color":"#000000","result_datatable_sorted_color":"#C5C5C5","result_datatable_sorted_active_color":"#000000","result_datatable_link_color":"#007BFF","result_datatable_link_hover_color":"#0056B3","result_datatable_rows_selected_color":"#7AC29A","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance +curl -d '{"name":"default","label":"Default instance","description":"Instance for the test","scientific_manager":"M. Durand","instrument":"Multiple","wavelength_domain":"Visible imaging / Spectroscopy","display":10,"data_path":"\/DEFAULT","files_path":"\/INSTANCE_FILES","public":true,"portal_logo":"","design_color":"#7AC29A","design_background_color":"#ffffff","design_logo":"/logo.png","design_favicon":"/favicon.ico","navbar_background_color":"#F8F9FA","navbar_border_bottom_color":"#DEE2E6","navbar_color_href":"#000000","navbar_font_family":"Roboto, sans-serif","navbar_sign_in_btn_color":"#28A745","navbar_user_btn_color":"#7AC29A","footer_background_color":"#F8F9FA","footer_border_top_color":"#DEE2E6","footer_text_color":"#000000","family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_background_color":"#FFFFFF","family_color":"#212529","progress_bar_title":"Dataset search","progress_bar_title_color":"#000000","progress_bar_subtitle":"Select a dataset, add criteria, select output columns and display the result.","progress_bar_subtitle_color":"#6C757D","progress_bar_color":"#E9ECEF","progress_bar_active_color":"#7AC29A","progress_bar_circle_color":"#FFFFFF","progress_bar_circle_icon_color":"#CCCCCC","progress_bar_circle_icon_active_color":"#FFFFFF","progress_bar_text_color":"#91B2BF","result_header_background_color":"#E9ECEF","result_header_text_color":"#000000","result_header_btn_color":"#007BFF","result_header_btn_hover_color":"#0069D9","result_header_btn_text_color":"#FFFFFF","result_datatable_bordered":true,"result_datatable_border_color":"#DEE2E6","result_datatable_header_background_color":"#FFFFFF","result_datatable_header_text_color":"#000000","result_datatable_rows_background_color":"#FFFFFF","result_datatable_rows_text_color":"#000000","result_datatable_sorted_color":"#C5C5C5","result_datatable_sorted_active_color":"#000000","result_datatable_link_color":"#007BFF","result_datatable_link_hover_color":"#0056B3","result_datatable_rows_selected_color":"#7AC29A","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance # 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 697ea08e..f0e200f8 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', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; + return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; } - return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; + return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'navbarFontFamily', 'navbarSignInBtnColor', 'navbarUserBtnColor', 'footerBackgroundColor', 'footerBorderTopColor', 'footerTextColor', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyBackgroundColor', 'familyColor', 'progressBarTitle', 'progressBarTitleColor', 'progressBarSubtitle', 'progressBarSubtitleColor', 'progressBarColor', 'progressBarActiveColor', 'progressBarCircleColor', 'progressBarCircleIconColor', 'progressBarCircleIconActiveColor', 'progressBarTextColor', 'resultHeaderBackgroundColor', 'resultHeaderTextColor', 'resultHeaderBtnColor', 'resultHeaderBtnHoverColor', 'resultHeaderBtnTextColor', 'resultDatatableBordered', 'resultDatatableBorderColor', 'resultDatatableHeaderBackgroundColor', 'resultDatatableHeaderTextColor', 'resultDatatableRowsBackgroundColor', 'resultDatatableRowsTextColor', 'resultDatatableSortedColor', 'resultDatatableSortedActiveColor', 'resultDatatableLinkColor', 'resultDatatableLinkHoverColor', 'resultDatatableRowsSelectedColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; } /** @@ -566,6 +566,72 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy return parent::setNavbarColorHref($navbarColorHref); } + /** + * {@inheritDoc} + */ + public function getNavbarFontFamily() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarFontFamily', []); + + return parent::getNavbarFontFamily(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarFontFamily($navbarFontFamily) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarFontFamily', [$navbarFontFamily]); + + return parent::setNavbarFontFamily($navbarFontFamily); + } + + /** + * {@inheritDoc} + */ + public function getNavbarSignInBtnColor() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarSignInBtnColor', []); + + return parent::getNavbarSignInBtnColor(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarSignInBtnColor($navbarSignInBtnColor) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarSignInBtnColor', [$navbarSignInBtnColor]); + + return parent::setNavbarSignInBtnColor($navbarSignInBtnColor); + } + + /** + * {@inheritDoc} + */ + public function getNavbarUserBtnColor() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarUserBtnColor', []); + + return parent::getNavbarUserBtnColor(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarUserBtnColor($navbarUserBtnColor) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarUserBtnColor', [$navbarUserBtnColor]); + + return parent::setNavbarUserBtnColor($navbarUserBtnColor); + } + /** * {@inheritDoc} */ diff --git a/server/src/Action/InstanceAction.php b/server/src/Action/InstanceAction.php index c32fc021..263d64d2 100644 --- a/server/src/Action/InstanceAction.php +++ b/server/src/Action/InstanceAction.php @@ -81,6 +81,9 @@ final class InstanceAction extends AbstractAction 'navbar_background_color', 'navbar_border_bottom_color', 'navbar_color_href', + 'navbar_font_family', + 'navbar_sign_in_btn_color', + 'navbar_user_btn_color', 'footer_background_color', 'footer_border_top_color', 'footer_text_color', @@ -178,6 +181,9 @@ final class InstanceAction extends AbstractAction $instance->setNavbarBackgroundColor($parsedBody['navbar_background_color']); $instance->setNavbarBorderBottomColor($parsedBody['navbar_border_bottom_color']); $instance->setNavbarColorHref($parsedBody['navbar_color_href']); + $instance->setNavbarFontFamily($parsedBody['navbar_font_family']); + $instance->setNavbarSignInBtnColor($parsedBody['navbar_sign_in_btn_color']); + $instance->setNavbarUserBtnColor($parsedBody['navbar_user_btn_color']); $instance->setFooterBackgroundColor($parsedBody['footer_background_color']); $instance->setFooterBorderTopColor($parsedBody['footer_border_top_color']); $instance->setFooterTextColor($parsedBody['footer_text_color']); diff --git a/server/src/Action/InstanceListAction.php b/server/src/Action/InstanceListAction.php index 64f3842e..85e675ff 100644 --- a/server/src/Action/InstanceListAction.php +++ b/server/src/Action/InstanceListAction.php @@ -81,6 +81,9 @@ final class InstanceListAction extends AbstractAction 'navbar_background_color', 'navbar_border_bottom_color', 'navbar_color_href', + 'navbar_font_family', + 'navbar_sign_in_btn_color', + 'navbar_user_btn_color', 'footer_background_color', 'footer_border_top_color', 'footer_text_color', @@ -172,6 +175,9 @@ final class InstanceListAction extends AbstractAction $instance->setNavbarBackgroundColor($parsedBody['navbar_background_color']); $instance->setNavbarBorderBottomColor($parsedBody['navbar_border_bottom_color']); $instance->setNavbarColorHref($parsedBody['navbar_color_href']); + $instance->setNavbarFontFamily($parsedBody['navbar_font_family']); + $instance->setNavbarSignInBtnColor($parsedBody['navbar_sign_in_btn_color']); + $instance->setNavbarUserBtnColor($parsedBody['navbar_user_btn_color']); $instance->setFooterBackgroundColor($parsedBody['footer_background_color']); $instance->setFooterBorderTopColor($parsedBody['footer_border_top_color']); $instance->setFooterTextColor($parsedBody['footer_text_color']); diff --git a/server/src/Entity/Instance.php b/server/src/Entity/Instance.php index 956591b0..75b0c8c0 100644 --- a/server/src/Entity/Instance.php +++ b/server/src/Entity/Instance.php @@ -150,6 +150,27 @@ class Instance implements \JsonSerializable */ protected $navbarColorHref; + /** + * @var string + * + * @Column(type="string", name="navbar_font_family", nullable=false, options={"default" : "Roboto, sans-serif"}) + */ + protected $navbarFontFamily; + + /** + * @var string + * + * @Column(type="string", name="navbar_sign_in_btn_color", nullable=false, options={"default" : "#28A745"}) + */ + protected $navbarSignInBtnColor; + + /** + * @var string + * + * @Column(type="string", name="navbar_user_btn_color", nullable=false, options={"default" : "#7AC29A"}) + */ + protected $navbarUserBtnColor; + /** * @var string * @@ -672,6 +693,36 @@ class Instance implements \JsonSerializable $this->navbarColorHref = $navbarColorHref; } + public function getNavbarFontFamily() + { + return $this->navbarFontFamily; + } + + public function setNavbarFontFamily($navbarFontFamily) + { + $this->navbarFontFamily = $navbarFontFamily; + } + + public function getNavbarSignInBtnColor() + { + return $this->navbarSignInBtnColor; + } + + public function setNavbarSignInBtnColor($navbarSignInBtnColor) + { + $this->navbarSignInBtnColor = $navbarSignInBtnColor; + } + + public function getNavbarUserBtnColor() + { + return $this->navbarUserBtnColor; + } + + public function setNavbarUserBtnColor($navbarUserBtnColor) + { + $this->navbarUserBtnColor = $navbarUserBtnColor; + } + public function getFooterBackgroundColor() { return $this->footerBackgroundColor; @@ -1157,6 +1208,9 @@ class Instance implements \JsonSerializable 'navbar_background_color' => $this->getNavbarBackgroundColor(), 'navbar_border_bottom_color' => $this->getNavbarBorderBottomColor(), 'navbar_color_href' => $this->getNavbarColorHref(), + 'navbar_font_family' => $this->getNavbarFontFamily(), + 'navbar_sign_in_btn_color' => $this->getNavbarSignInBtnColor(), + 'navbar_user_btn_color' => $this->getNavbarUserBtnColor(), 'footer_background_color' => $this->getFooterBackgroundColor(), 'footer_border_top_color' => $this->getFooterBorderTopColor(), 'footer_text_color' => $this->getFooterTextColor(), diff --git a/server/tests/Action/InstanceActionTest.php b/server/tests/Action/InstanceActionTest.php index d5d2f812..ce1a65bf 100644 --- a/server/tests/Action/InstanceActionTest.php +++ b/server/tests/Action/InstanceActionTest.php @@ -95,6 +95,9 @@ final class InstanceActionTest extends TestCase 'navbar_background_color' => '#F8F9FA', 'navbar_border_bottom_color' => '#DEE2E6', 'navbar_color_href' => '#000000', + 'navbar_font_family' => 'auto', + 'navbar_sign_in_btn_color' => '#28A745', + 'navbar_user_btn_color' => '#7AC29A', 'footer_background_color' => '#F8F9FA', 'footer_border_top_color' => '#DEE2E6', 'footer_text_color' => '#000000', diff --git a/server/tests/Action/InstanceListActionTest.php b/server/tests/Action/InstanceListActionTest.php index 7af0c72b..7f924946 100644 --- a/server/tests/Action/InstanceListActionTest.php +++ b/server/tests/Action/InstanceListActionTest.php @@ -79,6 +79,9 @@ final class InstanceListActionTest extends TestCase 'navbar_background_color' => '#F8F9FA', 'navbar_border_bottom_color' => '#DEE2E6', 'navbar_color_href' => '#000000', + 'navbar_font_family' => 'auto', + 'navbar_sign_in_btn_color' => '#28A745', + 'navbar_user_btn_color' => '#7AC29A', 'footer_background_color' => '#F8F9FA', 'footer_border_top_color' => '#DEE2E6', 'footer_text_color' => '#000000', -- GitLab