![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/tech_preview/hr/ |
Upload File : |
hr.activities.convert = function(host, id){ var loadMeetingLinks = function(index, count){ return new Promise(function(rs, rj){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "convert_db_load_meeting_links"}, {name: "index", value: index}, {name: "count", value: count} ], func: function(success, message){ if (success) { if (message.substr(0 ,2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); rs(content); } else { console.log(message); rj(message); } } else { console.log(message); rj(message); } } }); }); }; var loadTaskLinks = function(index, count){ return new Promise(function(rs, rj){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "convert_db_load_task_links"}, {name: "index", value: index}, {name: "count", value: count} ], func: function(success, message){ if (success) { if (message.substr(0 ,2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); rs(content); } else { console.log(message); rj(message); } } else { console.log(message); rj(message); } } }); }); }; var loadTaskMeetingCount = function(){ return new Promise(function(rs, rj){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "convert_db_load_task_meeting_count"} ], func: function(success, message){ if (success) { if (message.substr(0 ,2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); rs(content); } else { console.log(message); rj(message); } } else { console.log(message); rj(message); } } }); }); }; loadTaskMeetingCount().then(function(rs){ var taskPromiseArray = []; var i = 0; while (i <= rs.taskCount) { if (i >= rs.taskCount - 1) break; taskPromiseArray.push(loadList2(i, 1000)); var max = i + 999; if (max > rs.taskCount - 1) max = rs.taskCount - 1; i = max + 1; }; var meetingPromiseArray = []; var i = 0; while (i <= rs.meetingCount) { if (i >= rs.meetingCount - 1) break; var max = i + 999; if (max > rs.meetingCount - 1) max = rs.meetingCount - 1; meetingPromiseArray.push(loadList2(i, max)); i = max + 1; }; Promise.all(taskPromiseArray).then(function(content){ var values = []; for (var i = 0; i < content.length; i++){ content[i].forEach(function(cur_list){ values.push(cur_list); }); } resolve(values); }, function(err) {console.log(err);}); }); }; 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"){ var index = host.database.activities.getIndex("task_" + id); var deleteContent = host.database.activities.items[index]; if ( ( !host.quick_open ) && ( status == "all" || (status == "completed" && deleteContent.status == 1) || (status == "uncompleted" && deleteContent.status == 0) || (status == "doing" && deleteContent.endtime >= today && deleteContent.status == 0) || (status == "overdue" && deleteContent.endtime <= today && deleteContent.status == 0) ) && ( activity_type == "all" || deleteContent.activityType == activity_type ) && ( employeeid[deleteContent.assignto] // employeeid == 0 // || deleteContent.assignto == employeeid ) && ( deleteContent.endtime >= start && deleteContent.endtime < end ) ) { console.log("abc"); if (deleteContent.status == 1) host.chartContent.success--; else if (deleteContent.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); } host.database.activities.items.splice(index, 1); host.loader.invalidate(); resolve(); } 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){ return new Promise(function(resolve,reject){ var index = host.database.activities.getIndex("task_" + id); ModalElement.question({ title: LanguageModule.text("war_title_delete_activities_task"), message: LanguageModule.text2("war_txt_detele", [host.database.activities.items[index].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"){ var index = host.database.activities.getIndex("meeting_" + id); var deleteContent = host.database.activities.items[index]; if ( ( !host.quick_open ) && ( status == "all" || (status == "completed" && deleteContent.status == 1) || (status == "uncompleted" && deleteContent.status == 0) || (status == "doing" && deleteContent.endtime >= today && deleteContent.status == 0) || (status == "overdue" && deleteContent.endtime <= today && deleteContent.status == 0) ) && ( activity_type == "all" || deleteContent.activityType == activity_type ) && ( employeeid[deleteContent.assignto] // employeeid == 0 // || deleteContent.assignto == employeeid ) && ( deleteContent.endtime >= start && deleteContent.endtime < end ) ) { if (deleteContent.status == 1) host.chartContent.success--; else if (deleteContent.endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; host.chartContainer.clearChild(); host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); } host.database.activities.items.splice(index, 1); host.loader.invalidate(); resolve(); } 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){ return new Promise(function(resolve,reject){ var index = host.database.activities.getIndex("meeting_" + id); ModalElement.question({ title: LanguageModule.text("war_title_delete_activities_meeting"), message: LanguageModule.text2("war_txt_detele", [host.database.activities.items[index].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: host.database.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){ if (host.database.activities.getIndex("task_" + id) < 0) return; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "task_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ 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); hr.activities.showActivities(host, { activityType: "task", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesTask(host, id, resolve, 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.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){ if (host.database.activities.getIndex("meeting_" + id) < 0) return; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "meeting_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ 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); hr.activities.showActivities(host, { activityType: "meeting", activityid: id, editInforFunc: function(){ hr.activities.addActivitiesMeeting(host, id, resolve, 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.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: host.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; absol.form.traversal(formContainer.formFragment.view, function(item){ if (item.node.tag === "TextInput") { item.node.domElt.focus(); item.stop(); return; } }); }); }; 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, 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); } 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(hr.activities.getCellActivities(host, "meeting_" + id)); 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){ var index = host.database.activities.getIndex("meeting_" + id); data.ver = host.dataMeetingEdit.ver; } else { data.ver = 1; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); 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"){ 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){ var index = host.database.activities.getIndex("meeting_" + id); if (!host.quick_open){ if (host.database.activities.items[index].status == 1) host.chartContent.success--; else if (host.database.activities.items[index].endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; } host.database.activities.items[index] = host.dataMeetingEdit; host.drawGeneralInforFunc(); } else { id = host.dataMeetingEdit.meetingid; data.id = host.dataMeetingEdit.id; host.id = host.dataMeetingEdit.id; host.database.activities.items.push(host.dataMeetingEdit); hr.menu.changeCurrentUrlTab(host, "activities"); } if ( ( !host.quick_open ) && ( status == "all" || (status == "completed" && host.dataMeetingEdit.status == 1) || (status == "uncompleted" && host.dataMeetingEdit.status == 0) || (status == "doing" && host.dataMeetingEdit.endtime >= today && host.dataMeetingEdit.status == 0) || (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 ) ) { console.log(host.dataMeetingEdit.endtime, today); 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(hr.activities.getCellActivities(host, "meeting_" + id)); } else { // hr.activities.redraw(host); resolve(undefined); } } 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: host.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; absol.form.traversal(formContainer.formFragment.view, function(item){ if (item.node.tag === "TextInput") { item.node.domElt.focus(); item.stop(); return; } }); }); }; 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, status; 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); 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(hr.activities.getCellActivities(host, "task_" + id)); return; } } for (var i = 0; i < host.database.activities.items.length; i++){ if (host.database.activities.items[i].id == "task_" + 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){ var index = host.database.activities.getIndex("task_" + id); data.ver = host.dataTaskEdit.ver; } else { data.ver = 1; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); 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"){ 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){ var index = host.database.activities.getIndex("task_" + id); if (host.database.activities.items[index].status == 1) host.chartContent.success--; else if (host.database.activities.items[index].endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; host.database.activities.items[index] = host.dataTaskEdit; host.drawGeneralInforFunc(); } else { id = host.dataTaskEdit.taskid; data.id = host.dataTaskEdit.id; host.id = host.dataTaskEdit.id; host.database.activities.items.push(host.dataTaskEdit); hr.menu.changeCurrentUrlTab(host, "activities"); } if ( ( status == "all" || (status == "completed" && host.dataTaskEdit.status == 1) || (status == "uncompleted" && host.dataTaskEdit.status == 0) || (status == "doing" && host.dataTaskEdit.endtime >= today && host.dataTaskEdit.status == 0) || (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(hr.activities.getCellActivities(host, "task_" + id)); } else { // hr.activities.redraw(host); resolve(undefined); } } 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, id, 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: id}, {name: "status", value: status ? 1 : 0} ], func: function(success, message){ ModalElement.close(-1); if (success) { if (message.substr(0, 2) == "ok"){ var index; if(activityName == "task") { index = host.database.activities.getIndex("task_" + id); } else { index = host.database.activities.getIndex("meeting_" + id); } host.database.activities.items[index].status = status ? 1 : 0; if ( status_filter == "all" || (status_filter == "completed" && host.database.activities.items[index].status == 1) || (status_filter == "uncompleted" && host.database.activities.items[index].status == 0) || (status_filter == "doing" && host.database.activities.items[index].endtime >= today && host.database.activities.items[index].status == 0) || (status_filter == "overdue" && host.database.activities.items[index].endtime <= today && host.database.activities.items[index].status == 0) ) { if (host.database.activities.items[index].status == 1) host.chartContent.success++; else if (host.database.activities.items[index].endtime >= today) host.chartContent.pending++; else host.chartContent.unsuccess++; host.chartContent.count++; params.chartContainer.clearChild(); params.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(host.chartContent)); resolve(""); } else { resolve("remove"); } } else { console.log(message); reject(message); } } else { console.log(message); reject(message); } } }); }); } hr.activities.getCellActivities = function(host, id){ var today = new Date(); today.setHours(0,0,0,0); var relativeId = id; var index = host.database.activities.getIndex(id); var activityType = host.database.activities.items[index].activityType; if (activityType == "type_meeting") id = host.database.activities.items[index].meetingid; else id = host.database.activities.items[index].taskid; var func = { view: function(resolve){ if (activityType == "type_meeting") { hr.activities.showActivitiesMeetingPre(host, id, resolve); } else { hr.activities.showActivitiesTaskPre(host, id, resolve); } }, }; func.delete = function(){ return new Promise(function(resolve,reject){ if (activityType == "type_meeting") { hr.activities.deleteActivitiesMeetingConfirm(host, id).then(function(value){ resolve(value); }); } else { hr.activities.deleteActivitiesTaskConfirm(host, id).then(function(value){ resolve(value); }); } }); }; func.changeStatus = function(value){ return new Promise(function(resolve, reject){ if (host.database.activities.items[index].status == 1) host.chartContent.success--; else if (host.database.activities.items[index].endtime >= today) host.chartContent.pending--; else host.chartContent.unsuccess--; host.chartContent.count--; hr.activities.activitiesStatusChangeSave(host, activityType == "type_meeting" ? "meeting" : "task", id, value, {chartContainer: host.chartContainer}).then(function(message){ resolve(message); }); }, function(err){console.log(err);}); }; var res = host.database.activities.items[index]; if (host.database.activities.items[index].tablename) { res.activityPurpose = { tablename: host.database.activities.items[index].tablename, instanceid: host.database.activities.items[index].instanceid }; } func.markedFunc = function(marked){ return contentModule.markedFunc(host, { id: relativeId, marked: marked, task: "activities", tablename: "activities" }); }; res.func = func; return res; }; hr.activities.redraw = function(host){ 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, getRow: function(id){ return hr.activities.getCellActivities(host, id); }, tableView: null, configColumnActivities: null }; host.mIndex = 0; host.tIndex = 0; host.mNumber = 500; host.tNumber = 500; host.mDone = false; host.tDone = false; host.funcs.formActivitiesContentData(host.tableContent).then(function(){ // var timeValue = host.time.getValue(); // var start = new Date(timeValue.specificValue.start); // var end = new Date(timeValue.specificValue.end); // hr.activities.loadLazyData(host, start, end, host.sessionid); host.loader = new hr.activities.ActivitiesListLoader({holderView:host.frameList, host: host }); host.loader.resume(); host.loader.requestQuery(); }); }; hr.activities.init = function(host){ return new Promise(function(resolveMn, rejectMn){ host.database = {}; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "activities_load_init"} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); 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.users = {}; host.database.users.items.forEach(function(elt, index){ host.dictionary.users[elt.homeid] = index; }); host.employeeOfMe = content.employeeOfMe; contentModule.makeEmployeeGroupMemberIndex(host); contentModule.makePrivilegesActivitiesConfigs(host); host.sessionid = (new Date()).getTime(); var cmdbutton = { close: function (event, me) { if (hr.isMobile){ hr.menu.loadPage(1000); } 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){ host.newRecord = host.data_container.insertData([value]); host.newRecord.view(); host.loader.invalidate(); }, 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){ host.newRecord = host.data_container.insertData([value]); host.newRecord.view(); host.loader.invalidate(); }, 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(){ host.sessionid = (new Date()).getTime(); 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; host.frameList.addChild(singlePage); singlePage.requestActive(); hr.activities.redraw(host); resolveMn(host); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.activities.ActivitiesListLoader = (function(){ function ActivitiesListLoader(opt){ setTimeout(this.attachToTabView.bind(this), 1000); this.holderView = opt.holderView; this.host = opt.host; this.tableView = this.host.tableContent.tableView; this.attachChangeEvent(); this.state = 'STAND'; this.tasks = {}; this.cTaskId = -1; } ActivitiesListLoader.prototype.attachToTabView = function(){ var c = this.holderView; var stack = []; while (c) { stack.unshift(c); c = c.parentElement; } var mainTabView = null; var frame = null; for (var i = 0; i < stack.length; ++i){ if (stack[i].classList.contains('absol-tabview')){ mainTabView = stack[i]; frame = stack[i + 2]; } } if (!frame) return ; this.frame = frame; frame.on({ active: this.resume.bind(this), deactive: this.pause.bind(this), remove: this.stop.bind(this) }); }; ActivitiesListLoader.prototype.attachChangeEvent = function(){ var host = this.host; host.status.on('change', this.requestQuery.bind(this)); host.activity_type.on('change', this.requestQuery.bind(this)); host.employee.on('change', this.requestQuery.bind(this)); host.time.on('change', this.requestQuery.bind(this)); }; ActivitiesListLoader.prototype.pause = function(){ if (this.state !== 'RUNNING') return; this.state = 'PAUSE'; }; ActivitiesListLoader.prototype.resume = function(){ if (this.state !== 'STAND' && this.state !== 'PAUSE') return; this.state = 'RUNNING'; if (this.tasks[this.cTaskId]){ this.doTask(this.tasks[this.cTaskId]); } }; ActivitiesListLoader.prototype.stop = function(){ if (this.state == 'RUNNING') this.pause(); //clear data this.state = "STOP"; if (this.frame) this.frame.off({ active: this.resume.bind(this), deactive: this.pause.bind(this), remove: this.stop.bind(this) }); }; ActivitiesListLoader.prototype.requestQuery = function(){ var query = this.getQuery(); var ident = absol.$.calcDTQueryHash(query); var task; if (this.tasks[ident]){ task = this.tasks[ident]; } else { task = { id: ident, query: query, mIdx: 0, tIdx: 0, mDone: false, tDone: false, chartContent : { count: 0, success: 0, unsuccess: 0, pending: 0 }, database:{ activities:{ items: [] } }, sync: Promise.resolve() }; this.tasks[ident] = task; } this.host.chartContent = task.chartContent; if (this.cTaskId != ident){ this.cTaskId = ident; this.tableView.clearRows(); this.doTask(task); } }; ActivitiesListLoader.prototype.doTask = function(task){ var taskId = task.id; var self = this; var host = this.host; task.sync = task.sync.then(function(){ if (self.cTaskId !== taskId) { return; } //push loaded items to view self.tableView.clearRows(); self.host.database.activities.items = task.database.activities.items; self.addRowToTable(task.database.activities.items); return new Promise(function(resolve){ function load(){ if (self.state !=='RUNNING') { resolve(); return; } if (self.cTaskId !== taskId) { resolve(); return; } if (task.mDone &&task.tDone){ self.drawChart(task.chartContent); resolve(); return ; } var params = Object.assign({}, task.query, { mIndex: task.mIdx, tIndex: task.tIdx, mNumber: 500, tNumber: 500 }); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: hr.isMobile? "activities_load_lazy_mobile" : "activities_load_lazy"}, {name: "params", value: EncodingClass.string.fromVariable(params)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); task.mDone = content.mDone || false; task.tDone = content.tDone || false; task.mIdx += content.meetings.length; task.tIdx += content.tasks.length; delete(content.mDone); delete(content.tDone); var meeting_link_dict = {}; content.meeting_links.forEach(function(elt){ meeting_link_dict[elt.meetingid] = elt; }); var task_link_dict = {}; content.task_links.forEach(function(elt){ task_link_dict[elt.taskid] = elt; }); var t = {activities: []}; content.meetings.forEach(function(elt){ if (!params.empDict[elt.assignto]) return; var isView = false; 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); for (i = 0; i < elt.participant.length; i++){ if (host.employeeEditDic[elt.participant[i]]) { isView = true; break; } } if (meeting_link_dict[elt.id]){ elt.tablename = meeting_link_dict[elt.id].tablename; elt.instanceid = meeting_link_dict[elt.id].instanceid; } elt.meetingid = elt.id; elt.id = "meeting_" + elt.id; elt.activityType = "type_meeting"; if (host.employeeEditDic[elt.assignto]) isView = true; if (isView) t.activities.push(elt); }); content.tasks.forEach(function(elt){ if (!params.empDict[elt.assignto]) return; var isView = false; 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); for (i = 0; i < elt.participant.length; i++){ if (host.employeeEditDic[elt.participant[i]]) { isView = true; break; } } if (task_link_dict[elt.id]) { elt.tablename = task_link_dict[elt.id].tablename; elt.instanceid = task_link_dict[elt.id].instanceid; } elt.taskid = elt.id; elt.id = "task_" + elt.id; elt.activityType = "type_task"; if (host.employeeEditDic[elt.assignto]) isView = true; if (isView) t.activities.push(elt); }); var x = { database: {} }; contentModule.makeDatabaseContent(x, t); x.database.user_marked = host.database.user_marked; contentModule.makeUserMarkerData(x, "activities"); var data = []; var today = new Date(); today.setHours(0,0,0,0); for (var i = 0; i < x.database.activities.items.length; i++){ if (x.database.activities.items[i].status == 1) task.chartContent.success++; else if (x.database.activities.items[i].endtime >= today) task.chartContent.pending++; else task.chartContent.unsuccess++; task.chartContent.count++; } task.database.activities.items = task.database.activities.items.concat(x.database.activities.items); if (self.cTaskId == taskId){ self.host.database.activities.items = task.database.activities.items; self.addRowToTable(x.database.activities.items); } load(); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } if (task.mDone && task.tDone) { self.drawChart(task.chartContent); resolve(); } else ModalElement.show_loading(); load(); }); }) ; }; ActivitiesListLoader.prototype.drawChart = function(chartContent){ // console.log("TODO", chartContent); this.host.chartContainer.clearChild(); this.host.chartContainer.addChild(theme.formOnboardingEmployeeInformationChart(chartContent)); }; ActivitiesListLoader.prototype.addRowToTable = function(items){ this.host.data_container.list = items; this.host.data_container.insertData(items); }; ActivitiesListLoader.prototype.getQuery = function(){ var host = this.host; var timeValue = host.time.getValue(); var start = new Date(timeValue.specificValue.start); var end = new Date(timeValue.specificValue.end); var query = { status: host.status.value, activity_type: host.activity_type.value, starttime: start, endtime: end, privSystem: systemconfig.privSystem // privSystem: 1 }; query.employeeid = []; var employeeid = host.employee.values; host.employee.values.forEach((item, i) => { if (item > 0) query.employeeid.push(item); else { query.employeeid = query.employeeid.concat(host.database.orgs.items[host.dictionary.orgs[-item]].allEmployeeIdList); } }); query.employeeid = query.employeeid.filter(function(elt, index){ return query.employeeid.indexOf(elt) == index && host.employeeEditDic[elt]; }); // if (employeeid != 0) query.employeeid = [employeeid]; // else query.employeeid = Object.keys(host.employeeEditDic); // query.employeeid = Object.keys(host.employeeEditDic); query.empDict = {}; query.employeeid.forEach((item, i) => { query.empDict[item] = 1; }); host.empDict = query.empDict; return query; }; ActivitiesListLoader.prototype.invalidate = function(){ //TODO: còn trường hợp thêm/ xóa tác vụ ở máy khác/ tab khác,.... this.tasks = {}; }; return ActivitiesListLoader; })();