![]() 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/tech_preview/hr/theme/mobile/ |
Upload File : |
"use strict"; theme.formAddFromEmployeeTemplate = function(params){ var itemsList = [{value: 0, text: LanguageModule.text("txt_select_value")}]; for (var i = 0; i < params.database.employee_templates.items.length; i++){ itemsList.push({ value: params.database.employee_templates.items[i].id, text: params.database.employee_templates.items[i].name }); } var template_select = absol.buildDom({ tag: "selectmenu", style: { display: "block", width: "100%" }, props: { items: itemsList, enableSearch: true }, on: { change: function(){ if (this.value == 0){ view_select.values = []; edit_select.values = []; } else { var index = params.database.employee_templates.getIndex(this.value); view_select.values = params.database.employee_templates.items[index].view; edit_select.values = params.database.employee_templates.items[index].edit; } } } }); var view_select = absol.buildDom({ tag: "multichecktreemenu", style: { display: "block", width: "100%" }, props: { items: params.itemsList, disabled: true } }); var edit_select = absol.buildDom({ tag: "multichecktreemenu", style: { display: "block", width: "100%" }, props: { items: params.itemsList, disabled: true } }); var res = DOMElement.table({ data: [ [ {text: LanguageModule.text("txt_employee_template")}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, template_select ], [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}], [ {text: LanguageModule.text("txt_employee_has_permission_view")}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, view_select ], [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}], [ {text: LanguageModule.text("txt_employee_has_permission_edit")}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, edit_select ] ] }); res.getValue = function(){ var templateid = template_select.value; if (templateid == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_no_select_template")}); return; } return templateid; }; ModalElement.showWindow({ title: params.title, bodycontent: res, buttonlist: [ { text: LanguageModule.text("txt_save"), onclick: function(){ var templateid = res.getValue(); if (!templateid) return; ModalElement.close(); params.func.save(templateid); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }); }; theme.fromObjectEditExtraData = function(params){ var commands = [{ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }]; var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.func.cancel().then(function(){ params.frameList.removeLast(); }); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.formContainer] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.formWork_flowsAdd = function(params){ hr.menu.showMobileTabbar(false); var firstPageCtn = DOMElement.div({ children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [params.general_informationEdit] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ var data = params.general_informationEdit.getValue(); if (!data) return; header.title = LanguageModule.text("txt_period"); firstPageCtn.style.display = "none"; secondPageCtn.style.display = ""; } }, text: LanguageModule.text("txt_next") }) ] }) ] }) ] }); var secondPageCtn = DOMElement.div({ attrs: { style: {display: "none"} }, children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [params.periodEdit] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "m-kv-document-page-footer-left"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ header.title = LanguageModule.text("txt_general_information"); firstPageCtn.style.display = ""; secondPageCtn.style.display = "none"; } }, text: LanguageModule.text("txt_back") }) ] }), DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ var data = params.periodEdit.getValue(); if (!data) return; header.title = LanguageModule.text("txt_permission"); secondPageCtn.style.display = "none"; thirdPageCtn.style.display = ""; } }, text: LanguageModule.text("txt_next") }) ] }) ] }) ] }); var thirdPageCtn = DOMElement.div({ attrs: { style: {display: "none"} }, children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [params.permissionEdit] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "m-kv-document-page-footer-left"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ header.title = LanguageModule.text("txt_period"); secondPageCtn.style.display = ""; thirdPageCtn.style.display = "none"; } }, text: LanguageModule.text("txt_back") }) ] }), DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ params.func.save().then(function(){ params.frameList.removeLast(); hr.menu.showMobileTabbar(true); }); } }, text: LanguageModule.text("txt_save") }) ] }) ] }) ] }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_general_information") }, on: { action: function(){ params.frameList.removeLast(); hr.menu.showMobileTabbar(true); }, command: function(event){ event.commandItem.cmd(); } } }); console.log(secondPageCtn); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, firstPageCtn, secondPageCtn, thirdPageCtn ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowAddContactForm = function(params){ var filterFunc = function(){ theme.modalFormMobile({ title: LanguageModule.text("txt_filter"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit-first" }, text: LanguageModule.text("txt_partner") }), partner_select ] }) }); }; var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var partner_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: contentModule.getPartnerFilterList(params), enableSearch: true }, on: { change: function(){ redrawData(); } } }); var addNewContact = function(){ var formContainer = DOMElement.div({}); var commands = [{ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.add_new_save(getValueFunction).then(function(value){ if (value){ params.database.contact.items.push(value); } params.frameList.removeLast(); redrawData(); }); } }]; var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_add_contact"), commands: commands }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var x = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [formContainer] }) ] }); params.frameList.addChild(x); x.requestActive(); var getValueFunction; contentModule.makeFormData({ typeid: params.form_config.contact.typeid, formid: params.form_config.contact.input_form, formContainer: formContainer, typelists: params.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; absol.form.traversal(formContainer.formFragment.view, function(item){ if (item.node.tag === "TextInput") { item.node.domElt.focus(); item.stop(); return; } }); var elt = absol.form.findComponent(formContainer.formFragment.view, { name: 'type_contact_owner', depth: false }); if (elt){ elt.attributes.value = params.employeeOfMe[0]; } }); }; var contactDic = {}; for (var i = 0; i < params.database.object_contact.items.length; i++){ contactDic[params.database.object_contact.items[i].contactid] = true; } var checked_dic = {}; var getCellContact = function(content){ var cells = [{ style: {textAlign: "center"}, render: function(tdElt){ tdElt.addChild(absol.buildDom({ tag: "checkbox", props: { checked: checked_dic[content.id] }, on: { change: function(){ checked_dic[content.id] = this.checked; } } })) } }]; cells.push({ innerText: content.name, render: function(tdElt){ tdElt.addChild(DOMElement.span({text: content.name})); } }); var row = { cells: cells }; return row; }; var redrawData = function(){ var partnerid = partner_select.value; var data = []; for (var i = 0; i < params.database.contact.items.length; i++){ if (contactDic[params.database.contact.items[i].id]) continue; if (systemconfig.privSystem < 2 && !params.employeeEditContactDic[params.database.contact.items[i].owner]) continue; if (partnerid != 0 && params.database.contact.items[i].partnerid != partnerid) continue; data.push(getCellContact(params.database.contact.items[i])); } DOMElement.removeAllChildren(data_ctn); var tableView = absol.buildDom({ tag: "dynamictable", props: { adapter: { data: { head: { rows: [] }, body: { rows: data } } } } }); tableView.attachSearchInput(inputsearchbox); data_ctn.appendChild(tableView); data_ctn.getValue = function(){ var data = []; for (var pid in checked_dic){ if (checked_dic[pid]) data.push(pid); } return data; }; data_ctn.insertData = function(list){ for (var i = 0; i < list.length; i++){ if (contactDic[list[i].id]) continue; if (partnerid != 0 && list[i].partnerid != partnerid) continue; tableView.addRow(getCellContact(list[i])); } tableView.notifyRowsChange(); }; }; var commands = [{ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ var data = data_ctn.getValue(); if (data.length == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_contact_is_null")}); return; } params.func.ok(data).then(function(){ params.frameList.removeLast(); }); } }]; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "search" }), cmd: function(){ header.searchMode(true); } }); var header = absol.buildDom({ tag: 'headerbarwithsearch', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text('txt_contact'), commands: commands, quickmenu: { props: { extendClasses: 'cd-context-menu', items: [ { text: LanguageModule.text("txt_filter"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "filter_alt" }), cmd: function(){ filterFunc(); } }, { text: LanguageModule.text("txt_add_contact"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "add" }), cmd: function(){ addNewContact(); } } ] }, onSelect: function (x) { x.cmd(); } } }, data: { searchInput: inputsearchbox }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var data_ctn = DOMElement.div({ attrs: { className: "card-mobile-content" } }); redrawData(); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, data_ctn ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowAddPartnerForm = function(params){ var filterFunc = function(){ theme.modalFormMobile({ title: LanguageModule.text("txt_filter"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit-first" }, text: LanguageModule.text("txt_partner_class") }), partner_class_select, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_nationcity") }), nation_cities_select ] }) }); }; var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var itemsList = contentModule.getNationCityDualSelectMenu(params); itemsList.forEach(function(nItem){ nItem.items.unshift({value: 0, text: LanguageModule.text("txt_all_city")}); }); itemsList.unshift({ value: 0, text: LanguageModule.text("txt_all_nation"), items: [{value: 0, text: LanguageModule.text("txt_all_city")}] }); var nation_cities_select = absol.buildDom({ tag: "dualselectmenu", props: { items: itemsList, enableSearch: true, value: [0, 0] }, on: { change: function(){ redrawData(); } } }); var partner_class_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: contentModule.getPartnerClassFilterList(params), enableSearch: true }, on: { change: function(){ redrawData(); } } }); var addNewPartner = function(){ var formContainer = DOMElement.div({}); var commands = [{ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.add_new_save(getValueFunction).then(function(value){ if (value){ params.database.partner.items.push(value); } params.frameList.removeLast(); redrawData(); }); } }]; var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_add_partner"), commands: commands }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var x = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [formContainer] }) ] }); params.frameList.addChild(x); x.requestActive(); var getValueFunction; contentModule.makeFormData({ typeid: params.form_config.partner.typeid, formid: params.form_config.partner.input_form, formContainer: formContainer, typelists: params.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; absol.form.traversal(formContainer.formFragment.view, function(item){ if (item.node.tag === "TextInput") { item.node.domElt.focus(); item.stop(); return; } }); }); }; var partnerDic = {}; for (var i = 0; i < params.database.object_partner.items.length; i++){ partnerDic[params.database.object_partner.items[i].partnerid] = true; } var checked_dic = {}; var getCellPartner = function(content){ var cells = [{ style: {textAlign: "center"}, render: function(tdElt){ tdElt.addChild(absol.buildDom({ tag: "checkbox", props: { checked: checked_dic[content.id] }, on: { change: function(){ checked_dic[content.id] = this.checked; } } })) } }]; cells.push({ innerText: content.name, render: function(tdElt){ tdElt.addChild(DOMElement.span({text: content.name})); } }); var row = { cells: cells }; return row; }; var redrawData = function(){ var classid = partner_class_select.value; var nation_city = nation_cities_select.value; var data = []; for (var i = 0; i < params.database.partner.items.length; i++){ if (partnerDic[params.database.partner.items[i].id]) continue; if (classid != 0 && params.database.partner.items[i].class.indexOf(classid) < 0) continue; if (nation_city[0] != 0){ if (params.database.partner.items[i].nationid != nation_city[0]) continue; if (nation_city[1] != 0) if (params.database.partner.items[i].cityid != nation_city[1]) continue; } data.push(getCellPartner(params.database.partner.items[i])); } DOMElement.removeAllChildren(data_ctn); var tableView = absol.buildDom({ tag: "dynamictable", props: { adapter: { data: { head: { rows: [] }, body: { rows: data } } } } }); tableView.attachSearchInput(inputsearchbox); data_ctn.appendChild(tableView); data_ctn.getValue = function(){ var data = []; for (var pid in checked_dic){ if (checked_dic[pid]) data.push(pid); } return data; }; data_ctn.insertData = function(list){ for (var i = 0; i < list.length; i++){ if (partnerDic[list[i].id]) continue; if (classid != 0 && list[i].class.indexOf(classid) < 0) continue; if (nation_city[0] != 0){ if (list[i].nationid != nation_city[0]) continue; if (nation_city[1] != 0) if (list[i].cityid != nation_city[1]) continue; } tableView.addRow(getCellPartner(list[i])); } tableView.notifyRowsChange(); }; }; var commands = [{ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ var data = data_ctn.getValue(); if (data.length == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_partner_is_null")}); return; } params.func.ok(data).then(function(){ params.frameList.removeLast(); }); } }]; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "search" }), cmd: function(){ header.searchMode(true); } }); var header = absol.buildDom({ tag: 'headerbarwithsearch', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text('txt_partner'), commands: commands, quickmenu: { props: { extendClasses: 'cd-context-menu', items: [ { text: LanguageModule.text("txt_filter"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "filter_alt" }), cmd: function(){ filterFunc(); } }, { text: LanguageModule.text("txt_add_partner"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "add" }), cmd: function(){ addNewPartner(); } } ] }, onSelect: function (x) { x.cmd(); } } }, data: { searchInput: inputsearchbox }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var data_ctn = DOMElement.div({ attrs: { className: "card-mobile-content" } }); redrawData(); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, data_ctn ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); return data_ctn; }; theme.formWork_flowsGetPeriodEdit = function(params){ var getRow = function(content){ var name_input = theme.input({ style: { flexGrow: '1' }, value: content? content.name : "" }); var color_input = absol.buildDom({ tag: "colorpickerbutton", style: { margin:'0 5px' }, props: { mode: 'HEX6', value: content? content.color : "white" } }); var child = [ name_input, color_input ]; if (content && content.isSystem){ name_input.disabled = true; child.push(DOMElement.button({ attrs: { className: "am-cabinet-transparent-btn", style: { visibility: "hidden" } }, children: [DOMElement.i({ attrs: {className: "material-icons card-icon-remove"}, text: "remove_circle" })] })); } else { child.push(DOMElement.button({ attrs: { className: "am-cabinet-transparent-btn", onclick: function(){ item.selfRemove(); } }, children: [DOMElement.i({ attrs: {className: "material-icons card-icon-remove"}, text: "remove_circle" })] })); } var item = absol.buildDom({ tag: "mcabinetitem", class: "am-flex-content", child: child }); if (content && content.isSystem) item.draggable = false; item.getValue = function(){ if (content && content.isSystem) return; var name = name_input.value.trim(); if (name == ""){ ModalElement.alert({message: LanguageModule.text("war_txt_no_name")}); return; } return { id: content? content.id : 0, name: name, color: color_input.value }; }; return item; }; var childs = []; for (var i = 0; i < params.list.length; i++){ childs.push(getRow(params.list[i])); } var list = absol.buildDom({ tag: "mcabinetlist", props: { draggable: true }, child: childs });; var res = DOMElement.div({ children: [ list, DOMElement.div({ children: [DOMElement.span({ attrs: { style: { height: "var(--control-height)", lineHeight: "var(--control-height)", color: "var(--a-color)" }, onclick: function(){ var at = Array.prototype.find.call(list.childNodes, function(elt){ return elt.draggable === false; }); list.addChildBefore(getRow(), at); } }, text: LanguageModule.text("txt_add") })] }) ] }); res.getValue = function(){ var x = list.getChildren(); var value = [], name, color; var v; for (i = 0; i < x.length; i++){ v = x[i].getValue(); if (v) value.push(v); } return value; }; return res; }; theme.formWork_flowsEditPeriods = function(params){ var commands = []; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.data_ctn] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.formWork_flowsEdit = function(params){ var commands = []; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.func.cancel().then(function(){ params.frameList.removeLast(); }); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.formContainer] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.formWork_flowsCloseObjectConfirm = function(params){ var bodycontent = DOMElement.div({attrs: {style: {maxWidth: "500px"}}}); if ((params.st.meeting.length + params.st.task.length) > 0){ bodycontent.appendChild(DOMElement.p({text: LanguageModule.text2("war_txt_close_object_warning_activities", [params.st.meeting.length + params.st.task.length])})) } if (params.st.period > 0){ bodycontent.appendChild(DOMElement.p({text: LanguageModule.text("war_txt_close_object_warning_period")})); var itemsList = [{value: 0, text: LanguageModule.text("txt_select_value")}]; var systemList = contentModule.getObjectPeriodSystemList(); for (var i = 0; i < systemList.length; i++){ itemsList.push({value: systemList[i].id, text: systemList[i].name}); } var period_select = absol.buildDom({ tag: "mselectmenu", props: { items: itemsList } }); bodycontent.appendChild(DOMElement.div({ attrs: {align: "center"}, children: [ DOMElement.span({ attrs: { style: { verticalAlign: "middle", lineHeight: "var(--control-height)", marginRight: "var(--control-horizontal-distance-2)" }, }, text: LanguageModule.text("txt_period") }), period_select ] })); } bodycontent.appendChild(DOMElement.p({text: LanguageModule.text("war_txt_close_object")})); theme.modalFormMobile({ title: LanguageModule.text("txt_archive_object"), bodycontent: bodycontent, buttonList: [ { text: LanguageModule.text("txt_ok"), typeColor: "light" }, { text: LanguageModule.text("txt_cancel") } ], func: function(sel){ if (sel == 0){ var data = { id: params.id, closed: 1 }; if (params.st.period > 0){ var period = period_select.value; if (period == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_period_is_null")}); return; } data.period = period; } params.func.save(data); } } }); }; theme.formWork_flowsViewPeriods = function(params){ var getRow = function(content){ var row = [ { text: content.name }, { attrs: {align: "center"}, children: [absol.buildDom({ tag: "colorpickerbutton", props: { mode: 'RGB', disabled: true, value: content.color } })] } ]; return row; }; var header = [ {text: LanguageModule.text("txt_name")}, { attrs: {style: {width: "60px", whiteSpace: "nowrap"}}, text: LanguageModule.text("txt_color") } ]; var data = []; for (var i = 0; i < params.list.length; i++){ data.push(getRow(params.list[i])); } var res = DOMElement.table({ attrs: {style: {width: "100%"}}, header: header, data: data }); return res; }; theme.formWork_flowsEditPermission = function(params){ var commands = []; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.data_ctn] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowEditObjectEmployeeForm = function(params){ var commands = []; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.data_ctn] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowEditObject = function(params){ var commands = []; commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "save" }), cmd: function(){ params.func.save().then(function(){ params.frameList.removeLast(); }); } }); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.title, commands: commands }, on: { action: function(){ params.func.close().then(function(){ params.frameList.removeLast(); }); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.formContainer] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.formWork_flowEmployeeObject = function(params){ if (params.type == "view"){ var items_assign_to_ListDic = new absol.ListDictionary(params.data.items_assign_to_List); var assign_to_text = ""; var item = items_assign_to_ListDic.getItemByValue(params.data.assign_to); if (item) assign_to_text = item.text; var itemsListDic = new absol.ListDictionary(params.data.itemsList); var priv_view_text = ""; var viewDic = {}; for (var i = 0; i < params.data.privViewValues.length; i++){ if (viewDic[params.data.privViewValues[i]]) continue; item = itemsListDic.getItemByValue(params.data.privViewValues[i]); if (item) priv_view_text += "; " + item.text; viewDic[params.data.privViewValues[i]] = true; } if (priv_view_text.length > 0) priv_view_text = priv_view_text.substr(2); var priv_edit_text = ""; var editDic = {}; for (var i = 0; i < params.data.privEditValues.length; i++){ if (editDic[params.data.privEditValues[i]]) continue; item = itemsListDic.getItemByValue(params.data.privEditValues[i]); if (item) priv_edit_text += "; " + item.text; editDic[params.data.privEditValues[i]] = true; } if (priv_edit_text.length > 0) priv_edit_text = priv_edit_text.substr(2); var res = DOMElement.div({ children: [ DOMElement.div({ attrs: {className: "card-mobile-label-form-edit-first"}, text: LanguageModule.text("txt_assign_to") + ": " }), DOMElement.span({ text: assign_to_text }), DOMElement.div({ attrs: {className: "card-mobile-label-form-edit"}, text: LanguageModule.text("txt_employee_has_permission_view") + ": " }), DOMElement.span({ text: priv_view_text }), DOMElement.div({ attrs: {className: "card-mobile-label-form-edit"}, text: LanguageModule.text("txt_employee_has_permission_edit") + ": " }), DOMElement.span({ text: priv_edit_text }) ] }); } else { var assign_to_select = absol.buildDom({ tag: "selecttreeleafmenu", style: { width: "100%", display: "block" }, props: { items: params.data.items_assign_to_List, value: params.data.assign_to, enableSearch: true } }); var priv_view_select = absol.buildDom({ tag: "multichecktreemenu", style: { width: "100%", display: "block" }, props: { items: params.data.itemsList, values: params.data.privViewValues, enableSearch: true } }); var priv_edit_select = absol.buildDom({ tag: "multichecktreemenu", style: { width: "100%", display: "block" }, props: { items: params.data.itemsList, values: params.data.privEditValues, enableSearch: true } }); var res = DOMElement.div({ children: [ DOMElement.div({ attrs: {className: "card-mobile-label-form-edit-first"}, text: LanguageModule.text("txt_assign_to") }), assign_to_select, DOMElement.div({ attrs: {className: "card-mobile-label-form-edit"}, text: LanguageModule.text("txt_employee_has_permission_view") }), priv_view_select, DOMElement.div({ attrs: {className: "card-mobile-label-form-edit"}, text: LanguageModule.text("txt_employee_has_permission_edit") }), priv_edit_select ] }); res.getValue = function(){ var assign_to = assign_to_select.value; if (assign_to == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_assign_to_is_null")}); return; } var data = { assign_to: assign_to, priv_view: priv_view_select.values, priv_edit: priv_edit_select.values }; return data; }; } return res; }; theme.workFlowViewObject = function(params){ params.viewGeneralInformation.style.paddingTop = "var(--control-verticle-distance-2)"; params.viewEmployee.style.paddingTop = "var(--control-verticle-distance-2)"; if (params.viewExtraData) params.viewExtraData.style.paddingTop = "var(--control-verticle-distance-2)"; params.viewPartner.style.paddingTop = "var(--control-verticle-distance-2)"; params.viewContact.style.paddingTop = "var(--control-verticle-distance-2)"; var scrollInto = function(value){ if (sectionList[value]) sectionList[value].scrollIntoView(); }; var commands = []; var quickmenuItems = []; if (params.cmdbutton.close_object){ quickmenuItems.push( { text: LanguageModule.text("txt_archive_object"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "mdi mdi-archive-outline" } }), cmd: function(){ params.cmdbutton.close_object(); } }, "============" ); } quickmenuItems.push( { text: LanguageModule.text("txt_general_information"), icon: DOMElement.i({ attrs: { className: "mdi mdi-information-outline" } }), extendClasses: "bsc-quickmenu", cmd: function(){ scrollInto("general_information"); } }, { text: LanguageModule.text("txt_data_extra"), extendClasses: "bsc-quickmenu", cmd: function(){ scrollInto("data_extra"); } }, { text: LanguageModule.text("txt_employee"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "account-circle-outline" } }), cmd: function(){ scrollInto("employee"); } }, { text: LanguageModule.text("txt_partner"), icon: DOMElement.i({ attrs: { className: "mdi mdi-store" } }), extendClasses: "bsc-quickmenu", cmd: function(){ scrollInto("partner"); } }, { text: LanguageModule.text("txt_contact"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "mdi mdi-card-account-phone-outline" } }), cmd: function(){ scrollInto("contact"); } }, { text: LanguageModule.text("txt_to_do"), extendClasses: "bsc-quickmenu", icon: DOMElement.span({ attrs: { className: "mdi mdi-checkbox-marked-circle-outline" } }), cmd: function(){ scrollInto("to_do"); } }, { text: LanguageModule.text("txt_comment"), icon: DOMElement.i({ attrs: { className: "mdi mdi-comment-multiple-outline" } }), extendClasses: "bsc-quickmenu", cmd: function(){ scrollInto("comment"); } } ); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.data.name, commands: commands, quickmenu: { props: { extendClasses: 'cd-context-menu', items: quickmenuItems }, onSelect: function (x) { x.cmd(); } } }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var chartCtn = DOMElement.div({ attrs: {style: {display: "inline-block", verticalAlign: "middle", paddingLeft: "20px"}} }); var markedIcon = contentModule.getMarkIcon(params.data.marked, params.func.markedFunc); var processlbar; var periodsList = []; for (var i = 0; i < params.periodsList.length; i++){ periodsList.push({ name: params.periodsList[i].name, value: params.periodsList[i].id, color: params.periodsList[i].color }); } processlbar = absol.buildDom({ tag: 'processlbar', style: { verticalAlign: "middle" }, props: { items: periodsList, value: params.data.period, lHeight: 1 }, on: { change: function(){ params.func.change_period(this.value); } } }); var drawInitInfor = function(disabled){ processlbar.disabled = disabled; var lock_ctn; if (disabled){ lock_ctn = DOMElement.div({ attrs: { title: LanguageModule.text("txt_archive_object"), className: "card-icon-cover-disabled", style: { marginLeft: "20px" } }, children: [DOMElement.i({ attrs: { className: "mdi mdi-archive-lock", style: { color: "red", fontSize: "var(--icon-fontsize)" } } })] }); } else { lock_ctn = DOMElement.div({ attrs: { title: LanguageModule.text("txt_archive_object"), className: "card-icon-cover disabled", onclick: function(){ params.cmdbutton.close_object(); } }, children: [DOMElement.i({ attrs: { className: "mdi mdi-archive-outline bsc-icon-hover-black" } })] }); } var viewInitInfor = DOMElement.div({ attrs: { className: "m-hr-intro-view-form" }, children: [ processlbar, chartCtn, lock_ctn, DOMElement.div({ attrs: { title: LanguageModule.text("txt_marked"), style: { display: "inline-block" } }, children: [markedIcon] }) ] }); if (params.data.closed){ viewInitInfor.classList.add("disabled"); } DOMElement.removeAllChildren(init_infor_ctn); init_infor_ctn.appendChild(viewInitInfor); }; var edit_general_information_ctn = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: params.func.editGeneralInformationFunc }, text: LanguageModule.text("txt_edit") }) ] }); var getGeneralInformationCtn = function(){ var childs = [ { class: 'm-mk-section-header-name', child: {text: LanguageModule.text("txt_general_information")}, } ]; if (params.func.editGeneralInformationFunc){ childs.push(edit_general_information_ctn); } var res = absol.buildDom({ attr: { "data-sectionid": "general_information" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), params.viewGeneralInformation ] }); return res; }; var edit_data_extra_ctn = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: params.func.editExtraDataFunc }, text: LanguageModule.text("txt_edit") }) ] }); var getExtraDataCtn = function(){ var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_data_extra") }, } ]; if (params.func.editExtraDataFunc){ childs.push(edit_data_extra_ctn); } var res = absol.buildDom({ attr: { "data-sectionid": "data_extra" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), params.viewExtraData ] }); return res; }; var edit_employee_ctn = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: params.func.editEmployeeFunc }, text: LanguageModule.text("txt_edit") }) ] }); var getEmployeeCtn = function(){ var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_employee") }, } ]; if (params.func.editEmployeeFunc){ childs.push(edit_employee_ctn); } var res = absol.buildDom({ attr: { "data-sectionid": "employee" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), params.viewEmployee ] }); return res; }; var add_partner_ctn = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: params.func.addPartnerFunc }, text: LanguageModule.text("txt_add") }) ] }); var getPartnerCtn = function(){ var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_partner") }, } ]; if (params.func.addPartnerFunc){ childs.push(add_partner_ctn); } var res = absol.buildDom({ attr: { "data-sectionid": "partner" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), params.viewPartner ] }); return res; }; var add_contact_ctn = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: params.func.addContactFunc }, text: LanguageModule.text("txt_add") }) ] }); var getContactCtn = function(){ var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_contact") }, } ]; if (params.func.addContactFunc){ childs.push(add_contact_ctn); } var res = absol.buildDom({ attr: { "data-sectionid": "contact" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), params.viewContact ] }); return res; }; var init_infor_ctn = DOMElement.div({}); drawInitInfor(params.data.closed); var data_ctn = DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [ init_infor_ctn, getGeneralInformationCtn() ] }); if (params.viewExtraData){ data_ctn.appendChild(getExtraDataCtn()); } data_ctn.appendChild(getEmployeeCtn()); data_ctn.appendChild(getPartnerCtn()); data_ctn.appendChild(getContactCtn()); var activitiesCtn = absol.buildDom({ attr: { "data-sectionid": "to_do" } }); data_ctn.appendChild(activitiesCtn); data_ctn.appendChild(params.viewComment); var sectionList = {}; absol.$("div", data_ctn, function(elt){ var id = elt.getAttribute("data-sectionid"); if (!id) return; sectionList[id] = elt; }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, data_ctn ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); singlePage.processlbar = processlbar; singlePage.chartCtn = chartCtn; singlePage.activitiesCtn = activitiesCtn; singlePage.drawInitInfor = drawInitInfor; singlePage.removePrivEdit = function(){ processlbar.disabled = true; DOMElement.removeAllChildren(edit_general_information_ctn); DOMElement.removeAllChildren(edit_data_extra_ctn); DOMElement.removeAllChildren(edit_employee_ctn); DOMElement.removeAllChildren(add_partner_ctn); DOMElement.removeAllChildren(add_contact_ctn); header.quickmenu = null; }; return singlePage; }; theme.formSettingWorkFlow = function(host, params){ hr.menu.showMobileTabbar(false); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_work_flows") }, on: { action: function(){ host.frameList.removeLast(); hr.menu.showMobileTabbar(true); } } }); var data_ctn = DOMElement.div({ attrs: { className: "card-mobile-content" } }); var drawGeneralInformation = function(){ var viewGeneralInformation = DOMElement.div({ attrs: { style: { paddingTop: "var(--control-verticle-distance-2)" } } }); host.drawGeneralInforFunc(viewGeneralInformation); var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_general_information") }, } ]; childs.push({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: function(){ params.func.edit_general_information_func(); } }, text: LanguageModule.text("txt_edit") }) ] }); var res = absol.buildDom({ child: [ absol.buildDom({ class: ['m-mk-section-header', 'first'], child: childs }), viewGeneralInformation ] }); return res; }; data_ctn.appendChild(drawGeneralInformation()); var drawPeriods = function(){ var viewPeriod = DOMElement.div({ attrs: { style: { paddingTop: "var(--control-verticle-distance-2)" } } }); host.drawPeriodsFunc(viewPeriod); var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_period") }, } ]; childs.push({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: function(){ params.func.edit_periods_func(); } }, text: LanguageModule.text("txt_edit") }) ] }); var res = absol.buildDom({ child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), viewPeriod ] }); return res; }; data_ctn.appendChild(drawPeriods()); var drawPermissions = function(){ var viewPermission = DOMElement.div({ attrs: { style: { paddingTop: "var(--control-verticle-distance-2)" } } }); host.drawPermissionsFunc(viewPermission); var childs = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_permission") }, } ]; childs.push({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: function(){ params.func.edit_permission_func(); } }, text: LanguageModule.text("txt_edit") }) ] }); var res = absol.buildDom({ child: [ absol.buildDom({ class: 'm-mk-section-header', child: childs }), viewPermission ] }); return res; }; data_ctn.appendChild(drawPermissions()); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, data_ctn ] }); host.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowAddObject = function(params){ var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_general_information") }, on: { action: function(){ params.frameList.removeLast(); }, command: function(event){ event.commandItem.cmd(); } } }); var generalInformationPageCtn = DOMElement.div({ children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [params.formContainer] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({attrs: {className: "m-kv-document-page-footer-left"}}), DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ var data = params.getValueFunction(); if (!data) return; generalInformationPageCtn.style.display = "none"; if (params.type_extra_of_object != 0){ extraDataPageCtn.style.display = ""; header.title = LanguageModule.text("txt_data_extra"); } else { employeePageCtn.style.display = ""; header.title = LanguageModule.text("txt_employee"); } } }, text: LanguageModule.text("txt_next") }) ] }) ] }) ] }); var employeeElt = theme.formWork_flowEmployeeObject({data: params.employeeData, type: "edit"}) var employeePageCtn = DOMElement.div({ attrs: { style: {display: "none"} }, children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [employeeElt] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "m-kv-document-page-footer-left"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ employeePageCtn.style.display = "none"; if (params.type_extra_of_object != 0){ extraDataPageCtn.style.display = ""; header.title = LanguageModule.text("txt_data_extra"); } else { generalInformationPageCtn.style.display = ""; header.title = LanguageModule.text("txt_general_information"); } } }, text: LanguageModule.text("txt_back") }) ] }), DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ var data = { general_information: params.getValueFunction(), employee: employeeElt.getValue() }; if (params.type_extra_of_object > 0){ data.extra_data = params.getValueExtraDataFunction(); } params.func.save(data).then(function(){ params.frameList.removeLast(); }); } }, text: LanguageModule.text("txt_save") }) ] }) ] }) ] }); var childs = [ header, generalInformationPageCtn, employeePageCtn ]; if (params.type_extra_of_object != 0){ var extraDataPageCtn = DOMElement.div({ attrs: { style: {display: "none"} }, children: [ DOMElement.div({ attrs: { className: 'm-kv-document-page-content' }, children: [params.formExtraDataContainer] }), absol.buildDom({ class: 'm-kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "m-kv-document-page-footer-left"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ generalInformationPageCtn.style.display = ""; extraDataPageCtn.style.display = "none"; header.title = LanguageModule.text("txt_general_information"); } }, text: LanguageModule.text("txt_back") }) ] }), DOMElement.div({ attrs: {className: "m-kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: { className: "m-kv-document-link", onclick: function(){ extraDataPageCtn.style.display = "none"; employeePageCtn.style.display = ""; header.title = LanguageModule.text("txt_employee"); } }, text: LanguageModule.text("txt_next") }) ] }) ] }) ] }); childs.push(extraDataPageCtn); } var singlePage = absol.buildDom({ tag: 'tabframe', child: childs }); params.frameList.addChild(singlePage); singlePage.requestActive(); }; theme.workFlowsViewForm = function(params){ hr.menu.showMobileTabbar(false); var filterFunc = function(){ theme.modalFormMobile({ title: LanguageModule.text("txt_filter"), bodycontent: filter_ctn }); }; var filterBoxes; if (params.onlyViewTable){ if (params.viewType == "kanban"){ ModalElement.alert({message: LanguageModule.text2("war_txt_kanban_view_objects", [hr.objects_kanban_view_limit])}); params.func.change_type_view("table"); } params.viewType = "table"; } var filter_ctn = DOMElement.div({}); var data_ctn = DOMElement.div({}); var tlboardtable = absol.buildDom({ tag: 'tlboardtable', style: { height: "100%" }, class: 'ac-main', props: { hasAddBtn: false } }); var iconFilter = DOMElement.i({ attrs: { className: "material-icons m-hr-icon-filter active" }, text: "filter_alt" }); var commands = [{ icon: iconFilter, cmd: function(){ filterFunc(); } }]; var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: params.data.name, commands: commands, quickmenu: { getMenuProps: function(){ var quickmenuItems = []; if (params.viewType == "kanban"){ quickmenuItems.push({ text: LanguageModule.text("txt_table_view"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "mdi mdi-table-eye" } }), cmd: function(){ params.viewType = "table"; singlePage.redrawFunc(params.periodsList, true); params.func.change_type_view("table"); } }); } else { if (!params.onlyViewTable) quickmenuItems.push({ text: LanguageModule.text("txt_kanban_view"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "mdi mdi-trello" } }), cmd: function(){ params.viewType = "kanban"; singlePage.redrawFunc(params.periodsList, true); params.func.change_type_view("kanban"); } }); } if (params.cmdbutton.add_object){ quickmenuItems.push({ text: LanguageModule.text("txt_add_object"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "add" }), cmd: function(){ params.cmdbutton.add_object(); } }); } return { extendClass: 'cd-context-menu', items: quickmenuItems } }, onSelect: function (x) { x.cmd(); } } }, on: { action: function(){ params.frameList.removeLast(); hr.menu.showMobileTabbar(true); params.func.close_view_func(); }, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: {className: "card-mobile-content"}, children: [ data_ctn, tlboardtable ] }) ] }); var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', props:{ placeholder: LanguageModule.text("txt_search") } }); var inputsearchbox_ctn = DOMElement.div({ children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit", } }), inputsearchbox ] }); singlePage.redrawFilterList = function(){ DOMElement.removeAllChildren(filter_ctn); var filterChange = function(loadClosed){ var isFilter = false; for (var i = 0; i < params.filterConfigList.length; i++){ if (!params.filterConfigList[i].display) continue; if (filterBoxes[params.filterConfigList[i].name].value != "all"){ isFilter = true; break; } } if (isFilter){ iconFilter.classList.add("active"); } else { iconFilter.classList.remove("active"); } if (loadClosed){ params.func.filterChangeFunc().then(function(periodsList){ singlePage.redrawFunc(periodsList, false, true); }); } else { singlePage.redrawFunc(params.periodsList, false, true); } }; filterBoxes = {}; for (var i = 0; i < params.filterConfigList.length; i++){ if (!params.filterConfigList[i].display) continue; if (params.filterConfigList[i].tree_leaf){ filterBoxes[params.filterConfigList[i].name] = absol.buildDom({ tag: "selecttreeleafmenu", style: { display: "inline-block", width: "100%" }, props: { items: params.filterConfigList[i].itemsList, value: params.filterConfigList[i].value, enableSearch: true }, on: { change: function(){ filterChange(); } } }); } else if (params.filterConfigList[i].tree){ filterBoxes[params.filterConfigList[i].name] = absol.buildDom({ tag: "selecttreemenu", style: { display: "inline-block", width: "100%" }, props: { items: params.filterConfigList[i].itemsList, value: params.filterConfigList[i].value, enableSearch: true }, on: { change: function(){ filterChange(); } } }); } else if (params.filterConfigList[i].nation_city){ filterBoxes[params.filterConfigList[i].name] = absol.buildDom({ tag: "dualselectmenu", style: { display: "inline-block", width: "100%" }, props: { items: params.filterConfigList[i].itemsList, value: params.filterConfigList[i].value, enableSearch: true }, on: { change: function(){ filterChange(); } } }); } else { filterBoxes[params.filterConfigList[i].name] = absol.buildDom({ tag: "mselectmenu", style: { display: "inline-block", width: "100%" }, props: { items: params.filterConfigList[i].itemsList, value: params.filterConfigList[i].value, enableSearch: true }, on: { change: function(i){ return function(){ if (params.filterConfigList[i].name == "opening") filterChange(true); else filterChange(); } }(i) } }); } filter_ctn.appendChild(DOMElement.div({ attrs: { className: (i == 0)? "card-mobile-label-form-edit-first" : "card-mobile-label-form-edit" }, text: params.filterConfigList[i].text })); filter_ctn.appendChild(filterBoxes[params.filterConfigList[i].name]); } filter_ctn.appendChild(inputsearchbox_ctn); }; var getViewObjectItem = function(objectItem){ var view = true, value; for (var j = 0; j < params.filterConfigList.length; j++){ if (!params.filterConfigList[j].display) continue; if (filterBoxes[params.filterConfigList[j].name].value == "all") continue; if (params.filterConfigList[j].name == "related_person"){ if (!objectItem.employeeRelatedDic[filterBoxes[params.filterConfigList[j].name].value]) view = false; } else { if (params.filterConfigList[j].extra){ value = objectItem.extra_data[params.filterConfigList[j].name]; } else { if (params.filterConfigList[j].main){ value = objectItem[params.filterConfigList[j].name]; } else { value = objectItem.extrainfo[params.filterConfigList[j].name]; } } if (params.filterConfigList[j].nation_city){ if (params.filterConfigList[j].value[0] == 0) continue; if (params.filterConfigList[j].value[1] == 0){ if (!EncodingClass.type.isArray(value) || value[0] != params.filterConfigList[j].value[0]){ view = false; break; } } else { if (!EncodingClass.type.isArray(value) || value[1] != params.filterConfigList[j].value[1]){ view = false; break; } } } else { if (filterBoxes[params.filterConfigList[j].name].value != value){ view = false; break; } } } } return view; }; singlePage.redrawFunc = function(periodsList, changeUrl, checkCountObject){ var countObjectView = 0; for (var i = 0; i < params.database.objects.items.length; i++){ params.database.objects.items[i].isView = false; } for (var i = 0; i < params.database.objects.items.length; i++){ if (!params.database.objects.items[i].privView) continue; var view = getViewObjectItem(params.database.objects.items[i]); if (view){ params.database.objects.items[i].isView = true; countObjectView++; } } if (checkCountObject){ if (countObjectView > hr.objects_kanban_view_limit){ if (params.viewType == "kanban"){ params.viewType = "table"; params.onlyViewTable = true; ModalElement.alert({message: LanguageModule.text2("war_txt_kanban_view_objects", [hr.objects_kanban_view_limit])}); singlePage.redrawFunc(periodsList, true); params.func.change_type_view("table"); return; } else { params.onlyViewTable = true; } } else { params.onlyViewTable = false; } } params.periodsList = periodsList; DOMElement.removeAllChildren(data_ctn); tlboardtable.clearItem(); if (params.viewType == "kanban"){ inputsearchbox_ctn.style.display = "none"; tlboardtable.style.display = ""; absol.ResizeSystem.update(); var getObjectCard = function(objectItem){ var view = getViewObjectItem(objectItem); if (view){ var itemsList = [ { text: LanguageModule.text("txt_view"), extendClasses: "bsc-quickmenu", icon: { tag: "i", class: "material-icons", child: { text: "visibility" } }, cmd: function(){ params.func.view_objects(objectItem.id); } } ]; if (objectItem.privEdit){ itemsList.push( { text: LanguageModule.text("txt_delete"), extendClasses: "bsc-quickmenu red", icon: { tag: "i", class: "material-icons", child: { text: "delete" } }, cmd: function(){ params.func.delete(objectItem.id).then(function(){ object.selfRemove(); }); } }, { text: LanguageModule.text("txt_archive_object"), extendClasses: "bsc-quickmenu", icon: { tag: "i", class: ["mdi", "mdi-archive-outline"] }, cmd: function(){ params.func.close_object(objectItem.id); } } ); } var object = absol.buildDom({ tag: 'tlcard', style:{ backgroundColor: 'white' }, props: { name: objectItem.name, ident: objectItem.id, quickmenu: { props: { extendClasses: 'cd-context-menu', items: itemsList }, onSelect: function (item) { item.cmd(); } } }, on: { dblclick: function(){ params.func.view_objects(objectItem.id); } } }); return object; } else { return null; } }; params.tlListDic = {}; periodsList.map(function(item, i) { var tlList = absol.buildDom({ tag: 'tllist', style:{ backgroundColor: item.color }, props: { ident: item.id, name: item.name, desc: "", hasAddBtn: false, quickmenu: null }, on: { itemorderchange: function (event) { console.log("itemorderchange", event); }, itementer: function (event) { params.func.change_period_for_object(event.item.ident, item.id); }, itemleave: function (event) { console.log("itemleave", event); }, dragitemstart: function (event) { console.log("dragitemstart", event); }, dragitemend: function (event) { console.log("dragitemend", event); } } }); params.tlListDic[item.id] = tlList; tlboardtable.addItem(tlList, item.isSystem);//nếu truyền cờ static là true thì board đó không drag đuợc, chỉ dùng cho các phần tử ở đầu hoặc cuối }); params.database.objects.items.forEach(function(objectItem){ if (objectItem.isView){ if (params.tlListDic[objectItem.period]) params.tlListDic[objectItem.period].addItem(getObjectCard(objectItem)); } }); singlePage.insertDataFunc = function(objects){ objects.forEach(function(objectItem){ var object = getObjectCard(objectItem); if (object){ if (params.tlListDic[objectItem.period]) params.tlListDic[objectItem.period].addItem(object); } }); }; } else { inputsearchbox_ctn.style.display = ""; tlboardtable.style.display = "none"; var getCellObject = function(content){ content.status = !content.close; var cells = [ { render: function(tdElt){ tdElt.addChild(DOMElement.div({ attrs: { onclick: function(){ params.func.view_objects(content.id); } }, text: content.name })); } }, { render: function(tdElt){ var markedIcon = contentModule.getMarkIcon(content.marked, function(marked){ return params.func.markedObjectFunc(content.id, marked); }); tdElt.addChild(markedIcon); } } ]; cells.push({ style: {width: "40px"}, render: function(tdElt){ var qmenuButton = DOMElement.div({ attrs: { className: "card-icon-cover" }, children: [DOMElement.i({ attrs: { className: "material-icons bsc-icon-hover-black" }, text: "more_horiz" })] }); var quickMenuItems = []; quickMenuItems.push({ text: LanguageModule.text("txt_view"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "visibility" }), onclick: function(){ params.func.view_objects(content.id); } }); if (content.privEdit) quickMenuItems.push({ text: LanguageModule.text("txt_delete"), extendClasses: ["bsc-quickmenu", "red"], icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "delete" }), cmd: function(){ params.func.delete(content.id).then(function(value){ var x = tableView.rowOf(row) x.remove(); }); } }); if (content.privEdit) quickMenuItems.push({ text: LanguageModule.text("txt_archive_object"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-archive-outline" } }), cmd: function(){ params.func.close_object(content.id); } }); absol.QuickMenu.showWhenClick(qmenuButton, {items: quickMenuItems}, [3, 4], function (menuItem) { if (menuItem.cmd) menuItem.cmd(); }); if (quickMenuItems.length > 0){ tdElt.addChild(qmenuButton); } } }); var row = { cells: cells }; return row; }; var data = []; for (var i = 0; i < params.database.objects.items.length; i++){ if (params.database.objects.items[i].isView) data.push(getCellObject(params.database.objects.items[i])); } DOMElement.removeAllChildren(data_ctn); var tableView = absol.buildDom({ tag: "dynamictable", props: { adapter: { data: { head: { rows: [] }, body: { rows: data } } } } }); tableView.attachSearchInput(inputsearchbox); data_ctn.appendChild(tableView); singlePage.insertDataFunc = function(objects){ for (var i = 0; i < objects.length; i++){ if (!objects[i].privView) continue; var view = getViewObjectItem(objects[i]); if (!view) continue; tableView.addRow(getCellObject(objects[i])); } tableView.notifyRowsChange(); }; } }; singlePage.redrawFilterList(); singlePage.redrawFunc(params.periodsList, true); params.frameList.addChild(singlePage); singlePage.requestActive(); return singlePage; }; theme.formWork_flowGetRow = function(content){ var markedIcon = contentModule.getMarkIcon(content.marked, content.func.markedFunc); var item = absol.buildDom({ tag: "mcabinetitem", class: "am-flex-content", child: [ DOMElement.div({ attrs: { style: { flexGrow: 1 }, onclick: function(){ if (content.default_open == "kanban") content.func.view(); else content.func.table_view(); } }, text: content.name }), DOMElement.div({ children: [markedIcon] }) ] }); var itemsList = []; itemsList.push({ text: LanguageModule.text("txt_kanban_view"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-trello" } }), cmd: function(){ content.func.view(); } }); itemsList.push({ text: LanguageModule.text("txt_table_view"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-table-eye" } }), cmd: function(){ content.func.table_view(); } }); if (content.func.setting) itemsList.push({ text: LanguageModule.text("txt_settings"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-tools" } }), cmd: function(){ content.func.setting(); } }); if (content.func.delete) itemsList.push({ text: LanguageModule.text("txt_delete"), extendClasses: ["bsc-quickmenu", "red"], icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "delete" }), cmd: function(){ content.func.delete().then(function(value){ item.selfRemove(); }); } }); if (itemsList.length > 0){ item.quickmenu = { props: { extendClasses: 'cd-context-menu', items: itemsList }, onSelect: function (x) { x.cmd(); } }; } return item; }; theme.formWork_flowsContentData = function(params){ DOMElement.removeAllChildren(params.ctn); var childs = [], x; for (var i = 0; i < params.database.work_flows.items.length; i++){ if (params.groupid != 0 && params.database.work_flows.items[i].groupid != params.groupid) continue; if (!params.database.work_flows.items[i].privView) continue; x = params.getCellWork_flow(params.database.work_flows.items[i].id); childs.push(theme.formWork_flowGetRow(x)); } var list = absol.buildDom({ tag: "mcabinetlist", child: childs }); if (params.inputsearchbox) list.addInputSearch(params.inputsearchbox); params.ctn.appendChild(list); }; theme.formWork_flowsInit = function(params){ var filterFunc = function(){ theme.modalFormMobile({ title: LanguageModule.text("txt_filter"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit-first" }, text: LanguageModule.text("txt_work_flow_group") }), group_select ] }) }); }; var group_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: contentModule.getWork_flowGroupsFilterList(params), enableSearch: true }, on: { change: function(){ params.filter_change_func(); } } }); var commands = []; if (params.cmdbutton.add !== undefined){ commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "add" }), cmd: params.cmdbutton.add }); } commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "filter_alt" }), cmd: function(){ filterFunc(); } }); commands.push({ icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "search" }), cmd: function(){ header.searchMode(true); } }); var inputsearchbox = absol.buildDom({ tag: 'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var header = absol.buildDom({ tag: 'headerbarwithsearch', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_work_flows"), commands: commands }, data: { searchInput: inputsearchbox }, on: { action: params.cmdbutton.close, command: function(event){ event.commandItem.cmd(); } } }); var singlePage = absol.buildDom({ tag: 'tabframe', child:[ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [params.data_container] }) ] }); singlePage.group_select = group_select; singlePage.inputsearchbox = inputsearchbox; return singlePage; }; ModuleManagerClass.register({ name: "Work_flows_view", prerequisites: ["ModalElement"] });