function doFac(r, f, classes)
{
if(f.facultative)
{
r.append(HTMLBuilder.switch({id: f.id+"_elem_cb", on:"on", off:"off"},
{class: _inline_fields+_col_class(2)},
{ onclick: 'toggleEnable(\''+f.id+'_elem\')'}));
/*var sw = r.append('
')*/
}
}
class UIElement {
constructor(rootData, data, root, parent=undefined)
{
this.type="ui";
Object.assign(this, data);
this.rootData=rootData;
this.root=$("#"+root);
this.rootId=root;
this.uiId=registerUI(this);
this.root.data( { "id" :this.uiId });
this.prefix=root;
this.parent=parent;
this.subConstructor();
this.elemId=this.rootId+"_elem";
console.log("constructor #"+this.elemId)
this.initStart();
this.init();
this.initEnd();
}
initStart(){}
initEnd(){}
subConstructor(){}
resolveElement(e)
{
if(typeof e == "string" && e.length>1 && e[0]=='@' && e[1]=='/')
{
var l = e.substr(2).split(':');
var path = l[0];
var mod = {};
if(l.length>1)
{
var m = l.slice(1).join(':');
var mm = m.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": ');
mod=JSON.parse(mm.replace(/'/g, "\""));
}
return findPathInObject(this.rootData, path, mod);
}
return e;
}
getJson()
{
return $("#"+this.elemId).val();
}
setJson(e)
{
$("#"+this.elemId).val(e);
return this;
}
val(f)
{
if(f==undefined) return this.getJson();
this.setJson(f);
}
onDelete()
{
deleteUI(this);
if(this.parent)
this.parent.deleteChild(this.rootId);
}
reset(){this.val("")}
}
registerUiClass("element", UIElement);
class UIContainer extends UIElement {
subConstructor(){
this.index = {};
}
initFieldStart(f) {}
initFieldEnd(f){}
init_text(f) {return this._init_text(f, f.size?f.size:12); }
init_textarea(f) { return this._init_textarea(f, f.size?f.size:12);}
init_select(f){return this._init_select(f, f.size?f.size:12); }
init()
{
this.root.empty();
this.fields=this.resolveElement(this.fields);
if(this.fields)
{
for(var i=0; i