Skip to content
Snippets Groups Projects
Commit c441c0cd authored by francois.grand's avatar francois.grand
Browse files

#27 : classes de gestion des dépendances déplacées dans leur répertoire (dependency)

- classe Dependency : suppression du membre _slave
- ajout de la classe ExistenceDependencyCondition
parent 010c1c56
No related branches found
No related tags found
1 merge request!12Resolve "Ajout de la calculette "Ouvrages hydrauliques""
Showing
with 84 additions and 37 deletions
import { ComputeNodeType } from "jalhyd";
import { Field } from "./field";
import { Dependency } from "./dependency";
import { DependencyConditionType } from "./dependency-condition";
import { Dependency } from "./dependency/dependency";
import { DependencyConditionType } from "./dependency/dependency-condition";
import { FormulaireDefinition } from "./formulaire-definition";
export class CheckField extends Field {
......
......@@ -13,4 +13,8 @@ export class DependencyCondition {
public toString(): string {
return "cond=" + DependencyConditionType[this._type];
}
public clone(): DependencyCondition {
throw new Error("la méthode DependencyCondition.clone() doit être redéfinie !")
}
}
import { FormulaireElement } from "./formulaire-element";
import { FormulaireElement } from "../formulaire-element";
import { DependencyCondition } from "./dependency-condition";
/**
* Dépendance entre un élément maître et un élément esclave
* Si le maître vérifie une condition (masterCondition), alors la dépendance est appliquée à l'élément esclave,
* cad que son affichage, sa valeur, ... sont modifiés
*/
export abstract class Dependency {
private _master: FormulaireElement;
private _slave: FormulaireElement;
private _masterCondition: DependencyCondition;
constructor(m: FormulaireElement, s: FormulaireElement, mc: DependencyCondition) {
constructor(m: FormulaireElement, mc: DependencyCondition) {
this._master = m;
this._slave = s;
this._masterCondition = mc;
}
......@@ -18,15 +20,13 @@ export abstract class Dependency {
return this._master;
}
public get slaveElement(): FormulaireElement {
return this._slave;
}
public get masterCondition(): DependencyCondition {
return this._masterCondition;
}
public toString(): string {
return "master=" + this._master.toString() + "\n " + this._masterCondition.toString() + "\n slave=" + this._slave.toString();
return "master=" + this._master.toString() + "\n " + this._masterCondition.toString();
}
}
\ No newline at end of file
public abstract clone(master: FormulaireElement): Dependency;
}
import { DependencyCondition, DependencyConditionType } from "./dependency-condition";
export class ExistenceDependencyCondition extends DependencyCondition {
constructor() {
super(DependencyConditionType.IsDisplayed);
}
public clone(): ExistenceDependencyCondition {
return new ExistenceDependencyCondition();
}
}
import { Dependency } from "./dependency";
import { FormulaireElement } from "../formulaire-element";
/**
* dépendance déterminant l'affichage de l'élément esclave
*/
export class ExistenceDependency extends Dependency {
/**
* true : l'élément slave est affiché si le master est affiché
......@@ -10,4 +14,8 @@ export class ExistenceDependency extends Dependency {
public toString() {
return "existdep\n " + super.toString();
}
public clone(master: FormulaireElement): Dependency {
return new ExistenceDependency(master, this.masterCondition.clone());
}
}
......@@ -13,4 +13,8 @@ export class ValueDependencyCondition extends DependencyCondition {
public toString(): string {
return super.toString() + " " + this._value;
}
public clone(): ValueDependencyCondition {
return new ValueDependencyCondition(this._value);
}
}
import { Dependency } from "./dependency";
import { FormulaireElement } from "./formulaire-element";
import { FormulaireElement } from "../formulaire-element";
import { ValueDependencyCondition } from "./value-dependency-condition";
/**
* dépendance déterminant la valeur de l'élément esclave
*/
export class ValueDependency extends Dependency {
public slaveValue: any;
constructor(m: FormulaireElement, s: FormulaireElement, masterValue: any) {
super(m, s, new ValueDependencyCondition(masterValue));
constructor(m: FormulaireElement, masterValue: any) {
super(m, new ValueDependencyCondition(masterValue));
}
public toString() {
return "valdep\n " + super.toString() + "\n slave val " + this.slaveValue;
}
public clone(master: FormulaireElement): Dependency {
return new ValueDependency(master, this.masterCondition.clone());
}
}
......@@ -2,7 +2,7 @@ import { ComputeNodeType } from "jalhyd";
import { FormulaireElement } from "./formulaire-element";
import { FormulaireDefinition } from "./formulaire-definition";
import { ValueDependency } from "./value-dependency";
import { ValueDependency } from "./dependency/value-dependency";
export abstract class Field extends FormulaireElement {
constructor(nodeType: ComputeNodeType, parentForm: FormulaireDefinition) {
......@@ -20,7 +20,7 @@ export abstract class Field extends FormulaireElement {
let masterField: FormulaireElement = this.parentForm.getFormulaireElementById(d["refid"]);
if (masterField != undefined) {
let masterValue = d["refvalue"];
let dep = new ValueDependency(masterField, this, masterValue);
let dep = new ValueDependency(masterField, masterValue);
dep.slaveValue = d["value"];
this._dependencies.push(dep);
}
......
......@@ -2,7 +2,7 @@ import { ComputeNodeType } from "jalhyd";
import { FormulaireElement } from "./formulaire-element";
import { FieldSet } from "./fieldset";
import { Dependency } from "./dependency";
import { Dependency } from "./dependency/dependency";
import { StringMap } from "../stringmap";
import { FormulaireDefinition } from "./formulaire-definition";
......
import { CalculatorType, ComputeNodeType } from "jalhyd";
import { FormulaireElement } from "./formulaire-element";
import { Dependency } from "./dependency";
import { DependencyConditionType } from "./dependency-condition";
import { Dependency } from "./dependency/dependency";
import { DependencyConditionType } from "./dependency/dependency-condition";
import { Field } from "./field";
import { CheckField } from "./check-field";
import { SelectField } from "./select-field";
......
......@@ -2,11 +2,11 @@ import { ComputeNodeType } from "jalhyd";
import { FormulaireNode } from "./formulaire-node"
import { StringMap } from "../stringmap";
import { Dependency } from "./dependency";
import { DependencyCondition, DependencyConditionType } from "./dependency-condition";
import { ValueDependency } from "./value-dependency";
import { ValueDependencyCondition } from "./value-dependency-condition";
import { ExistenceDependency } from "./existence-dependency";
import { Dependency } from "./dependency/dependency";
import { DependencyCondition, DependencyConditionType } from "./dependency/dependency-condition";
import { ValueDependency } from "./dependency/value-dependency";
import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
import { ExistenceDependency } from "./dependency/existence-dependency";
import { FormulaireDefinition } from "./formulaire-definition";
/**
......@@ -89,7 +89,7 @@ export abstract class FormulaireElement extends FormulaireNode {
else
throw "Formulaire.parse_existence_dependencies() : infos de dépendance manquantes/non prises en charge";
}
let dep = new ExistenceDependency(masterField, this, mc);
let dep = new ExistenceDependency(masterField, mc);
this._dependencies.push(dep);
}
else
......@@ -127,8 +127,8 @@ export abstract class FormulaireElement extends FormulaireNode {
for (let d of this._dependencies)
if (d instanceof ExistenceDependency) {
let slave: FormulaireElement = this.parentForm.getFormulaireElementById(d.slaveElement.id);
slave.isDisplayed = false;
this._isDisplayed = false;
break;
}
}
......@@ -151,7 +151,7 @@ export abstract class FormulaireElement extends FormulaireNode {
}
*/
if (master.verifiesDependency(d)) {
let slave = this.parentForm.getFieldById(d.slaveElement.id);
let slave = this.parentForm.getFieldById(this.id);
if (this.isNumber(vd.slaveValue))
slave.setValue(+vd.slaveValue);
else
......
import { StringMap } from "../stringmap";
import { Dependency } from "./dependency";
/**
/**
* représentation sous forme d'arbre du formulaire et de ses éléments
*/
export abstract class FormulaireNode {
......
import { ParamDefinition, Pair, ParamDomain } from "jalhyd";
import { InputField } from "./input-field";
import { Dependency } from "./dependency";
import { DependencyConditionType } from "./dependency-condition";
import { ValueDependencyCondition } from "./value-dependency-condition";
import { Dependency } from "./dependency/dependency";
import { DependencyConditionType } from "./dependency/dependency-condition";
import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
import { Observable, IObservable, Observer } from "../services/observer";
import { FormulaireDefinition } from "./formulaire-definition";
import { ApplicationSetupService } from "../services/app-setup/app-setup.service";
......
......@@ -2,9 +2,9 @@ import { ComputeNodeType } from "jalhyd";
import { Field } from "./field";
import { SelectEntry } from "./select-entry";
import { Dependency } from "./dependency";
import { DependencyConditionType } from "./dependency-condition";
import { ValueDependencyCondition } from "./value-dependency-condition";
import { Dependency } from "./dependency/dependency";
import { DependencyConditionType } from "./dependency/dependency-condition";
import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
import { StringMap } from "../stringmap";
import { IObservable, Observable, Observer } from "../services/observer";
import { FormulaireDefinition } from "./formulaire-definition";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment