UNPKG

devexpress-diagram

Version:

DevExpress Diagram Control

51 lines (48 loc) 1.64 kB
export class ShapeParameter { constructor(public key: string, public value: number) { } } export class ShapeParameters { private items: { [key: string]: ShapeParameter } = {}; addIfNotExists(parameter: ShapeParameter): void { if(!(parameter.key in this.items)) this.set(parameter); } set(parameter: ShapeParameter): void { this.items[parameter.key] = parameter; } addRangeIfNotExists(parameters: ShapeParameter[]): void { for(let i = 0; i < parameters.length; i++) this.addIfNotExists(parameters[i]); } get(key: string): ShapeParameter { return this.items[key]; } forEach(callback: (parameter: ShapeParameter) => void): void { for(const key in this.items) if(Object.prototype.hasOwnProperty.call(this.items, key)) callback(this.items[key]); } clone(): ShapeParameters { const result = new ShapeParameters(); this.forEach(p => { result.addIfNotExists(new ShapeParameter(p.key, p.value)); }); return result; } toObject(): any { const result = {}; let modified = false; this.forEach(p => { result[p.key] = { "value": p.value }; modified = true; }); return modified ? result : null; } fromObject(obj: unknown): void { this.forEach(p => { const paramObj = obj[p.key]; if(paramObj) if(typeof paramObj["value"] === "number") p.value = paramObj["value"]; }); } }