|
|
@ -19,7 +19,7 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@AutoRecord Type: TemplateType;
|
|
|
|
@AutoRecord Type: TemplateType;
|
|
|
|
@AutoRecord Parent: ObjectId;
|
|
|
|
@AutoRecord Parent: ObjectId;
|
|
|
|
@AutoRecord Children: ObjectId[] = [];
|
|
|
|
@AutoRecord Children: ObjectId[];
|
|
|
|
@AutoRecord Params: TemplateParam[];
|
|
|
|
@AutoRecord Params: TemplateParam[];
|
|
|
|
@AutoRecord Objects: ObjectId[];
|
|
|
|
@AutoRecord Objects: ObjectId[];
|
|
|
|
private positioning: Positioning;
|
|
|
|
private positioning: Positioning;
|
|
|
@ -67,6 +67,29 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
return Reflect.get(target, key, receiver);
|
|
|
|
return Reflect.get(target, key, receiver);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.Children = new Proxy([], {
|
|
|
|
|
|
|
|
set: (target, key, value, receiver) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (Reflect.get(target, key, receiver) !== value)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
this.WriteAllObjectRecord();
|
|
|
|
|
|
|
|
if (value instanceof ObjectId && value.Object instanceof TemplateRecord)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!this.Id)
|
|
|
|
|
|
|
|
console.warn("请先加模版添加到Database后在进行操作!");
|
|
|
|
|
|
|
|
value.Object.Parent = this.Id;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Reflect.set(target, key, value, receiver);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
get: (target, key, receiver) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (key === ISPROXYKEY)
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
return Reflect.get(target, key, receiver);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -112,6 +135,20 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
get LParam()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return this.GetParam("L");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
get WParam()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return this.GetParam("W");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
get HParam()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return this.GetParam("H");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
UpdateAllTemplate(newParams: [])
|
|
|
|
UpdateAllTemplate(newParams: [])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (let i = 0; i < this.Params.length; i++)
|
|
|
|
for (let i = 0; i < this.Params.length; i++)
|
|
|
@ -138,8 +175,26 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async UpdateTemplate(params?: any, recursion = false)
|
|
|
|
/**
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
async UpdateTemplate(params?: {}, recursion = false)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!params)
|
|
|
|
|
|
|
|
params = this.GetParentParams();
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
let newParams = {};
|
|
|
|
|
|
|
|
for (let key in params)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (key[0] !== "@")
|
|
|
|
|
|
|
|
newParams["_" + key] = params[key];
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
newParams[key] = params[key];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
params = newParams;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let objs = this.Objects.filter(id => !id.IsErase).map(id => id.Object as Board);
|
|
|
|
let objs = this.Objects.filter(id => !id.IsErase).map(id => id.Object as Board);
|
|
|
|
if (this.positioning)
|
|
|
|
if (this.positioning)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -158,14 +213,9 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
|
|
|
|
|
|
|
|
if (this.positioning.SpaceSize)
|
|
|
|
if (this.positioning.SpaceSize)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let l = this.GetParam("L");
|
|
|
|
this.LParam.UpdateParam(this.positioning.SpaceSize.x);
|
|
|
|
l.UpdateParam(this.positioning.SpaceSize.x);
|
|
|
|
this.WParam.UpdateParam(this.positioning.SpaceSize.y);
|
|
|
|
|
|
|
|
this.HParam.UpdateParam(this.positioning.SpaceSize.z);
|
|
|
|
let w = this.GetParam("W");
|
|
|
|
|
|
|
|
w.UpdateParam(this.positioning.SpaceSize.y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let h = this.GetParam("H");
|
|
|
|
|
|
|
|
h.UpdateParam(this.positioning.SpaceSize.z);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//保持SpaceCS
|
|
|
|
//保持SpaceCS
|
|
|
@ -179,16 +229,56 @@ export class TemplateRecord extends SymbolTableRecord
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//广度优先
|
|
|
|
//广度优先
|
|
|
|
let updateStack = [...this.Children];
|
|
|
|
let updateStack = [...this.Children];
|
|
|
|
|
|
|
|
let childrenCount = this.Children.length;
|
|
|
|
|
|
|
|
let index = 0;
|
|
|
|
while (updateStack.length > 0)
|
|
|
|
while (updateStack.length > 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if (index < childrenCount)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
params["index"] = index;
|
|
|
|
|
|
|
|
params["childrenCount"] = childrenCount;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
delete params["index"];
|
|
|
|
|
|
|
|
delete params["childrenCount"];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let id = updateStack.shift();
|
|
|
|
let id = updateStack.shift();
|
|
|
|
let template = id.Object as TemplateRecord;
|
|
|
|
let template = id.Object as TemplateRecord;
|
|
|
|
await template.UpdateTemplate();
|
|
|
|
await template.UpdateTemplate(params);
|
|
|
|
updateStack.push(...template.Children);
|
|
|
|
updateStack.push(...template.Children);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
index++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private GetParentParams()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let params = {};
|
|
|
|
|
|
|
|
let parent = this.Parent;
|
|
|
|
|
|
|
|
let index = 1;
|
|
|
|
|
|
|
|
while (parent)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let parentTemplate = parent.Object as TemplateRecord;
|
|
|
|
|
|
|
|
let frontStr = new Array(index).fill("_").join();
|
|
|
|
|
|
|
|
for (let param of parentTemplate.Params)
|
|
|
|
|
|
|
|
params[frontStr + param.name] = param.value;
|
|
|
|
|
|
|
|
if (index === 1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let recordIndex = parentTemplate.Children.indexOf(this.Id);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
parent = parentTemplate.Parent;
|
|
|
|
|
|
|
|
if (!parent)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (let param of parentTemplate.Params)
|
|
|
|
|
|
|
|
params["@" + param.name] = param.value;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
index++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return params;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#region -------------------------File-------------------------
|
|
|
|
//#region -------------------------File-------------------------
|
|
|
|
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
|
|
|
|
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
|
|
|
|