![]() 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 : |
theme.mobileInitBack = function(){ if (window.backLayoutFunc.length > 1){ hr.menu.loadPage(window.backLayoutFunc[window.backLayoutFunc.length - 2].pageNumber, "hidden"); } else { hr.menu.loadPage(1000, "hidden"); } window.backLayoutFunc.pop(); }; theme.formSelectPartner = function(params){ var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { display: "block", width: "100%", marginBottom: "var(--control-verticle-distance-2)" }, props: { placeholder: LanguageModule.text("txt_search") }, on: { stoptyping: function(){ params.func.filter_change_func(); } } }); 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", style: { display: "block", width: "100%", marginBottom: "var(--control-verticle-distance-2)" }, props: { items: itemsList, enableSearch: true, value: [0, 0] }, on: { change: function(){ params.func.filter_change_func(); } } }); var partner_class_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%", marginBottom: "var(--control-verticle-distance-2)" }, props: { items: contentModule.getPartnerClassFilterList(params), enableSearch: true }, on: { change: function(){ params.func.filter_change_func(); } } }); params.data_container.style.maxHeight = "calc(90vh - 250px)"; params.data_container.style.width = "100%"; params.data_container.style.auto = "auto"; ModalElement.showWindow({ title: LanguageModule.text("txt_partner"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { style: { paddingBottom: "10px" } }, children: [ partner_class_select, nation_cities_select, inputsearchbox ] }), params.data_container ] }), buttonlist: [ { text: LanguageModule.text("txt_ok"), typeColor: "light", onclick: function(){ params.func.ok(); ModalElement.close(); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }); params.data_container.nation_cities_select = nation_cities_select; params.data_container.inputsearchbox = inputsearchbox; params.data_container.partner_class_select = partner_class_select; }; contentModule.reportTimeModule = function(params){ console.log(params); var timeClass = params.class; var timeItems = [ {value: 1, text: LanguageModule.text("txt_yesterday")}, {value: 2, text: LanguageModule.text("txt_today")}, {value: 3, text: LanguageModule.text("txt_last_week")}, {value: 4, text: LanguageModule.text("txt_this_week")}, {value: 5, text: LanguageModule.text("txt_last_7_days")}, {value: 13, text: LanguageModule.text("txt_7_days_before_after")}, {value: 15, text: LanguageModule.text("txt_30_days_before_after")}, {value: 6, text: LanguageModule.text("txt_last_month")}, {value: 7, text: LanguageModule.text("txt_this_month")}, {value: 8, text: LanguageModule.text("txt_last_30_days")}, {value: 9, text: LanguageModule.text("txt_last_quarter")}, {value: 10, text: LanguageModule.text("txt_this_quarter")}, {value: 11, text: LanguageModule.text("txt_last_90_days")}, {value: 12, text: LanguageModule.text("txt_last_year")}, {value: 14, text: LanguageModule.text("txt_this_year")}, {value: 0, text: LanguageModule.text("txt_option")} ]; var props; if (params.props) { props = params.props; } else { props = {}; } props.items = timeItems; props.value = params.value.relativeTime ? params.value.relativeTime: 0; var displayFunc = function(value){ if (value == 0) { absol.$("." + timeClass, params.container, function(elt){ console.log(elt); elt.style.display = "inline-block"; }); } else { absol.$("." + timeClass, params.container, function(elt){ console.log(elt); elt.style.display = "none"; }); } }; var cbb = absol._({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: timeItems, value: params.value.relativeTime ? params.value.relativeTime: 0 }, on: { change: function(){ displayFunc(cbb.value); start.disabled = cbb.value != 0; end.disabled = cbb.value != 0; if (params.change) params.change(); } } }); var start = absol._({ tag: 'dateinput', props: { value: params.value.start, disabled: cbb.value != 0 }, on: { change: function(){ if (params.change) params.change(); } } }); var end = absol._({ tag: 'dateinput', props: { value: params.value.end, disabled: cbb.value != 0 }, on: { change: function(){ if (params.change) params.change(); } } }); var retval = { timeElt: cbb, startElt: start, endElt: end, getValue: function(){ var timeValue, startValue, endValue; timeValue = cbb.value; startValue = start.value; endValue = end.value; var rs = contentModule.generateRelativeTime({value: timeValue, from: startValue, to: endValue}); return { originValue: { relativeTime: timeValue, start: startValue, end: endValue }, specificValue: { start: rs.start, end: rs.end } }; } }; return retval; }; theme.checkinPartnerForm = function(host){ if (data_module.employeeOfMe.length == 0){ ModalElement.alert({message: LanguageModule.text("war_user_not_link_employee")}); return; } var showLocation = function(position){ var drawList = function(){ DOMElement.removeAllChildren(list_ctn); if (!host.load_partner_done){ setTimeout(function(){ drawList(); }, 50); return; } else { var listPartner = []; var lat = position.latitude; var lng = position.longitude; var distance, res; for (var i = 0; i < host.database.partner.items.length; i++){ res = contentModule.getGPSByString(host.database.partner.items[i].gps); if (!res) continue; distance = contentModule.calcCrow(lat, lng, res.lat, res.lng); if (isNaN(distance) || distance > hr.maximumDistance) continue; listPartner.push(host.database.partner.items[i]); } ModalElement.close(-1); DOMElement.removeAllChildren(list_ctn); if (listPartner.length == 0){ list_ctn.appendChild(DOMElement.div({ children: [ DOMElement.div({attrs: {style: {height: "30px"}}, text: LanguageModule.text("war_txt_there_is_no_available_partner_to_check_in")}), DOMElement.div({attrs: {style: {height: "30px"}}, text: LanguageModule.text("txt_your_gps") + ": " + lat +"," + lng}) ] })); copyBtn.style.display = ""; copyBtn.onclick = function(){ absol.clipboard.copyText(lat +"," + lng); }; FormClass.api_call({ url: "hr_system_debugs_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable({ userid: systemconfig.userid, time: new Date(), task: "checkin_partner", content: lat +"," + lng })}], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ // TODO: } else { // ModalElement.alert({message: message}); } } else { // ModalElement.alert({message: message}); } } }); return; } var value = 0; var data = []; var highlightContent = function(row) { if (row !== undefined) { if (oldHighlightedRow !== row) { for (i = 0; i < oldHighlightedRow.childNodes.length; i++) { oldHighlightedRow.childNodes[i].style.backgroundColor = null; } for (i = 0; i < row.childNodes.length; i++) { row.childNodes[i].style.backgroundColor = "var(--table-light-row-background-color)"; } oldHighlightedRow = row; } } }; var oldHighlightedRow = DOMElement.tr({}); listPartner.forEach(function(item){ data.push([{ attrs: { style: {cursor: "pointer"}, onclick: function(event, me){ value = { employeeid: data_module.employeeOfMe[0], partnerid: item.id, partnergps: item.gps, checkingps: position.latitude + "," + position.longitude, checkin_follow_gps: 1, checkintime: new Date() }; var x = me; while (x.tagName.toLowerCase() !== "tr") x = x.parentElement; highlightContent(x); checkinBtn.style.display = ""; } }, text: item.name }]); }); list_ctn.appendChild(DOMElement.div({ attrs: {className: "cardsimpletableclass"}, children: [DOMElement.table({ attrs: {style: {width: "100%"}}, data: data })] })); list_ctn.getValue = function(){ return value; }; } }; var drawListPre = function(){ list_ctn.getValue = function(){ return null; }; ModalElement.show_loading(); drawList(); }; host.database = {}; host.load_partner_done = false; host.latLngScope = absol.measurements.latLngRectFromCenter(position, hr.maximumDistance/1000); data_module.loadPartnerGPSList(host).then(function(values){ host.load_partner_done = true; }); drawListPre(); }; var checkin = function(){ if (host.checkintime && ((new Date().getTime() - host.checkintime.getTime()) > 60000)) return; host.checkintime = new Date(); var data = list_ctn.getValue(); if (!data){ ModalElement.alert({message: "Chưa chọn đối tác"}); return; } var res = contentModule.getGPSByString(data.partnergps); var res1 = contentModule.getGPSByString(data.checkingps); var distance = contentModule.calcCrow(res1.lat, res1.lng, res.lat, res.lng); if (distance > hr.maximumDistance){ ModalElement.alert({message: LanguageModule.text2("war_txt_checkin_distance_invalid", [hr.maximumDistance])}); return; } ModalElement.show_loading(); FormClass.api_call({ url: "partner_checkin_save_auto.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(data)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ ModalElement.close(); ModalElement.alert({message: "Checkin thành công"}); } else { ModalElement.alert({message: message}); return; } } else { ModalElement.alert({message: message}); return; } } }); }; if (window.isApp){ var getLocation = function(){ mobileHost.getLocation(function(value){ if (value == null){ ModalElement.alert({message: LanguageModule.text("war_txt_devices_not_supported_gps")}); return; } else { showLocation(value); } }); }; var isPriv = mobileHost.checkLocationPermission(); if (isPriv){ getLocation(); } else { mobileHost.requestLocationPermission(function(value){ if (value) getLocation(); else { ModalElement.alert({message: "Không được cấp quyền"}); } }); } } else { if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(position){ showLocation(position.coords); }, function(err){ if (err) ModalElement.alert({message: err.message}); }); } else { ModalElement.close(-1); ModalElement.alert({message: "Geolocation is not supported by this browser."}); } } var list_ctn = DOMElement.div({}); var params = { title: LanguageModule.text("txt_partner_checkin"), bodycontent: list_ctn, buttonlist: [ { text: LanguageModule.text("txt_checkin"), typeColor: "light", onclick: function(){ checkin(); } }, { text: LanguageModule.text("txt_copy_gps"), typeColor: "light" }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }; ModalElement.showWindow(params); var checkinBtn = params.buttonEltList[0]; checkinBtn.style.display = "none"; var copyBtn = params.buttonEltList[1]; copyBtn.style.display = "none"; }; theme.checkinForm = function(host){ if (data_module.employeeOfMe.length == 0){ LanguageModule.text("war_txt_you_need_to_link_with_an_employee_in_organization_chart_to_use_app_functions"); return; } var checkin = function(){ var data = data_ctn.getValue(); if (!data) return; ModalElement.show_loading(); FormClass.api_call({ url: "checkin_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ ModalElement.close(); ModalElement.alert({message: "Checkin thành công"}); } else if (message == "failed_employee"){ LanguageModule.text("war_txt_you_need_to_link_with_an_employee_in_organization_chart_to_use_app_functions"); } else { ModalElement.alert({message: message}); return; } } else { ModalElement.alert({message: message}); return; } } }); }; var drawDataCtn = function(){ DOMElement.removeAllChildren(data_ctn); var method_select = absol.buildDom({ tag: "selectmenu", style: { display: "block", width: "100%" }, props: { items: [{value: "other", text: LanguageModule.text("txt_other")}] }, on: { change: function(){ switch (this.value) { case "other": break; default: } } } }); method_select.emit('change'); var list_ctn = DOMElement.div({}); var comment_input = DOMElement.textarea({ attrs: { className: "cardSimpleTextarea", style: { width: "100%", height: "100px" } } }); data_ctn.appendChild(DOMElement.div({ children: [ DOMElement.table({ attrs: {style: {width: "100%"}}, data: [ [ {text: LanguageModule.text("txt_method")}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, method_select ] ] }), list_ctn, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_note") }), comment_input ] })); data_ctn.getValue = function(){ var method = method_select.value; var data = { method: method }; var comment = comment_input.value.trim(); switch (method) { case "other": if (comment == ""){ ModalElement.alert({ message: LanguageModule.text("war_txt_no_note"), func: function(){ comment_input.focus(); } }); return; } data.checkingps = positionData.latitude + "," + positionData.longitude; break; default: } data.comment = comment; return data; }; }; var positionData; if (window.isApp){ var getLocation = function(){ mobileHost.getLocation(function(value){ if (value == null){ ModalElement.alert({message: LanguageModule.text("war_txt_devices_not_supported_gps")}); return; } else { positionData = value; checkinBtn.style.display = ""; } }); }; var isPriv = mobileHost.checkLocationPermission(); if (isPriv){ getLocation(); } else { mobileHost.requestLocationPermission(function(value){ if (value) getLocation(); else { ModalElement.alert({message: "Không được cấp quyền"}); } }); } } else { if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(position){ positionData = position.coords; checkinBtn.style.display = ""; }, function(err){ if (err) ModalElement.alert({message: err.message}); }); } else { ModalElement.close(-1); ModalElement.alert({message: "Geolocation is not supported by this browser."}); } } var data_ctn = DOMElement.div({}); var params = { title: LanguageModule.text("txt_checkin"), bodycontent: data_ctn, buttonlist: [ { text: LanguageModule.text("txt_checkin"), typeColor: "light", onclick: function(){ checkin(); } }, { text: LanguageModule.text("txt_copy_gps"), typeColor: "light" }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }; ModalElement.showWindow(params); var checkinBtn = params.buttonEltList[0]; checkinBtn.style.display = "none"; var copyBtn = params.buttonEltList[1]; copyBtn.style.display = "none"; drawDataCtn(); }; contentModule.drawComment = function (params){ var drawCommentEdit = function(){ window.backLayoutFunc.push({ func: function(){ params.frameList.removeLast(); window.backLayoutFunc.pop(); } }); ModalElement.show_loading(); contentModule.drawCommentInside(params).then(function(cBox){ ModalElement.close(-1); var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className: "material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_comment") }, 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", style: { padding: 0 } }, children: [cBox.getView()] }) ] }); params.frameList.addChild(singlePage); singlePage.requestActive(); }); }; var comment_ctn = DOMElement.div({}); var child = [ { class: 'm-mk-section-header-name', child: { text: LanguageModule.text("txt_comment") } } ]; var add_elt = absol.buildDom({ class: 'm-mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: function(){ drawCommentEdit(); } }, text: LanguageModule.text("txt_add") }) ] }); if (!params.disabled) child.push(add_elt); var res = absol.buildDom({ attr: { "data-sectionid": "comment" }, child: [ absol.buildDom({ class: 'm-mk-section-header', child: child }), DOMElement.div({ attrs: {style: {paddingTop: "var(--control-verticle-distance-2)"}}, children: [comment_ctn] }) ] }); res.setDisabled = function(type){ add_elt.style.display = "none"; }; contentModule.drawCommentInside({taskid: params.taskid, tablename: params.tablename, disabled: true}).then(function(chatBox){ var x = chatBox.getView(); var y = absol.$('.card-chat-box-messages-container', x); y.addStyle({ position: "relative", left: "unset", top: "unset", right: "unset", bottom: "unset", overflowY: "visible" }); comment_ctn.appendChild(y); }); return res; }; contentModule.questionChange = function (params) { var message = params.message, title = params.title, func = params.onclick; if (message === undefined) message = LanguageModule.text("war_close_not_save"); if (title === undefined) title = "Question"; if (func === undefined) func = function (){}; theme.showForm({ message: message, buttonList: [ { text: LanguageModule.text("txt_yes") }, { text: LanguageModule.text("txt_no") }, { text: LanguageModule.text("txt_cancel") } ], func: func }); }; theme.HeaderBarWithSearh = (function(){ var _ = absol._; var $ = absol.$; function HeaderBarWithSearch(){ this.$disableSearchBtn = _({ tag: 'button', class: ['am-header-bar-left-btn', 'am-header-bar-disable-search-btn'], child:{ tag:'i', class: 'material-icons', child:{text:'keyboard_backspace'}}, on:{ click: this.eventHandler.clickDisableSearchBtn } }); this.addChildBefore(this.$disableSearchBtn, this.firstChild); } HeaderBarWithSearch.tag = 'headerbarwithsearch'; HeaderBarWithSearch.render = function(data){ var searchInput = data.searchInput; var res = _('mheaderbar'); searchInput.attr('style', undefined); res.$searchInput = searchInput; res.addChildBefore(searchInput, res.$right); return res; }; HeaderBarWithSearch.prototype.searchMode = function(flag){ if (this.containsClass('am-search-mode') == flag) return; if (flag){ this.addClass('am-search-mode'); this.$searchInput.focus(); this._prevActionIcon = this.actionIcon; } else { this.removeClass('am-search-mode'); this.$searchInput.blur(); this.$searchInput.value = ""; } }; HeaderBarWithSearch.eventHandler = {}; HeaderBarWithSearch.eventHandler.clickDisableSearchBtn = function(event){ this.searchMode(false); }; absol.coreDom.install(HeaderBarWithSearch); return HeaderBarWithSearch; })(); theme.modalFormMobile = function(params){ if (params.title === undefined) params.title = ""; var formcontent; var h = DOMElement.div({ attrs: { className: "card-modal-mobile-body-content-ctn" } }); if (params.bodycontent !== undefined) h.appendChild(params.bodycontent); var buttonElt = DOMElement.div({ attrs: { align: "right", style: { paddingTop: "20px" } } }); if (params.buttonList === undefined) params.buttonList = []; var color; for (var i = 0; i < params.buttonList.length; i++){ switch (params.buttonList[i].typeColor) { case "light": color = "var(--a-color)"; break; case "dark": default: color = "#aaaaaa"; } buttonElt.appendChild(DOMElement.span({ attrs: { style: { color: color, fontWeight: "bold", marginLeft: "20px" }, onclick: function(i) { return function (event, me) { formcontent.remove(); params.func(i); } } (i) }, text: params.buttonList[i].text.toUpperCase() })); } if (params.buttonList.length > 0) h.appendChild(buttonElt); formcontent = DOMElement.div({ attrs: { style: { width: "100vw", height: "100vh", top: 0, position: "fixed", background: "#0000001a", zIndex: 88888 } }, children: [DOMElement.div({ attrs: { className: "card-modal-mobile-ctn" }, children: [ DOMElement.div({ attrs: { className: "card-modal-mobile-header-ctn" }, children: [ DOMElement.div({ attrs: { className: "card-modal-mobile-header-title" }, text: params.title }), DOMElement.div({ attrs: { className: "card-modal-mobile-close-btn", onclick: function(){ formcontent.remove(); } }, children: [DOMElement.i({ attrs: { className: "material-icons card-modal-mobile-close-icon" }, text: "clear" })] }) ] }), h ] })] }); document.body.appendChild(formcontent); }; theme.showForm = function(params){ var bodycontent; var h = DOMElement.div({}); if (params.title !== undefined){ h.appendChild(DOMElement.div({ attrs: { style: { textAlign: "center", fontWeight: "bold", paddingBottom: "20px" } }, text: params.title })); } if (params.message !== undefined){ h.appendChild(DOMElement.div({ attrs: { style: { textAlign: "center" } }, text: params.message })); } else if (params.bodycontent !== undefined){ h.appendChild(params.bodycontent); } var buttonElt = DOMElement.div({ attrs: { align: "right", style: { paddingTop: "20px" } } }); if (params.buttonList === undefined) params.buttonList = []; for (var i = 0; i < params.buttonList.length; i++){ buttonElt.appendChild(DOMElement.span({ attrs: { style: { color: params.buttonList[i].color, fontWeight: "bold", marginLeft: "20px" }, onclick: function(i) { return function (event, me) { bodycontent.remove(); params.func(i); } } (i) }, text: params.buttonList[i].text.toUpperCase() })); } if (params.buttonList.length > 0) h.appendChild(buttonElt); bodycontent = DOMElement.div({ attrs: { style: { width: "100vw", height: "100vh", top: 0, position: "fixed", background: "#0000001a", zIndex: 888888 } }, children: [DOMElement.div({ attrs: { style: { width: "calc(100vw - 60px)", maxWidth: "400px", paddingTop: "20px", paddingBottom: "10px", backgroundColor: "white", padding: "30px", borderRadius: "15px", margin: "50% auto", boxShadow: "2px 2px 2px 0px #908787" } }, children: [h] })] }); document.body.appendChild(bodycontent); }; ModalElement.alertNoLanguage = function (params) { var message, func; if (typeof params === 'string'){ message = params; } else { message = params.message; func = params.func; } if (message === undefined) message = ""; if (func === undefined) func = function () {}; theme.showForm({ message: message, buttonList: [ { text: "OK", color: "var(--a-color)" } ], func: func }); }; ModalElement.alert = function (params) { ModalElement.close(-1); var message, func; if (typeof params === 'string'){ message = params; } else { message = params.message; func = params.func; } if (message === undefined) message = ""; if (func === undefined) func = function () {}; theme.showForm({ message: message, buttonList: [ { text: (LanguageModule.defaultcode === undefined)? "OK" : LanguageModule.text("txt_ok"), color: "var(--a-color)" } ], func: func }); }; ModalElement.show_loading = function(){ ModalElement.show({ index: -1, bodycontent: absol.buildDom({ tag: "spinnerico", style: { width: "100px", height: "100px" } }), overflow: "visible" }); }; ModalElement.question = function (params) { var message = params.message,title = params.title, h, func = params.onclick; if (message === undefined) message = ""; if (title === undefined) title = "Question"; if (func === undefined) func = function(){}; theme.showForm({ title: title, message: message, buttonList: [ { text: LanguageModule.text("txt_yes"), color: "var(--a-color)" }, { text: LanguageModule.text("txt_no"), color: "#aaaaaa" } ], func: func }); }; ModalElement.question2 = function (params) { var message = params.message,title = params.title, h, func = params.onclick; if (message === undefined) message = ""; if (title === undefined) title = "Question"; if (func === undefined) func = function(){}; theme.showForm({ title: title, message: message, buttonList: [ { text: LanguageModule.text("txt_ok"), color: "var(--a-color)" }, { text: LanguageModule.text("txt_cancel"), color: "#aaaaaa" } ], func: func }); }; theme.quickmenu = function(menuItems){ var trigger = DOMElement.i({ attrs: { className: "material-icons " + DOMElement.dropdownclass.button, style: { fontSize: "20px", cursor: "pointer", color: "#929292" }, onmouseout: function(event, me){ me.style.color = "#929292"; }, onmouseover: function(event, me){ me.style.color = "black"; } }, text: "more_vert" }); absol.QuickMenu.showWhenClick(trigger, {items: menuItems}, 'auto', function (menuItem) { if (menuItem.cmd) menuItem.cmd(); }); return trigger; }; theme.layoutInit = function(params){ return absol.buildDom({ class: 'am-application', child: [ params.tabPanel, params.tabBar ] }); }; theme.menuHeader = function(params){ var systemMenu = [ { text: LanguageModule.text("txt_personal_profile"), icon: { tag: 'mmdirect', props: { iconName: 'file-account-outline' } }, cmd: params.cmd.personal_profile } ]; systemMenu.push({ text: LanguageModule.text("txt_log_out"), icon: { tag: "mmdirect", props: { iconName: "logout" } }, cmd: params.cmd.logout }); var listmenuhorizontal = [ { text: LanguageModule.text("txt_activities"), items: [ { text: LanguageModule.text("txt_to_do"), hidden: !params.cmd.activities, icon: { tag: "mmdirect", props: { iconName: "format-list-checks" } }, cmd: params.cmd.activities }, { text: LanguageModule.text("txt_partner_checkin"), hidden: !params.cmd.partner_checkin, icon: { tag: "mmdirect", props: { iconName: "map-marker-check" } }, cmd: params.cmd.partner_checkin }, { text: LanguageModule.text("txt_work_checkin"), hidden: !params.cmd.checkin, icon: { tag: "mmdirect", props: { iconName: "map-marker-check" } }, cmd: params.cmd.checkin }, { text: LanguageModule.text("txt_request_approval"), hidden: !params.cmd.human_resource_request, icon: { tag: "mmdirect", props: { iconName: "application-edit" } }, cmd: params.cmd.human_resource_request } ] }, { text: LanguageModule.text("txt_work_flows_and_crm"), icon: { tag: 'mmdirect', props: { iconName: 'alpha-w-circle-outline' } }, items: [ { text: LanguageModule.text("txt_work_flows"), icon: { tag: "mmdirect", props: { iconName: "stack-overflow" } }, cmd: params.cmd.work_flows }, { text: LanguageModule.text("txt_partner"), icon: { tag: "mmdirect", props: { iconName: "store" } }, cmd: params.cmd.partner }, { text: LanguageModule.text("txt_partner_check_in_list"), icon: { tag: "mmdirect", props: { iconName: "store-marker-outline" } }, cmd: params.cmd.partner_checkin_list }, { text: LanguageModule.text("txt_contact"), icon: { tag: "mmdirect", props: { iconName: "card-account-phone-outline" } }, cmd: params.cmd.contact } ] }, { text: LanguageModule.text("txt_document_manager"), icon: { tag: 'mmdirect', props: { iconName: 'text-box' } }, cmd: params.cmd.document_manager } ]; if (!window.isApp){ listmenuhorizontal.push( { text: LanguageModule.text("txt_training"), icon: { tag: 'mmdirect', props: { iconName: 'school-outline' } }, items: [ { text: LanguageModule.text("txt_lesson"), icon: { tag: 'mmdirect', props: { iconName: 'book-open-blank-variant' } }, cmd: params.cmd.lesson }, { text: LanguageModule.text("txt_exercise"), icon: { tag: 'mmdirect', props: { iconName: 'format-list-checks' } }, cmd: params.cmd.exercise }, { text: LanguageModule.text("txt_examination"), icon: { tag: 'mmdirect', props: { iconName: 'format-list-checks' } }, cmd: params.cmd.examination } ] } ); } listmenuhorizontal.push( { text: LanguageModule.text("txt_bsc"), icon: { tag: 'mmdirect', props: { iconName: 'gauge' } }, items: [ { text: LanguageModule.text("txt_input_values"), icon: { tag: "mmdirect", props: { iconName: "button-cursor" } }, cmd: params.cmd.bsc_input_values } ] }, { text: LanguageModule.text("txt_system"), icon: { tag: 'mmdirect', props: { iconName: 'cog-outline' } }, items: systemMenu } ); var horizontalMenu = absol.buildDom({ tag:'mmatmenu', props:{ items: listmenuhorizontal }, on:{ press:function(event){ var item = event.menuItem; if (item.cmd){ item.cmd(); } this.activeTab = -1; } } }); return horizontalMenu; }; theme.formPersonalProfile = function(params){ var header = absol.buildDom({ tag: 'mheaderbar', props: { actionIcon: DOMElement.i({ attrs: { className:"material-icons" }, text: "arrow_back_ios" }), title: LanguageModule.text("txt_personal_profile"), commands: [ { icon: DOMElement.i({ attrs: { className:"material-icons" }, text: "save" }) } ] }, on: { action: params.cmdbutton.close, command: params.cmdbutton.save } }); console.log(header); var fullname = theme.input({ style: { width: "100%" }, value: params.data.fullname }); var username = theme.input({ style: { width: "100%" }, disabled: true, value: params.data.username }); var language = absol.buildDom({ tag: 'selectmenu', style: { display: "block", width: "100%" }, props:{ value: params.data.language, items: params.data.languageList } }); var font_level_select = absol.buildDom({ tag: 'selectmenu', style: { display: "block", width: "100%" }, props:{ value: params.data.font_level, items: contentModule.getFontLevelList() } }); var email = theme.input({ style: { width: "100%" }, value: params.data.email }); var comment = DOMElement.textarea({ attrs: { className: "cardSimpleTextarea", style: { width: "100%", height: "100px" }, value: params.data.comment } }); var celloldpasswordlabel = DOMElement.div({ attrs: { className: "card-mobile-label-form-edit", style: { display: "none" } }, text: LanguageModule.text("txt_old_password") }); var oldpassword = theme.input({ style: { width: "100%", display: "none" } }); var celloldpasswordinput = oldpassword; var cellnewpasswordlabel = DOMElement.div({ attrs: { className: "card-mobile-label-form-edit", style: { display: "none" } }, text: LanguageModule.text("txt_new_password") }); var newpassword = theme.input({ style: { width: "100%", display: "none" } }); var cellnewpasswordinput = newpassword; var cellrepasswordlabel = DOMElement.div({ attrs: { className: "card-mobile-label-form-edit", style: { display: "none" } }, text: LanguageModule.text("txt_reinput_password_new") }); var repassword = theme.input({ style: { width: "100%", display: "none" } }); var cellrepasswordinput = repassword; var logo_img = DOMElement.img({ attrs: { style: { maxHeight: "128px", maxWidth: "128px", cursor: "pointer", display: "inline-block" }, src: params.data.user_avatars } }); var logo_cell = DOMElement.div({ attrs: { align: "center", style: { height: "130px", backgroundColor: "#ffffff", textAlign: "center", cursor: "pointer", verticalAlign: "middle", display: "table-cell" }, onclick: function(event, me){ pizo.xmlModalDragImage.createModal(document.body,function(){ var src = pizo.xmlModalDragImage.imgUrl.src; params.user_avatars = src; logo_img.src = src; }); } }, children: [logo_img] }); var change = 0; var singlePage = DOMElement.div({ attrs: {style: {height: "100%"}}, children: [ header, DOMElement.div({ attrs: { className: "card-mobile-content" }, children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit-first" }, text: LanguageModule.text("txt_username") }), username, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_fullname") }), fullname, DOMElement.div({ attrs: {style: {paddingTop: "var(--control-verticle-distance-2)"}}, children: [DOMElement.a({ attrs:{ style: { cursor: "pointer", color: "var(--a-color)" }, onclick: function(event,me){ if (change == 0){ change = 1; me.text = LanguageModule.text("txt_hide_change_password"); celloldpasswordlabel.style.display = ""; celloldpasswordinput.style.display = ""; cellnewpasswordlabel.style.display = ""; cellnewpasswordinput.style.display = ""; cellrepasswordlabel.style.display = ""; cellrepasswordinput.style.display = ""; oldpassword.setAttribute('type', "password"); oldpassword.focus(); newpassword.setAttribute('type', "password"); repassword.setAttribute('type', "password"); } else { change = 0; me.text = LanguageModule.text("txt_change_password"); celloldpasswordlabel.style.display = "none"; celloldpasswordinput.style.display = "none"; cellnewpasswordlabel.style.display = "none"; cellnewpasswordinput.style.display = "none"; cellrepasswordlabel.style.display = "none"; cellrepasswordinput.style.display = "none"; oldpassword.setAttribute('type', "text"); newpassword.setAttribute('type', "text"); repassword.setAttribute('type', "text"); oldpassword.value = ""; newpassword.value = ""; repassword.value = ""; } } }, text: LanguageModule.text("txt_change_password") })] }), celloldpasswordlabel, celloldpasswordinput, cellnewpasswordlabel, cellnewpasswordinput, cellrepasswordlabel, cellrepasswordinput, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_email") }), email, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_language") }), language, // DOMElement.div({ // attrs: { // className: "card-mobile-label-form-edit" // }, // text: LanguageModule.text("txt_font_level") // }), // font_level_select, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_avatar") }), DOMElement.div({ attrs: { align: "center", style: { border: "1px solid #d6d6d6", width: "130px", borderRadius: "3px" } }, children: [ DOMElement.div({ attrs: { style: { display: "table-cell" } }, children: [logo_cell] }) ] }), DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_comment") }), comment ] }) ] }); singlePage.getValue = function(){ var emailadd = email.value.trim(); if (!contentModule.filterEmail.test(emailadd)){ ModalElement.alert({ message: LanguageModule.text("war_txt_email_invalid"), func: function(){ email.focus(); } }); return; } if (fullname.value.trim() == ""){ ModalElement.alert({ message: LanguageModule.text("war_no_fullname"), func: function(){ fullname.focus(); } }); return; } var data = { fullname: fullname.value.trim(), email: emailadd, comment: comment.value.trim(), language: language.value, font_level: font_level_select.value, user_avatars: params.user_avatars }; if (change == 1) { if (oldpassword.value.trim() == ""){ ModalElement.alert({ message: LanguageModule.text("txt_old_password_is_null"), func: function(){ oldpassword.focus(); } }); return; } if (newpassword.value.trim() == ""){ ModalElement.alert({ message: LanguageModule.text("txt_password_is_null"), func: function(){ newpassword.focus(); } }); return; } if (newpassword.value != repassword.value) { ModalElement.alert({ message: LanguageModule.text("war_password_nomatch"), func: function(){ repassword.focus(); } }); return; } data.newpassword = newpassword.value.trim(); data.oldpassword = oldpassword.value.trim(); } return data; }; return singlePage; }; theme.formConfirmPassword = function(params){ ModalElement.showWindow({ index: 1, closebutton: false, title: LanguageModule.text("txt_confirm_password"), bodycontent: DOMElement.table({ data: [ [ {},{},params.notification ], [ { attrs: {style: {whiteSpace: "nowrap"}}, text: LanguageModule.text("txt_password") }, {attrs: {style: {width: "10px"}}}, params.password_confirm ], [{attrs: {style: {height: "20px"}}}], [{ attrs :{ colSpan: 3, align: "center" }, children: [DOMElement.table({ data: [[ { children: [theme.noneIconButton({ onclick: params.func.ok, text: LanguageModule.text("txt_ok") })] }, { attrs: {style: {width: carddone.menu.distanceButtonForm}} }, { children: [theme.noneIconButton({ onclick: params.func.close, text: LanguageModule.text("txt_close") })] } ]] })] }] ] }) }); }; theme.checkbox = function(params){ var res = { tag: "checkbox", props: {}, on: {} }; if (params.class !== undefined) res.class = params.class; if (params.checked !== undefined) res.props.checked = params.checked; if (params.disabled !== undefined) res.props.disabled = params.disabled; if (params.text !== undefined) res.props.text = params.text; if (params.cursor !== undefined) res.props.cursor = params.cursor; if (params.onchange !== undefined) res.on.change = params.onchange; return absol.buildDom(res); }; theme.input = function(params){ var res = { class: "cardsimpleInput", tag: "input", props: {}, on: {} }; if (params.style !== undefined) res.style = params.style; if (params.value !== undefined) res.props.value = params.value; if (params.disabled !== undefined) res.props.disabled = params.disabled; if (params.onkeyup !== undefined) res.on.keyup = params.onkeyup; if (params.onkeydown !== undefined) res.on.keydown = params.onkeydown; if (params.onfocus !== undefined) res.on.focus = params.onfocus; if (params.onblur !== undefined) res.on.blur = params.onblur; if (params.align !== undefined) res.props.align = params.align; if (params.placeholder !== undefined) res.props.placeholder = params.placeholder; if (params.type !== undefined) res.props.type = params.type; if (params.autocomplete !== undefined) res.props.autocomplete = params.autocomplete; if (params.onchange !== undefined) res.props.onchange = params.onchange; return absol._(res); }; ModalElement.showWindow = function (params) { var childs = []; if (params.title) childs.push(DOMElement.div({ attrs: { align: "left", style: { minWidth: "200px", height: "40px", color: "black", font: "16px Helvetica, Arial, sans-serif", fontWeight: "bold" } }, text: params.title })); if (params.bodycontent){ childs.push(DOMElement.div({ attrs: { style: { maxWidth: "90vw", maxHeight: "calc(90vh - 160px)", overflow: "auto" } }, children: [params.bodycontent] })); } params.buttonEltList = []; if (params.buttonlist && params.buttonlist.length > 0){ var buttonList = [], color, btn; for (var i = 0; i < params.buttonlist.length; i++){ switch (params.buttonlist[i].typeColor) { case "light": color = "var(--a-color)"; break; case "dark": default: color = "#aaaaaa"; } btn = DOMElement.span({ attrs: { style: { fontWeight: "bold", marginLeft: "20px", color: color }, onclick: params.buttonlist[i].onclick }, text: params.buttonlist[i].text.toUpperCase() }); params.buttonEltList.push(btn); buttonList.push(btn); } childs.push(DOMElement.div({ attrs: { align: "right", style: { paddingTop: "20px", marginBottom: "var(--control-verticle-distance-2)" } }, children: buttonList })); } ModalElement.show({ index: params.index, bodycontent: DOMElement.div({children: childs}) }); }; ModuleManagerClass.register({ name: "Common_view", prerequisites: ["ModalElement"] });