Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
e4ff268276
commit
6766de3fd7
109
js/ui/webui/form.js
Normal file
109
js/ui/webui/form.js
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
|
||||||
|
Forms=[];
|
||||||
|
Form = {
|
||||||
|
index : 0,
|
||||||
|
// typeof @config={}
|
||||||
|
create : function (config,options,callback) {
|
||||||
|
var id = Form.index++,
|
||||||
|
form = {};
|
||||||
|
form.index=id;
|
||||||
|
if (typeof options=='function') { callback=options;options={}};
|
||||||
|
options=options||{};
|
||||||
|
var rows = [];
|
||||||
|
function toValue(v) {
|
||||||
|
if (v == undefined) return;
|
||||||
|
if (typeof v == 'string' ||
|
||||||
|
typeof v == 'number' ||
|
||||||
|
typeof v == 'boolean') return v.toString();
|
||||||
|
if (Utils.isArray(v)) return v.join(',');
|
||||||
|
return v.toString();
|
||||||
|
}
|
||||||
|
function fromValue(key,v,root) {
|
||||||
|
if (v == undefined) return;
|
||||||
|
var text = UI('formWin'+id+'-'+root+key).getValue();
|
||||||
|
if (typeof v == 'string') return text;
|
||||||
|
if (typeof v == 'number') return isNaN(Number(text))?text:Number(text);
|
||||||
|
if (typeof v == 'boolean') return Number(text)?true:false;
|
||||||
|
if (Utils.isArray(v)) return text.split(',');
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
function createRows(config,root) {
|
||||||
|
root=root||'';
|
||||||
|
for(var key in config) {
|
||||||
|
var entry = config[key];
|
||||||
|
if (toValue(entry)==undefined) continue;
|
||||||
|
if (!Utils.isArray(entry) && Utils.isObject(entry)) {
|
||||||
|
rows.push({ view:"label", label:key, align:'left', css:'webix_primary blue'});
|
||||||
|
createRows(entry,key);
|
||||||
|
} else {
|
||||||
|
if (typeof entry == 'boolean') rows.push({
|
||||||
|
view:"checkbox",
|
||||||
|
id:"formWin"+id+"-"+root+key,
|
||||||
|
customCheckbox:false,
|
||||||
|
label:key,
|
||||||
|
height:'2',
|
||||||
|
labelWidth:options.labelWidth||150,
|
||||||
|
value:entry?1:0,
|
||||||
|
click: function (o) {
|
||||||
|
config[key]=Number(UI(o).getValue())?true:false;
|
||||||
|
}
|
||||||
|
}); else rows.push({
|
||||||
|
view:"text",
|
||||||
|
id:"formWin"+id+"-"+root+key,
|
||||||
|
label:key,
|
||||||
|
labelWidth:options.labelWidth||150,
|
||||||
|
value:toValue(entry),
|
||||||
|
css:"webix_primary"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createRows(config);
|
||||||
|
rows.push({
|
||||||
|
view:'label'
|
||||||
|
})
|
||||||
|
function createValues(config,root) {
|
||||||
|
root=root||'';
|
||||||
|
for(var key in config) {
|
||||||
|
var entry = config[key];
|
||||||
|
if (toValue(entry)==undefined) continue;
|
||||||
|
if (!Utils.isArray(entry) && Utils.isObject(entry)) {
|
||||||
|
createValues(entry,key);
|
||||||
|
} else {
|
||||||
|
config[key]=fromValue(key,entry,root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var window = webix.ui({
|
||||||
|
id:'formWin'+id,
|
||||||
|
view:"window",
|
||||||
|
width:options.width||300,
|
||||||
|
height:options.height||450,
|
||||||
|
left:options.x||90, top:options.y||90,
|
||||||
|
move:true,
|
||||||
|
resize: true,
|
||||||
|
toFront:true,
|
||||||
|
head: {
|
||||||
|
view:"toolbar",
|
||||||
|
cols:[
|
||||||
|
{ view:"label", label:options.title||options.label||"Form", align:'right'},
|
||||||
|
{ view:"button", type:"icon", icon:"check-square", align:'center', width:30, click: function () {
|
||||||
|
createValues(config);
|
||||||
|
if (callback) callback(config);
|
||||||
|
delete Forms[id];
|
||||||
|
window.close();
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
rows:[
|
||||||
|
{ view:"form", scroll:true, width:options.width||300, height:options.height||400, elements: rows}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
window.show();
|
||||||
|
form.window=window;
|
||||||
|
return form;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UI.Form=Form;
|
Loading…
Reference in New Issue
Block a user