diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..135ab08
--- /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: 0
+ 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/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 @@
+
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/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..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
+ CreConfigTooltip, CrePeriodConfig, CreBoolConfig, CreDateConfig
} from './config'
import {SharedModule} from '../shared/shared.module'
import {CreInputsModule} from '../shared/components/inputs/inputs.module'
@@ -23,7 +23,10 @@ import {CreButtonsModule} from '../shared/components/buttons/buttons.module'
CreImageConfig,
CreConfigSection,
CreConfigList,
- CreConfigActions
+ CreConfigActions,
+ CreBoolConfig,
+ CrePeriodConfig,
+ CreDateConfig
],
imports: [
SharedModule,
diff --git a/src/app/modules/configuration/config.ts b/src/app/modules/configuration/config.ts
index 81ad670..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, 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'
@@ -117,13 +117,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
})
@@ -147,14 +147,15 @@ 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)
}
}
@Component({
selector: 'cre-bool-config',
- templateUrl: 'bool-config.html'
+ templateUrl: 'bool.html'
})
export class CreBoolConfig extends CreConfig {
setConfig(config: Config) {
@@ -163,6 +164,24 @@ export class CreBoolConfig extends CreConfig {
}
}
+@Component({
+ selector: 'cre-period-config',
+ 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({
selector: 'cre-config-editor',
templateUrl: 'editor.html'
@@ -179,8 +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,
- APP_VERSION: Config.APP_VERSION,
+ TOUCH_UP_KIT_EXPIRATION: Config.TOUCH_UP_KIT_EXPIRATION,
+ 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 0deb9df..66cd181 100644
--- a/src/app/modules/configuration/editor.html
+++ b/src/app/modules/configuration/editor.html
@@ -41,8 +41,19 @@
- 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
+
+ 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
@@ -80,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/configuration/image-config.html b/src/app/modules/configuration/image.html
similarity index 84%
rename from src/app/modules/configuration/image-config.html
rename to src/app/modules/configuration/image.html
index 80c00dc..21459eb 100644
--- a/src/app/modules/configuration/image-config.html
+++ b/src/app/modules/configuration/image.html
@@ -17,10 +17,10 @@
-
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 @@
+