![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/keeview_app/html/ |
Upload File : |
'use strict'; hr.form_config.deleteVariable = function(host, id){ return new Promise(function(rs, rj){ ModalElement.show_loading(); FormClass.api_call({ url: "variable_delete_save.php", params: [ {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success) { if (message.substr(0, 2) == "ok"){ host.database.variables.items = host.database.variables.items.filter(function(elt){ return elt.id != id; }); rs(); } else { rj(message) } } else { rj(message) } } }); }); }; hr.form_config.saveVariable = function(host, variableValue){ return new Promise(function(rs, rj){ for (var i = 0; i < host.database.variables.items.length; i++){ if (variableValue.id && host.database.variables.items[i].id == variableValue.id) continue; if (host.database.variables.items[i].name == variableValue.name){ rj("nameerror"); return; } } ModalElement.show_loading(); FormClass.api_call({ url: "variable_add_new_save.php", params: [ {name: "content", value: EncodingClass.string.fromVariable(variableValue)} ], func: function(success, message){ ModalElement.close(-1); if (success) { if (message.substr(0, 2) == "ok"){ rs(parseInt(message.substr(2))); } else { rj(message) } } else { rj(message) } } }); }); }; hr.form_config.addNewVariableRow = function(host, tableView, content){ var typelists = function(self, value){ var data = []; host.database.typelists.items.forEach(function(elt){ data.push({value: elt.id, text: elt.name}); }); data.unshift({value: 0, text: LanguageModule.text("txt_select_datatype")}); var props = { items: data }; if (value) { props.value = value; props.oldValue = value; } return absol._({ tag: "selectmenu", style: { width: "100%" }, props: props, on: { change: function(self) { return function(){ if (this.value != this.oldValue){ this.oldValue = this.value; var inputForm = input_form(self); inputForm.disabled = false; self.input_form.clearChild(); self.input_form.addChild(inputForm); self.input_form.element = inputForm; var outputForm = output_form(self); outputForm.disabled = false; self.output_form.clearChild(); self.output_form.addChild(outputForm); self.output_form.element = outputForm; } } }(self) } }); }; var input_form = function(self, value){ var items = []; if (self.typeid){ host.database.input_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_input_form")}); var props = { items: items }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var output_form = function(self, value){ var items = []; if (self.typeid){ host.database.output_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_output_form")}); var props = { items: items }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var mobile_input_form = function(self, value){ var items = []; if (self.typeid){ host.database.mobile_input_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_input_form")}); var props = { items: items }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var mobile_output_form = function(self, value){ var items = []; if (self.typeid){ host.database.mobile_output_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_output_form")}); var props = { items: items }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var name_input = function(self, value){ var props = { type: "text" }; if (value) props.value = value; return absol._({ tag: "input", class: "cardsimpleInput", props: value }); }; var title_input = function(self, value){ var props = { type: "text" }; if (value) props.value = value; return absol._({ tag: "input", class: "cardsimpleInput", props: value }); }; var variableContent = {}; var name = name_input(variableContent); variableContent.name = absol._({ child: name }); variableContent.name.element = name; variableContent.name.getValue = function(name){ return function(){ return name.childNodes[0].value.trim(); }; }(variableContent.name); var title = title_input(variableContent); variableContent.title = absol._({ child: title }); variableContent.title.element = title; variableContent.title.getValue = function(title){ return function(){ return title.childNodes[0].value.trim(); }; }(variableContent.title); variableContent.typeid = typelists(variableContent); var inputForm = input_form(variableContent); variableContent.input_form = absol._({ child: inputForm }); variableContent.input_form.element = inputForm; variableContent.input_form.getValue = function(input_form){ return function(){ return input_form.childNodes[0].value; } }(variableContent.input_form); var outputForm = output_form(variableContent); variableContent.output_form = absol._({ child: outputForm }); variableContent.output_form.element = outputForm; variableContent.output_form.getValue = function(output_form){ return function(){ return output_form.childNodes[0].value; }; }(variableContent.output_form); //////////////////////////////// var mobileInputForm = mobile_input_form(variableContent); variableContent.mobile_input_form = absol._({ child: mobileInputForm }); variableContent.mobile_input_form.element = mobileInputForm; variableContent.mobile_input_form.getValue = function(input_form){ return function(){ return input_form.childNodes[0].value; } }(variableContent.mobile_input_form); var mobileOutputForm = mobile_output_form(variableContent); variableContent.mobile_output_form = absol._({ child: mobileOutputForm }); variableContent.mobile_output_form.element = mobileOutputForm; variableContent.mobile_output_form.getValue = function(output_form){ return function(){ return output_form.childNodes[0].value; }; }(variableContent.mobile_output_form); var iconBtn = absol._({}); var saveBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "save"}, on: { click: function(){ var variableValue = { name: variableContent.name.getValue(), title: variableContent.title.getValue(), typeid: variableContent.typeid.value, inputformid: variableContent.input_form.getValue(), outputformid: variableContent.output_form.getValue(), mobileinputformid: variableContent.mobile_input_form.getValue(), mobileoutputformid: variableContent.mobile_output_form.getValue(), ver: 1 }; if (variableValue.name == "") { ModalElement.alert({ message: "Chưa nhập tên", func: function(input){ return function(){ input.childNodes[0].focus(); } }(variableContent.name) }); return; } if (variableValue.title == "") { ModalElement.alert({ message: "Chưa nhập tiêu đề", func: function(input){ return function(){ input.childNodes[0].focus(); } }(variableContent.title) }); return; } hr.form_config.saveVariable(host, variableValue).then(function(value){ variableContent.name.variableId = value; content[value] = variableContent hr.form_config.clickIconHandler(host, { container: iconBtn, task: value, content: content, type: "user_defined", mode: "save" }); }, function(message){ if (message == "nameerror"){ ModalElement.alert({ message: "Tên biến đã được sử dụng", func: function(){ variableContent.name.element.focus(); } }); } console.log(message); }); } } }) }); var denyBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "close"}, on: { click: function(){ tableView.dropRow(tableView.data.length - 1); } } }) }); iconBtn.addChild(saveBtn); iconBtn.addChild(denyBtn); var data = [ { element: variableContent.name }, { element: variableContent.title }, { element: variableContent.typeid }, { element: variableContent.input_form }, { element: variableContent.output_form }, { style: {textAlign: "center"}, element: iconBtn } ]; tableView.insertRow(data); }; hr.form_config.getConfigContent = function(content, mode){ var keys; if (mode == "close") keys = Object.keys(content); else keys = contentModule.getSystemVariable().map(function(elt){return elt.task;}); var data = {}; var formid = ""; var typeid = ""; keys.forEach(function(elt){ data[elt] = {}; data[elt].typeid = parseInt(content[elt].typeid.value, 10); data[elt].input_form = parseInt(content[elt].input_form.getValue(), 10); data[elt].output_form = parseInt(content[elt].output_form.getValue(), 10); data[elt].mobile_input_form = content[elt].mobile_input_form.getValue(); data[elt].mobile_output_form = content[elt].mobile_output_form.getValue(); if(data[elt].typeid > 0) typeid += "_" + data[elt].typeid; if(data[elt].input_form > 0) formid += "_" + data[elt].input_form; if(data[elt].output_form > 0) formid += "_" + data[elt].output_form; if(data[elt].mobile_input_form > 0) formid += "_" + data[elt].mobile_input_form; if(data[elt].mobile_output_form > 0) formid += "_" + data[elt].mobile_output_form; }); if (formid != "") formid += "_"; if (typeid != "") typeid += "_"; return { data: data, formid: formid, typeid: typeid }; }; hr.form_config.validateContent = function(host, content){ var st = hr.form_config.getConfigContent(content, "close"); var keys = Object.keys(host.form_config); for (var i = 0; i < keys.length; i++){ if ( host.form_config[keys[i]].typeid != st.data[keys[i]].typeid || host.form_config[keys[i]].input_form != st.data[keys[i]].input_form || host.form_config[keys[i]].output_form != st.data[keys[i]].output_form ) { contentModule.questionChange({ message: LanguageModule.text("war_close_not_save"), command: function(host, content){ return function(index){ switch (index) { case 0: hr.form_config.saveConfig(host, content, 1); break; case 1: hr.menu.tabPanel.removeTab(host.holder.id); break; default: } } }(host, content) }); return; } } hr.menu.tabPanel.removeTab(host.holder.id); }; hr.form_config.saveConfig = function(host, content, name){ return new Promise(function(rs, rj){ var getType = function(typeid, typeDict){ var type = typeDict[typeid].type; if ( form_module.primitiveTypeList.indexOf(type) != -1 ){ type = typeDict[typeid].type2; } return type; } var makePattern = function(typeid, typeContent, typeDict, isRoot){ var content; var dataType = getType(typeid, typeDict); switch (dataType) { case 'structure': content = { type: "struct", children: {} } if (!isRoot) { typeDict[typeid].content.details.forEach(function(elt){ var t_pattern = makePattern(elt.type, elt, typeDict, false); content.children[elt.localid] = t_pattern; }); } break; case 'extends_structure': content = { type: "struct", children: {} } while (host.typeDict[typeid].type == "extends_structure"){ typeDict[typeid].content.details.forEach(function(elt){ var t_pattern = makePattern(elt.type, elt, typeDict, false); content.children[elt.localid] = t_pattern; }); typeid = host.typeDict[typeid].content.typeof; } if (!isRoot) { typeDict[typeid].content.details.forEach(function(elt){ var t_pattern = makePattern(elt.type, elt, typeDict, false); content.children[elt.localid] = t_pattern; }); } if (Object.keys(content.children).length == 0) content = { type: "struct" }; break; case 'array': content = { type: "array", children: [] }; var typeOfArray = typeDict[typeid].content.typeof; var t_pattern = makePattern(typeOfArray, typeDict[typeid], typeDict, false); content.children.push(t_pattern); break; case 'treetable': content = { type: "treetable", children: [] }; var typeOfTreetable = typeDict[typeid].content.typeof; var t_pattern = makePattern(typeOfTreetable, typeDict[typeid], typeDict, false); content.children.push(t_pattern); break; case 'string': case 'note': case 'email_address': case 'phonenumber': case 'website': case 'gps': case 'time': content = { type: "string" }; break; case 'nation_city': content = { type: "array", children: [{type: "number"}] }; break; case 'currency': case 'number': content = { type: "number" }; break; case 'datetime': case 'date': case 'month': case 'week': content = { type: 'realtime' }; break; case 'boolean': content = { type: "boolean" }; break; case 'enum': case 'extends_enum': content = { type: "string" }; break; case 'enum_multi': case 'extends_enum_multi': content = { type: "array", children: [{type: "string"}] }; break; default: if (contentModule.listTypeSelectmenu.indexOf(dataType) >= 0){ content = { type: "string" }; } else if (contentModule.listTypeSelectbox.indexOf(dataType) >= 0) { content = { type: "array", children: [{type: "number"}] }; } else { content = { type: "string" }; } break; } return content; }; var st = hr.form_config.getConfigContent(content, "save"); var run = function(task, oldPattern, newPattern){ var data = st.data; var formid = st.formid; var typeid = st.typeid; var id, ver; if (host.database.form_config.items.length > 0){ id = host.database.form_config.items[0].id; ver = host.database.form_config.items[0].ver; } else { id = 0; ver = 1; } ModalElement.show_loading(); var params = [ {value: id, name: "id"}, {value: ver, name: "ver"}, {name: "task", value: "form_config"}, {name: "content", value: EncodingClass.string.fromVariable(data)}, {name: "formid", value: formid}, {name: "typeid", value: typeid} ]; if (task) { params.push({name: "instance_name", value: task}); params.push({name: "oldPattern", value: EncodingClass.string.fromVariable(oldPattern)}); params.push({name: "newPattern", value: EncodingClass.string.fromVariable(newPattern)}); } FormClass.api_call({ url: "form_config_save.php", params: params, func: function(success, message){ ModalElement.close(-1); if (success) { if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); host.database.form_config.items = content; host.form_config = EncodingClass.string.toVariable(content[0].content); rs(); } else { ModalElement.alert({message: message}); console.log(message); rj(message); } } else { ModalElement.alert({message: message}); console.log(message); rj(message); } } }) } if (name == "employee") { if (host.form_config.employee.typeid != st.data.employee.typeid) { var newPath = form_module.getTypePath(host, st.data.employee.typeid); var basePath = form_module.getTypePath(host, host.form_config.employee.typeid); var rootId = newPath[0]; for (var i = 1; i < newPath.length; i++){ if (newPath[i] == basePath[i]) rootId = newPath[i]; else break; } var fieldToDel = { localid: [], text: [] }; var tid = host.form_config.employee.typeid; while (tid != rootId) { host.typeDict[tid].content.details.forEach((item, i) => { fieldToDel.localid.push(item.localid); fieldToDel.text.push(item.name); }); tid = host.typeDict[tid].content.typeof; } var fieldToAdd = []; var tid = st.data.employee.typeid; while (tid != rootId) { fieldToAdd = fieldToAdd.concat(host.typeDict[tid].content.details); tid = host.typeDict[tid].content.typeof; } var oldPattern = makePattern(host.form_config.employee.typeid, host.typeDict[host.form_config.employee.typeid], host.typeDict, true); var newPattern = makePattern(st.data.employee.typeid, host.typeDict[st.data.employee.typeid], host.typeDict, true); console.log(oldPattern, newPattern); var data = []; fieldToDel.text.forEach((item, i) => { data.push({ cells: [ { style: { whiteSpace: "nowrap" }, child: absol._({text: item}) } ] }); }); var tableView = absol.buildDom({ tag: "dynamictable", props: { adapter: { rowsPerPage: Infinity, data: { head: { rows: [ { cells: [ {} ] } ] }, body: { rows: data } } } } }); if (fieldToDel.localid.length > 0) { ModalElement.showWindow({ title: "Cảnh báo", bodycontent: absol._({ child: [ { child: {text: "Các trường dữ liệu sau sẽ bị xóa, bạn có muốn tiếp tục"} }, tableView ] }), buttonlist: [ { text: LanguageModule.text("txt_ok"), onclick: function(){ run("employee", oldPattern, newPattern); ModalElement.close(); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }) } else { run(); } } else { run(); } } else { run(); } }) }; hr.form_config.clickIconHandler = function(host, params){ var container, task, content, type, mode; container = params.container; task = params.task; content = params.content; type = params.type; mode = params.mode; var editBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "edit"}, on: { click: function(container, task, type){ return function(){ if (host.addNewVariable) return; if (host.lastTask){ hr.form_config.clickIconHandler(host, { container: host.lastTask.container, task: host.lastTask.task, content: content, type: host.lastTask.type, mode: "deny" }); } hr.form_config.clickIconHandler(host, { container: container, task: task, content: content, type: type, mode: "edit" }); } }(container, task, type) } }) }); var deleteBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "delete"}, on: { click: function(){ hr.form_config.deleteVariable(host, task).then(function(){ for (var i = 0; i < host.tableView.data.length; i++){ if (!host.tableView.data[i][0].element) continue; if (host.tableView.data[i][0].element.variableId == task){ host.tableView.dropRow(i); break; } } }); } } }) }); var saveBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "save"}, on: { click: function(){ if (type == "system") { hr.form_config.saveConfig(host, content, task).then(function(){ hr.form_config.clickIconHandler(host, { container: container, task: task, content: content, type: type, mode: "save" }); }, function(err){console.log(err);}); } else { var variableValue = { id: task, name: content[task].name.getValue(), title: content[task].title.getValue(), typeid: content[task].typeid.value, inputformid: content[task].input_form.getValue(), outputformid: content[task].output_form.getValue(), mobileinputformid: content[task].mobile_input_form.getValue(), mobileoutputformid: content[task].mobile_output_form.getValue() }; var vIndex = host.database.variables.getIndex(task); variableValue.ver = host.database.variables.items[vIndex].ver; if (variableValue.name == "") { ModalElement.alert({ message: "Chưa nhập tên", func: function(){ content[task].name.childNodes[0].focus(); } }); return; } if (variableValue.title == "") { ModalElement.alert({ message: "Chưa nhập tiêu đề", func: function(){ content[task].title.childNodes[0].focus(); } }); return; } if (variableValue.inputformid == 0) { ModalElement.alert({ message: "Chưa chọn form nhập" }); return; } hr.form_config.saveVariable(host, variableValue).then(function(value){ host.database.variables.items[vIndex] = variableValue; host.database.variables.items[vIndex].ver++; hr.form_config.clickIconHandler(host, { container: container, task: task, content: content, type: type, mode: "save" }); }, function(message){{ if (message == "nameerror"){ ModalElement.alert({ message: "Tên biến đã được sử dụng", func: function(){ content[task].name.element.focus(); } }); } console.log(message); }}); } } } }) }); var denyBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "close"}, on: { click: function(){ hr.form_config.clickIconHandler(host, { container: container, task: task, content: content, type: type, mode: "deny" }); } } }) }); if (mode == "edit") { if (type != "system"){ var name = content[task].name.getValue(); var title = content[task].title.getValue(); content[task].name.clearChild(); content[task].name.addChild(absol._({ tag: "input", class: "cardsimpleInput", props: { type: "text", value: name } })); content[task].name.getValue = function(){ return content[task].name.childNodes[0].value.trim(); }; content[task].title.clearChild(); content[task].title.addChild(absol._({ tag: "input", class: "cardsimpleInput", props: { type: "text", value: title } })); content[task].title.getValue = function(){ return content[task].title.childNodes[0].value.trim(); }; } content[task].typeid.disabled = false; content[task].input_form.element.disabled = false; content[task].output_form.element.disabled = false; content[task].mobile_input_form.element.disabled = false; content[task].mobile_output_form.element.disabled = false; container.clearChild(); container.addChild(saveBtn); container.addChild(denyBtn); host.lastTask = { task: task, container: container, type: type }; } else { if (type != "system"){ var name = content[task].name.getValue(); var title = content[task].title.getValue(); content[task].name.clearChild(); content[task].name.addChild(absol._({ child: {text: name} })); content[task].name.getValue = function(){ return content[task].name.childNodes[0].textContent; }; content[task].title.clearChild(); content[task].title.addChild(absol._({ child: {text: title} })); content[task].title.getValue = function(){ return content[task].title.childNodes[0].textContent; }; } content[task].typeid.disabled = true; content[task].input_form.element.disabled = true; content[task].output_form.element.disabled = true; content[task].mobile_input_form.element.disabled = true; content[task].mobile_output_form.element.disabled = true; container.clearChild(); container.addChild(editBtn); if (type != "system") container.addChild(deleteBtn); host.lastTask = null; } } hr.form_config.redraw = function(host){ var generateDataType = function(dataType){ var indexList = []; var index; var typeid = dataType.content.typeof; var type = dataType.type; indexList.push(host.dictionary.typelists[dataType.id]); while (type == "extends_structure"){ index = host.dictionary.typelists[typeid]; indexList.push(index); type = host.database.typelists.items[index].type; if (type == "extends_structure") typeid = host.database.typelists.items[index].content.typeof; } index = host.dictionary.typelists[typeid]; indexList.forEach(function(elt){ host.database.typelists.items[elt].extendOf = host.database.typelists.items[index].type; }); } host.database.typelists.items.forEach(function(elt){ if (elt.extendOf) return; if (elt.type == "extends_structure") { generateDataType(elt); } }); var typelists = function(self, value, task){ var data = []; host.database.typelists.items.forEach(function(elt){ if (!task) data.push({value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name).toLowerCase()}); else { if (elt.type == task) data.push({value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name).toLowerCase()}); else if (elt.type == "extends_structure"){ if (elt.extendOf == task) data.push({value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name).toLowerCase()}); } } }); data.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); // data.unshift({value: 0, text: LanguageModule.text("txt_select_datatype")}); var props = { items: data, disabled: true, enableSearch: true }; if (value) { props.value = value; props.oldValue = value; } return absol._({ tag: "selectmenu", style: { width: "100%" }, props: props, on: { change: function(self) { return function(){ if (this.value != this.oldValue){ this.oldValue = this.value; var inputForm = input_form(self); inputForm.disabled = false; self.input_form.clearChild(); self.input_form.addChild(inputForm); self.input_form.element = inputForm; var outputForm = output_form(self); outputForm.disabled = false; self.output_form.clearChild(); self.output_form.addChild(outputForm); self.output_form.element = outputForm; ///////////////////////// var mobileInputForm = mobile_input_form(self); mobileInputForm.disabled = false; self.mobile_input_form.clearChild(); self.mobile_input_form.addChild(mobileInputForm); self.mobile_input_form.element = mobileInputForm; var mobileOutputForm = mobile_output_form(self); mobileOutputForm.disabled = false; self.mobile_output_form.clearChild(); self.mobile_output_form.addChild(mobileOutputForm); self.mobile_output_form.element = mobileOutputForm; } } }(self) } }); }; var input_form = function(self, value){ var items = []; if (self.typeid){ host.database.input_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_input_form")}); var props = { items: items, disabled: true }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var output_form = function(self, value){ var items = []; if (self.typeid){ host.database.output_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_output_form")}); var props = { items: items, disabled: true }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var mobile_input_form = function(self, value){ var items = []; if (self.typeid){ host.database.mobile_input_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_input_form")}); var props = { items: items, disabled: true }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var mobile_output_form = function(self, value){ var items = []; if (self.typeid){ host.database.mobile_output_forms.items.forEach(function(elt){ if ( elt.typeid == self.typeid.value ) items.push({value: elt.id, text: elt.name}); }); } items.unshift({value: 0, text: LanguageModule.text("txt_select_output_form")}); var props = { items: items, disabled: true }; if (value) props.value = value; var Cbb = absol._({ tag: "selectmenu", style: { width: "100%" }, props: props }); return Cbb; }; var data_container = absol._({}); var keys = Object.keys(host.form_config); var content = {}; var taskList = contentModule.getSystemVariable(); var data = []; taskList.forEach(function(elt){ content[elt.task] = {}; content[elt.task].typeid = function(elt){ return typelists(content[elt.task], host.form_config[elt.task] ? (host.form_config[elt.task].typeid > 0) ? host.form_config[elt.task].typeid : elt.typeid : elt.typeid, elt.task); }(elt); var inputForm = function(elt){ return input_form(content[elt.task], host.form_config[elt.task] ? (host.form_config[elt.task].input_form > 0) ? host.form_config[elt.task].input_form : elt.input_form : elt.input_form); }(elt); content[elt.task].input_form = absol._({ child: inputForm }); content[elt.task].input_form.element = inputForm; content[elt.task].input_form.getValue = function(input_form){ return function(){ return input_form.childNodes[0].value; } }(content[elt.task].input_form); var outputForm = function(elt){ return output_form(content[elt.task], host.form_config[elt.task] ? (host.form_config[elt.task].output_form > 0) ? host.form_config[elt.task].output_form : elt.output_form : elt.output_form); }(elt); content[elt.task].output_form = absol._({ child: outputForm }); content[elt.task].output_form.element = outputForm; content[elt.task].output_form.getValue = function(output_form){ return function(){ return output_form.childNodes[0].value; }; }(content[elt.task].output_form); ///////////////////// var mobileInputForm = function(elt){ return mobile_input_form(content[elt.task], host.form_config[elt.task] ? (host.form_config[elt.task].mobile_input_form > 0) ? host.form_config[elt.task].mobile_input_form : elt.mobile_input_form : elt.mobile_input_form); }(elt); content[elt.task].mobile_input_form = absol._({ child: mobileInputForm }); content[elt.task].mobile_input_form.element = mobileInputForm; content[elt.task].mobile_input_form.getValue = function(mobile_input_form){ return function(){ return mobile_input_form.childNodes[0].value; } }(content[elt.task].mobile_input_form); var mobileOutputForm = function(elt){ return mobile_output_form(content[elt.task], host.form_config[elt.task] ? (host.form_config[elt.task].mobile_output_form > 0) ? host.form_config[elt.task].mobile_output_form : elt.mobile_output_form : elt.mobile_output_form); }(elt); content[elt.task].mobile_output_form = absol._({ child: mobileOutputForm }); content[elt.task].mobile_output_form.element = mobileOutputForm; content[elt.task].mobile_output_form.getValue = function(mobile_output_form){ return function(){ return mobile_output_form.childNodes[0].value; }; }(content[elt.task].mobile_output_form); ////////////////////////// var iconBtn = absol._({style: {whiteSpace: "nowrap"}}); var editBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "edit"}, on: { click: function(iconBtn, task){ return function(){ if (host.addNewVariable) return; if (host.lastTask){ hr.form_config.clickIconHandler(host, { container: host.lastTask.container, task: host.lastTask.task, content: content, type: host.lastTask.type, mode: "deny" }); } hr.form_config.clickIconHandler(host, { container: iconBtn, task: task, content: content, type: "system", mode: "edit", }); } }(iconBtn, elt.task) } }) }); iconBtn.addChild(editBtn); var items = [ { element: absol._({child: {text: elt.name}}), value: elt.name }, { element: absol._({child: {text: elt.title}}), value: elt.title }, { element: content[elt.task].typeid, value: "" }, { element: content[elt.task].input_form, value: "" }, { element: content[elt.task].output_form, value: "" }, { element: content[elt.task].mobile_input_form, value: "" }, { element: content[elt.task].mobile_output_form, value: "" }, { style: {textAlign: "center"}, element: iconBtn, value: "" } ]; items.sortText = absol.string.nonAccentVietnamese(elt.title).toLowerCase(); data.push(items); }); data.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); var name_input = function(self, value){ return absol._({ child: {text: value} }); }; var title_input = function(self, value){ return absol._({ child: {text: value} }); }; var data2 = []; host.database.variables.items.forEach(function(elt){ content[elt.id] = {}; var name = name_input(content[elt.id], elt.name); content[elt.id].name = absol._({ child: name }); content[elt.id].name.variableId = elt.id; content[elt.id].name.element = name; content[elt.id].name.getValue = function(){ return content[elt.id].name.childNodes[0].textContent; }; var title = title_input(content[elt.id], elt.title); content[elt.id].title = absol._({ child: title }); content[elt.id].title.element = title; content[elt.id].title.getValue = function(){ return content[elt.id].title.childNodes[0].textContent; }; content[elt.id].typeid = typelists(content[elt.id], elt.typeid != 0 ? elt.typeid : undefined); var inputForm = input_form(content[elt.id], elt.inputformid != 0 ? elt.inputformid : undefined); content[elt.id].input_form = absol._({ child: inputForm }); content[elt.id].input_form.element = inputForm; content[elt.id].input_form.getValue = function(){ return content[elt.id].input_form.childNodes[0].value; }; var outputForm = output_form(content[elt.id], elt.outputformid != 0 ? elt.outputformid : undefined); content[elt.id].output_form = absol._({ child: outputForm }); content[elt.id].output_form.element = outputForm; content[elt.id].output_form.getValue = function(){ return content[elt.id].output_form.childNodes[0].value; }; ///////////////////////////////////////////////// var mobileInputForm = mobile_input_form(content[elt.id], elt.mobileinputformid != 0 ? elt.mobileinputformid : undefined); content[elt.id].mobile_input_form = absol._({ child: mobileInputForm }); content[elt.id].mobile_input_form.element = mobileInputForm; content[elt.id].mobile_input_form.getValue = function(){ return content[elt.id].mobile_input_form.childNodes[0].value; }; var mobileOutputForm = mobile_output_form(content[elt.id], elt.mobileoutputformid != 0 ? elt.mobileoutputformid : undefined); content[elt.id].mobile_output_form = absol._({ child: mobileOutputForm }); content[elt.id].mobile_output_form.element = mobileOutputForm; content[elt.id].mobile_output_form.getValue = function(){ return content[elt.id].mobile_output_form.childNodes[0].value; }; ///////////////////////////////////////////// var iconBtn = absol._({style: {whiteSpace: "nowrap"}}); var editBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "edit"}, on: { click: function(){ if (host.addNewVariable) return; if (host.lastTask){ hr.form_config.clickIconHandler(host, { container: host.lastTask.container, task: host.lastTask.task, content: content, type: host.lastTask.type, mode: "deny" }); } hr.form_config.clickIconHandler(host, { container: iconBtn, task: elt.id, content: content, type: "user_defined", mode: "edit", }); } } }) }); var deleteBtn = absol._({ class: "card-icon-cover", child: absol._({ tag: "i", class: ["material-icons", "bsc-icon-hover-black"], child: {text: "delete"}, on: { click: function(id){ return function(){ hr.form_config.deleteVariable(host, id).then(function(){ for (var i = 0; i < tableView.data.length; i++){ if (!tableView.data[i][0].element) continue; if (tableView.data[i][0].element.variableId == id){ tableView.dropRow(i); break; } } }, function(message){console.log(message);}); } }(elt.id) } }) }); iconBtn.addChild(editBtn); iconBtn.addChild(deleteBtn); var items = [ { element: content[elt.id].name, value: "" }, { element: content[elt.id].title, value: "" }, { element: content[elt.id].typeid, value: "" }, { element: content[elt.id].input_form, value: "" }, { element: content[elt.id].output_form, value: "" }, { element: content[elt.id].mobile_input_form, value: "" }, { element: content[elt.id].mobile_output_form, value: "" }, { style: {textAlign: "center"}, element: iconBtn, value: "" } ]; items.sortText = absol.string.nonAccentVietnamese(content[elt.id].title.textContent).toLowerCase(); data2.push(items); }); data2.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); var header = [ {value: LanguageModule.text("txt_name"), sort: true}, {value: LanguageModule.text("txt_title"), sort: true}, {value: LanguageModule.text("txt_datatypes")}, {value: LanguageModule.text("txt_input_form")}, {value: LanguageModule.text("txt_output_form")}, {value: LanguageModule.text("txt_input_form_mobile"), hidden: true}, {value: LanguageModule.text("txt_output_form_mobile"), hidden: true}, {value: ""} ]; var m_header = [ {value: LanguageModule.text("txt_name"), sort: true}, {value: LanguageModule.text("txt_title"), sort: true}, {value: LanguageModule.text("txt_datatypes")}, {value: LanguageModule.text("txt_input_form"), hidden: true}, {value: LanguageModule.text("txt_output_form"), hidden: true}, {value: LanguageModule.text("txt_input_form_mobile")}, {value: LanguageModule.text("txt_output_form_mobile")}, {value: ""} ]; var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var tableView = pizo.tableView(header, data.concat(data2), false, false); tableView.addInputSearch(inputsearchbox); host.tableView = tableView; var configType = absol._({ tag: "selectmenu", props: { items: [ {text: LanguageModule.text("txt_desktop"), value: "desktop"}, {text: LanguageModule.text("txt_mobile"), value: "mobile"} ], value: "desktop" }, on: { change: function(){ if (this.value == "desktop") tableView = pizo.tableView(header, tableView.data, false, false); else tableView = pizo.tableView(m_header, tableView.data, false, false); host.tableView = tableView; container.clearChild(); container.addChild(host.tableView); } } }); var container = absol._({ child: host.tableView }); var singlePage = absol.buildDom({ tag: "singlepage", child: [ { class: ['button-panel-header', 'absol-single-page-header'], child: [ { class: "single-button-header", child: theme.closeButton({ onclick: function(){ hr.menu.tabPanel.removeTab(host.holder.id); // hr.form_config.validateContent(host, content); } }) }, { class: "single-button-header", child: theme.addButton({ onclick: function(){ if (host.lastTask || host.addNewVariable) return; hr.form_config.addNewVariableRow(host, tableView, content); } }) }, { class: "single-button-header", child: configType }, { class: "single-button-header", child: inputsearchbox } ] }, container ] }); host.frameList.addChild(singlePage); singlePage.requestActive(); }; hr.form_config.init = function(host){ host.database = {}; FormClass.api_call({ url: "database_load.php", params: [ {value: "form_config", name: "task"} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); Promise.all([form_module.defaultInputFormForPrimitiveType(), form_module.defaultOutputFormForPrimitiveType(), form_module.defaultMobileInputFormForPrimitiveType(), form_module.defaultMobileOutputFormForPrimitiveType()]).then(function(retval){ content.input_forms = retval[0].concat(content.input_forms); content.output_forms = retval[1].concat(content.output_forms); content.mobile_input_forms = retval[2].concat(content.mobile_input_forms); content.mobile_output_forms = retval[3].concat(content.mobile_output_forms); contentModule.makeDatabaseContent(host, content); for (var i = 0; i < host.database.typelists.items.length; i++){ contentModule.makeDataTypeDecode(host.database.typelists.items[i]); } host.dictionary = { typelists: contentModule.makeDictionaryIndex(host.database.typelists.items) }; host.typeDict = {}; data_module.typelists.items.forEach((item, i) => { host.typeDict[item.id] = item; }); if (content.form_config.length > 0){ host.form_config = EncodingClass.string.toVariable(content.form_config[0].content); } else { host.form_config = contentModule.configVariableDefault(); } host.holder.appendChild(host.frameList); hr.form_config.redraw(host); }); } else { ModalElement.alert({message: message}); console.log(message); } } else { ModalElement.alert({message: message}); console.log(message); } } }); };