![]() 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/ |
Upload File : |
theme.formSelectPartner = function(params){ params.inputidboxes = {}; var valueChecked = (params.value !== undefined)? params.value : 0; var randomId = contentModule.generateRandom(); var inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { display: "block", width: "100%", marginBottom: "var(--control-verticle-distance-2)" }, 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", style: { display: "block", width: "100%", marginBottom: "var(--control-verticle-distance-2)" }, 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%", marginBottom: "var(--control-verticle-distance-2)" }, props: { items: contentModule.getPartnerClassFilterList(params), enableSearch: true }, on: { change: function(){ redrawData(); } } }); var redrawData = function(){ var classid = partner_class_select.value; var nation_city = nation_cities_select.value; var getCellPartner = function(content){ var cells = [{ style: {textAlign: "center"}, render: function(tdElt){ params.inputidboxes[content.id] = absol.buildDom({ tag: "radio", props: { name: "radio_" + randomId, checked: content.id == valueChecked }, on: { change: function(){ valueChecked = content.id; } } }); tdElt.addChild(params.inputidboxes[content.id]); } }]; cells.push({ render: function(tdElt){ tdElt.appendChild(DOMElement.div({ attrs: { onclick: function(){ if (params.inputidboxes[content.id]){ params.inputidboxes[content.id].checked = true; valueChecked = content.id; } } }, text: content.name })); } }); var row = { cells: cells }; return row; }; var data = []; if (params.allValue){ var all_radio_elt = absol.buildDom({ tag: "radio", props: { name: "radio_" + randomId, checked: valueChecked == 0 }, on: { change: function(){ valueChecked = 0; } } }); var cells = [{ style: {textAlign: "center"}, render: function(tdElt){ tdElt.addChild(all_radio_elt); } }]; cells.push({ render: function(tdElt){ tdElt.appendChild(DOMElement.div({ attrs: { onclick: function(){ all_radio_elt.checked = true; valueChecked = 0; } }, text: LanguageModule.text("txt_all_partner") })); } }); data.push({ cells: cells }); } else if (params.selectValue){ var select_radio_elt = absol.buildDom({ tag: "radio", props: { name: "radio_" + randomId, checked: valueChecked == 0 }, on: { change: function(){ valueChecked = 0; } } }); var cells = [{ style: {textAlign: "center"}, render: function(tdElt){ tdElt.addChild(select_radio_elt); } }]; cells.push({ render: function(tdElt){ tdElt.appendChild(DOMElement.div({ attrs: { onclick: function(){ select_radio_elt.checked = true; valueChecked = 0; } }, text: LanguageModule.text("txt_select_value") })); } }); data.push({ cells: cells }); } for (var i = 0; i < params.database.partner.items.length; i++){ 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(params.data_container); var tableView = absol.buildDom({ tag: "dynamictable", props: { adapter: { data: { head: { rows: [] }, body: { rows: data } } } } }); tableView.attachSearchInput(inputsearchbox); params.data_container.appendChild(tableView); params.data_container.getValue = function(){ if (valueChecked == 0){ if (params.allValue){ return { value: 0, text: LanguageModule.text('txt_all_partner') } } else if (params.selectValue){ return { value: 0, text: LanguageModule.text("txt_select_value") }; } else { return { value: 0, text: "" }; } } else { var pIndex = params.database.partner.getIndex(valueChecked); var res = { value: valueChecked, text: params.database.partner.items[pIndex].name }; return res; } }; params.data_container.insertData = function(list){ for (var i = 0; i < list.length; i++){ 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(); }; }; 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(){ var data = params.data_container.getValue(); params.func.ok(data); ModalElement.close(); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }); redrawData(); }; 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.checkinProjectForm = function(host){ var checkin = function(){ var method = method_select.value; if (method == 0){ ModalElementa.alert({message: "Chưa chọn loại"}); return; } var data = list_ctn.getValue(); if (!data){ ModalElement.alert({message: "Chưa chọn dự án"}); return; } var res = contentModule.getGPSByString(data.projectgps); 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: "project_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; } } }); }; var loadProjectByGeoposIdList = function(listGeopos){ return new Promise(function(rs, rj){ listGeopos.sort(function(a, b){ return a - b; }); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "load_project_by_geopos_id_list"}, {name: "listGeopos", value: EncodingClass.string.fromVariable(listGeopos)} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var dic = contentModule.makeDictionaryIndex(host.database.geopos.items); var st = EncodingClass.string.toVariable(message.substr(2)); var index; for (var i = 0; i < st.length; i++){ index = dic[st[i].geoid]; if (index >= 0){ st[i].location = host.database.geopos.items[index].location; } } rs(st); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; var drawList = function(method, type){ if (!host.load_geopos_done){ setTimeout(function(){ drawList(method, type); return; }, 50); } else { var showLocation = function(position){ if (absol.$.isRealNumber(position.accuracy) && position.accuracy > hr.maximumAllowableAccuracy){ ModalElement.alert({message: LanguageModule.text("war_txt_maximum_allowable_error")}); return; } var listGeopos = []; var lat = position.latitude; var lng = position.longitude; var distance, res; for (var i = 0; i < host.database.geopos.items.length; i++){ res = contentModule.getGPSByString(host.database.geopos.items[i].location); if (!res) continue; distance = contentModule.calcCrow(lat, lng, res.lat, res.lng); if (isNaN(distance) || distance > hr.maximumDistance) continue; listGeopos.push(host.database.geopos.items[i].id); } DOMElement.removeAllChildren(list_ctn); if (listGeopos.length == 0){ ModalElement.close(-1); list_ctn.innerText = LanguageModule.text("war_txt_there_is_no_available_project_to_check_in"); return; } 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 = "#bfbfbf"; } oldHighlightedRow = row; } } }; var oldHighlightedRow = DOMElement.tr({}); loadProjectByGeoposIdList(listGeopos).then(function(listProject){ ModalElement.close(-1); if (listProject.length == 0){ list_ctn.innerText = LanguageModule.text("war_txt_there_is_no_available_project_to_check_in"); return; } var value = 0; var data = []; listProject.forEach(function(item){ data.push([{ attrs: { style: {cursor: "pointer"}, onclick: function(event, me){ value = { method: method_select.value, type: type_select.value, geoid: item.id, projectid: item.id, projectgps: item.location, checkingps: position.latitude + "," + position.longitude, checkintime: new Date() }; var x = me; while (x.tagName.toLowerCase() !== "tr") x = x.parentElement; highlightContent(x); checkinBtn.disabled = false; } }, 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; }; }); }; 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 { 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 drawListPre = function(){ checkinBtn.disabled = true; list_ctn.getValue = function(){ return null; }; var method = method_select.value; var type = type_select.value; if (method == 0){ DOMElement.removeAllChildren(list_ctn); list_ctn.innerText = LanguageModule.text("war_txt_there_is_no_available_project_to_check_in"); return; } ModalElement.show_loading(); drawList(method, type); }; host.database = {}; host.load_geopos_done = false; data_module.loadGeographiesList().then(function(values){ contentModule.makeDatabaseContent(host, {geopos: values}); host.load_geopos_done = true; }); var method_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: [ {value: 0, text: LanguageModule.text("txt_select_value")}, {value: "gps", text: LanguageModule.text("txt_gps")}, // {value: "wifi", text: LanguageModule.text("txt_wifi")} ] }, on: { change: function(){ drawListPre(); } } }); var type_select = absol.buildDom({ tag: "mselectmenu", style: { display: "block", width: "100%" }, props: { items: [ {value: 0, text: LanguageModule.text("txt_select_value")}, {value: "in", text: LanguageModule.text("txt_in")}, {value: "out", text: LanguageModule.text("txt_out")} ] } }); var list_ctn = DOMElement.div({ text: LanguageModule.text("war_txt_there_is_no_available_project_to_check_in") }); var params = { title: LanguageModule.text("txt_checkin"), bodycontent: DOMElement.table({ attrs: {style: {width: "100%"}}, data: [ [method_select], [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}], [type_select], [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}], [list_ctn] ] }), buttonlist: [ { text: LanguageModule.text("txt_checkin"), typeColor: "light", onclick: function(){ checkin(); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }; ModalElement.showWindow(params); var checkinBtn = params.buttonEltList[0]; drawListPre(); }; theme.checkinPartnerForm = function(host){ var drawList = function(){ DOMElement.removeAllChildren(list_ctn); if (!host.load_partner_done){ setTimeout(function(){ drawList(); }, 50); return; } else { var showLocation = function(position){ if (absol.$.isRealNumber(position.accuracy) && position.accuracy > hr.maximumAllowableAccuracy){ ModalElement.alert({message: LanguageModule.text("war_txt_maximum_allowable_error")}); return; } 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){ ModalElement.close(-1); list_ctn.innerText = LanguageModule.text("war_txt_there_is_no_available_partner_or_location_to_check_in"); 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 = "#bfbfbf"; } 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; }; }; 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 { 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 drawListPre = function(){ checkinBtn.style.display = "none"; list_ctn.getValue = function(){ return null; }; ModalElement.show_loading(); drawList(); }; var checkin = function(){ 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; } } }); }; host.database = {}; host.load_partner_done = false; data_module.loadPartnerGPSList(host).then(function(values){ console.log(host.database.partner.items); host.load_partner_done = true; }); 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_cancel"), onclick: function(){ ModalElement.close(); } } ] }; ModalElement.showWindow(params); var checkinBtn = params.buttonEltList[0]; drawListPre(); }; contentModule.drawComment = function (params){ var drawCommentEdit = function(){ 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.checkin, icon: { tag: "mmdirect", props: { iconName: "map-marker-check" } }, cmd: params.cmd.checkin }, { text: LanguageModule.text("txt_project_checkin"), hidden: !params.cmd.project_checkin, icon: { tag: "mmdirect", props: { iconName: "map-marker-check" } }, cmd: params.cmd.project_checkin } ] }, // { // text: LanguageModule.text("txt_human_resource"), // icon: { // tag: 'mmdirect', // style: { // backgroundColor: 'rgb(62, 153, 194)' // }, // props: { // iconName: 'view-list' // } // }, // items: [ // { // text: LanguageModule.text("txt_organization_chart"), // icon: 'span.mdi.mdi-department', // cmd: params.cmd.orgs // } // ] // }, { 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_checkin"), icon: { tag: "mmdirect", props: { iconName: "store-marker-outline" } }, cmd: params.cmd.partner_checkin }, { 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 }, { 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_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: 'https://avatars1.githubusercontent.com/u/32388488?s=400&v=4'//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_account") }), 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 = { attrs: { className: "cardsimpleInput", type: "text" } }; if (params.style !== undefined) res.attrs.style = params.style; if (params.value !== undefined) res.attrs.value = params.value; if (params.disabled !== undefined) res.attrs.disabled = params.disabled; if (params.onkeyup !== undefined) res.attrs.onkeyup = params.onkeyup; if (params.onkeydown !== undefined) res.attrs.onkeydown = params.onkeydown; if (params.onchange !== undefined) res.attrs.onchange = params.onchange; if (params.align !== undefined) res.attrs.align = params.align; if (params.placeholder !== undefined) res.attrs.placeholder = params.placeholder; if (params.type !== undefined) res.attrs.type = params.type; if (params.autocomplete !== undefined) res.attrs.autocomplete = params.autocomplete; return DOMElement.input(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"] });