object_ref.ts 2.23 KiB
import { ParamValueMode } from "../param/param-values";
/**
 * objet (paramètre ou résultat) dont les valeurs sont référençables pour réutilisation
 * (d'une calculette sur une autre par ex)
 */
export interface IReferencedObject {
    /**
     * getter de la (des) valeurs
    getReferencedValues(desc: string): number[];
    /**
     * getter du mode de valeur
    getReferencedValueMode(desc: string): ParamValueMode;
/**
 * référence vers un objet contenant une valeur vers laquelle on crée un lien
export interface IObjectReference {
    /**
     * définition de la valeur référencée dans l'objet
     * @param target objet contenant la valeur qu'on va référencer
     * @param desc : description de la valeur pointée sous forme symbolique. Exemples : Q, <n° d'ouvrage>.Z1
    defineReference(target: IReferencedObject, desc: string): void;
    /**
     * true si la référence a été définie
    readonly isReferenceDefined: boolean;
    /**
     * valeurs de l'objet IReferencedObject référencé
    readonly referencedValues: number[];
    /**
     * mode de valeur dans l'objet référencé
    readonly referencedValueMode: ParamValueMode;
/**
 * implémentation par défaut de IObjectReference
export class ObjectReference implements IObjectReference {
    private _referencedObject: IReferencedObject;
    private _refDefinition: string;
    public defineReference(target: IReferencedObject, desc: string) {
        this._referencedObject = target;
        this._refDefinition = desc;
    public get isReferenceDefined(): boolean {
        return this._referencedObject !== undefined && this._refDefinition !== undefined;
    /**
     * objet référencé
    public get referencedObject(): IReferencedObject {
        return this._referencedObject;
717273747576777879808182838485
/** * valeurs dans l'objet référencé */ public get referencedValues(): number[] { return this._referencedObject.getReferencedValues(this._refDefinition); } /** * mode de valeur dans l'objet référencé */ public get referencedValueMode(): ParamValueMode { return this._referencedObject.getReferencedValueMode(this._refDefinition); } }