Commit 07883379 authored by Grand Francois's avatar Grand Francois
Browse files

#45 BaseParam implémente IObservable et envoie une notification lors de changements de valeur

Showing with 45 additions and 2 deletions
+45 -2
......@@ -8,12 +8,13 @@ import { ParamValueMode } from "./param-value-mode";
import { IReferencedNub, INubReference } from "../value_ref/object_ref";
import { Result } from "../util/result";
import { NamedIterableValues } from "./param-value-iterator";
import { IObservable, Observable, Observer } from "../util/observer";
/**
* paramètre avec symbole et domaine de définition
*/
// tslint:disable-next-line:max-classes-per-file
export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues {
export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues, IObservable {
/**
* symbole
*/
......@@ -29,10 +30,17 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
*/
private _paramValues: ParamValues;
/**
* implémentation par délégation de IObservable
*/
private _observable: Observable;
constructor(symb: string, d: ParamDomain | ParamDomainValue, val?: number) {
super();
this._symbol = symb;
this._observable = new Observable()
this._paramValues = new ParamValues();
this._paramValues.setSingleValue(val);
......@@ -81,9 +89,21 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
return this._paramValues.currentValue;
}
public setValue(val: number) {
/**
* notification envoyée après la modification de la valeur du paramètre
*/
private notifyValueModified(sender: any) {
this.notifyObservers(
{
"action": "baseparamAfterValue",
}, sender
);
}
public setValue(val: number, sender?: any) {
this.checkValue(val);
this._paramValues.currentValue = val;
this.notifyValueModified(sender);
}
public get uncheckedValue(): number {
......@@ -333,4 +353,27 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
public get name(): string {
return this._symbol;
}
// interface IObservable
/**
* ajoute un observateur à la liste
*/
public addObserver(o: Observer) {
this._observable.addObserver(o);
}
/**
* supprime un observateur de la liste
*/
public removeObserver(o: Observer) {
this._observable.removeObserver(o);
}
/**
* notifie un événement aux observateurs
*/
notifyObservers(data: any, sender?: any) {
this._observable.notifyObservers(data, sender);
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment