[DEV] setting form enable require mode
This commit is contained in:
parent
1e5f3541bf
commit
62c92ebe5d
@ -12,7 +12,7 @@
|
|||||||
<div class="elem-description">{{elem.description}}</div>
|
<div class="elem-description">{{elem.description}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="elem.type === 'STRING'">
|
<div *ngIf="elem.type === 'STRING'">
|
||||||
<div class="elem-title">{{elem.title}}:</div>
|
<div class="elem-title">{{elem.title}}</div>
|
||||||
<div class="elem-description">{{elem.description}}</div>
|
<div class="elem-description">{{elem.description}}</div>
|
||||||
<div class="elem-input">
|
<div class="elem-input">
|
||||||
<app-entry
|
<app-entry
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
* @copyright 2018, Edouard DUPIN, all right reserved
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
||||||
* @license PROPRIETARY (see license file)
|
* @license PROPRIETARY (see license file)
|
||||||
*/
|
*/
|
||||||
import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||||
import { isBoolean, isInArray, isNullOrUndefined, isNumber, isObject, isOptionalArrayOf, isOptionalOf, isString, isUndefined } from 'common/utils';
|
import { isBoolean, isInArray, isNullOrUndefined, isNumber, isObject, isOptionalOf, isString, isUndefined } from 'common/utils';
|
||||||
|
|
||||||
export type ReturnFunction = (a: boolean|string) => void;
|
export type ReturnFunction = (a: boolean|string) => void;
|
||||||
|
|
||||||
@ -42,6 +42,8 @@ export interface SettingsItem {
|
|||||||
checker?: CheckerParameter
|
checker?: CheckerParameter
|
||||||
// result of the checker (must be set @ undefined):
|
// result of the checker (must be set @ undefined):
|
||||||
state?: boolean | string;
|
state?: boolean | string;
|
||||||
|
// The element is require to have a valid form.
|
||||||
|
require?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isSettingsItem(data: any): data is SettingsItem {
|
export function isSettingsItem(data: any): data is SettingsItem {
|
||||||
@ -76,7 +78,10 @@ export function isSettingsItem(data: any): data is SettingsItem {
|
|||||||
if (!isUndefined(data.newValue)) {
|
if (!isUndefined(data.newValue)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isUndefined(data.state)) {
|
if (!isOptionalOf(data.state, isString)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!isOptionalOf(data.require, isBoolean)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -88,7 +93,7 @@ export function isSettingsItem(data: any): data is SettingsItem {
|
|||||||
templateUrl: 'render-settings.html',
|
templateUrl: 'render-settings.html',
|
||||||
styleUrls: ['render-settings.less'],
|
styleUrls: ['render-settings.less'],
|
||||||
})
|
})
|
||||||
export class RenderSettingsComponent implements OnInit {
|
export class RenderSettingsComponent {
|
||||||
/// Value of the password
|
/// Value of the password
|
||||||
@Input() values: SettingsItem[] = [];
|
@Input() values: SettingsItem[] = [];
|
||||||
/// Number of error detected (undefined: No change or not ready, else the number of error)
|
/// Number of error detected (undefined: No change or not ready, else the number of error)
|
||||||
@ -96,14 +101,6 @@ export class RenderSettingsComponent implements OnInit {
|
|||||||
/// event with the changed values
|
/// event with the changed values
|
||||||
@Output() deltaValues: EventEmitter<any> = new EventEmitter();
|
@Output() deltaValues: EventEmitter<any> = new EventEmitter();
|
||||||
|
|
||||||
constructor(
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
//if (value)
|
|
||||||
}
|
|
||||||
|
|
||||||
createOutputValues(): any {
|
createOutputValues(): any {
|
||||||
let out = {};
|
let out = {};
|
||||||
//console.log(" Create values ... out ... ");
|
//console.log(" Create values ... out ... ");
|
||||||
@ -123,13 +120,23 @@ export class RenderSettingsComponent implements OnInit {
|
|||||||
countErrors(): number | undefined {
|
countErrors(): number | undefined {
|
||||||
let out = 0;
|
let out = 0;
|
||||||
this.values.forEach( (value) => {
|
this.values.forEach( (value) => {
|
||||||
if (value.state !== undefined) {
|
if (!isUndefined(value.state)) {
|
||||||
out++;
|
out++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkMissing(): boolean | undefined {
|
||||||
|
let error = 0;
|
||||||
|
this.values.forEach( (value) => {
|
||||||
|
if (value.require === true && value.value === "" && isUndefined(value.newValue) ) {
|
||||||
|
error++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return error !== 0;
|
||||||
|
}
|
||||||
|
|
||||||
checkParameter(newValue: string, item: SettingsItem): void {
|
checkParameter(newValue: string, item: SettingsItem): void {
|
||||||
if (!isNullOrUndefined(item.checker)) {
|
if (!isNullOrUndefined(item.checker)) {
|
||||||
item.state = item.checker(newValue);
|
item.state = item.checker(newValue);
|
||||||
@ -139,6 +146,7 @@ export class RenderSettingsComponent implements OnInit {
|
|||||||
} else {
|
} else {
|
||||||
item.newValue = newValue;
|
item.newValue = newValue;
|
||||||
}
|
}
|
||||||
|
const missing = this.checkMissing();
|
||||||
const outValue = this.createOutputValues();
|
const outValue = this.createOutputValues();
|
||||||
const nbError = this.countErrors();
|
const nbError = this.countErrors();
|
||||||
const nbValuesChanges = Object.keys(outValue).length;
|
const nbValuesChanges = Object.keys(outValue).length;
|
||||||
@ -146,10 +154,14 @@ export class RenderSettingsComponent implements OnInit {
|
|||||||
//console.log(`nbError=${nbError} nbValuesChanges=${nbValuesChanges}`);
|
//console.log(`nbError=${nbError} nbValuesChanges=${nbValuesChanges}`);
|
||||||
if (nbValuesChanges === 0) {
|
if (nbValuesChanges === 0) {
|
||||||
this.changeState.emit(undefined);
|
this.changeState.emit(undefined);
|
||||||
} else {
|
return;
|
||||||
this.changeState.emit(nbError);
|
|
||||||
}
|
}
|
||||||
if (nbError === 0 && nbValuesChanges !== 0) {
|
if (missing === true) {
|
||||||
|
this.changeState.emit(undefined);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.changeState.emit(nbError);
|
||||||
|
if (nbError === 0) {
|
||||||
this.deltaValues.emit(outValue);
|
this.deltaValues.emit(outValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user