![]() 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.activities.makeUserMarkerData = function(host){ var idxDic = {}; for (var i = 0; i < host.database.activities.items.length; i++){ host.database.activities.items[i].marked = false; if (host.database.activities.items[i].taskid) idxDic["task_" + host.database.activities.items[i].taskid] = i; else idxDic["meeting_" + host.database.activities.items[i].meetingid] = i; } var k; for (var i = 0; i < host.database.user_marked.items.length; i++){ if (host.database.user_marked.items[i].tablename != "activities") continue; k = idxDic[host.database.user_marked.items[i].taskid]; if (k >= 0) host.database.activities.items[k].marked = true; } var holderForSort = host.database.activities.items.map(function(item){ return { item: item, val: absol.string.nonAccentVietnamese(item.name.toLowerCase()), marked: item.marked } }); holderForSort.sort(function(a, b){ if (a.marked > b.marked) return -1; if (a.marked < b.marked) return 1; if (a.val < b.val) return -1; if (a.val > b.val) return 1; return 0; }); host.database.activities.items = holderForSort.map(function(holder){ return holder.item; }); }; hr.activities.deleteActivitiesTask = function(host, id){ var end, start, employeeid, activity_type, timeValue, status; if (!host.quick_open) { activity_type = host.activity_type.value; // employeeid = host.employee.value; employeeid = host.empDict; status = host.status.value; timeValue = host.time.getValue(); start = new Date(timeValue.specificValue.start); end = new Date(timeValue.specificValue.end); } var today = new Date(); today.setHours(0,0,0,0); return new Promise(function(resolve,reject){ ModalElement.show_loading(); FormClass.api_call({ url: "tasks_delete.php", params: [{name: "id", value: id}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ data_module.loadTables(["tasks"], function(){ var index = host.database.activities.getIndex("task_" + id); var deleteContent = host.database.activities.items[index]; if (deleteContent.status == "success") host.chartContent.success--; else if (deleteContent.status == "pending") host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; host.database.activities.items.splice(index, 1); host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); resolve(index); }) } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "failed_used"){ ModalElement.alert({ message: LanguageModule.text("war_txt_can_not_delete") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.activities.deleteActivitiesTaskConfirm = function(host, id, name){ return new Promise(function(resolve,reject){ ModalElement.question({ title: LanguageModule.text("war_title_delete_activities_task"), message: LanguageModule.text2("war_txt_detele", [name]), onclick: function(sel){ if (sel == 0){ hr.activities.deleteActivitiesTask(host, id).then(function(value){ resolve(value); }); } } }); }); }; hr.activities.deleteActivitiesMeeting = function(host, id){ var end, start, employeeid, activity_type, timeValue, status; if (!host.quick_open) { activity_type = host.activity_type.value; // employeeid = host.employee.value; employeeid = host.empDict; status = host.status.value; timeValue = host.time.getValue(); start = new Date(timeValue.specificValue.start); end = new Date(timeValue.specificValue.end); } var today = new Date(); today.setHours(0,0,0,0); return new Promise(function(resolve,reject){ ModalElement.show_loading(); FormClass.api_call({ url: "meetings_delete.php", params: [{name: "id", value: id}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ data_module.loadTables(["meetings"], function(){ var index = host.database.activities.getIndex("meeting_" + id); var deleteContent = host.database.activities.items[index]; if (deleteContent.status == "success") host.chartContent.success--; else if (deleteContent.status == "pending") host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; host.database.activities.items.splice(index, 1); host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); resolve(index); }) } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "failed_used"){ ModalElement.alert({ message: LanguageModule.text("war_txt_can_not_delete") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.activities.deleteActivitiesMeetingConfirm = function(host, id, name){ return new Promise(function(resolve,reject){ ModalElement.question({ title: LanguageModule.text("war_title_delete_activities_meeting"), message: LanguageModule.text2("war_txt_detele", [name]), onclick: function(sel){ if (sel == 0){ hr.activities.deleteActivitiesMeeting(host, id).then(function(value){ resolve(value); }); } } }); }); }; hr.activities.showActivities = function(host, params){ host.drawGeneralInforFunc = function(viewGeneralInformation){ if (viewGeneralInformation) host.viewGeneralInformation = viewGeneralInformation; else viewGeneralInformation = host.viewGeneralInformation; contentModule.makeOutputFormData({ typeid: host.form_config[params.activityType].typeid, formid: host.form_config[params.activityType].output_form, initialValue: params.activityType == "meeting" ? host.dataMeetingEdit : host.dataTaskEdit, formContainer: viewGeneralInformation, typelists: data_module.typelists.items, variableType: "system" }).then(function(getValue){}); }; theme.formActivitiesView(host, params); }; hr.activities.showActivitiesTaskQuickModePre = function(host, id){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "task_load_by_id_quick_mode"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); host.dataTaskEdit = st.task; host.employeeOfMe = st.employeeOfMe; delete st.employeeOfMe; delete st.task; host.dataTaskEdit.activityid = id; host.dataTaskEdit.id = "task_" + id; st.activities = [host.dataTaskEdit]; host.database = {}; contentModule.makeDatabaseContent(host, st); host.form_config = contentModule.configVariable(host); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); if (host.dataTaskEdit.participant.indexOf("_") != -1) { var participantStr = host.dataTaskEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataTaskEdit.participant = participant; } else host.dataTaskEdit.participant = EncodingClass.string.toVariable(host.dataTaskEdit.participant); hr.activities.showActivities(host, { activityType: "task", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesTask(host, id, function(){}, function(){}, function(){}); } }); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.activities.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.activities.showActivitiesTaskPre = function(host, id, resolve){ host.dataTaskEdit = data_module.cacheContent_tasks.read(id); if (host.dataTaskEdit.extrainfo == "") host.dataTaskEdit.extrainfo = {}; else host.dataTaskEdit.extrainfo = EncodingClass.string.toVariable(host.dataTaskEdit.extrainfo); if (host.dataTaskEdit.participant.indexOf("_") != -1) { var participantStr = host.dataTaskEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataTaskEdit.participant = participant; } else host.dataTaskEdit.participant = EncodingClass.string.toVariable(host.dataTaskEdit.participant); hr.activities.showActivities(host, { activityType: "task", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesTask(host, id, resolve, function(){}, function(){}); } }); }; hr.activities.showActivitiesMeetingQuickModePre = function(host, id){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "meeting_load_by_id_quick_mode"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); host.dataMeetingEdit = st.meeting; host.employeeOfMe = st.employeeOfMe; delete st.employeeOfMe; delete st.meeting; host.dataMeetingEdit.activityid = id; host.dataMeetingEdit.id = "meeting_" + id; st.activities = [host.dataMeetingEdit]; host.database = {}; contentModule.makeDatabaseContent(host, st); host.form_config = contentModule.configVariable(host); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); if (host.dataMeetingEdit.participant.indexOf("_") != -1) { var participantStr = host.dataMeetingEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataMeetingEdit.participant = participant; } else host.dataMeetingEdit.participant = EncodingClass.string.toVariable(host.dataMeetingEdit.participant); hr.activities.showActivities(host, { activityType: "meeting", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesMeeting(host, id, function(){}, function(){}, function(){}); } }); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.activities.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.activities.showActivitiesMeetingPre = function(host, id, resolve){ host.dataMeetingEdit = data_module.cacheContent_meetings.read(id); if (host.dataMeetingEdit.extrainfo == "") host.dataMeetingEdit.extrainfo = {}; else host.dataMeetingEdit.extrainfo = EncodingClass.string.toVariable(host.dataMeetingEdit.extrainfo); if (host.dataMeetingEdit.participant.indexOf("_") != -1) { var participantStr = host.dataMeetingEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataMeetingEdit.participant = participant; } else host.dataMeetingEdit.participant = EncodingClass.string.toVariable(host.dataMeetingEdit.participant); hr.activities.showActivities(host, { activityType: "meeting", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesMeeting(host, id, resolve, function(){}, function(){}); } }); }; hr.activities.addActivitiesMeeting = function(host, id, resolve, resolveAdd, resolveClose){ if (id > 0) hr.menu.changeCurrentUrlTab(host, "activities_meeting/" + id); host.id = id; function redraw(value){ var formContainer = DOMElement.div({}); theme.addActivitiesMeetingForm({ title: LanguageModule.text("txt_activities_meeting"), formContainer: formContainer, frameList: host.frameList, func: { save: function(){ if (host.id == 0){ return hr.activities.addActivitiesMeetingSubmit(host, host.id, getValueFunction).then(function(value){ if (value !== undefined) resolveAdd(value); }); } else { return hr.activities.addActivitiesMeetingSubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); }); } }, cancel: function(){ resolveClose(); return hr.activities.addActivitiesMeetingClose(host, host.id, getValueFunction, resolve, resolveAdd); } } }); var getValueFunction; contentModule.makeFormData({ typeid: host.form_config.meeting.typeid, formid: host.form_config.meeting.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(host.dataMeetingEdit); } else { redraw({assignto: host.employeeOfMe[0]}); } }; hr.activities.addActivitiesMeetingSubmit = function(host, id, getValueFunction){ var end, start, employeeid, activity_type, timeValue, f_status; if (!host.quick_open) { activity_type = host.activity_type.value; // employeeid = host.employee.value; employeeid = host.empDict; f_status = host.status.value; timeValue = host.time.getValue(); start = new Date(timeValue.specificValue.start); end = new Date(timeValue.specificValue.end); } return new Promise(function(resolve, reject){ var today = new Date(); today.setHours(0,0,0,0); var data = getValueFunction(); if (!data) return; var oldData; if (id > 0){ oldData = host.dataMeetingEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "type", "location", "status", "starttime", "endtime", "allday", "reminder", "assignto", "participant", "result"] ); if (!ischange){ resolve("not_change"); return; } } for (var i = 0; i < host.database.activities.items.length; i++){ if (host.database.activities.items[i].id == "meeting_" + id) continue; if (host.database.activities.items[i].name.toLowerCase() == data.name.toLowerCase()){ ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")}); return; } } data.id = id; data.status = data.status ? 1 : 0; data.allday = data.allday ? 1 : 0; participantStr = ""; data.participant.forEach(function(elt){ participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; data.participant = participantStr; if (id > 0){ data.ver = host.dataMeetingEdit.ver; } else { data.ver = 1; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); delete data.uts; ModalElement.show_loading(); FormClass.api_call({ url: "activities_meeting_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ data_module.loadTables(["meetings"], function(){ var status, endtime; if (id > 0) { status = host.dataMeetingEdit.status; endtime = host.dataMeetingEdit.endtime; } host.dataMeetingEdit = EncodingClass.string.toVariable(message.substr(2)); if (host.dataMeetingEdit.extrainfo == "") host.dataMeetingEdit.extrainfo = {}; else host.dataMeetingEdit.extrainfo = EncodingClass.string.toVariable(host.dataMeetingEdit.extrainfo); if (host.dataMeetingEdit.participant.indexOf("_") != -1) { var participantStr = host.dataMeetingEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataMeetingEdit.participant = participant; } else host.dataMeetingEdit.participant = EncodingClass.string.toVariable(host.dataMeetingEdit.participant); host.dataMeetingEdit.meetingid = host.dataMeetingEdit.id; host.dataMeetingEdit.id = "meeting_" + host.dataMeetingEdit.id; host.dataMeetingEdit.activityType = "type_meeting"; if (id > 0){ if (status == 1) host.chartContent.success--; else if (endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; var index = host.database.activities.getIndex("meeting_" + id); host.database.activities.items[index].name = host.dataMeetingEdit.name; host.database.activities.items[index].assignto = host.dataMeetingEdit.assignto; if (host.dataMeetingEdit.status == 1) host.database.activities.items[index].status = "success"; else if (host.dataMeetingEdit.endtime >= today) host.database.activities.items[index].status = "pending"; else host.database.activities.items[index].status = "unsuccess"; host.drawGeneralInforFunc(); } else { id = host.dataMeetingEdit.meetingid; data.id = host.dataMeetingEdit.id; host.id = host.dataMeetingEdit.id; var t = { id: host.dataMeetingEdit.id, meetingid: parseInt(host.dataMeetingEdit.id.substr(8)), name: host.dataMeetingEdit.name, assignto: host.dataMeetingEdit.assignto }; t.func = { view: function(host, id){ return function(resolve) { hr.activities.showActivitiesMeetingPre(host, id, resolve); } }(host, t.meetingid), delete: function(host, id, name){ return function() { return new Promise(function(resolve,reject){ hr.activities.deleteActivitiesMeetingConfirm(host, id, name).then(function(value){ resolve(value); }); }); } }(host, t.meetingid, t.name), changeStatus: function(host, id){ return function(value){ return new Promise(function(resolve, reject){ var t = data_module.cacheContent_meetings.read(id); if (t.status == 1) host.chartContent.success--; else if (t.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; hr.activities.activitiesStatusChangeSave(host, "meeting", t, value, {chartContainer: host.chartContainer}).then(function(message){ resolve(message); }); }, function(err){console.log(err);}); } }(host, t.meetingid), markedFunc: function(host, id){ return function(marked){ return contentModule.markedFunc(host, { id: "meeting_" + id, marked: marked, task: "activities", tablename: "activities" }); } }(host, t.meetingid) } if (host.dataMeetingEdit.status == 1) t.status = "success"; else if (host.dataMeetingEdit.endtime >= today) t.status = "pending"; else t.status = "unsuccess"; host.database.activities.items.unshift(t); hr.menu.changeCurrentUrlTab(host, "activities"); } if ( ( !host.quick_open ) && ( f_status == "all" || (f_status == "completed" && host.dataMeetingEdit.status == 1) || (f_status == "uncompleted" && host.dataMeetingEdit.status == 0) || (f_status == "doing" && host.dataMeetingEdit.endtime >= today && host.dataMeetingEdit.status == 0) || (f_status == "overdue" && host.dataMeetingEdit.endtime <= today && host.dataMeetingEdit.status == 0) ) && ( activity_type == "all" || host.dataMeetingEdit.activityType == activity_type ) && ( employeeid[host.dataMeetingEdit.assignto] // employeeid == 0 // || host.dataMeetingEdit.assignto == employeeid ) && ( host.dataMeetingEdit.endtime >= start && host.dataMeetingEdit.endtime < end ) ) { if (host.dataMeetingEdit.status == 1) host.chartContent.success++; else if (host.dataMeetingEdit.endtime >= today) host.chartContent.pending++; else host.chartContent.unsuccess++; host.chartContent.count++; host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); } resolve(""); }) } 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.activities.addActivitiesMeetingClose = function(host, id, getValueFunction, resolve, resolveAdd){ return new Promise(function(rs, rj){ var data = getValueFunction("no_alert"); if (!data) { rs(); return; } var oldData; if (id > 0){ oldData = host.dataMeetingEdit; } else { oldData = { name: "", type: "type_visit", location: "", status: 0, starttime: new Date(), endtime: new Date(), allday: 0, reminder: "type_reminder_none", assignto: 0, participant: [], result: "" }; } data.allday = data.allday ? 1 : 0; data.status = data.status ? 1 : 0; if (oldData.participant === undefined) oldData.participant = []; var ischange = contentModule.isChanged(oldData, data, ["name", "type", "location", "status", "starttime", "endtime", "allday", "reminder", "assignto", "participant", "result"] ); if (!ischange){ rs(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ if (host.id == 0){ hr.activities.addActivitiesMeetingSubmit(host, host.id, getValueFunction).then(function(value){ if (value !== undefined) resolveAdd(value); rs(); }); } else { hr.activities.addActivitiesMeetingSubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); rs(); }); } } else if (sel == 1){ rs(); } } }); }); }; hr.activities.addActivitiesTask = function(host, id, resolve, resolveAdd, resolveClose){ if (id > 0) hr.menu.changeCurrentUrlTab(host, "activities_task/" + id); host.id = id; function redraw(value){ var formContainer = DOMElement.div({}); theme.addActivitiesTaskForm({ title: LanguageModule.text("txt_activities_task"), formContainer: formContainer, frameList: host.frameList, func: { save: function(){ if (host.id == 0){ return hr.activities.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){ if (value !== undefined) resolveAdd(value); }); } else { return hr.activities.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); }); } }, cancel: function(){ resolveClose(); return hr.activities.addActivitiesTaskClose(host, host.id, getValueFunction, resolve, resolveAdd); } } }); var getValueFunction; contentModule.makeFormData({ typeid: host.form_config.task.typeid, formid: host.form_config.task.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(host.dataTaskEdit); } else { redraw({assignto: host.employeeOfMe[0]}); } }; hr.activities.addActivitiesTaskClose = function(host, id, getValueFunction, resolve, resolveAdd){ return new Promise(function(rs, rj){ var data = getValueFunction("no_alert"); if (!data) { rs(); return; } var oldData; if (id > 0){ oldData = host.dataTaskEdit; } else { oldData = { name: "", status: 0, endtime: new Date(), reminder: "type_reminder_none", assignto: 0, participant: [], result: "" }; } data.status = data.status ? 1 : 0; if (oldData.participant === undefined) oldData.participant = []; var ischange = contentModule.isChanged(oldData, data, ["name", "status", "endtime", "reminder", "assignto", "participant", "result"] ); if (!ischange){ rs(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ if (host.id == 0){ hr.activities.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){ if (value !== undefined) resolveAdd(value); rs(); }); } else { hr.activities.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); rs(); }); } } else if (sel == 1){ rs(); } } }); }); }; hr.activities.addActivitiesTaskSubmit = function(host, id, getValueFunction){ var end, start, employeeid, activity_type, timeValue, f_status; activity_type = host.activity_type.value; // employeeid = host.employee.value; employeeid = host.empDict; f_status = host.status.value; timeValue = host.time.getValue(); start = new Date(timeValue.specificValue.start); end = new Date(timeValue.specificValue.end); return new Promise(function(resolve, reject){ var today = new Date(); today.setHours(0,0,0,0); var data = getValueFunction(); if (!data) return; var oldData; if (id > 0){ oldData = host.dataTaskEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "status", "endtime", "reminder", "assignto", "participant", "result"] ); if (!ischange){ resolve("not_change"); return; } } for (var i = 0; i < host.database.activities.items.length; i++){ if (host.database.activities.items[i].taskid == id) continue; if (host.database.activities.items[i].name.toLowerCase() == data.name.toLowerCase()){ ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")}); return; } } data.id = id; data.status = data.status? 1 : 0; participantStr = ""; data.participant.forEach(function(elt){ participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; data.participant = participantStr; if (id > 0){ data.ver = host.dataTaskEdit.ver; } else { data.ver = 1; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); delete data.uts; console.log(data); ModalElement.show_loading(); FormClass.api_call({ url: "activities_task_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ data_module.loadTables(["tasks"], function(){ var status, endtime; if (id > 0) { status = host.dataTaskEdit.status; endtime = host.dataTaskEdit.endtime; } host.dataTaskEdit = EncodingClass.string.toVariable(message.substr(2)); if (host.dataTaskEdit.extrainfo == "") host.dataTaskEdit.extrainfo = {}; else host.dataTaskEdit.extrainfo = EncodingClass.string.toVariable(host.dataTaskEdit.extrainfo); if (host.dataTaskEdit.participant.indexOf("_") != -1) { var participantStr = host.dataTaskEdit.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } host.dataTaskEdit.participant = participant; } else host.dataTaskEdit.participant = EncodingClass.string.toVariable(host.dataTaskEdit.participant); host.dataTaskEdit.taskid = host.dataTaskEdit.id; host.dataTaskEdit.id = "task_" + host.dataTaskEdit.id; host.dataTaskEdit.activityType = "type_task"; if (id > 0){ if (status == 1) host.chartContent.success--; else if (endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; var index = host.database.activities.getIndex("task_" + id); host.database.activities.items[index].name = host.dataTaskEdit.name; host.database.activities.items[index].assignto = host.dataTaskEdit.assignto; if (host.dataTaskEdit.status == 1) host.database.activities.items[index].status = "success"; else if (host.dataTaskEdit.endtime >= today) host.database.activities.items[index].status = "pending"; else host.database.activities.items[index].status = "unsuccess"; host.drawGeneralInforFunc(); } else { id = host.dataTaskEdit.taskid; data.id = host.dataTaskEdit.id; host.id = host.dataTaskEdit.id; var t = { id: host.dataTaskEdit.id, taskid: parseInt(host.dataTaskEdit.id.substr(5)), name: host.dataTaskEdit.name, assignto: host.dataTaskEdit.assignto, }; t.func = { view: function(host, id){ return function(resolve) { hr.activities.showActivitiesTaskPre(host, id, resolve); } }(host, t.taskid), delete: function(host, id, name){ return function() { return new Promise(function(resolve,reject){ hr.activities.deleteActivitiesTaskConfirm(host, id, name).then(function(value){ resolve(value); }); }); } }(host, t.taskid, t.name), changeStatus: function(host, id){ return function(value){ return new Promise(function(resolve, reject){ var t = data_module.cacheContent_meetings.read(id); if (t.status == 1) host.chartContent.success--; else if (t.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; hr.activities.activitiesStatusChangeSave(host, "meeting", t, value, {chartContainer: host.chartContainer}).then(function(message){ resolve(message); }); }, function(err){console.log(err);}); } }(host, t.taskid), markedFunc: function(host, id){ return function(marked){ return contentModule.markedFunc(host, { id: "meeting_" + id, marked: marked, task: "activities", tablename: "activities" }); } }(host, t.taskid) } if (host.dataTaskEdit.status == 1) t.status = "success"; else if (host.dataTaskEdit.endtime >= today) t.status = "pending"; else t.status = "unsuccess"; host.database.activities.items.unshift(t); hr.menu.changeCurrentUrlTab(host, "activities"); } if ( ( f_status == "all" || (f_status == "completed" && host.dataTaskEdit.status == 1) || (f_status == "uncompleted" && host.dataTaskEdit.status == 0) || (f_status == "doing" && host.dataTaskEdit.endtime >= today && host.dataTaskEdit.status == 0) || (f_status == "overdue" && host.dataTaskEdit.endtime <= today && host.dataTaskEdit.status == 0) ) && ( activity_type == "all" || host.dataTaskEdit.activityType == activity_type ) && ( employeeid[host.dataTaskEdit.assignto] // employeeid == 0 // || host.dataTaskEdit.assignto == employeeid ) && ( host.dataTaskEdit.endtime >= start && host.dataTaskEdit.endtime < end ) ) { if (host.dataTaskEdit.status == 1) host.chartContent.success++; else if (host.dataTaskEdit.endtime >= today) host.chartContent.pending++; else host.chartContent.unsuccess++; host.chartContent.count++; host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); } resolve(""); }) } 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.activities.activitiesStatusChangeSave = function(host, activityName, content, status, params){ return new Promise(function(resolve, reject){ var status_filter = host.status.value; var today = new Date(); today.setHours(0,0,0,0); ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_activities_status_change_save.php", params: [ {name: "activityName", value: activityName}, {name: "id", value: content.id}, {name: "status", value: status ? 1 : 0} ], func: function(success, message){ ModalElement.close(-1); if (success) { if (message.substr(0, 2) == "ok"){ var tables = []; if (activityName == "meeting") tables.push("meetings"); else tables.push("tasks"); data_module.loadTables(tables, function(){ var index = host.database.activities.getIndex(activityName + "_" + content.id); if (host.database.activities.items[index].status == 1) host.database.activities.items[index].status = "success"; else if (host.database.activities.items[index].endtime >= today) host.database.activities.items[index].status = "pending"; else host.database.activities.items[index].status = "unsuccess"; if ( status_filter == "all" || (status_filter == "completed" && content.status == 1) || (status_filter == "uncompleted" && content.status == 0) || (status_filter == "doing" && content.endtime >= today && content.status == 0) || (status_filter == "overdue" && content.endtime <= today && content.status == 0) ) { if (status) host.chartContent.success++; else if (content.endtime >= today) host.chartContent.pending++; else host.chartContent.unsuccess++; host.chartContent.count++; params.chartContainer.clearChild(); params.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); } resolve(""); }); } else { console.log(message); reject(message); } } else { console.log(message); reject(message); } } }); }); } hr.activities.redraw = function(host){ host.employeeid = []; var employeeid = host.employee.values; host.employee.values.forEach((item, i) => { if (item > 0) host.employeeid.push(item); else { host.employeeid = host.employeeid.concat(host.database.orgs.items[host.dictionary.orgs[-item]].allEmployeeIdList); } }); host.employeeid = host.employeeid.filter(function(elt, index){ var t1 = host.employeeid.indexOf(elt) == index; var t2 = true; if (systemconfig.privSystem < 2) { t2 = host.privilegesDic[-elt].view_activities || host.privilegesDic[-elt].edit_activities; } return t1 && t2; }); host.empDict = {}; host.employeeid.forEach((item, i) => { host.empDict[item] = 1; }); var timeValue = host.time.getValue(); var start = new Date(timeValue.specificValue.start); var end = new Date(timeValue.specificValue.end); var today = new Date(); today.setHours(0,0,0,0); var filter = { status: host.status.value, activity_type: host.activity_type.value, starttime: start, endtime: end, privSystem: systemconfig.privSystem, today: today, userid: systemconfig.userid }; var dictionary = { meetings: {}, tasks: {} }; var meetingFilter = function(elt){ if (elt.participant.indexOf("_") != -1) { var participantStr = elt.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } elt.participant = participant; } else if (elt.participant == "") elt.participant = []; else elt.participant = EncodingClass.string.toVariable(elt.participant); var y = false; for (i = 0; i < elt.participant.length; i++){ if (extraParams.empDict[elt.participant[i]]) { y = true; break; } } if (!extraParams.empDict[elt.assignto] && !y) return null; if (elt.endtime < extraParams.filter.starttime || elt.endtime >= extraParams.filter.endtime) return null; if (extraParams.filter.status != "all") { switch (extraParams.filter.status) { case "completed": if (elt.status == 0) return null; break; case "uncompleted": if (elt.status == 1) return null; break; case "overdue": if (elt.status == 1 || elt.endtime >= extraParams.filter.today) return null; break; default: if (elt.status == 1 || elt.endtime < extraParams.filter.today) return null; } } var isView = false; if ( extraParams.filter.privSystem >= 2 || (extraParams.empDict2[elt.assignto] && extraParams.filter.userid == extraParams.empDict2[elt.assignto].userid) || (extraParams.privilegesDic[-elt.assignto] && extraParams.privilegesDic[-elt.assignto].view_activities) || (extraParams.privilegesDic[-elt.assignto] && extraParams.privilegesDic[-elt.assignto].edit_activities) ) isView = true; if (!isView) { for (i = 0; i < elt.participant.length; i++){ if ( (extraParams.empDict2[elt.participant[i]] && extraParams.filter.userid == extraParams.empDict2[elt.participant[i]].userid) || (extraParams.privilegesDic[-elt.participant[i]] && extraParams.privilegesDic[-elt.participant[i]].edit_activities) || (extraParams.privilegesDic[-elt.participant[i]] && extraParams.privilegesDic[-elt.participant[i]].view_activities) ) { isView = true; break; } } } elt.meetingid = elt.id; elt.assignto = elt.assignto; elt.id = "meeting_" + elt.id; elt.activityType = "type_meeting"; if (isView) { var status; if (elt.status == 1) status = "success"; else if (elt.endtime >= extraParams.filter.today) status = "pending"; else status = "unsuccess"; var ret = { id: elt.id, meetingid: elt.meetingid, status: status, name: elt.name, assignto: elt.assignto }; return ret; } else { console.log(999); return null; } }; var taskFilter = function(elt){ if (elt.participant.indexOf("_") != -1) { var participantStr = elt.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } elt.participant = participant; } else if (elt.participant == "") elt.participant = []; else elt.participant = EncodingClass.string.toVariable(elt.participant); var y = false; for (i = 0; i < elt.participant.length; i++){ if (extraParams.empDict[elt.participant[i]]) { y = true; break; } } if (!extraParams.empDict[elt.assignto] && !y) return null; if (elt.endtime < extraParams.filter.starttime || elt.endtime >= extraParams.filter.endtime) return null; if (extraParams.filter.status != "all") { switch (extraParams.filter.status) { case "completed": if (elt.status == 0) return null; break; case "uncompleted": if (elt.status == 1) return null; break; case "overdue": if (elt.status == 1 || elt.endtime >= extraParams.filter.today) return null; break; default: if (elt.status == 1 || elt.endtime < extraParams.filter.today) return null; } } var isView = false; if ( extraParams.filter.privSystem >= 2 || (extraParams.empDict2[elt.assignto] && extraParams.filter.userid == extraParams.empDict2[elt.assignto].userid) || (extraParams.privilegesDic[-elt.assignto] && extraParams.privilegesDic[-elt.assignto].view_activities) || (extraParams.privilegesDic[-elt.assignto] && extraParams.privilegesDic[-elt.assignto].edit_activities) ) isView = true; if (!isView) { for (i = 0; i < elt.participant.length; i++){ if ( (extraParams.empDict2[elt.participant[i]] && extraParams.filter.userid == extraParams.empDict2[elt.participant[i]].userid) || (extraParams.privilegesDic[-elt.participant[i]] && extraParams.privilegesDic[-elt.participant[i]].edit_activities) || (extraParams.privilegesDic[-elt.participant[i]] && extraParams.privilegesDic[-elt.participant[i]].view_activities) ) { isView = true; break; } } } elt.taskid = elt.id; elt.assignto = elt.assignto; elt.id = "task_" + elt.id; elt.activityType = "type_task"; if (isView) { var status; if (elt.status == 1) status = "success"; else if (elt.endtime >= extraParams.filter.today) status = "pending"; else status = "unsuccess"; var ret = { id: elt.id, taskid: elt.taskid, status: status, name: elt.name, assignto: elt.assignto }; return ret; } else { return null; } }; var meetingLinkFilter = function(elt){ if (extraParams.dictionary.meetings[elt.meetingid] !== undefined) { return elt; } return null; }; var taskLinkFilter = function(elt){ if (extraParams.dictionary.tasks[elt.taskid] !== undefined) { return elt; } return null; }; ModalElement.show_loading(); var tables = []; if (filter.activity_type == "all" || filter.activity_type == "type_meeting") { tables.push("meetings"); tables.push("meeting_links"); } if (filter.activity_type == "all" || filter.activity_type == "type_task") { tables.push("tasks"); tables.push("task_links"); } data_module.loadTables(tables, function(){ var content = { meetings: [], meeting_links: [], tasks: [], task_links: [] }; var p1 = false, p2 = false; if (filter.activity_type == "all" || filter.activity_type == "type_meeting") { data_module.cacheContent_meetings.psearch({ extraParams: { empDict: host.empDict, empDict2: host.dictionary.employees, privilegesDic: host.privilegesDic, filter: filter }, searchFunc: meetingFilter, postFunc: function (record) { record.func = { view: function(host, id){ return function(resolve) { hr.activities.showActivitiesMeetingPre(host, id, resolve); } }(host, record.meetingid), delete: function(host, id){ return function() { return new Promise(function(resolve,reject){ hr.activities.deleteActivitiesMeetingConfirm(host, id, record.name).then(function(value){ resolve(value); }); }); } }(host, record.meetingid), changeStatus: function(host, id){ return function(value){ return new Promise(function(resolve, reject){ var t = data_module.cacheContent_meetings.read(id); if (t.status == 1) host.chartContent.success--; else if (t.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; hr.activities.activitiesStatusChangeSave(host, "meeting", t, value, {chartContainer: host.chartContainer}).then(function(message){ resolve(message); }); }, function(err){console.log(err);}); } }(host, record.meetingid), markedFunc: function(host, id){ return function(marked){ return contentModule.markedFunc(host, { id: "meeting_" + id, marked: marked, task: "activities", tablename: "activities" }); } }(host, record.meetingid) } return record; }, callbackfunc: function (values) { content.meetings = values; content.meetings.forEach((cur, idx) => { dictionary.meetings[cur.meetingid] = idx; }); data_module.cacheContent_meeting_links.psearch({ extraParams: { dictionary: dictionary }, searchFunc: meetingLinkFilter, postFunc: function (record) { content.meetings[dictionary.meetings[record.meetingid]].tablename = record.tablename; content.meetings[dictionary.meetings[record.meetingid]].instanceid = record.instanceid; return record; }, callbackfunc: function (values) { content.meeting_links = values; p1 = true; } }); } }); } else { p1 = true; } if (filter.activity_type == "all" || filter.activity_type == "type_task") { data_module.cacheContent_tasks.psearch({ extraParams: { empDict: host.empDict, empDict2: host.dictionary.employees, privilegesDic: host.privilegesDic, filter: filter }, searchFunc: taskFilter, postFunc: function (record) { record.func = { view: function(host, id){ return function(resolve) { hr.activities.showActivitiesTaskPre(host, id, resolve); } }(host, record.taskid), delete: function(host, id){ return function() { return new Promise(function(resolve,reject){ hr.activities.deleteActivitiesTaskConfirm(host, id, record.name).then(function(value){ resolve(value); }); }); } }(host, record.taskid), changeStatus: function(host, id){ return function(value){ return new Promise(function(resolve, reject){ var t = data_module.cacheContent_tasks.read(id); if (t.status == 1) host.chartContent.success--; else if (t.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; hr.activities.activitiesStatusChangeSave(host, "task", t, value, {chartContainer: host.chartContainer}).then(function(message){ resolve(message); }); }, function(err){console.log(err);}); } }(host, record.taskid), markedFunc: function(host, id){ return function(marked){ return contentModule.markedFunc(host, { id: "task_" + id, marked: marked, task: "activities", tablename: "activities" }); } }(host, record.taskid) }; return record; }, callbackfunc: function (values) { content.tasks = values; content.tasks.forEach((cur, idx) => { dictionary.tasks[cur.taskid] = idx; }); data_module.cacheContent_task_links.psearch({ extraParams: { dictionary: dictionary }, searchFunc: taskLinkFilter, postFunc: function (record) { content.tasks[dictionary.tasks[record.taskid]].tablename = record.tablename; content.tasks[dictionary.tasks[record.taskid]].instanceid = record.instanceid; return record; }, callbackfunc: function (values) { content.task_links = values; p2 = true; } }); } }); } else { p2 = true; } Thread.wait( function () { return p1 && p2; }, function () { var t = {}; t.activities = content.meetings.concat(content.tasks); contentModule.makeDatabaseContent(host, t); hr.activities.makeUserMarkerData(host, "activities"); host.chartContent = { count: 0, success: 0, unsuccess: 0, pending: 0 }; for (var i = 0; i < host.database.activities.items.length; i++){ if (host.database.activities.items[i].status == "success") host.chartContent.success++; else if (host.database.activities.items[i].status == "pending") host.chartContent.pending++; else host.chartContent.unsuccess++; host.chartContent.count++; } host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); host.tableContent = { database: host.database, form_config: host.form_config, user_column_configsDic: host.user_column_configsDic, inputsearchbox: host.inputsearchbox, status: host.status, activity_type: host.activity_type, time: host.time, employee: host.employee, data_container: host.data_container, tableView: null, configColumnActivities: null, columnList: host.columnList }; host.funcs.formActivitiesContentData(host.tableContent); ModalElement.close(-1); } ); }); }; hr.activities.init = function(host){ return new Promise(function(resolveMn, rejectMn){ host.database = {}; ModalElement.show_loading(); data_module.loadActivitiesInit().then(function(content){ ModalElement.close(-1); contentModule.makeDatabaseContent(host, content); host.form_config = contentModule.configVariable(host); contentModule.makeOrgsIndex(host); contentModule.makeEmployeeData(host); contentModule.makeEmployeesIndex(host); var orgDict = {}; var root = []; host.database.orgs.items.forEach((item, i) => { orgDict[item.id] = i; if (item.parentid == 0) root.push(item.id); }); var createAllEmployeeInOrg = function(orgid){ var index = orgDict[orgid]; host.database.orgs.items[index].allEmployeeIdList = host.database.orgs.items[index].employeeIdList; host.database.orgs.items[index].childIndexList.forEach((item, i) => { createAllEmployeeInOrg(host.database.orgs.items[item].id); host.database.orgs.items[index].allEmployeeIdList = host.database.orgs.items[index].allEmployeeIdList.concat( host.database.orgs.items[item].allEmployeeIdList ); }); }; root.forEach(function(elt){ createAllEmployeeInOrg(elt); }); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); host.dictionary = { employees: contentModule.makeDictionaryIndex(host.database.employees.items), peoples: contentModule.makeDictionaryIndex(host.database.peoples.items), orgs: orgDict }; host.dictionary.employees = {}; host.database.employees.items.forEach(function(elt, index){ host.dictionary.employees[elt.id] = elt; }); host.dictionary.users = {}; host.database.users.items.forEach(function(elt, index){ host.dictionary.users[elt.homeid] = index; }); host.employeeOfMe = content.employeeOfMe; if (systemconfig.privSystem < 2) { contentModule.makeEmployeeGroupMemberIndex(host); contentModule.makeConfigPrivileges(host); } host.sessionid = (new Date()).getTime(); var cmdbutton = { close: function (event, me) { if (hr.isMobile){ theme.mobileInitBack(); } else { hr.menu.tabPanel.removeTab(host.holder.id); } }, addMeeting: function(host){ return function (event, me) { hr.activities.addActivitiesMeeting(host, 0, function onSave(value){ }, function onAdd(value){ var table = host.data_container.childNodes[0]; table.notifyAddRowAt(0); }, function onRemove(){if (hr.isMobile) hr.menu.showMobileTabbar(true);}); } } (host), addTask: function(host){ return function (event, me) { hr.activities.addActivitiesTask(host, 0, function onSave(value){ }, function onAdd(value){ var table = host.data_container.childNodes[0]; table.notifyAddRowAt(0); }, function onRemove(){if (hr.isMobile) hr.menu.showMobileTabbar(true);}); } } (host) }; var employeeItems = contentModule.getMemberOfEmployeeSelectMenu(host); employeeItems.splice(0, 1); // employeeItems[0].text = LanguageModule.text("txt_all_employee"); host.chartContainer = absol._({}); host.data_container = absol._({ // style: {paddingBottom: "var(--footer-margin)"} }); host.holder.addChild(host.frameList); var singlePage = host.funcs.formActivitiesInit({ cmdbutton: cmdbutton, holder: host.holder, data_container: host.data_container, chartContainer: host.chartContainer, employeeItems: employeeItems, timeClass: "activities-time-class", filter_change_func: function(){ hr.activities.redraw(host); } }); host.status = singlePage.status; host.activity_type = singlePage.activity_type; host.inputsearchbox = singlePage.inputsearchbox; host.time = singlePage.time; host.employee = singlePage.employee; host.employee.values = host.employeeOfMe; var displayDic = { status: true, name: true, assignto: true, endtime: true, reminder: true, assignto: true, result: true }; var meetingColumnList = contentModule.getColumnListFromDatatype(host, "meeting", displayDic); var taskColumnList = contentModule.getColumnListFromDatatype(host, "task", displayDic); var columnList = []; var t_array = []; meetingColumnList.forEach(function(elt){ if (elt.value != "allday") { columnList.push(elt); t_array.push(elt.value); } }); taskColumnList.forEach(function(elt){ if (t_array.indexOf(elt.value) == -1) columnList.push(elt); }); if (!host.user_column_configsDic["activities_list"]){ for (var i = 0; i < columnList.length; i++){ if (columnList[i].value == "status"){ var x = columnList[i]; columnList.splice(i, 1); columnList.unshift({value: 'activityType', display: true, main: true, type: -257, text: LanguageModule.text("txt_work")}); columnList.unshift(x); break; } } } else columnList.push({value: 'activityType', display: true, main: true, type: -257, text: LanguageModule.text("txt_work")}); columnList.push({value: 'activityPurpose', display: true, main: true, type: "purpose", text: "Chức năng"}); columnList.push({value: 'marked', display: true, main: true, type: "marked", text: LanguageModule.text("txt_marked")}); host.columnList = columnList; host.frameList.addChild(singlePage); singlePage.requestActive(); hr.activities.redraw(host); resolveMn(host); }) }); };