![]() 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 : |
hr.partner.searchDataFunc = function(filter, host){ return new Promise(function(resolve, reject){ var func1 = function(){ var searchValue = filter.searchValue.toLowerCase(); var nvnText = absol.string.nonAccentVietnamese(searchValue); var words = searchValue.split(/[\s,\\.]+/); var wordDict = words.reduce(function(ac, cr){ ac[cr] = true; return ac; }, {}) var extraParams = { partnerDic: partnerDic, words: words, nvnWords: nvnText.split(/[\s,\\.]+/), text: searchValue, nvnText: nvnText, wordDict: wordDict, filter: { nationid: filter.nation_city? filter.nation_city[0] : 0, cityid: filter.nation_city? filter.nation_city[1] : 0, classid: filter.classid, marked_value: filter.marked_value }, markedDic: filter.markedDic }; data_module.cacheContent_partners.psearch({ searchFunc: function (record){ if (extraParams.filter.marked_value && !extraParams.markedDic[record.id]) return null; if (extraParams.filter.classid){ if (!extraParams.partnerDic[record.id]) return null; } if (extraParams.filter.nationid && record.nationid != extraParams.filter.nationid) return null; if (extraParams.filter.cityid && record.cityid != extraParams.filter.cityid) return null; if (extraParams.text === "") return { id: record.id, icld: true, name: record.name }; function harmonicMean(a, b) { return 2 / (1 / a + 1 / b); } function wordLike(a, b) { var m = a.length; var n = b.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) if (a.charAt(i) === b.charAt(j)) { if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1; } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); return Q[map(m, n)] / harmonicMean(m, n); } function wordsMatch(sq1, sq2, matchWordPow) { matchWordPow = matchWordPow === undefined ? 1 : matchWordPow; var m = sq1.length; var n = sq2.length; function map(i, j) { return i * (n + 1) + j; } var Q = Array((m + 1) * (n + 1)).fill(0); var e = 0.0; for (var i = 0; i < m; ++i) for (var j = 0; j < n; ++j) { e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow); if (Q[map(i + 1, j + 1)]) { if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e; e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]); if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e; } return Q[map(m, n)]/Math.max(harmonicMean(m, n), 1); } function nonAccentVietnamese(s) { return s.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a") .replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A") .replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e") .replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E") .replace(/ì|í|ị|ỉ|ĩ/g, "i") .replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I") .replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o") .replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O") .replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u") .replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U") .replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y") .replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y") .replace(/đ/g, "d") .replace(/Đ/g, "D") .replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "") .replace(/\u02C6|\u0306|\u031B/g, ""); } var text = record.id + ' ' + record.name + ' ' + record.fullname + ' ' + record.address + ' ' + record.email + ' ' + record.fax; text += ' ' + record.website + ' ' + record.taxcode + ' ' + record.gps + ' ' + record.description; text = text.toLowerCase(); var nvnText = nonAccentVietnamese(text); var words = text.trim().split(/[\s,\\.]+/); var nvnWords = nvnText.trim().split(/[\s,\\.]+/); var wordDict = {}; for (var i = 0; i < words.length; i++) { wordDict[words[i]] = true; } var score = 0; var mustIncluded = true; for (var key in extraParams.wordDict) { if (!wordDict[key]) { mustIncluded = false; break; } } if (mustIncluded) score += 1e4; var idx = text.indexOf(extraParams.text); if (idx >= 0) { mustIncluded = true; score += 1e3 / (idx + 1); } else { idx = nvnText.indexOf(extraParams.nvnText); if (idx >= 0) { mustIncluded = true; score += 1e3 / (idx + 1e3); } } if (mustIncluded) return { id: record.id, icld: true, name: record.name, score: score }; score = wordsMatch(nvnWords, extraParams.nvnWords) + wordsMatch(words, extraParams.words); if (score > 0.2) return { id: record.id, score: score }; return null; }, extraParams: extraParams, callbackfunc: function (values) { var newFilter = { searchValue: host.inputsearchbox.value.trim(), classid: host.partner_class_select.value, nation_city: host.nation_cities_select.value, marked_value: host.marked_view_elt? host.marked_view_elt.value : false, markedDic: host.markedDic }; if (host && EncodingClass.string.compare(newFilter, filter)){ console.log("cancel"); return; } var forSortingArr = []; var icldArr = []; var maxScore = 0; for (var i = 0; i < values.length; ++i) { if (values[i].icld) { values[i].name = absol.string.nonAccentVietnamese(values[i].name); icldArr.push(values[i]); } else { forSortingArr.push(values[i]); } } if (filter.searchValue === ""){ icldArr.sort(function(a, b){ if (a.name < b.name) return -1; return 1; }); } icldArr.sort(function(a, b) { return b.score - a.score; }); var idArr = []; for (var i = 0; i < icldArr.length; i++){ idArr.push(icldArr[i].id); } forSortingArr.sort(function(a, b) { return b.score - a.score; }); var maxScore; if (forSortingArr.length > 0){ maxScore = forSortingArr[0].score; for (var i = 0; i < forSortingArr.length; i++){ if (forSortingArr[i].score > (maxScore*0.8)) idArr.push(forSortingArr[i].id); } } if (filter && filter.searchValue != ""){ if (idArr.length > 500) idArr = idArr.splice(0, 500); } resolve(idArr); } }); }; var partnerDic = {}; if (filter.classid != 0){ data_module.cacheContent_partner_class_links.psearch({ searchFunc: function(record){ if (record.classid == extraParams.classid) return record; return null; }, extraParams: { classid: filter.classid }, callbackfunc: function(values){ for (var i = 0; i < values.length; i++){ partnerDic[values[i].partnerid] = true; } func1(); } }); } else { func1(); } }); }; hr.partner.updateRowById = function(host, id, data){ var t = host.inputidboxes[id]; if (t){ while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } var oldRows = [t]; for (var i = 0; i < host.design.rows.length - 1; i++){ t = t.nextSibling; if (t) oldRows.push(t); } var newRows = hr.partner.getCellPartner(host, id, 1, data); for (var i = 0; i < oldRows.length; i++){ var j = 0; if (i == 0){ j = 1; } for (var m = oldRows[i].childNodes.length - 1; m >= j ; m--){ oldRows[i].replaceChild(newRows[i].childNodes[m], oldRows[i].childNodes[m]); } } } }; hr.partner.deleteRowById = function(host, id){ var index = host.allPartnerIDList.indexOf(id); if (index >= 0) host.allPartnerIDList.splice(index, 1); index = host.idListView.indexOf(id); var t; if (index >= 0){ for (var i = index + 1; i < host.countView; i++){ t = host.inputidboxes[host.idListView[i]]; if (t){ while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } t.firstChild.innerText = i; } } host.idListView.splice(index, 1); } t = host.inputidboxes[id]; if (t){ while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } var l = [t]; for (var i = 0; i < host.design.rows.length; i++){ t = t.nextSibling; if (t) l.push(t); } for (var i = 0; i < l.length; i++){ l[i].remove(); } host.countView--; delete l; delete host.inputidboxes[id]; } }; hr.partner.deletePartner = function(host, id, adminDelete = false){ return new Promise(function(resolve, reject){ console.log(adminDelete); ModalElement.show_loading(); FormClass.api_call({ url: "partner_delete.php", params: [ {name: "id", value: id}, {name: "adminDelete", value: adminDelete? 1 : 0} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ hr.partner.deleteRowById(host, id); resolve(); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message.startsWith("failed_has_data")){ if (systemconfig.privSystem >= 2){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_has_data_admin"), func: function(){ hr.partner.deletePartner(host, id, true).then(function(){ resolve(); }); } }); } else { ModalElement.alert({message: LanguageModule.text("war_txt_failed_has_data_no_admin")}); } } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.partner.deletePartnerConfirm = function(host, id){ return new Promise(function(resolve, reject){ var partnerData = data_module.getContent("partners", id); ModalElement.show_loading(); var adminDelete = false; data_module.cacheContent_partner_class_links.psearch({ searchFunc: function(record){ if (extraParams.id == record.partnerid) return record; return null; }, extraParams: { id: id }, callbackfunc: function(partner_class_links){ var listPromise = []; var cData, hasExtra = false; for (var i = 0; i < partner_class_links.length; i++){ if (partner_class_links[i].classid == 0) continue; cData = data_module.getContent("partner_class", partner_class_links[i].classid); if (cData.type_extra != 0){ listPromise.push(new Promise(function(rs, rj){ hr.partner.loadExtraDataByTypeid(host, id, cData.type_extra).then(function(value){ if (value.id > 0){ hasExtra = true; rs(); } else { rs(); } }); })); } } var func = function(){ ModalElement.close(-1); ModalElement.question({ title: LanguageModule.text("war_title_delete_partner"), message: LanguageModule.text2("war_txt_detele", [partnerData.name]), onclick: function(sel){ if (sel == 0){ hr.partner.deletePartner(host, id, adminDelete).then(function(value){ resolve(value); }); } } }); }; if (listPromise.length == 0){ func(); } else { Promise.all(listPromise).then(function(values){ if (hasExtra){ if (systemconfig.privSystem >= 2){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_has_data_admin"), func: function(){ hr.partner.deletePartner(host, id, true).then(function(value){ resolve(value); }); } }); } else { ModalElement.alert({message: LanguageModule.text("war_txt_failed_has_data_no_admin")}); } } else { func(); } }); } } }); }); }; hr.partner.addPartnerSubmitFunc = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction(); if (!data) return; var oldData; if (id > 0){ oldData = host.dataPartnerEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "fullname", "nation_city", "address", "class", "phone", "email", "website", "fax", "taxcode", "gps", "description", "available", "extrainfo"] ); if (!ischange){ resolve(oldData); return; } } else { oldData = {}; } data.id = id; data.available = data.available? 1 : 0; if (id > 0){ data.ver = host.dataPartnerEdit.ver; } else { data.ver = 1; } if (data.nation_city){ data.nationid = data.nation_city[0]; data.cityid = data.nation_city[1]; } else { data.nationid = 0; data.cityid = 0; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); ModalElement.show_loading(); FormClass.api_call({ url: "partner_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(data)}, {name: "old_data", value: EncodingClass.string.fromVariable(oldData)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.class = data.class; st.extrainfo = EncodingClass.string.toVariable(st.extrainfo); st.nation_city = data.nation_city; resolve(st); } else if (message.startsWith("war_txt_")){ ModalElement.alert({message: LanguageModule.text(message)}); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "deleted" || message == "edited"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_ver_reload_data") }); } else if (message == "exist_name"){ ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")}); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.partner.addPartnerSubmit = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ hr.partner.addPartnerSubmitFunc(host, id, getValueFunction).then(function(st){ resolve(); if (id > 0){ var ex; if (EncodingClass.string.compare(host.dataPartnerEdit.class, st.class) != 0){ ex = true; } host.dataPartnerEdit = st; host.drawPartnerViewFunc(host.viewPartner); if (ex){ host.drawPartnerExtraDataFunc(); } if (host.redraw_history_func){ host.redraw_history_func(); } if (!host.quick_open){ hr.partner.updateRowById(host, id, st); } } else { host.idListView.push(id); host.allPartnerIDList.push(id); host.countView++; id = st.id; hr.partner.showPartnerPre(host, id); var rows = hr.partner.getCellPartner(host, id, host.countView, st); for (var j = 0; j < rows.length; j++){ host.tableView.appendChild(rows[j]); } } }); }); }; hr.partner.addPartnerClose = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction("no_alert"); if (!data) { resolve(); return; } if (id > 0){ var oldData = host.dataPartnerEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "fullname", "nation_city", "address", "class", "phone", "email", "website", "fax", "taxcode", "description", "gps", "available"] ); } else { var ischange = false; } if (!ischange){ resolve(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ hr.partner.addPartnerSubmit(host, host.partnerid, getValueFunction).then(function(){ resolve(); }); } else if (sel == 1){ resolve(); } } }); }); }; hr.partner.redrawDetails = function(host, id){ host.partnerid = id; function redraw(value){ var formContainer = DOMElement.div({}); theme.fromPartnerEdit({ title: (id == 0)? LanguageModule.text("txt_add") : LanguageModule.text("txt_edit"), formContainer: formContainer, frameList: host.frameList, func: { save: function(){ return hr.partner.addPartnerSubmit(host, host.partnerid, getValueFunction); }, cancel: function(){ return hr.partner.addPartnerClose(host, host.partnerid, getValueFunction); } } }); var getValueFunction; contentModule.makeFormData({ typeid: data_module.form_config.partner.typeid, formid: data_module.form_config.partner.input_form, initialValue: value, formContainer: formContainer, typelists: data_module.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; } }); }); }; if (id == 0){ redraw(); } else { redraw(host.dataPartnerEdit); } }; hr.partner.loadPartnerById = function(host, id){ return new Promise(function(resolve, reject){ var t, i, idlist; data_module.loadTables(["partners", "partner_class_links"], function(){ ModalElement.close(-1); if (!data_module.cacheContent_partners.exists(id)){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.partner.init(host); } }); return; } var dataPartnerEdit = data_module.getContent("partners", id); if (!EncodingClass.type.isString(dataPartnerEdit.extrainfo)){ contentModule.reportBug({ filename: "partner extrainfo not string", data: EncodingClass.string.fromVariable(dataPartnerEdit) }); dataPartnerEdit.extrainfo = {}; } else { if (dataPartnerEdit.extrainfo == "") dataPartnerEdit.extrainfo = {}; else dataPartnerEdit.extrainfo = EncodingClass.string.toVariable(dataPartnerEdit.extrainfo); } if ((dataPartnerEdit.nationid != 0) && (dataPartnerEdit.cityid != 0)){ dataPartnerEdit.nation_city = [dataPartnerEdit.nationid, dataPartnerEdit.cityid]; } else { dataPartnerEdit.nation_city = null; } dataPartnerEdit.class = []; data_module.cacheContent_partner_class_links.psearch({ searchFunc: function(record){ if (record.partnerid == extraParams.partnerid){ return record.classid; } return null; }, extraParams: { partnerid: id }, callbackfunc: function(classidList){ dataPartnerEdit.class = classidList; resolve(dataPartnerEdit); } }); }); }); }; hr.partner.addPartner = function(host, id){ if (id == 0){ hr.partner.redrawDetails(host, id); } else { ModalElement.show_loading(); hr.partner.loadPartnerById(host, id).then(function(dataPartnerEdit){ host.dataPartnerEdit = dataPartnerEdit; hr.partner.redrawDetails(host, id); }); } }; hr.partner.checkin = function(host, partnerid, partnerGPS){ return new Promise(function(resolve, reject){ if (!host.employeeOfMe) host.employeeOfMe = data_module.employeeOfMe; if (host.employeeOfMe.length == 0){ ModalElement.alert({message: LanguageModule.text("war_user_not_link_employee")}); return; } if (host.checkintime && ((new Date().getTime() - host.checkintime.getTime()) > 60000)) return; host.checkintime = new Date(); ModalElement.show_loading(); var lat, lng; if (partnerGPS == "") { ModalElement.alert({message: "Chưa nhập GPS cho công ty này, vui lòng nhập GPS trước"}); return; } var x = partnerGPS.indexOf(","); if (x > 0){ lat = parseFloat(partnerGPS.substr(0, x)); lng = parseFloat(partnerGPS.substr(x + 1)); } else { ModalElement.alert({message: "GPS của công ty này không hợp lệ, vui lòng nhập lại GPS"}); return; } var showLocation = function(position){ savePosition(position); }; var savePosition = function(position){ if (absol.$.isRealNumber(position.accuracy) && position.accuracy > hr.maximumAllowableAccuracy){ ModalElement.alert({message: LanguageModule.text("war_txt_maximum_allowable_error")}); return; } var d = contentModule.calcCrow(lat, lng, position.latitude, position.longitude); if (d > hr.maximumDistance) { ModalElement.alert({message: LanguageModule.text2("war_txt_checkin_distance_invalid", [hr.maximumDistance])}); return; } var data = { employeeid: host.employeeOfMe[0], partnerid: partnerid, partnerGPS: partnerGPS, checkingps: position.latitude + "," + position.longitude, checkin_follow_gps: 1, checkintime: new Date() }; 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.alert({message: "Checkin thành công"}); resolve(); } 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 { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position){ showLocation(position.coords); }, function(err){ if (err){ ModalElement.alert({message: err.message}); } }); } else { console.log("Geolocation is not supported by this browser."); } } }); }; hr.partner.loadOrgEmpPrivileges = function(host){ return new Promise(function(resolve, reject){ ModalElement.show_loading(); data_module.loadWorkflows_and_crmPrivileges().then(function(st){ ModalElement.close(-1); host.employeeOfMe = st.employeeOfMe; delete st.employeeOfMe; contentModule.makeDatabaseContent(host, st); contentModule.makeOrgsIndex(host); contentModule.makeEmployeeData(host); contentModule.makeEmployeesIndex(host); if (st.configs_privileges){ contentModule.makeEmployeeGroupMemberIndex(host); contentModule.makeConfigPrivileges(host); } host.usersDic = {}; host.database.employees.items.forEach(function(item){ host.usersDic[item.userid] = item.peopleid; }); host.privilegesLoaded = true; resolve(); }); }); }; hr.partner.mergeExtraData = function(host, data){ return new Promise(function(resolve, reject){ FormClass.api_call({ url: "partner_merge_extra.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ data_module.refreshFlexDB("extradata_partner_links"); data_module.refreshFlexDB("extradata_partner", function(){ }); resolve(); } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.partner.loadExtraDataByTypeid = function(host, partnerid, typeid){ return new Promise(function(resolve, reject){ if (fconnector === undefined){ setTimeout(function(){ hr.partner.loadExtraDataByTypeid(host, partnerid, typeid).then(function(value){ resolve(value); }); }, 50); return; } else if (fconnector === null){ ModalElement.alert({message: "Không kết nối được với hệ thống mở rộng"}); return; } var pattern = { type: "struct", cond: "and", children: { partnerid: { type: "number", cond: "eq", value: parseInt(partnerid, 10) }, typeid: { type: "number", cond: "eq", value: typeid }, extraid: { type: "number", cond: "true" } } }; console.log(pattern); fconnector.search("extradata_partner_links", pattern, function(value1) { console.log("11111", new Date().getTime()); if (value1 && value1.length > 0){ fconnector.read("extradata_partner_links", value1, function (success2, value2){ console.log("22222", new Date().getTime()); if (success2){ console.log(value2); var extraIdList = []; for (var i = 0; i < value2.length; i++){ extraIdList.push(value2[i].value.extraid); } extraIdList.sort(function(a, b){ return a - b; }); console.log(extraIdList); fconnector.read("extradata_partner", extraIdList, function (success3, value3){ console.log("33333", new Date().getTime()); if (success3){ console.log("value3", value3); if (value3.length > 1){ console.log(value3); var dataExtra = value3[value3.length - 1].value; for (var i = value3.length - 2; i >= 0; i--){ for (var localid in dataExtra){ console.log(localid, 1); console.log(value3[i].value[localid], 2); if (value3[i].value[localid] && EncodingClass.type.isArray(value3[i].value[localid])){ dataExtra[localid] = dataExtra[localid].concat(value3[i].value[localid]); } } } var links = []; for (var i = 1; i < value2.length; i++){ links.push(value2[i]); } hr.partner.mergeExtraData(host, { links: links, dataExtra: { data: dataExtra, id: extraIdList[0] } }).then(function(){ resolve({ id: extraIdList[0], data: dataExtra }); }); } else { resolve({ id: extraIdList[0], data: value3[0].value }); } } else { resolve({id: 0}); } }); } else { console.log("success2_", success2, "value2_", value2); resolve({id: 0}); } }); } else { resolve({id: 0}); } }); }); }; hr.partner.editExtraDataSubmit = function(host, oldvalue, typeid, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction(); console.log(data); if (!data) return; if (oldvalue.id > 0){ var ischange = EncodingClass.string.compare(oldvalue.data, data); if (!ischange){ resolve(); return; } } var old_data; if (!oldvalue.data){ var typeDict = {}; data_module.typelists.items.forEach(function(elt){ typeDict[elt.id] = elt; }); old_data = contentModule.makeDefaultData(host, typeid, typeDict[typeid], typeDict); } else { old_data = oldvalue.data; } ModalElement.show_loading(); FormClass.api_call({ url: "partner_save_extradata.php", params: [ {name: "id", value: oldvalue.id}, {name: "partnerid", value: host.partnerid}, {name: "typeid", value: typeid}, {name: "data", value: EncodingClass.string.fromVariable(data)}, {name: "old_data", value: EncodingClass.string.fromVariable(old_data)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ resolve(); data_module.refreshFlexDB("extradata_partner_links"); data_module.refreshFlexDB("extradata_partner"); host.drawPartnerExtraDataSingle(host.partner_class_dataEdit, {data: data}); if (host.redraw_history_func){ host.redraw_history_func(); } } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.partner.editExtraDataClose = function(host, oldvalue, typeid, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction("no_alert"); if (!data){ resolve(); return; } if (oldvalue.id > 0){ var ischange = EncodingClass.string.compare(oldvalue.data, data); } else { var ischange = false; } if (!ischange){ resolve(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ hr.partner.editExtraDataSubmit(host, oldvalue, typeid, getValueFunction).then(function(){ resolve(); }); } else if (sel == 1){ resolve(); } } }); }); }; hr.partner.editExtraData = function(host, partner_class_data){ host.partner_class_dataEdit = partner_class_data; ModalElement.show_loading(); hr.partner.loadExtraDataByTypeid(host, host.partnerid, partner_class_data.type_extra).then(function(value){ ModalElement.close(-1); var formContainer = DOMElement.div({}); theme.fromPartnerEditExtraData({ title: LanguageModule.text("txt_data_extra") + " (" + partner_class_data.name + ")", formContainer: formContainer, frameList: host.frameList, func: { save: function(){ return hr.partner.editExtraDataSubmit(host, value, partner_class_data.type_extra, getValueFunction); }, cancel: function(){ return hr.partner.editExtraDataClose(host, value, partner_class_data.type_extra, getValueFunction); } } }); var getValueFunction; contentModule.makeFormData({ typeid: partner_class_data.type_extra, formid: hr.isMobile? partner_class_data.mobile_input_form_extra : partner_class_data.input_form_extra, initialValue: value.data, formContainer: formContainer, typelists: data_module.typelists.items, variableType: "user" }).then(function(getValue){ getValueFunction = getValue; }); }); }; hr.partner.showPartner = function(host, id){ host.drawPartnerViewFunc = function(viewPartner){ host.viewPartner = viewPartner; DOMElement.removeAllChildren(host.nameViewCtn); host.nameViewCtn.appendChild(DOMElement.span({ attrs: {style: {fontWeight: "bold"}}, text: host.dataPartnerEdit.fullname })); contentModule.makeOutputFormData({ typeid: data_module.form_config.partner.typeid, formid: data_module.form_config.partner.output_form, initialValue: host.dataPartnerEdit, formContainer: viewPartner, typelists: data_module.typelists.items, variableType: "system" }).then(function(getValue){}); }; contentModule.makeDatabaseContent(host, {contact: []}); host.drawContactListFunc = function(){ var f1 = function(){ var redraw = function(allContactIDList){ host.hostContact.fromPartner = true; host.hostContact.partnerid = host.partnerid; host.hostContact.data_container = host.viewContact; host.hostContact.allContactIDList = allContactIDList; DOMElement.removeAllChildren(host.viewContact); hr.contact.init2(host.hostContact); }; data_module.loadTables(["contacts"], function(){ data_module.cacheContent_contacts.psearch({ searchFunc: function(record){ if (extraParams.partnerid == record.partnerid) return record.id; return null; }, extraParams: { partnerid: id }, callbackfunc: function(allContactIDList){ redraw(allContactIDList); } }); }); }; if (host.hostContact){ f1(); } else { host.hostContact = { database: {}, holder: host.holder, frameList: host.frameList }; data_module.loadContactsInit(host.hostContact).then(function(){ f1(); }); } }; host.drawCheckinFunc = function(viewCheckin){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "partner_load_checkin_by_partnerid"}, {name: "partnerid", value: host.partnerid} ], func: function(success, message) { if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); contentModule.makeDatabaseContent(host, st); contentModule.makeParnerCheckinData(host); hr.partner_checkin.redraw({ holder: host.holder, user_column_configsDic: host.user_column_configsDic, form_config: data_module.form_config, database: host.database, fromPartner: true, partnerid: host.partnerid, data_container: viewCheckin, frameList: host.frameList, employeeOfMe: host.employeeOfMe }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; var load_history_func = function(){ return new Promise(function(rs, rj){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "partner_load_history_by_id"}, {name: "id", value: id} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.sort(function(a, b){ return b.createdtime - a.createdtime; }); console.log(st); rs(st); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; host.partnerid = id; var params = { func: { editPartner: function(){ hr.partner.addPartner(host, host.partnerid); }, editExtraDataFunc: function(partner_class_data){ hr.partner.editExtraData(host, partner_class_data); }, addContact: function(){ hr.contact.addContact(host.hostContact, 0); } }, quick_open: host.quick_open, load_history_func: function(){ return load_history_func(); } }; theme.formPartnerShow(host, params); host.redraw_history_func = params.redraw_history_func; }; hr.partner.showPartnerPre = function(host, id){// TODO: var loadData = function(){ ModalElement.show_loading(); hr.partner.loadPartnerById(host, id).then(function(dataPartnerEdit){ host.dataPartnerEdit = dataPartnerEdit; hr.partner.showPartner(host, id); }); }; if (host.quick_open) host.database = {}; if (host.privilegesLoaded){ loadData(); } else { hr.partner.loadOrgEmpPrivileges(host).then(function(){ loadData(); }); } }; hr.partner.convertToContactSubmit = function(host, id, owner){ return new Promise(function(resolve, reject){ ModalElement.show_loading(); FormClass.api_call({ url: "partner_convert_to_contact.php", params: [ {name: "id", value: id}, {name: "owner", value: owner} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ ModalElement.close(); ModalElement.alert({message: LanguageModule.text("war_txt_convert_successfull")}); hr.partner.deleteRowById(host, id); resolve(); } else if (message == "deleted"){ ModalElement.close(); ModalElement.alert({ message: "Đối tác không tồn tại", func: function(){ resolve(); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.partner.convertToContact = function(host, id){ return new Promise(function(resolve, reject){ var partnerData = data_module.getContent("partners", id); data_module.cacheContent_partner_class_links.psearch({ searchFunc: function(record){ if (record.partnerid == extraParams.id) return record.classid; return null; }, extraParams: { id: id }, callbackfunc: function(classList){ var listPromise = []; var ni; for (var i = 0; i < classList.length; i++){ ni = classList[i]; var classData = data_module.getContent("partner_class", ni); listPromise.push(new Promise(function(rs, rj){ hr.partner.loadExtraDataByTypeid(host, id, classData.type_extra).then(function(value){ if (value.id > 0){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_has_data_not_convert") }); return; } else { rs(); } }); })); } Promise.all(listPromise).then(function(values){ var redraw = function(){ var owner_select = absol.buildDom({ tag: "selecttreeleafmenu", props: { items: host.ownerConvertItems, value: data_module.employeeOfMe.length > 0? data_module.employeeOfMe[0] : 0, enableSearch: true } }); ModalElement.showWindow({ title: LanguageModule.text("txt_convert_to_contact"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { style: { lineHeight: "var(--control-height)" } }, text: LanguageModule.text("txt_setting_owner_for_contact_from_partner") }), DOMElement.span({ attrs: { style: { marginRight: "var(--control-horizontal-distance-2)", verticalAlign: "middle", lineHeight: "var(--control-height)" } }, text: LanguageModule.text("txt_owner") }), owner_select ] }), buttonlist: [ { text: LanguageModule.text("txt_convert"), onclick: function(){ var owner = owner_select.value; if (owner == 0){ ModalElement.alert({message: "Chưa chọn owner cho liên hệ"}); } hr.partner.convertToContactSubmit(host, id, owner).then(function(value){ resolve(value); }); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }); }; var loadData = function(){ data_module.loadTables(["contacts"], function () { var i, t, idlist; data_module.cacheContent_contacts.psearch({ searchFunc: function(record){ if (record.partnerid == extraParams.partnerid) return record.id; return null; }, extraParams: { partnerid: id }, callbackfunc: function(values){ if (values.length > 0){ ModalElement.alert({message: LanguageModule.text("war_txt_partner_has_contact")}); } else { redraw(); } } }); }); }; if (!host.ownerConvertItems){ ModalElement.show_loading(); data_module.loadEmployeeItemsPrivView().then(function(x){ host.ownerConvertItems = contentModule.getMemberOfEmployeeSelectMenu(x); loadData(); }); } else { ModalElement.show_loading(); loadData(); } }); } }); }); }; hr.partner.getExcelData = function(host){ return new Promise(function(resolve, reject){ hr.partner.makePartnerLinkData(host, host.idListView).then(function(){ var pData; var exportContent = { row: 0, col: 0, data: [ { row: 0, col: 0, colSpan: 5, value: LanguageModule.text("txt_partner"), bold: true, horizontal: "center", vertical: "middle" } ] }; exportContent.row = 2; exportContent.data.push({ row: exportContent.row, col: exportContent.col++, value: LanguageModule.text("txt_index"), bold: true, backgroundcolor: "FFEBEBEB", horizontal: "center", vertical: "middle" }); for (var i = 0; i < host.configColumnPartner.length; i++){ exportContent.data.push({ row: exportContent.row, col: exportContent.col++, value: host.configColumnPartner[i].text, bold: true, backgroundcolor: "FFEBEBEB", horizontal: "center", vertical: "middle" }); } for (var i = 0; i < host.idListView.length; i++){ pData = data_module.getContent("partners", host.idListView[i]); if (!pData) continue; if (!pData) return []; if (pData.extrainfo != "") pData.extrainfo = EncodingClass.string.toVariable(pData.extrainfo); else pData = {}; pData.class = host.partnerDataLinkDic[pData.id]; if ((pData.nationid != 0) && (pData.cityid != 0)){ pData.nation_city = [pData.nationid, pData.cityid]; } else { pData.nation_city = null; } exportContent.row++; exportContent.col = 0; exportContent.data.push({ row: exportContent.row, col: exportContent.col++, value: i + 1, horizontal: "center" }); for (var j = 0; j < host.configColumnPartner.length; j++){ if (host.configColumnPartner[j].main) textValue = contentModule.getCellDynamicTable(host.configColumnPartner[j], pData[host.configColumnPartner[j].value]).innerText; else textValue = contentModule.getCellDynamicTable(host.configColumnPartner[j], pData.extrainfo[host.configColumnPartner[j].value]).innerText; exportContent.data.push({ row: exportContent.row, col: exportContent.col++, value: textValue }); } } for (var i = 1; i < exportContent.data.length; i++){ exportContent.data[i].border = { top: {style: 'thin', color: {argb: 'FF000000'}}, left: { style: 'thin', color: {argb: 'FF000000'}}, bottom: { style: 'thin', color: {argb: 'FF000000'}}, right: { style: 'thin', color: {argb: 'FF000000'}} }; } var excelData = { sheets: [ { name: LanguageModule.text("txt_partner"), data: exportContent.data } ] }; resolve(excelData); }); }); }; hr.partner.export = function(host){ ModalElement.alert({message: LanguageModule.text("txt_export_notification")}); hr.partner.getExcelData(host).then(function(excelData){ var x = contentModule.getDateTimeExcelExport(new Date()); var startWorker = function(result, fileName = "partner_list_"+x+".xlsx") { var w; if(typeof(Worker) !== "undefined") { if(typeof(w) == "undefined") { w = new Worker(window.domain + "js/exceljs.js"); w.postMessage(result); } w.onmessage = function(event) { var data = event.data; if(data.name == "end") { var link = document.createElement('a'); link.href = window.URL.createObjectURL(data.data); link.download = fileName; link.click(); } } } else { console.log("Sorry, your browser does not support Web Workers..."); } } startWorker(excelData); }); }; hr.partner.viewMaps = function(host){ theme.formPartnerViewMaps({ idListView: host.idListView, frameList: host.frameList }); }; hr.partner.mergeSubmit = function(host, list, data, extra){ var mainData = contentModule.getPartnerMainData(); var value = {}; for (var x in mainData){ value[mainData[x]] = data[x]; delete data[x]; } value.extrainfo = data; var idList = []; var nameList = []; for (var i = 0; i < list.length; i++){ idList.push(list[i].id); nameList.push({name: list[i].name, fullname: list[i].fullname}); } if (value.nation_city){ value.nationid = value.nation_city[0]; value.cityid = value.nation_city[1]; } else { value.nationid = 0; value.cityid = 0; } value.extrainfo = EncodingClass.string.fromVariable(value.extrainfo); ModalElement.show_loading(); FormClass.api_call({ url: "partner_merge_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(value)}, {name: "idList", value: EncodingClass.string.fromVariable(idList)}, {name: "extra", value: EncodingClass.string.fromVariable(extra)}, {name: "nameList", value: EncodingClass.string.fromVariable(nameList)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.extrainfo = EncodingClass.string.toVariable(st.extrainfo); st.class = value.class; st.nation_city = value.nation_city; var t = data_module.getContent("partners", idList[0]); st.userid = t.userid; hr.partner.toggleMerge(host, false); hr.partner.updateRowById(host, idList[0], st, true); for (var i = 1; i < idList.length; i++){ hr.partner.deleteRowById(host, idList[i]); } host.frameList.removeLast(); hr.partner.toggleMerge(host, true); window.backLayoutFunc.pop(); host.listPartnerMerge = {}; data_module.refreshFlexDB("extradata_partner_links"); data_module.refreshFlexDB("extradata_partner"); } else if (message == "deleted"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_ver_reload_data") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.partner.redrawMerge = function(host, list){ var dict = {}; data_module.typelists.items.forEach(function (elt, index) { dict[elt.id] = elt; }); var mainData = contentModule.getMainData(data_module.form_config.partner.typeid, dict); var listData = [], data; for (var i = 0; i < list.length; i++){ data = {}; for (var x in mainData){ data[x] = list[i][mainData[x]]; } for (var x in list[i].extrainfo){ data[x] = list[i].extrainfo[x]; } listData.push(data); } var drawExtraInforFunc = function(classValue){ DOMElement.removeAllChildren(extra_infor_ctn); var extraList = []; console.log(classValue); if (classValue.length == 0) ModalElement.close(-1); var listP = []; classValue.forEach(function(classid){ listP.push(new Promise(function(rs, rj){ var tid, dataExtra; var partner_class_data = data_module.getContent("partner_class", classid); if (partner_class_data){ dataExtra = []; tid = partner_class_data.type_extra; var promiseList = []; for (var j = 0; j < list.length; j++){ if (list[j].class.indexOf(classid) >= 0){ promiseList.push(hr.partner.loadExtraDataByTypeid(host, list[j].id, tid).then(function(value){ if (value.id > 0){ dataExtra.push(value.data); } })); } } if (promiseList.length > 0){ Promise.all(promiseList).then(function(){ if (dataExtra.length > 0){ contentModule.getFieldsMergeByTypeID(host, partner_class_data.type_extra).then(function(descriptor){ descriptor.displayName = LanguageModule.text("txt_data_extra") + " (" + partner_class_data.name + ")"; var x = absol.buildDom({ tag: 'objectmergetool', props: { objects: dataExtra, descriptor: descriptor } }); extra_infor_ctn.appendChild(x); extraList.push({ typeid: partner_class_data.type_extra, mTool: x }); }); rs(); } else { rs(); } }); } else rs(); } })); }); Promise.all(listP).then(function(){ ModalElement.close(-1); extra_infor_ctn.getValue = function(){ var data = []; for (var i = 0; i < extraList.length; i++){ data.push({ typeid: extraList[i].typeid, data: extraList[i].mTool.data }); } return data; }; }); }; var mTool; host.typelistsDic = contentModule.makeDictionaryIndex(data_module.typelists.items); host.change_partner_class_func = function(classValue){ ModalElement.show_loading(); drawExtraInforFunc(classValue); }; ModalElement.show_loading(); contentModule.getFieldsMergeByTypeID(host, data_module.form_config.partner.typeid).then(function(descriptor){ descriptor.displayName = LanguageModule.text("txt_general_information"); mTool = absol.buildDom({ tag: 'objectmergetool', props: { objects: listData, descriptor: descriptor } }); general_infor_ctn.appendChild(mTool); }); var general_infor_ctn = DOMElement.div({}); var extra_infor_ctn = DOMElement.div({}); var data_ctn = DOMElement.div({ children: [ general_infor_ctn, extra_infor_ctn ] }); drawExtraInforFunc(list[0].class); var singlePage = absol.buildDom({ tag: "singlepage", child: [ DOMElement.div({ attrs: {className: 'button-panel-header absol-single-page-header'}, children: [ DOMElement.div({ attrs: {className: "single-button-header"}, children: [theme.backButton({ onclick: function(){ host.frameList.removeLast(); window.backLayoutFunc.pop(); } })] }), DOMElement.div({ attrs: {className: "single-button-header"}, children: [theme.saveButton({ onclick: function(){ hr.partner.mergeSubmit(host, list, mTool.data, extra_infor_ctn.getValue()); } })] }) ] }), data_ctn ] }); host.frameList.addChild(singlePage); singlePage.requestActive(); window.backLayoutFunc.push({ func: function(){ host.frameList.removeLast(); window.backLayoutFunc.pop(); } }); }; hr.partner.toggleCheckbox = function(host){ var idList = []; for (var id in host.listPartnerMerge){ if (host.listPartnerMerge[id]){ idList.push(parseInt(id, 10)); } } if (idList == 0){ var t; for (var id in host.inputidboxes){ t = host.inputidboxes[id]; while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } t.childNodes[1].firstChild.style.display = ""; } return; } var classList = []; for (var i = 0; i < idList.length; i++){ if (host.partnerDataLinkDic[idList[i]].length == 1){ classList.push(host.partnerDataLinkDic[idList[i]][0]); break; } else { if (params.classList.length == 0){ for (var j = 0; j < host.partnerDataLinkDic[idList[i]].length; j++){ classList.push(host.partnerDataLinkDic[idList[i]][j]); } } else { for (var j = params.classList.length - 1; j >= 0; j--){ if (host.partnerDataLinkDic[idList[i]].indexOf(params.classList[j]) < 0){ classList.splice(j, 1); } } } } } if (classList == 0){ for (var id in host.inputidboxes){ t = host.inputidboxes[id]; while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } t.childNodes[1].firstChild.style.display = ""; } return; } for (var id in host.inputidboxes){ var ex = false; for (var i = 0; i < classList.length; i++){ if (host.partnerDataLinkDic[id].indexOf(classList[i]) >= 0){ ex = true; break; } } t = host.inputidboxes[id]; while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } if (ex) t.childNodes[1].firstChild.style.display = ""; else t.childNodes[1].firstChild.style.display = "none"; } }; hr.partner.getCheckboxElt = function(host, id){ return absol.buildDom({ tag: "checkbox", props: { checked: host.listPartnerMerge[id] }, on: { change: function(){ host.listPartnerMerge[id] = this.checked; hr.partner.toggleCheckbox(host); } } }); }; hr.partner.toggleMerge = function(host, merge_ing){ var t; for (var id in host.inputidboxes){ t = host.inputidboxes[id]; if (merge_ing) t.parentNode.style.display = "none"; else t.parentNode.style.display = ""; while (t.tagName.toLowerCase() != "tr"){ t = t.parentNode; } if (!merge_ing) t.removeChild(t.childNodes[1]); else t.insertBefore(DOMElement.td({ attrs: { align: "center", colSpan: host.design.rows.length }, children: [hr.partner.getCheckboxElt(host, id)] }), t.childNodes[1]); } }; hr.partner.merge = function(host, save){ if (save){ var idList = []; for (var x in host.listPartnerMerge){ if (host.listPartnerMerge[x]) idList.push(parseInt(x, 10)); } if (idList.length < 2){ ModalElement.alert({message: "Bạn phải chọn ít nhất 2 đối tác để trộn"}); return; } var list = []; var res; for (var i = 0; i < idList.length; i++){ res = data_module.getContent("partners", idList[i]); if (res.extrainfo == "") res.extrainfo = {}; else res.extrainfo = EncodingClass.string.toVariable(res.extrainfo); res.nation_city = [res.nationid, res.cityid]; res.class = host.partnerDataLinkDic[res.id]; list.push(res); } hr.partner.redrawMerge(host, list); } else { host.merge_ing = true; host.listPartnerMerge = {}; hr.partner.toggleMerge(host, true); host.back_btn_ctn.classList.remove("hidden"); host.merge_save_btn_ctn.classList.remove("hidden"); host.close_btn_ctn.classList.add("hidden"); host.add_btn_ctn.classList.add("hidden"); host.quickmenu_btn_ctn.classList.add("hidden"); } }; hr.partner.massInput = function(host){ var navItems = [ {text: LanguageModule.text("txt_filter_partner")}, {text: LanguageModule.text("txt_input_data")}, {text: LanguageModule.text("txt_finished")} ]; var vTimeline = absol.buildDom({ tag: 'verticaltimeline', props: { items: navItems } }); var nation_cities_select = absol.buildDom({ tag: "dualselectmenu", props: { items: host.nation_cities_select.items, value: host.nation_cities_select.value, enableSearch: true } }); var partnerItems = host.partner_class_select.items; partnerItems[0].text = LanguageModule.text("txt_select_value"); var partner_class_select = absol.buildDom({ tag: "selectmenu", props: { items: partnerItems, value: host.partner_class_select.value, enableSearch: true } }); var filterPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page' }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_filter_partner") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: {className: "kv-document-page-content"}, children: [ DOMElement.div({ attrs: {style: {height: "var(--control-height)", lineHeight: "var(--control-height)", fontWeight: "bold"}}, text: LanguageModule.text("txt_set_partner_filters_to_mass_input") }), DOMElement.div({ children: [ DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_nationcity") }), nation_cities_select, DOMElement.div({ attrs: { className: "card-mobile-label-form-edit" }, text: LanguageModule.text("txt_partner_class") }), partner_class_select ] }) ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({attrs: {className: "kv-document-page-footer-left"}}), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_next"), onclick: function(){ var partner_classid = partner_class_select.value; if (partner_classid == 0){ ModalElement.alert({message: LanguageModule.text("war_txt_partner_class_is_null")}); return; } vTimeline.current = 1; filterPageCtn.style.display = "none"; inputDataPageCtn.style.display = ""; redrawInputDataPage(partner_classid); } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); var redrawInputDataPage = function(partner_classid){ var pData = data_module.getContent("partner_class", partner_classid); var data_ctn = DOMElement.div({}); var typeDic = contentModule.makeDictionaryIndex(data_module.typelists.items); var items = [{value: 0, text: LanguageModule.text("txt_select_value")}]; if (pData.type_extra != 0){ var columnList = contentModule.getColumnListFromTypeid(host, pData.type_extra, {}, true); columnList.forEach(function(item){ var tIndex = typeDic[item.type]; var type = data_module.typelists.items[tIndex].type; if (type == "enum" || type == "extends_enum" || data_module.typelists.items[tIndex].type2 == "enum"){ items.push({ value: item.value, text: item.text }); } }); } var field_select = absol.buildDom({ tag: "selectmenu", props: { items: items, enableSearch: true }, on: { change: function(){ var itemsList = [{value: 0, text: LanguageModule.text("txt_select_value")}]; if (this.value != 0){ var t; for (var i = 0; i < columnList.length; i++){ if (columnList[i].value == this.value){ t = columnList[i].type; } } if (t){ var x = []; contentModule.getDetailsExtends(host, x, t); for (var i = 0; i < x.length; i++){ itemsList.push({value: x[i].localid, text: x[i].text}); } } } DOMElement.removeAllChildren(data_ctn); var elt = absol.buildDom({ tag: "selectmenu", props: { items: itemsList, enableSearch: true } }); data_ctn.appendChild(elt); data_ctn.getValue = function(){ var value = elt.value; if (value == 0){ ModalElement.alert({message: "Chưa chọn giá trị"}); return; } var text; for (var i = 0; i < elt.items.length; i++){ if (elt.items[i].value == value){ text = elt.items[i].text; break; } } return { value: value, text: text }; }; } } }); DOMElement.removeAllChildren(input_data_ctn); input_data_ctn.appendChild(DOMElement.table({ data: [ [ {text: "Trường thay đổi"}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, field_select ], [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}], [ {text: "Dữ liệu"}, {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}}, data_ctn ] ] })); input_data_ctn.getValue = function(){ var field = field_select.value; if (field == 0){ ModalElement.alert({message: "Chưa chọn trường dữ liệu"}); return; } var input = data_ctn.getValue(); if (!input) return; var field_text; for (var i = 0; i < field_select.items.length; i++){ if (field_select.items[i].value == field){ field_text = field_select.items[i].text; break; } } return { field: field, field_text: field_text, input: input.value, input_text: input.text }; }; }; var input_data_ctn = DOMElement.div({ attrs: { className: 'kv-document-page-content' } }); var inputDataPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_input_data") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), input_data_ctn, absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"}, children: [ theme.noneIconButton({ text: LanguageModule.text("txt_back"), onclick: function(){ vTimeline.current = 0; filterPageCtn.style.display = ""; inputDataPageCtn.style.display = "none"; } }) ] }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_start"), onclick: function(){ var saveFunc = function(){ var nation_city = nation_cities_select.value; var classid = partner_class_select.value; var filter = { classid: classid, nation_city: nation_city, searchValue: "" }; hr.partner.searchDataFunc(filter).then(function(partnerIDList){ if (partnerIDList.length == 0){ ModalElement.close(-1); DOMElement.removeAllChildren(finishElt); finishElt.appendChild(DOMElement.span({ text: LanguageModule.text2("txt_you_mass_input_for_partner", [0]) })); vTimeline.current = 2; inputDataPageCtn.style.display = "none"; finishPageCtn.style.display = ""; return; } partnerIDList.sort(function(a, b){ return a - b; }); var pData = data_module.getContent("partner_class", classid); var data = { partnerIDList: partnerIDList, input_data: input_data.input, field: input_data.field, typeid: pData.type_extra }; if (pData.type_extra != 0){ var typeDict = {}; data_module.typelists.items.forEach(function(elt){ typeDict[elt.id] = elt; }); data.defaultData = contentModule.makeDefaultData(host, pData.type_extra, typeDict[pData.type_extra], typeDict); data.defaultData[input_data.field] = input_data.value; } var pattern; if (partnerIDList.length > 0){ var minID, maxID; for (var i = 0; i < partnerIDList.length; i++){ if (i == 0){ minID = partnerIDList[i]; maxID = partnerIDList[i]; } else { if (minID > partnerIDList[i]) minID = partnerIDList[i]; if (maxID < partnerIDList[i]) maxID = partnerIDList[i]; } } pattern = { type: "struct", cond: "and", children: { partnerid: { type: "number", cond: "[range]", minval: minID, maxval: maxID }, typeid: { type: "number", cond: "eq", value: pData.type_extra }, extraid: { type: "number", cond: "true" } } }; } else { pattern = { type: "struct", cond: "and", children: { partnerid: { type: "number", cond: "eq", value: partnerIDList[0] }, typeid: { type: "number", cond: "eq", value: pData.type_extra }, extraid: { type: "number", cond: "true" } } }; } var dataLogs = { field_text: input_data.field_text, input_data_text: input_data.input_text, input_data: input_data.input, field: input_data.field, typeid: pData.type_extra }; fconnector.search("extradata_partner_links", pattern, function(linkIdList){ data.linkIdList = linkIdList; console.log(data); FormClass.api_call({ url: "partner_mass_input.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(data)}, {name: "dataLogs", value: EncodingClass.string.fromVariable(dataLogs)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var count = parseInt(message.substr(2), 10); DOMElement.removeAllChildren(finishElt); finishElt.appendChild(DOMElement.span({ text: LanguageModule.text2("txt_you_mass_input_for_partner", [partnerIDList.length]) })); vTimeline.current = 2; inputDataPageCtn.style.display = "none"; finishPageCtn.style.display = ""; } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }); }; var input_data = input_data_ctn.getValue(); if (!input_data) return; ModalElement.show_loading(); saveFunc(); } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); var finishElt = DOMElement.div({attrs: {align: "center", paddingTop: "50px", fontWeight: "bold"}}); var finishPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_finished") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [finishElt] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"} }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_close"), onclick: function(){ ModalElement.close(); } }) ] }) ] }) ] }); ModalElement.show({ bodycontent: absol.buildDom({ class: 'kv-document-2-site', style: { minWidth: "50vw", height: "70vh" }, child: [ { class: 'kv-document-2-site-left', child: [ { class: 'kv-document-2-site-left-header', child: [ { tag: 'span', class: 'kv-document-2-site-left-header-text', child: { text: LanguageModule.text("txt_mass_input") } } ] }, vTimeline ] }, filterPageCtn, inputDataPageCtn, finishPageCtn ] }) }); }; hr.partner.getDisplayDicFromDesign = function(design){ var res = {}; if (!design.rows) return res; for (var i = 0; i < design.rows.length; i++){ if (design.rows[i].cells){ for (var j = 0; j < design.rows[i].cells.length; j++){ if (design.rows[i].cells[j].variables){ for (var k = 0; k < design.rows[i].cells[j].variables.length; k++){ res[design.rows[i].cells[j].variables[k].name] = true; } } } } } return res; }; hr.partner.getCellPartner = function(host, id, stt, res){ if (!res){ res = data_module.getContent("partners", id); if (!res) return []; if (res.extrainfo != "") res.extrainfo = EncodingClass.string.toVariable(res.extrainfo); else res = {}; res.class = host.partnerDataLinkDic[res.id]; if ((res.nationid != 0) && (res.cityid != 0)){ res.nation_city = [res.nationid, res.cityid]; } else { res.nation_city = null; } } if (host.workFlowViewPartner){ var func = host.func; } else if (host.objectSelectPartner){ if (host.partnerNotViewDic[res.id]) return null; var func = { view: function(){ checkboxElt.checked = !checkboxElt.checked; host.checked_dic[res.id] = checkboxElt.checked; } }; } else if (host.selectOnePartner){ var func = { view: function(){ radioElt.checked = true; host.valueChecked = res.id; } }; } else { var func = { view: function(){ if (!host.merge_ing) hr.partner.showPartnerPre(host, res.id); }, markedFunc: function(id, marked){ return contentModule.markedFunc(null, { id: id, marked: marked, task: "partner", tablename: "partner" }); } }; func.delete = function(){ return new Promise(function(resolve, reject){ hr.partner.deletePartnerConfirm(host, res.id); }); }; func.checkin = function(){ hr.partner.checkin(host, res.id, res.gps); }; func.convert_to_contact = function(){ return new Promise(function(resolve, reject){ hr.partner.convertToContact(host, res.id).then(function(value){ resolve(value); }); }); }; } res.created_user = res.userid; var pData = data_module.getContent("peoples", host.usersDic[res.userid]); if (pData) res.created_user = pData.fullname; else res.created_user = res.userid; var rows = contentModule.getCellNewTable(host.design, host.configColumnPartnerDic, res, 3, function(){ if (func.view) func.view(res.id); }); if (host.markedDic[res.id]){ starElt = contentModule.getstarIconView(); rows[0].children[0].appendChild(starElt); } if (host.objectSelectPartner){ var checkboxElt = absol.buildDom({ tag: "checkbox", props: { checked: host.checked_dic[res.id] }, on: { change: function(){ host.checked_dic[res.id] = this.checked; } } }); host.checkboxBoxes[res.id] = checkboxElt; rows[0].insertBefore(DOMElement.td({ attrs: { rowSpan: host.design.rows.length, style: {width: "40px", textAlign: "center"} }, children: [checkboxElt] }), rows[0].firstChild); } else if (host.selectOnePartner){ var radioElt = absol.buildDom({ tag: "radio", props: { name: "radio_" + host.randomId, checked: res.id == host.valueChecked }, on: { change: function(){ host.valueChecked = res.id; } } }); rows[0].insertBefore(DOMElement.td({ attrs: { rowSpan: host.design.rows.length, style: {width: "40px", textAlign: "center"} }, children: [radioElt] }), rows[0].firstChild); } if (!host.selectOnePartner) rows[0].insertBefore(DOMElement.td({ attrs: { rowSpan: host.design.rows.length, style: {width: "40px", textAlign: "center", cursor: "pointer", color: "burlywood"}, onclick: function(){ if (func.view) func.view(res.id); } }, text: stt }), rows[0].firstChild); var starElt; if (!host.objectSelectPartner && !host.selectOnePartner) { var qmenuButton = DOMElement.div({ attrs: { className: "card-icon-cover" }, children: [DOMElement.i({ attrs: { className: "material-icons bsc-icon-hover-black", style: {color: "burlywood"} }, text: "more_vert" })] }); host.inputidboxes[res.id] = qmenuButton; absol.QuickMenu.toggleWhenClick(qmenuButton, { getMenuProps: function(){ var quickMenuItems = []; if (func.view) quickMenuItems.push({ text: LanguageModule.text("txt_view"), extendClasses: "bsc-quickmenu", icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "visibility" }), cmd: function(){ func.view(res.id); } }); if (func.checkin) quickMenuItems.push({ text: LanguageModule.text("txt_checkin"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-store-marker-outline" } }), cmd: function(){ func.checkin(); } }); if (func.markedFunc){ if (host.markedDic[res.id]){ quickMenuItems.push({ text: LanguageModule.text("txt_remove_marked"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "material-icons", style: { color: "#ffa834" } }, text: "star_border" }), cmd: function(){ func.markedFunc(res.id, false).then(function(){ host.markedDic[res.id] = false; starElt.remove(); }); } }); } else { quickMenuItems.push({ text: LanguageModule.text("txt_add_to_marked"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "material-icons", style: { color: "#ffa834" } }, text: "star" }), cmd: function(){ func.markedFunc(res.id, true).then(function(){ host.markedDic[res.id] = true; starElt = contentModule.getstarIconView(); rows[0].children[1].appendChild(starElt); }); } }); } } if (func.convert_to_contact) quickMenuItems.push({ text: LanguageModule.text("txt_convert_to_contact"), extendClasses: ["bsc-quickmenu"], icon: DOMElement.i({ attrs: { className: "mdi mdi-account-convert" } }), cmd: function(){ func.convert_to_contact(); } }); if (func.delete) quickMenuItems.push({ text: LanguageModule.text("txt_delete"), extendClasses: ["bsc-quickmenu", "red"], icon: DOMElement.i({ attrs: { className: "material-icons" }, text: "delete" }), cmd: function(){ func.delete(res.id); } }); return {items: quickMenuItems}; }, onSelect: function (item){ item.cmd(); } }, [3, 4]); rows[0].appendChild(DOMElement.td({ attrs: {rowSpan: host.design.rows.length, style: {width: "40px", textAlign: "center"}}, children: [qmenuButton] })); } return rows; }; hr.partner.makePartnerLinkData = function(host, idList, filter){ return new Promise(function(resolve, reject){ var dic = {}; for (var i = 0; i < idList.length; i++){ dic[idList[i]] = true; } data_module.cacheContent_partner_class_links.psearch({ searchFunc: function(record){ if (extraParams.dic[record.partnerid]) return record; return null; }, extraParams: { dic: dic }, callbackfunc: function(values){ if (filter){ var isSearchNew = false; if (host.inputsearchbox.value.trim() !== "") isSearchNew = true; if (host.nation_cities_select.value[0] !== 0) isSearchNew = true; if (host.partner_class_select.value !== 0) isSearchNew = true; var newFilter; if (isSearchNew){ newFilter = { searchValue: host.inputsearchbox.value.trim(), classid: host.partner_class_select.value, nation_city: host.nation_cities_select.value, marked_value: host.marked_view_elt? host.marked_view_elt.value : false, markedDic: host.markedDic }; } else { newFilter = {}; } if (EncodingClass.string.compare(filter, newFilter)){ console.log("cancel");; return; } } for (var i = 0; i < idList.length; i++){ host.partnerDataLinkDic[idList[i]] = []; } for (var i = 0; i < values.length; i++){ if (host.partnerDataLinkDic[values[i].partnerid]) host.partnerDataLinkDic[values[i].partnerid].push(values[i].classid); } resolve(); } }); }); }; hr.partner.redraw = function(host){ if (!host) return; host.inputidboxes = {}; host.partnerDataLinkDic = {}; var func = function(filter){ host.countView = 0; var startView = 0; host.done = false; var getIDList = function(){ startView = host.countView; var idList = []; for (var i = host.countView; i < host.countView + 30; i++){ if (i >= host.idListView.length){ host.countView = i; host.done = true; break; } idList.push(host.idListView[i]); } if (!host.done) host.countView = host.countView + 30; return idList; }; var idList = getIDList(); hr.partner.makePartnerLinkData(host, idList, filter).then(function(){ ModalElement.close(-1); var data = [], rows; if (host.selectOnePartner){ if (host.allValue || host.selectValue){ var radioElt = absol.buildDom({ tag: "radio", props: { name: "radio_" + host.randomId, checked: host.valueChecked == 0 }, on: { change: function(){ host.valueChecked = 0; } } }); data.push([ { attrs: {align: "center"}, children: [radioElt] }, { attrs: { colSpan: 100, onclick: function(){ radioElt.checked = true; host.valueChecked = 0; } }, text: host.allValue? LanguageModule.text("txt_all_partner") : LanguageModule.text("txt_select_value") } ]); } } for (var i = 0; i < idList.length; i++){ rows = hr.partner.getCellPartner(host, idList[i], i + 1); if (rows === null) continue; for (var j = 0; j < rows.length; j++){ data.push(rows[j]); } } host.tableView = DOMElement.table({ attrs: {style: {backgroundColor: "white"}}, data: data }); if (host.merge_ing){ hr.partner.toggleMerge(host, true); var ex = false; for (var k in host.listPartnerMerge){ if (host.listPartnerMerge[k]){ ex = true; } } if (ex) hr.partner.toggleCheckbox(host); } if (hr.isMobile) host.tableView.style.width = "100%"; DOMElement.removeAllChildren(host.data_container); var table_ctn = DOMElement.table({ data: [[{ attrs: { className: "hrnewtableclass" }, children: [host.tableView] }]] }); if (hr.isMobile) table_ctn.style.width = "100%"; host.data_container.appendChild(table_ctn); if (!host.done){ host.see_more_ctn = DOMElement.div({ attrs: {style: {paddingTop: "20px", textAlign: "center"}}, children: [DOMElement.span({ attrs: { style: { color: "var(--a-color)", cursor: "pointer" }, onclick: function(){ var idList = getIDList(); if (host.done) DOMElement.removeAllChildren(host.see_more_ctn); ModalElement.show_loading(); hr.partner.makePartnerLinkData(host, idList).then(function(){ ModalElement.close(-1); var rows; for (var i = 0; i < idList.length; i++){ rows = hr.partner.getCellPartner(host, idList[i], startView + i + 1); if (rows === null) continue; for (var j = 0; j < rows.length; j++){ host.tableView.appendChild(rows[j]); } } if (host.merge_ing){ hr.partner.toggleMerge(host, true); var ex = false; for (var k in host.listPartnerMerge){ if (host.listPartnerMerge[k]){ ex = true; } } if (ex) hr.partner.toggleCheckbox(host); } }); } }, text: LanguageModule.text("txt_see_more") })] }); table_ctn.appendChild(host.see_more_ctn); } if (!host.workFlowViewPartner) host.data_container.appendChild(DOMElement.div({attrs: {style: {height: "var(--footer-margin)"}}})); }); }; var isSearch = false; if (host.inputsearchbox.value.trim() !== "") isSearch = true; if (!host.nation_cities_select.value) console.log(host.nation_cities_select); if (host.nation_cities_select.value && (host.nation_cities_select.value[0] !== 0)) isSearch = true; if (host.partner_class_select.value !== 0) isSearch = true; if (!host.workFlowViewPartner) ModalElement.show_loading(); var filter; if (isSearch){ filter = { searchValue: host.inputsearchbox.value.trim(), classid: host.partner_class_select.value, nation_city: host.nation_cities_select.value, marked_value: host.marked_view_elt? host.marked_view_elt.value : false, markedDic: host.markedDic }; hr.partner.searchDataFunc(filter, host).then(function(idList){ host.idListView = idList; if (host.idListView.length == 0){ ModalElement.close(-1); DOMElement.removeAllChildren(host.data_container); host.data_container.appendChild(DOMElement.div({ attrs: {align: "center", style: {paddingTop: "20px", color: "red"}}, text: "Không tìm thấy kết quả phù hợp" })); return; } func(filter); }, function(value){ if (value == "cancel"){ // TODO: } }); } else { filter = {}; if (host.marked_view_elt && host.marked_view_elt.value){ host.idListView = []; for (var x in host.markedDic){ if (host.markedDic[x]) host.idListView.push(x); } if (host.idListView.length == 0){ ModalElement.close(-1); DOMElement.removeAllChildren(host.data_container); host.data_container.appendChild(DOMElement.div({ attrs: {align: "center", style: {paddingTop: "20px", color: "red"}}, text: "Không tìm thấy kết quả phù hợp" })); return; } } else { host.idListView = EncodingClass.string.duplicate(host.allPartnerIDList); if (host.workFlowViewPartner && host.idListView.length == 0){ ModalElement.close(-1); return; } } func(filter); } }; hr.partner.init2 = function(host){ host.design = contentModule.getDesign(host, "partner", hr.isMobile); var displayDic = hr.partner.getDisplayDicFromDesign(host.design); var columnList = contentModule.getColumnListFromDatatype(host, "partner", displayDic); if (displayDic.id) columnList.unshift({value: "id", display: true, main: true, type: -1, text: "ID"}); if (displayDic.created_user) columnList.push({value: "created_user", display: true, main: true, type: -1, text: LanguageModule.text("txt_created_user")}); if (displayDic.createdtime) columnList.push({value: "createdtime", display: true, main: true, type: -5, text: LanguageModule.text("txt_created_time")}); host.columnList = columnList; contentModule.getColumnListConfig(host, undefined, columnList).then(function(values){ host.configColumnPartner = values; host.configColumnPartnerDic = {}; for (var i = 0; i < values.length; i++){ host.configColumnPartnerDic[values[i].value] = values[i]; } // ModalElement.close(-1); hr.partner.redraw(host); }); }; hr.partner.init = function(host){ return new Promise(function(resolveMn, rejectMn){ hr.menu.changeCurrentUrlTab(host, "partner"); host.database = {}; host.merge_ing = false; ModalElement.show_loading(); data_module.loadPartnersInit(host).then(function(content){ var cmdbutton = { close: function () { if (hr.isMobile) { host.holder.selfRemove(); theme.mobileInitBack(); } else { hr.menu.tabPanel.removeTab(host.holder.id); } }, add: function (event, me) { hr.partner.addPartner(host, 0); }, view_maps: function(){ hr.partner.viewMaps(host); }, merge: function(){ hr.partner.merge(host, false); }, merge_save: function(){ hr.partner.merge(host, true); }, back: function(){ hr.partner.toggleMerge(host, false); host.merge_ing = false; host.back_btn_ctn.classList.add("hidden"); host.merge_save_btn_ctn.classList.add("hidden"); host.close_btn_ctn.classList.remove("hidden"); host.add_btn_ctn.classList.remove("hidden"); host.quickmenu_btn_ctn.classList.remove("hidden"); } }; if (systemconfig.privSystem >= 2) { cmdbutton.mass_input = function() { hr.partner.massInput(host); } }; host.data_container = DOMElement.div({}); host.holder.addChild(host.frameList); var singlePage = theme.formPartnerInit({ cmdbutton: cmdbutton, data_container: host.data_container, database: host.database, func: { export: function(){ hr.partner.export(host); }, filter_change_func: function(){ hr.partner.redraw(host); }, display_setting: function(){ contentModule.display_setting(host, "partner", function(){ hr.partner.init2(host); }); } } }); host.nation_cities_select = singlePage.nation_cities_select; host.partner_class_select = singlePage.partner_class_select; host.inputsearchbox = singlePage.inputsearchbox; host.marked_view_elt = singlePage.marked_view_elt; host.close_btn_ctn = singlePage.close_btn_ctn; host.back_btn_ctn = singlePage.back_btn_ctn; host.merge_save_btn_ctn = singlePage.merge_save_btn_ctn; host.add_btn_ctn = singlePage.add_btn_ctn; host.quickmenu_btn_ctn = singlePage.quickmenu_btn_ctn; host.frameList.addChild(singlePage); singlePage.requestActive(); hr.partner.init2(host); resolveMn(host); }); }); };