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'
};