devexpress-diagram
Version:
DevExpress Diagram Control
51 lines (48 loc) • 1.64 kB
text/typescript
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"];
});
}
}