From 0911fd766f651de07f4731213ba64ca1691b9674 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Sun, 6 Jun 2021 00:08:27 -0400 Subject: [PATCH 1/3] Correction: Les images configurables ne s'affichent pas --- docker-compose.yml | 29 +++++++++++++++++++ src/app/modules/configuration/config.ts | 6 +++- .../modules/configuration/image-config.html | 2 +- .../components/header/header.component.ts | 2 +- ...ocomplete-input.html => autocomplete.html} | 0 ...ip-combo-box.html => chips-combo-box.html} | 0 .../inputs/{chip-input.html => chips.html} | 0 .../inputs/{file-input.html => file.html} | 0 .../shared/components/inputs/inputs.ts | 8 ++--- src/app/modules/shared/utils/utils.ts | 4 +++ 10 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 docker-compose.yml rename src/app/modules/shared/components/inputs/{autocomplete-input.html => autocomplete.html} (100%) rename src/app/modules/shared/components/inputs/{chip-combo-box.html => chips-combo-box.html} (100%) rename src/app/modules/shared/components/inputs/{chip-input.html => chips.html} (100%) rename src/app/modules/shared/components/inputs/{file-input.html => file.html} (100%) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a6ccfed --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.1" + +services: + database: + image: mysql + command: --default-authentication-plugin=mysql_native_password + environment: + MYSQL_ROOT_PASSWORD: "pass" + MYSQL_DATABASE: "cre" + ports: + - 3306:3306 + backend: + image: fyloz.dev:5443/color-recipes-explorer/backend:master + environment: + spring_profiles_active: "mysql,debug" + cre_database_url: "mysql://database:3306/cre" + cre_database_username: "root" + cre_database_password: "pass" + CRE_ENABLE_DB_UPDATE: 1 + server_port: 9090 + ports: + - 9090:9090 + volumes: + - cre_data:/usr/bin/cre/data + - cre_config:/usr/bin/cre/config + +volumes: + cre_data: + cre_config: diff --git a/src/app/modules/configuration/config.ts b/src/app/modules/configuration/config.ts index 5332d13..b09c42d 100644 --- a/src/app/modules/configuration/config.ts +++ b/src/app/modules/configuration/config.ts @@ -15,7 +15,7 @@ import {Config} from '../shared/model/config.model' import {ErrorHandlingComponent, SubscribingComponent} from '../shared/components/subscribing.component' import {ErrorService} from '../shared/service/error.service' import {ActivatedRoute, Router} from '@angular/router' -import {formatDateTime, readFile} from '../shared/utils/utils' +import {formatDateTime, getFileUrl, readFile} from '../shared/utils/utils' import {FormControl, Validators} from '@angular/forms' import {ConfirmBoxComponent} from '../shared/components/confirm-box/confirm-box.component' @@ -115,6 +115,10 @@ export class CreConfig extends SubscribingComponent { } } + get configuredImageUrl(): string { + return getFileUrl(this.configuration.content) + } + get lastUpdated(): string { return formatDateTime(this.configuration.lastUpdated) } diff --git a/src/app/modules/configuration/image-config.html b/src/app/modules/configuration/image-config.html index 6056487..3a9fdc1 100644 --- a/src/app/modules/configuration/image-config.html +++ b/src/app/modules/configuration/image-config.html @@ -17,7 +17,7 @@
diff --git a/src/app/modules/shared/components/header/header.component.ts b/src/app/modules/shared/components/header/header.component.ts index 882d013..94f4563 100644 --- a/src/app/modules/shared/components/header/header.component.ts +++ b/src/app/modules/shared/components/header/header.component.ts @@ -66,7 +66,7 @@ export class HeaderComponent extends SubscribingComponent { } get logoUrl(): string { - return environment.apiUrl + "/file?path=images%2Flogo" + return environment.apiUrl + "/file?path=images%2Flogo&mediaType=image/png" } set activeLink(link: string) { diff --git a/src/app/modules/shared/components/inputs/autocomplete-input.html b/src/app/modules/shared/components/inputs/autocomplete.html similarity index 100% rename from src/app/modules/shared/components/inputs/autocomplete-input.html rename to src/app/modules/shared/components/inputs/autocomplete.html diff --git a/src/app/modules/shared/components/inputs/chip-combo-box.html b/src/app/modules/shared/components/inputs/chips-combo-box.html similarity index 100% rename from src/app/modules/shared/components/inputs/chip-combo-box.html rename to src/app/modules/shared/components/inputs/chips-combo-box.html diff --git a/src/app/modules/shared/components/inputs/chip-input.html b/src/app/modules/shared/components/inputs/chips.html similarity index 100% rename from src/app/modules/shared/components/inputs/chip-input.html rename to src/app/modules/shared/components/inputs/chips.html diff --git a/src/app/modules/shared/components/inputs/file-input.html b/src/app/modules/shared/components/inputs/file.html similarity index 100% rename from src/app/modules/shared/components/inputs/file-input.html rename to src/app/modules/shared/components/inputs/file.html diff --git a/src/app/modules/shared/components/inputs/inputs.ts b/src/app/modules/shared/components/inputs/inputs.ts index b9ba3ac..62b1dff 100644 --- a/src/app/modules/shared/components/inputs/inputs.ts +++ b/src/app/modules/shared/components/inputs/inputs.ts @@ -47,7 +47,7 @@ export class CreInputComponent { @Component({ selector: 'cre-autocomplete-input', - templateUrl: 'autocomplete-input.html', + templateUrl: 'autocomplete.html', encapsulation: ViewEncapsulation.None }) export class CreAutocompleteInputComponent { @@ -65,7 +65,7 @@ export class CreAutocompleteInputComponent { @Component({ selector: 'cre-chip-input', - templateUrl: 'chip-input.html', + templateUrl: 'chips.html', encapsulation: ViewEncapsulation.None }) export class CreChipInputComponent implements OnInit { @@ -129,7 +129,7 @@ export class CreComboBoxComponent { @Component({ selector: 'cre-chip-combo-box', - templateUrl: 'chip-combo-box.html', + templateUrl: 'chips-combo-box.html', encapsulation: ViewEncapsulation.None }) export class CreChipComboBoxComponent extends CreChipInputComponent implements OnDestroy { @@ -191,7 +191,7 @@ export class CreCheckboxInputComponent { @Component({ selector: 'cre-file-input', - templateUrl: 'file-input.html' + templateUrl: 'file.html' }) export class CreFileInputComponent implements OnInit { @Input() label: string diff --git a/src/app/modules/shared/utils/utils.ts b/src/app/modules/shared/utils/utils.ts index 4ff71e9..bd54ea9 100644 --- a/src/app/modules/shared/utils/utils.ts +++ b/src/app/modules/shared/utils/utils.ts @@ -56,3 +56,7 @@ export function readFile(file: File, consumer: (any) => void) { } reader.readAsDataURL(file) } + +export function getFileUrl(path: string) { + return `${environment.apiUrl}/file?path=${encodeURIComponent(path)}` +} From b58c389f16696ff31605d864ecf76be8c835c653 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Tue, 8 Jun 2021 23:11:01 -0400 Subject: [PATCH 2/3] Ajout de la configuration TOUCH_UP_KIT_EXPIRATION --- docker-compose.yml | 2 +- .../{bool-config.html => bool.html} | 2 +- src/app/modules/configuration/config.html | 2 +- .../modules/configuration/config.module.ts | 6 ++- src/app/modules/configuration/config.ts | 15 ++++-- src/app/modules/configuration/editor.html | 7 +++ .../{image-config.html => image.html} | 2 +- src/app/modules/configuration/period.html | 7 +++ .../shared/components/inputs/input.sass | 8 +++ .../shared/components/inputs/inputs.module.ts | 29 +++++------ .../shared/components/inputs/inputs.ts | 49 ++++++++++++++++++- .../shared/components/inputs/period.html | 18 +++++++ src/environments/environment.prod.ts | 2 +- 13 files changed, 123 insertions(+), 26 deletions(-) rename src/app/modules/configuration/{bool-config.html => bool.html} (78%) rename src/app/modules/configuration/{image-config.html => image.html} (91%) create mode 100644 src/app/modules/configuration/period.html create mode 100644 src/app/modules/shared/components/inputs/period.html diff --git a/docker-compose.yml b/docker-compose.yml index a6ccfed..135ab08 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: cre_database_url: "mysql://database:3306/cre" cre_database_username: "root" cre_database_password: "pass" - CRE_ENABLE_DB_UPDATE: 1 + CRE_ENABLE_DB_UPDATE: 0 server_port: 9090 ports: - 9090:9090 diff --git a/src/app/modules/configuration/bool-config.html b/src/app/modules/configuration/bool.html similarity index 78% rename from src/app/modules/configuration/bool-config.html rename to src/app/modules/configuration/bool.html index 53c694c..48709db 100644 --- a/src/app/modules/configuration/bool-config.html +++ b/src/app/modules/configuration/bool.html @@ -1,4 +1,4 @@
- Dernière mise à jour: {{lastUpdated}} + {{lastUpdated}}
diff --git a/src/app/modules/configuration/config.html b/src/app/modules/configuration/config.html index 12f2ef0..8f23ca1 100644 --- a/src/app/modules/configuration/config.html +++ b/src/app/modules/configuration/config.html @@ -3,7 +3,7 @@ class="w-100" [type]="config.key === 'database.password' ? 'password' : 'text'" [label]="label.content" - [hint]="configuration.editable ? 'Dernière mise à jour: ' + lastUpdated : null" + [hint]="configuration.editable ? lastUpdated : null" [control]="config.control" [icon]="configuration.requireRestart ? 'alert' : null" [iconTitle]="configuration.requireRestart ? 'Requiert un redémarrage' : null" diff --git a/src/app/modules/configuration/config.module.ts b/src/app/modules/configuration/config.module.ts index 05dee32..10748ea 100644 --- a/src/app/modules/configuration/config.module.ts +++ b/src/app/modules/configuration/config.module.ts @@ -7,7 +7,7 @@ import { CreImageConfig, CreConfigList, CreConfigActions, - CreConfigTooltip + CreConfigTooltip, CrePeriodConfig, CreBoolConfig } from './config' import {SharedModule} from '../shared/shared.module' import {CreInputsModule} from '../shared/components/inputs/inputs.module' @@ -23,7 +23,9 @@ import {CreButtonsModule} from '../shared/components/buttons/buttons.module' CreImageConfig, CreConfigSection, CreConfigList, - CreConfigActions + CreConfigActions, + CreBoolConfig, + CrePeriodConfig ], imports: [ SharedModule, diff --git a/src/app/modules/configuration/config.ts b/src/app/modules/configuration/config.ts index 5893391..63ac8e5 100644 --- a/src/app/modules/configuration/config.ts +++ b/src/app/modules/configuration/config.ts @@ -121,13 +121,13 @@ export class CreConfig extends SubscribingComponent { } get lastUpdated(): string { - return formatDateTime(this.configuration.lastUpdated) + return 'Dernière mise à jour: ' + formatDateTime(this.configuration.lastUpdated) } } @Component({ selector: 'cre-image-config', - templateUrl: 'image-config.html', + templateUrl: 'image.html', styleUrls: ['config.sass'], encapsulation: ViewEncapsulation.None }) @@ -158,7 +158,7 @@ export class CreImageConfig extends CreConfig { @Component({ selector: 'cre-bool-config', - templateUrl: 'bool-config.html' + templateUrl: 'bool.html' }) export class CreBoolConfig extends CreConfig { setConfig(config: Config) { @@ -167,6 +167,14 @@ export class CreBoolConfig extends CreConfig { } } +@Component({ + selector: 'cre-period-config', + templateUrl: 'period.html' +}) +export class CrePeriodConfig extends CreConfig { + +} + @Component({ selector: 'cre-config-editor', templateUrl: 'editor.html' @@ -184,6 +192,7 @@ export class CreConfigEditor extends ErrorHandlingComponent { DATABASE_PASSWORD: Config.DATABASE_PASSWORD, DATABASE_VERSION: Config.DATABASE_VERSION, TOUCH_UP_KIT_CACHE_PDF: Config.TOUCH_UP_KIT_CACHE_PDF, + TOUCH_UP_KIT_EXPIRATION: Config.TOUCH_UP_KIT_EXPIRATION, APP_VERSION: Config.APP_VERSION, JAVA_VERSION: Config.JAVA_VERSION, OPERATING_SYSTEM: Config.OPERATING_SYSTEM diff --git a/src/app/modules/configuration/editor.html b/src/app/modules/configuration/editor.html index 0deb9df..a5fd3cf 100644 --- a/src/app/modules/configuration/editor.html +++ b/src/app/modules/configuration/editor.html @@ -43,6 +43,13 @@ Kits de retouche + + Période d'expiration des kits de retouches complets + + Les kits de retouche complétés expirent après la période configurée. Les kits de retouche expirés seront supprimés automatiquement. + + + Activer le cache des PDFs générés diff --git a/src/app/modules/configuration/image-config.html b/src/app/modules/configuration/image.html similarity index 91% rename from src/app/modules/configuration/image-config.html rename to src/app/modules/configuration/image.html index 3a9fdc1..21459eb 100644 --- a/src/app/modules/configuration/image-config.html +++ b/src/app/modules/configuration/image.html @@ -21,6 +21,6 @@ [attr.width]="previewWidth ? previewWidth : null" class="mat-elevation-z3"/>
- Dernière mise à jour:
{{lastUpdated}}
+ {{lastUpdated}} diff --git a/src/app/modules/configuration/period.html b/src/app/modules/configuration/period.html new file mode 100644 index 0000000..722ec27 --- /dev/null +++ b/src/app/modules/configuration/period.html @@ -0,0 +1,7 @@ +
+ + +
diff --git a/src/app/modules/shared/components/inputs/input.sass b/src/app/modules/shared/components/inputs/input.sass index a5e6bb9..1f8606e 100644 --- a/src/app/modules/shared/components/inputs/input.sass +++ b/src/app/modules/shared/components/inputs/input.sass @@ -12,3 +12,11 @@ cre-file-input cre-checkbox-input mat-checkbox margin-top: .5rem + +cre-period-input + .mat-form-field-infix + display: inherit + + mat-select + margin-left: 1em + width: 7em !important diff --git a/src/app/modules/shared/components/inputs/inputs.module.ts b/src/app/modules/shared/components/inputs/inputs.module.ts index 23d624e..1797478 100644 --- a/src/app/modules/shared/components/inputs/inputs.module.ts +++ b/src/app/modules/shared/components/inputs/inputs.module.ts @@ -4,7 +4,7 @@ import { CreChipComboBoxComponent, CreChipInputComponent, CreComboBoxComponent, CreFileInputComponent, - CreInputComponent + CreInputComponent, CrePeriodInputComponent } from './inputs' import {MatInputModule} from '@angular/material/input' import {MatIconModule} from '@angular/material/icon' @@ -15,8 +15,8 @@ import {MatListModule} from '@angular/material/list' import {MatAutocompleteModule} from '@angular/material/autocomplete' import {MatChipsModule} from '@angular/material/chips' import {CreButtonsModule} from '../buttons/buttons.module' -import {CreBoolConfig} from '../../../configuration/config' import {MatCheckboxModule} from '@angular/material/checkbox' +import {MatSelectModule} from '@angular/material/select' @NgModule({ declarations: [ @@ -26,8 +26,8 @@ import {MatCheckboxModule} from '@angular/material/checkbox' CreComboBoxComponent, CreChipComboBoxComponent, CreFileInputComponent, - CreBoolConfig, - CreCheckboxInputComponent + CreCheckboxInputComponent, + CrePeriodInputComponent ], imports: [ MatInputModule, @@ -41,17 +41,18 @@ import {MatCheckboxModule} from '@angular/material/checkbox' FormsModule, CreButtonsModule, MatCheckboxModule, + MatSelectModule, ], - exports: [ - CreInputComponent, - CreComboBoxComponent, - CreChipComboBoxComponent, - CreChipInputComponent, - CreAutocompleteInputComponent, - CreFileInputComponent, - CreBoolConfig, - CreCheckboxInputComponent - ] + exports: [ + CreInputComponent, + CreComboBoxComponent, + CreChipComboBoxComponent, + CreChipInputComponent, + CreAutocompleteInputComponent, + CreFileInputComponent, + CreCheckboxInputComponent, + CrePeriodInputComponent + ] }) export class CreInputsModule { } diff --git a/src/app/modules/shared/components/inputs/inputs.ts b/src/app/modules/shared/components/inputs/inputs.ts index 9da68cc..dfbb3f7 100644 --- a/src/app/modules/shared/components/inputs/inputs.ts +++ b/src/app/modules/shared/components/inputs/inputs.ts @@ -11,13 +11,13 @@ import { ViewChild, ViewEncapsulation } from '@angular/core' -import {AbstractControl, FormControl, ValidationErrors, ValidatorFn} from '@angular/forms' +import {AbstractControl, FormControl, ValidationErrors, ValidatorFn, Validators} from '@angular/forms' import {COMMA, ENTER} from '@angular/cdk/keycodes' import {Observable, Subject} from 'rxjs' import {map, takeUntil} from 'rxjs/operators' import {MatChipInputEvent} from '@angular/material/chips' import {MatAutocomplete, MatAutocompleteSelectedEvent} from '@angular/material/autocomplete' -import {MatFormFieldAppearance} from '@angular/material/form-field' +import {MatOptionSelectionChange} from '@angular/material/core' @Component({ selector: 'cre-input', @@ -227,6 +227,51 @@ export class CreFileInputComponent implements OnInit { } } +@Component({ + selector: 'cre-period-input', + templateUrl: 'period.html', + styleUrls: ['input.sass'], + encapsulation: ViewEncapsulation.None +}) +export class CrePeriodInputComponent implements OnInit { + @Input() control: FormControl + @Input() label: string + @Input() hint: string | null + + readonly periodTypes = [ + {value: 'D', label: 'Jours'}, + {value: 'M', label: 'Mois'}, + {value: 'Y', label: 'Années'} + ] + readonly inputControl = new FormControl(null, Validators.compose([Validators.required, Validators.min(1), Validators.pattern(/^[0-9]\d*$/)])) + readonly selectControl = new FormControl() + + ngOnInit(): void { + this.setValuesFromPeriod(this.control.value as string) + } + + inputControlUpdate(value: string) { + this.updateControl(value, this.selectControl.value) + } + + selectControlUpdate(event: any) { + this.updateControl(this.inputControl.value, event.value) + } + + private updateControl(inputValue: string, selectValue: string) { + this.control.setValue('P' + inputValue + selectValue) + this.control.markAsDirty() + } + + private setValuesFromPeriod(period: string) { + const periodTypeChar = period.slice(-1) + period = period.slice(1, -1) + + this.selectControl.setValue(periodTypeChar) + this.inputControl.setValue(period) + } +} + export class ComboBoxEntry { constructor( public key: any, diff --git a/src/app/modules/shared/components/inputs/period.html b/src/app/modules/shared/components/inputs/period.html new file mode 100644 index 0000000..ffd6362 --- /dev/null +++ b/src/app/modules/shared/components/inputs/period.html @@ -0,0 +1,18 @@ +
+ + {{label}} + + {{hint}} + +

Une période est requise

+

La période doit être supérieure ou égale à 1

+

La période doit être un nombre entier

+
+ + + + {{type.label}} + + +
+
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 583d460..c749161 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,4 +1,4 @@ export const environment = { production: true, - apiUrl: 'https://cre.fyloz.dev/api' + apiUrl: window.location.href + '/api' }; From 7fac208428aefd109555249b18c47f04c33e71c4 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Wed, 9 Jun 2021 21:06:33 -0400 Subject: [PATCH 3/3] #24 ajout du support pour les configurations env.build.time et recipe.approbation.expiration --- .../recipe-info/recipe-info.component.html | 2 +- .../recipe-info/recipe-info.component.ts | 6 +---- .../colors/pages/list/list.component.html | 4 +-- .../colors/pages/list/list.component.ts | 6 +---- .../modules/configuration/config.module.ts | 5 ++-- src/app/modules/configuration/config.ts | 25 +++++++++++++------ src/app/modules/configuration/date.html | 12 +++++++++ src/app/modules/configuration/editor.html | 12 +++++++-- src/app/modules/shared/model/config.model.ts | 4 ++- src/app/modules/shared/model/recipe.model.ts | 8 +----- 10 files changed, 51 insertions(+), 33 deletions(-) create mode 100644 src/app/modules/configuration/date.html diff --git a/src/app/modules/colors/components/recipe-info/recipe-info.component.html b/src/app/modules/colors/components/recipe-info/recipe-info.component.html index ba42447..38985fc 100644 --- a/src/app/modules/colors/components/recipe-info/recipe-info.component.html +++ b/src/app/modules/colors/components/recipe-info/recipe-info.component.html @@ -11,7 +11,7 @@

Non approuvée

-
+

Approbation expirée

diff --git a/src/app/modules/colors/components/recipe-info/recipe-info.component.ts b/src/app/modules/colors/components/recipe-info/recipe-info.component.ts index 6a619d7..44a824d 100644 --- a/src/app/modules/colors/components/recipe-info/recipe-info.component.ts +++ b/src/app/modules/colors/components/recipe-info/recipe-info.component.ts @@ -1,5 +1,5 @@ import {AfterViewInit, Component, Input} from '@angular/core' -import {getRecipeLuma, recipeApprobationExpired, Recipe} from '../../../shared/model/recipe.model' +import {Recipe} from '../../../shared/model/recipe.model' import {formatDate} from '../../../shared/utils/utils' @Component({ @@ -20,8 +20,4 @@ export class RecipeInfoComponent implements AfterViewInit { get approbationDate(): string { return formatDate(this.recipe.approbationDate) } - - get isApprobationExpired(): boolean { - return recipeApprobationExpired(this.recipe) - } } diff --git a/src/app/modules/colors/pages/list/list.component.html b/src/app/modules/colors/pages/list/list.component.html index 6f50f94..84493bf 100644 --- a/src/app/modules/colors/pages/list/list.component.html +++ b/src/app/modules/colors/pages/list/list.component.html @@ -74,10 +74,10 @@ title="Cette recette n'est pas approuvée"> + title="L'approbation de l'échantillon est expirée"> diff --git a/src/app/modules/colors/pages/list/list.component.ts b/src/app/modules/colors/pages/list/list.component.ts index 355023d..637061b 100644 --- a/src/app/modules/colors/pages/list/list.component.ts +++ b/src/app/modules/colors/pages/list/list.component.ts @@ -3,7 +3,7 @@ import {ErrorHandlingComponent} from '../../../shared/components/subscribing.com import {RecipeService} from '../../services/recipe.service' import {Permission} from '../../../shared/model/user' import {AccountService} from '../../../accounts/services/account.service' -import {getRecipeLuma, Recipe, recipeApprobationExpired} from '../../../shared/model/recipe.model' +import {getRecipeLuma, Recipe} from '../../../shared/model/recipe.model' import {ActivatedRoute, Router} from '@angular/router' import {ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' @@ -65,10 +65,6 @@ export class ListComponent extends ErrorHandlingComponent { .forEach(r => this.recipeMatchesSearchQuery(r)) } - isRecipeApprobationExpired(recipe: Recipe): boolean { - return recipeApprobationExpired(recipe) - } - isCompanyHidden(companyRecipes: Recipe[]): boolean { return (this.searchQuery && this.searchQuery.length > 0) && companyRecipes.map(r => this.hiddenRecipes[r.id]).filter(r => !r).length <= 0 } diff --git a/src/app/modules/configuration/config.module.ts b/src/app/modules/configuration/config.module.ts index 10748ea..8127ec2 100644 --- a/src/app/modules/configuration/config.module.ts +++ b/src/app/modules/configuration/config.module.ts @@ -7,7 +7,7 @@ import { CreImageConfig, CreConfigList, CreConfigActions, - CreConfigTooltip, CrePeriodConfig, CreBoolConfig + CreConfigTooltip, CrePeriodConfig, CreBoolConfig, CreDateConfig } from './config' import {SharedModule} from '../shared/shared.module' import {CreInputsModule} from '../shared/components/inputs/inputs.module' @@ -25,7 +25,8 @@ import {CreButtonsModule} from '../shared/components/buttons/buttons.module' CreConfigList, CreConfigActions, CreBoolConfig, - CrePeriodConfig + CrePeriodConfig, + CreDateConfig ], imports: [ SharedModule, diff --git a/src/app/modules/configuration/config.ts b/src/app/modules/configuration/config.ts index 63ac8e5..a40e7de 100644 --- a/src/app/modules/configuration/config.ts +++ b/src/app/modules/configuration/config.ts @@ -15,7 +15,7 @@ import {Config} from '../shared/model/config.model' import {ErrorHandlingComponent, SubscribingComponent} from '../shared/components/subscribing.component' import {ErrorService} from '../shared/service/error.service' import {ActivatedRoute, Router} from '@angular/router' -import {formatDateTime, getFileUrl, readFile} from '../shared/utils/utils' +import {formatDate, formatDateTime, getFileUrl, readFile} from '../shared/utils/utils' import {FormControl, Validators} from '@angular/forms' import {ConfirmBoxComponent} from '../shared/components/confirm-box/confirm-box.component' import {environment} from '../../../environments/environment' @@ -116,10 +116,6 @@ export class CreConfig extends SubscribingComponent { } } - get configuredImageUrl(): string { - return getFileUrl(this.configuration.content) - } - get lastUpdated(): string { return 'Dernière mise à jour: ' + formatDateTime(this.configuration.lastUpdated) } @@ -151,8 +147,9 @@ export class CreImageConfig extends CreConfig { readFile(file, (content) => this.updatedImage = content) } - get imageUrl(): string { - return `${environment.apiUrl}/file?path=${this.configuration.content}` + + get configuredImageUrl(): string { + return getFileUrl(this.configuration.content) } } @@ -172,7 +169,17 @@ export class CreBoolConfig extends CreConfig { templateUrl: 'period.html' }) export class CrePeriodConfig extends CreConfig { +} +@Component({ + selector: 'cre-date-config', + templateUrl: 'date.html' +}) +export class CreDateConfig extends CreConfig { + setConfig(config: Config) { + super.setConfig(config); + this.config.control.setValue(formatDate(config.content)) + } } @Component({ @@ -191,9 +198,11 @@ export class CreConfigEditor extends ErrorHandlingComponent { DATABASE_USER: Config.DATABASE_USER, DATABASE_PASSWORD: Config.DATABASE_PASSWORD, DATABASE_VERSION: Config.DATABASE_VERSION, + RECIPE_APPROBATION_EXPIRATION: Config.RECIPE_APPROBATION_EXPIRATION, TOUCH_UP_KIT_CACHE_PDF: Config.TOUCH_UP_KIT_CACHE_PDF, TOUCH_UP_KIT_EXPIRATION: Config.TOUCH_UP_KIT_EXPIRATION, - APP_VERSION: Config.APP_VERSION, + BACKEND_BUILD_VERSION: Config.BACKEND_BUILD_VERSION, + BACKEND_BUILD_TIME: Config.BACKEND_BUILD_TIME, JAVA_VERSION: Config.JAVA_VERSION, OPERATING_SYSTEM: Config.OPERATING_SYSTEM } diff --git a/src/app/modules/configuration/date.html b/src/app/modules/configuration/date.html new file mode 100644 index 0000000..83e8af4 --- /dev/null +++ b/src/app/modules/configuration/date.html @@ -0,0 +1,12 @@ +
+ + +
diff --git a/src/app/modules/configuration/editor.html b/src/app/modules/configuration/editor.html index a5fd3cf..66cd181 100644 --- a/src/app/modules/configuration/editor.html +++ b/src/app/modules/configuration/editor.html @@ -41,8 +41,12 @@ - Kits de retouche + Données + + Période d'expiration de l'approbation de l'échantillon des recettes + + Période d'expiration des kits de retouches complets @@ -87,10 +91,14 @@ Version de la base de données - + Version de Color Recipes Explorer + + Date de compilation de Color Recipes Explorer + + Version de Java diff --git a/src/app/modules/shared/model/config.model.ts b/src/app/modules/shared/model/config.model.ts index 6144c2a..642a736 100644 --- a/src/app/modules/shared/model/config.model.ts +++ b/src/app/modules/shared/model/config.model.ts @@ -7,10 +7,12 @@ export class Config { static readonly DATABASE_USER = 'database.user' static readonly DATABASE_PASSWORD = 'database.password' static readonly DATABASE_VERSION = 'database.version.supported' + static readonly RECIPE_APPROBATION_EXPIRATION = 'recipe.approbation.expiration' static readonly TOUCH_UP_KIT_CACHE_PDF = 'touchupkit.pdf.cache' static readonly TOUCH_UP_KIT_EXPIRATION = 'touchupkit.expiration' static readonly EMERGENCY_MODE = 'env.emergency' - static readonly APP_VERSION = 'env.version' + static readonly BACKEND_BUILD_VERSION = 'env.build.version' + static readonly BACKEND_BUILD_TIME = 'env.build.time' static readonly JAVA_VERSION = 'env.java.version' static readonly OPERATING_SYSTEM = 'env.os' diff --git a/src/app/modules/shared/model/recipe.model.ts b/src/app/modules/shared/model/recipe.model.ts index b1137c4..2fb9e52 100644 --- a/src/app/modules/shared/model/recipe.model.ts +++ b/src/app/modules/shared/model/recipe.model.ts @@ -12,6 +12,7 @@ export class Recipe { public gloss: number, public sample: number, public approbationDate: string, + public approbationExpired: boolean, public remark: string, public company: Company, public mixes: Mix[], @@ -124,10 +125,3 @@ export function getRecipeLuma(recipe: Recipe): number { return 0.2126 * r + 0.7152 * g + 0.0722 * b // per ITU-R BT.709 } - -// TODO hard-coded for prototype -export function recipeApprobationExpired(recipe: Recipe): boolean { - // @ts-ignore - return recipe.approbationDate && LocalDate.parse(recipe.approbationDate).year() < new Date().getFullYear() - 4 -} -