![]() 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.onboarding.taskPreview = function(host, id){ hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var index = host.database.task_templates.getIndex(id); var template = EncodingClass.string.toVariable(host.database.task_templates.items[index].content); var taskContent = { name: hr.sclang.executeTemplate(template.task_name, valueOfVariable.variableToString), status: template.task_status ? 1 : 0, endtime: hr.sclang.executeExpression(template.task_expire_time.substring(3, template.task_expire_time.length - 3), valueOfVariable.originVariable), reminder: template.task_reminder, assignto: hr.sclang.executeExpression(template.task_assign_to.substring(3, template.task_assign_to.length - 3), valueOfVariable.originVariable), // participant: hr.templateSupportFunctions.templateParser(content.task_participant, Object.assign({},hr.templateSupportFunctions ,valueOfVariable.originVariable)), result: hr.sclang.executeTemplate(template.task_result, valueOfVariable.variableToString), extrainfo: {} }; if (template.task_participant.startsWith("{{") && template.task_participant.endsWith("}}")){ taskContent.participant = [hr.sclang.executeExpression(template.task_participant.substring(3, template.task_participant.length - 3), valueOfVariable.originVariable)]; if (taskContent.participant[0] == 0) taskContent.participant = []; } else taskContent.participant = []; var viewDiv = absol._({}); contentModule.makeOutputFormData({ typeid: host.form_config["task"].typeid, formid: host.form_config["task"].output_form, initialValue: taskContent, formContainer: viewDiv, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){ ModalElement.showWindow({ index: 5, title: LanguageModule.text("txt_task"), bodycontent: viewDiv, buttonlist: [ { text: LanguageModule.text("txt_close"), onclick: function(){ ModalElement.close(5); } } ] }); }); }); }; hr.onboarding.meetingPreview = function(host, id){ hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var index = host.database.meeting_templates.getIndex(id); var template = EncodingClass.string.toVariable(host.database.meeting_templates.items[index].content); var meetingContent = { name: hr.sclang.executeTemplate(template.meeting_name, valueOfVariable.variableToString), location: hr.sclang.executeTemplate(template.meeting_location, valueOfVariable.variableToString), status: template.meeting_status ? 1 : 0, type: template.meeting_type, starttime: hr.sclang.executeExpression(template.meeting_start_time.substring(3, template.meeting_start_time.length - 3), valueOfVariable.originVariable), endtime: hr.sclang.executeExpression(template.meeting_end_time.substring(3, template.meeting_end_time.length - 3), valueOfVariable.originVariable), reminder: template.meeting_reminder, allday: template.meeting_all_day ? 1 : 0, assignto: hr.sclang.executeExpression(template.meeting_assign_to.substring(3, template.meeting_assign_to.length - 3), valueOfVariable.originVariable), result: hr.sclang.executeTemplate(template.meeting_result, valueOfVariable.variableToString), extrainfo: {} }; if (template.meeting_participant.startsWith("{{") && template.meeting_participant.endsWith("}}")){ meetingContent.participant = [hr.sclang.executeExpression(template.meeting_participant.substring(3, template.meeting_participant.length - 3), valueOfVariable.originVariable)]; } else meetingContent.participant = []; var viewDiv = absol._({}); contentModule.makeOutputFormData({ typeid: host.form_config["meeting"].typeid, formid: host.form_config["meeting"].output_form, initialValue: meetingContent, formContainer: viewDiv, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){ ModalElement.showWindow({ index: 5, title: LanguageModule.text("txt_meeting"), bodycontent: viewDiv, buttonlist: [ { text: LanguageModule.text("txt_close"), onclick: function(){ ModalElement.close(5); } } ] }); }); }); }; hr.onboarding.emailPreview = function(host, id){ hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var index = host.database.email_templates.getIndex(id); var template = EncodingClass.string.toVariable(host.database.email_templates.items[index].content); var emailContent = { receiver: hr.sclang.executeExpression(template.receiver.substring(3, template.receiver.length - 3), valueOfVariable.originVariable) }; if (template.carbon_copy.startsWith("{{") && template.carbon_copy.endsWith("}}")){ emailContent.carbon_copy = [hr.sclang.executeExpression(template.carbon_copy.substring(3, template.carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.carbon_copy = []; if (template.blind_carbon_copy.startsWith("{{") && template.blind_carbon_copy.endsWith("}}")){ emailContent.blind_carbon_copy = [hr.sclang.executeExpression(template.blind_carbon_copy.substring(3, template.blind_carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.blind_carbon_copy = []; emailContent.email_content = hr.sclang.executeTemplate(template.email_content, valueOfVariable.variableToString); emailContent.subject = template.subject; ModalElement.showWindow({ index: 5, title: "Email", bodycontent: absol._({ child: DOMElement.table({ data: [ [ { attrs: { style: { paddingRight: "20px" } }, text: "Chủ đề" }, { text: emailContent.subject } ], [{attrs: {style: {height: "10px"}}}], [ { attrs: { style: { paddingRight: "20px" } }, text: "Người nhận" }, { text: emailContent.receiver } ], [{attrs: {style: {height: "10px"}}}], [ { attrs: { style: { paddingRight: "20px" } }, text: "Cc" }, { text: emailContent.carbon_copy.toString() } ], [{attrs: {style: {height: "10px"}}}], [ { attrs: { style: { paddingRight: "20px" } }, text: "Bcc" }, { text: emailContent.blind_carbon_copy.toString() } ], [{attrs: {style: {height: "10px"}}}], [ { attrs: { style: { paddingRight: "20px" } }, text: "Nội dung" }, { innerHTML: emailContent.email_content } ], ] }) }), buttonlist: [ { text: LanguageModule.text("txt_close"), onclick: function(){ ModalElement.close(5); } } ] }) }); }; hr.onboarding.getCellActivities = function(host, onboardingid, id, params){ var today = new Date(); 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.onboarding.editMeeting(host, onboardingid, id, params).then(function(value){ resolve(value); }); } else { hr.onboarding.editTask(host, onboardingid, id, params).then(function(value){ resolve(value); }); } }, }; func.delete = function(){ if (activityType == "type_meeting") { return hr.onboarding.deleteMeeting(host, onboardingid, id, params); } else { return hr.onboarding.deleteTask(host, onboardingid, id, params); } // return new Promise(function(resolve,reject){ // }); }; 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--; return hr.onboarding.activitiesStatusChangeSave(host, onboardingid, activityType == "type_meeting" ? "meeting" : "task", id, value, params); // }, function(err){console.log(err);}); }; var res = EncodingClass.string.duplicate(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.onboarding.drawActivitiesInformation = function(host, onboardingid, params) { var employeeItems = contentModule.getMemberOfEmployeeSelectMenu(host); employeeItems[0].text = LanguageModule.text("txt_all_employee"); var data = []; var x; for (var i = 0; i < host.database.activities.items.length; i++){ x = hr.onboarding.getCellActivities(host, onboardingid, host.database.activities.items[i].id, params); data.push(x); }; theme.formOnboardingActivitiesContentData({ data: data, host: host, addMeetingByTemplate: params.addMeetingByTemplate, addTaskByTemplate: params.addTaskByTemplate, user_column_configsDic: host.user_column_configsDic, addMeeting: function(){ return hr.onboarding.editMeeting(host, onboardingid, 0, params); }, addTask: function(){ return hr.onboarding.editTask(host, onboardingid, 0, params); }, addActivitiesSelected: params.addActivitiesSelected, employeeItems: employeeItems }).then(function(dataView){ params.activities.clearChild(); params.activities.addChild(dataView); }, function(err){console.log(err);}); }; hr.onboarding.wizardAddSubmit = function(host){ var dataInfor = host.onboardingEdit.getValue(); var dataEmail = host.emailEditElt.getValue(); var dataTask = host.taskEditElt.getValue(); var dataMeeting = host.meetingEditElt.getValue(); dataInfor.ver = 1; dataInfor.available = dataInfor.available? 1: 0; dataInfor.extrainfo = EncodingClass.string.fromVariable(dataInfor.extrainfo); delete(dataInfor.files); host.employeeid = dataInfor.employeeid; hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ console.log(valueOfVariable); var email_array = []; dataEmail.forEach(function(elt){ var index = host.database.email_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.email_templates.items[index].content); var emailContent = { receiver: hr.sclang.executeExpression(template.receiver.substring(3, template.receiver.length - 3), valueOfVariable.originVariable) }; if (template.carbon_copy.startsWith("{{") && template.carbon_copy.endsWith("}}")){ emailContent.carbon_copy = [hr.sclang.executeExpression(template.carbon_copy.substring(3, template.carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.carbon_copy = []; if (template.blind_carbon_copy.startsWith("{{") && template.blind_carbon_copy.endsWith("}}")){ emailContent.blind_carbon_copy = [hr.sclang.executeExpression(template.blind_carbon_copy.substring(3, template.blind_carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.blind_carbon_copy = []; emailContent.email_content = hr.sclang.executeTemplate(template.email_content, valueOfVariable.variableToString); emailContent.subject = template.subject; email_array.push(emailContent); }); var task_array = []; dataTask.forEach(function(elt){ //////////////////// var index = host.database.task_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.task_templates.items[index].content); var taskContent = { name: hr.sclang.executeTemplate(template.task_name, valueOfVariable.variableToString), status: template.task_status ? 1 : 0, endtime: hr.sclang.executeExpression(template.task_expire_time.substring(3, template.task_expire_time.length - 3), valueOfVariable.originVariable), reminder: template.task_reminder, assignto: hr.sclang.executeExpression(template.task_assign_to.substring(3, template.task_assign_to.length - 3), valueOfVariable.originVariable), // participant: hr.templateSupportFunctions.templateParser(content.task_participant, Object.assign({},hr.templateSupportFunctions ,valueOfVariable.originVariable)), result: hr.sclang.executeTemplate(template.task_result, valueOfVariable.variableToString), extrainfo: EncodingClass.string.fromVariable({}) }; if (template.task_participant.startsWith("{{") && template.task_participant.endsWith("}}")){ taskContent.participant = [hr.sclang.executeExpression(template.task_participant.substring(3, template.task_participant.length - 3), valueOfVariable.originVariable)]; } else taskContent.participant = []; var participantStr = ""; taskContent.participant.forEach(function(elt){ if (elt != 0) participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; taskContent.participant = participantStr; task_array.push(taskContent); }); var meeting_array = []; dataMeeting.forEach(function(elt){ //////////////////// var index = host.database.meeting_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.meeting_templates.items[index].content); var meetingContent = { name: hr.sclang.executeTemplate(template.meeting_name, valueOfVariable.variableToString), location: hr.sclang.executeTemplate(template.meeting_location, valueOfVariable.variableToString), status: template.meeting_status ? 1 : 0, type: template.meeting_type, starttime: hr.sclang.executeExpression(template.meeting_start_time.substring(3, template.meeting_start_time.length - 3), valueOfVariable.originVariable), endtime: hr.sclang.executeExpression(template.meeting_end_time.substring(3, template.meeting_end_time.length - 3), valueOfVariable.originVariable), reminder: template.meeting_reminder, allday: template.meeting_all_day ? 1 : 0, assignto: hr.sclang.executeExpression(template.meeting_assign_to.substring(3, template.meeting_assign_to.length - 3), valueOfVariable.originVariable), result: hr.sclang.executeTemplate(template.meeting_result, valueOfVariable.variableToString), extrainfo: EncodingClass.string.fromVariable({}) }; if (template.meeting_participant.startsWith("{{") && template.meeting_participant.endsWith("}}")){ meetingContent.participant = [hr.sclang.executeExpression(template.meeting_participant.substring(3, template.meeting_participant.length - 3), valueOfVariable.originVariable)]; } else meetingContent.participant = []; var participantStr = ""; meetingContent.participant.forEach(function(elt){ if (elt != 0) participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; meetingContent.participant = participantStr; meeting_array.push(meetingContent); }); ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_save_new.php", params: [ {name: "dataInfor", value: EncodingClass.string.fromVariable(dataInfor)}, {name: "dataEmail", value: EncodingClass.string.fromVariable(email_array)}, {name: "dataTask", value: EncodingClass.string.fromVariable(task_array)}, {name: "dataMeeting", value: EncodingClass.string.fromVariable(meeting_array)} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); var content = st.dataInfor; content.extrainfo = EncodingClass.string.toVariable(content.extrainfo); if (content.available){ host.database.onboarding.items.forEach(function(item){ if (item.employeeid == dataInfor.employeeid) item.available = 0; }); } host.dataOnboardingEdit = content; host.database.onboarding.items.push(content); var taskContent = st.dataTask; // host.database.tasks.items = host.database.tasks.items.concat(taskContent.tasks); // host.database.task_links.items = host.database.task_links.items.concat(taskContent.task_links); var taskContent = st.dataMeeting; // host.database.meetings.items = host.database.meetings.items.concat(content.meetings); // host.database.meeting_links.items = host.database.meeting_links.items.concat(content.meeting_links); var emailContent = st.dataEmail; emailErr = []; emailContent.forEach(function(elt, idx){ if (elt.email_record == 0) { emailErr.push(dataEmail[idx]); } }); ModalElement.close(); if (emailErr.length > 0){ var str = ""; emailErr.forEach((item, i) => { var index = host.database.email_templates.getIndex(item); if (str != "") str += ", "; str += host.database.email_templates.items[index].name; }); ModalElement.alert({ message: "Có " + emailErr.length + "/" + dataEmail.length + " gửi không thành công: " + str, func: function(){ hr.onboarding.redraw(host); hr.onboarding.showOnboardingPre(host, content.id); } }) // Promise.all(emailPromise).then(function(value){ // // ModalElement.close(-1); // ModalElement.close(); // hr.onboarding.redraw(host); // hr.onboarding.showOnboardingPre(host, content.id); // }); } else { hr.onboarding.redraw(host); hr.onboarding.showOnboardingPre(host, content.id); } } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }, function(err){console.log(err);}); }; hr.onboarding.wizardAdd = function(host){ var redraw = function(){ var vTimeline = absol.buildDom({ tag: 'verticaltimeline', props: { items: [ {text: LanguageModule.text("txt_employee")}, {text: LanguageModule.text("txt_task")}, {text: LanguageModule.text("txt_meeting")}, {text: LanguageModule.text("txt_email")}, {text: LanguageModule.text("txt_finish")} ] } }); host.onboardingEdit = DOMElement.div({}); contentModule.makeFormData({ typeid: host.form_config.onboarding.typeid, formid: host.form_config.onboarding.input_form, initialValue: {}, formContainer: host.onboardingEdit, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){ host.onboardingEdit.getValue = getValue; host.onboardingEdit.formFragment.setContext('host', host); }); var firstPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page' }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_employee") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [ absol._({ style: { paddingBottom: "20px" }, child: {text: LanguageModule.text("txt_onboarding_employee_note")} }), host.onboardingEdit ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({attrs: {className: "kv-document-page-footer-left"}}), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_next"), onclick: function(){ var data = host.onboardingEdit.getValue(); if (!data) return; vTimeline.current = 1; firstPageCtn.style.display = "none"; emailPageCtn.style.display = "none"; taskPageCtn.style.display = ""; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = "none"; } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); var dict = {}; // var groupItems = host.database.template_groups.items.map(function(elt){ // dict[elt.id] = elt.name; // return { // value: elt.id, // text: elt.name, // sortText: absol.string.nonAccentVietnamese(elt.name.toLowerCase()) // } // }); // groupItems.sort(function(a, b){ // if (a.sortText > b.sortText) return 1; // if (a.sortText < b.sortText) return -1; // return 0; // }); // groupItems.unshift({value: 0, text: LanguageModule.text("txt_all")}); var email_data = []; host.database.email_templates.items.forEach(function(elt){ if (elt.groupid == -1) email_data.push({ id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ var dataInfor = host.onboardingEdit.getValue(); host.employeeid = dataInfor.employeeid; hr.onboarding.emailPreview(host, elt.id); } }); }); var task_data = [] host.database.task_templates.items.forEach(function(elt){ if (elt.groupid == -1) task_data.push({ id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ var dataInfor = host.onboardingEdit.getValue(); host.employeeid = dataInfor.employeeid; hr.onboarding.taskPreview(host, elt.id); } }); }); var meeting_data = []; host.database.meeting_templates.items.forEach(function(elt){ if (elt.groupid == -1) meeting_data.push({ id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ var dataInfor = host.onboardingEdit.getValue(); host.employeeid = dataInfor.employeeid; hr.onboarding.meetingPreview(host, elt.id); } }); }); host.emailEditElt = theme.formOnboardingAddEmailMainContent({ // groupItems: groupItems, data: email_data }); var emailPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_email") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [ absol._({ style: { paddingBottom: "20px" }, child: {text: LanguageModule.text("txt_onboarding_employee_email_note")} }), host.emailEditElt ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"}, children: [ theme.noneIconButton({ text: LanguageModule.text("txt_back"), onclick: function(){ vTimeline.current = 2; firstPageCtn.style.display = "none"; emailPageCtn.style.display = "none"; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = ""; finishPageCtn.style.display = "none"; } }) ] }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_next"), onclick: function(){ var dataInfor = host.onboardingEdit.getValue(); var eIndex = host.database.employees.getIndex(dataInfor.employeeid); var eName = host.database.employees.items[eIndex].fullname; var dataEmail = host.emailEditElt.getValue(); finishText.clearChild(); if (dataEmail.length > 0) { finishText.addChild(absol._({text: LanguageModule.text2("txt_onboarding_employee_finish_note_email_yes", [eName])})); } else { finishText.addChild(absol._({text: LanguageModule.text2("txt_onboarding_employee_finish_note_email_no", [eName])})); } vTimeline.current = 4; firstPageCtn.style.display = "none"; emailPageCtn.style.display = "none"; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = ""; } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); host.taskEditElt = theme.formOnboardingAddTaskMainContent({ // groupItems: groupItems, data: task_data }); var taskPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_task") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [ absol._({ style: { paddingBottom: "20px" }, child: {text: LanguageModule.text("txt_onboarding_employee_task_note")} }), host.taskEditElt ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"}, children: [ theme.noneIconButton({ text: LanguageModule.text("txt_back"), onclick: function(){ vTimeline.current = 0; firstPageCtn.style.display = ""; emailPageCtn.style.display = "none"; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = "none"; } }) ] }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_next"), onclick: function(){ vTimeline.current = 2; firstPageCtn.style.display = "none"; emailPageCtn.style.display = "none"; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = ""; finishPageCtn.style.display = "none"; } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); host.meetingEditElt = theme.formOnboardingAddTaskMainContent({ // groupItems: groupItems, data: meeting_data }); var meetingPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_meeting") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [ absol._({ style: { paddingBottom: "20px" }, child: {text: LanguageModule.text("txt_onboarding_employee_meeting_note")} }), host.meetingEditElt ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"}, children: [ theme.noneIconButton({ text: LanguageModule.text("txt_back"), onclick: function(){ vTimeline.current = 1; firstPageCtn.style.display = "none"; emailPageCtn.style.display = "none"; taskPageCtn.style.display = ""; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = "none"; } }) ] }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_next"), onclick: function(){ vTimeline.current = 3; firstPageCtn.style.display = "none"; emailPageCtn.style.display = ""; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = "none"; } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }) ] }); var finishText = absol._({}) var finishPageCtn = DOMElement.div({ attrs: { className: 'kv-document-2-site-right kv-document-page', style: {display: "none"} }, children: [ absol.buildDom({ class: 'kv-document-page-header', child: [ { tag: 'span', class: 'kv-document-page-title', child: { text: LanguageModule.text("txt_finish") } }, { tag: 'button', class: ['kv-document-transparent-btn', 'kv-document-page-close-btn'], child: 'span.mdi.mdi-close', on: { click: function(){ ModalElement.close(); } } } ] }), DOMElement.div({ attrs: { className: 'kv-document-page-content' }, children: [ absol._({ style: { paddingBottom: "20px" }, child: finishText }) ] }), absol.buildDom({ class: 'kv-document-page-footer', child: [ DOMElement.div({ attrs: {className: "kv-document-page-footer-left"}, children: [ theme.noneIconButton({ text: LanguageModule.text("txt_back"), onclick: function(){ vTimeline.current = 3; firstPageCtn.style.display = "none"; emailPageCtn.style.display = ""; taskPageCtn.style.display = "none"; meetingPageCtn.style.display = "none"; finishPageCtn.style.display = "none"; } }) ] }), DOMElement.div({ attrs: {className: "kv-document-page-footer-right"}, children: [ theme.noneIconButton({ className: "primary", text: LanguageModule.text("txt_save"), onclick: function(){ hr.onboarding.wizardAddSubmit(host); } }), DOMElement.div({ attrs: { className: "kv-document-link", onclick: function(){ ModalElement.close(); } }, text: LanguageModule.text("txt_cancel") }) ] }) ] }) ] }); ModalElement.show({ bodycontent: absol.buildDom({ class: 'kv-document-2-site', style: { minWidth: "50vw", height: "70vh" }, child: [ { class: 'kv-document-2-site-left', child: [ { class: 'kv-document-2-site-left-header', child: [ { tag: 'span', class: 'kv-document-2-site-left-header-text', child: { text: LanguageModule.text("txt_onboarding") } } ] }, vTimeline ] }, firstPageCtn, taskPageCtn, meetingPageCtn, emailPageCtn, finishPageCtn ] }) }); }; redraw(); }; hr.onboarding.wizardAddPre = function(host){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_template"} ], 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); hr.onboarding.wizardAdd(host); } else { console.log(message); } } else { console.log(message); } } }); } hr.onboarding.editTaskSave = function(host, onboardingid, id, editFormView, tableName){ return new Promise(function(rs, rj){ var typeIndex = host.dictionary.typelists[host.form_config.task.typeid]; var table_infor = contentModule.getTaskMainData(); var keys = Object.keys(table_infor); var mainData = []; keys.forEach(function(elt){ mainData.push(table_infor[elt]); }); var st = contentModule.getValueOfForm(editFormView, host.form_config.task.typeid, host.database.typelists.items, table_infor); if (st === null) { rj("can not get value of form"); return }; st.status = st.status ? 1 : 0; participantStr = ""; st.participant.forEach(function(elt){ participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; st.participant = participantStr; st.extrainfo = EncodingClass.string.fromVariable(st.extrainfo); if (id == 0) ver = 1; else { ver = host.database.tasks.items[host.dictionary.tasks["task_" + id]].ver; } ModalElement.show_loading(); FormClass.api_call({ url: "activities_add_save.php", // url: "extends_structure_save.php", params: [ {name: "tableName", value: tableName}, {name: "task", value: "task"}, {name: "onboardingid", value: onboardingid}, {name: "id", value: id}, {name: "ver", value: ver}, {name: "data", value: EncodingClass.string.fromVariable(st)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); content.data.extrainfo = EncodingClass.string.toVariable(content.data.extrainfo); if (content.data.participant.indexOf("_") != -1) { var participantStr = content.data.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } content.data.participant = participant; } else if (content.data.participant == "") content.data.participant = []; else content.data.participant = EncodingClass.string.toVariable(content.data.participant); content.data.tablename = content.links.tablename; content.data.instanceid = content.links.instanceid; content.data.taskid = content.data.id; content.data.id = "task_" + content.data.id; content.data.activityType = "type_task"; if (id == 0){ host.dictionary.tasks[content.data.id] = host.database.tasks.items.length; host.database.tasks.items.push(content.data); host.database.activities.items.push(content.data); host.database.task_links.items.push(content.links); } else { var index = host.dictionary.tasks["task_" + id]; host.database.tasks.items[index] = content.data; var index1 = host.database.activities.getIndex("task_" + id); host.database.activities.items[index1] = content.data; } rs(content.data); } else { console.log(message); rj(message); } } else { console.log(message); rj(message); } } }); }); }; hr.onboarding.editMeetingSave = function(host, onboardingid, id, editFormView, tableName){ return new Promise(function(rs, rj){ var typeIndex = host.dictionary.typelists[host.form_config.meeting.typeid]; var table_infor = contentModule.getMeetingMainData(); var keys = Object.keys(table_infor); var mainData = []; keys.forEach(function(elt){ mainData.push(table_infor[elt]); }); var st = contentModule.getValueOfForm(editFormView, host.form_config.meeting.typeid, host.database.typelists.items, table_infor); if (st === null) { rj("can not get value of form"); return }; st.status = st.status ? 1 : 0; st.allday = st.allday ? 1 : 0; participantStr = ""; st.participant.forEach(function(elt){ participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; st.participant = participantStr; st.extrainfo = EncodingClass.string.fromVariable(st.extrainfo); if (id == 0) ver = 1; else { ver = host.database.meetings.items[host.dictionary.meetings["meeting_" + id]].ver; } ModalElement.show_loading(); FormClass.api_call({ url: "activities_add_save.php", // url: "extends_structure_save.php", params: [ {name: "tableName", value: tableName}, {name: "onboardingid", value: onboardingid}, {name: "task", value: "meeting"}, {name: "id", value: id}, {name: "ver", value: ver}, {name: "data", value: EncodingClass.string.fromVariable(st)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); content.data.extrainfo = EncodingClass.string.toVariable(content.data.extrainfo); if (content.data.participant.indexOf("_") != -1) { var participantStr = content.data.participant.split("_"); var participant = []; for (var i = 0; i < participantStr.length; i++) { if (participantStr[i] == "") continue; participant.push(parseInt(participantStr[i], 10)); } content.data.participant = participant; } else if (content.data.participant == "") content.data.participant = []; else content.data.participant = EncodingClass.string.toVariable(content.data.participant); content.data.tablename = content.links.tablename; content.data.instanceid = content.links.instanceid; content.data.meetingid = content.data.id; content.data.id = "meeting_" + content.data.id; content.data.activityType = "type_meeting"; if (id == 0){ host.dictionary.meetings[content.data.id] = host.database.meetings.items.length; host.database.meetings.items.push(content.data); host.database.activities.items.push(content.data); host.database.meeting_links.items.push(content.links); } else { var index = host.dictionary.meetings["meeting_" + id]; host.database.meetings.items[index] = content.data; var index1 = host.database.activities.getIndex("meeting_" + id); host.database.activities.items[index1] = content.data; } rs(content.data); } else { console.log(message); rj(message); } } else { console.log(message); rj(message); } } }); }); }; hr.onboarding.activitiesStatusChangeSave = function(host, onboardingid, activityName, id, status, params){ return new Promise(function(rs ,rj){ 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"){ if(activityName == "task") { host.database.tasks.items[host.database.tasks.getIndex("task_" + id)].status = status ? 1 : 0; host.database.activities.items[host.database.activities.getIndex("task_" + id)].status = status ? 1 : 0; rs(hr.onboarding.getCellActivities(host, onboardingid, "task_" + id, params)); // hr.onboarding.drawTaskInformation(host, onboardingid, params); } else { host.database.meetings.items[host.database.meetings.getIndex("meeting_" + id)].status = status ? 1 : 0; host.database.activities.items[host.database.activities.getIndex("meeting_" + id)].status = status ? 1 : 0; rs(hr.onboarding.getCellActivities(host, onboardingid, "meeting_" + id, params)); // hr.onboarding.drawMeetingInformation(host, onboardingid, params); } params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); } else { console.log(message); } } else { console.log(message); } } }); }) } hr.onboarding.editMeeting = function(host, onboardingid, meetingid, params){ return new Promise(function(rs, rj){ host.dictionary = { typelists: contentModule.makeDictionaryIndex(host.database.typelists.items), meetings: contentModule.makeDictionaryIndex(host.database.meetings.items) }; var value, valueContent; // var st = absol._({}); if (meetingid != 0) { var index = host.dictionary.meetings["meeting_" + meetingid]; var t_value = EncodingClass.string.duplicate(host.database.meetings.items[index]); t_value.status = t_value.status == 1; } else t_value = {assignto: params.employeeid}; theme.formOnboardingEditMeeting({ typelists: host.database.typelists.items, form_config: host.form_config.meeting, value: t_value, frameList: params.frameList, meetingid: meetingid, saveFunc: function(editFormView){ hr.onboarding.editMeetingSave(host, onboardingid, meetingid, editFormView, params.tableName).then(function(value){ if (hr.isMobile) params.frameList.removeLast(); else ModalElement.close(1); hr.onboarding.drawMeetingInformation(host, onboardingid, params); // rs(hr.onboarding.getCellActivities(host, onboardingid, value.id, params)); params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); }, function(message){console.log(message);}); } }) }); }; hr.onboarding.editTask = function(host, onboardingid, taskid, params){ return new Promise(function(rs, rj){ host.dictionary = { typelists: contentModule.makeDictionaryIndex(host.database.typelists.items), tasks: contentModule.makeDictionaryIndex(host.database.tasks.items) }; var value, valueContent; // var st = absol._({}); if (taskid != 0) { var index = host.database.tasks.getIndex("task_" + taskid); var t_value = EncodingClass.string.duplicate(host.database.tasks.items[index]); t_value.status = t_value.status == 1; } else t_value = {assignto: params.employeeid}; theme.formOnboardingEditTask({ typelists: host.database.typelists.items, form_config: host.form_config.task, value: t_value, frameList: params.frameList, taskid: taskid, saveFunc: function(editFormView){ hr.onboarding.editTaskSave(host, onboardingid, taskid, editFormView, params.tableName).then(function(value){ if (hr.isMobile) params.frameList.removeLast(); else ModalElement.close(1); // rs(hr.onboarding.getCellActivities(host, onboardingid, value.id, params)); hr.onboarding.drawTaskInformation(host, onboardingid, params); params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); }, function(message){console.log(message);}); } }); }); }; hr.onboarding.getValueOfVariableForTemplate = function(host) { return new Promise(function(resolve, reject){ var retval = { today: new Date(), software_link: window.domain, username: systemconfig.userid, employee_name: host.employeeid, link_to_open_form: window.location.href }; var retvalToString = { // today: absol.datetime.formatDateTime(new Date(), 'dd/MM/yyyy'), today: new Date(), software_link: window.domain, username: host.database.users.items[host.database.users.getByhomeid(systemconfig.userid)].username, employee_name: host.database.employees.items[host.employeeDic[host.employeeid]].fullname, link_to_open_form: window.location.href }; Promise.all([ data_module.loadCompanyInHrDB() ]).then(function(rs){ if (rs[0].name) { retval.company_name_of_employee = rs[0].name; retvalToString.company_name_of_employee = rs[0].name; } if (rs[0].config) { rs[0].config = EncodingClass.string.toVariable(rs[0].config); if (rs[0].config.address) { retval.company_address_of_employee = rs[0].config.address; retvalToString.company_address_of_employee = rs[0].config.address; } if (rs[0].config.email) { retval.company_email_of_employee = rs[0].config.email; retvalToString.company_email_of_employee = rs[0].config.email; } if (rs[0].config.website) { retval.company_website_of_employee = rs[0].config.website; retvalToString.company_website_of_employee = rs[0].config.website; } } else { retval.company_address_of_employee = ""; retvalToString.company_address_of_employee = ""; retval.company_email_of_employee = ""; retvalToString.company_email_of_employee = ""; retval.company_website_of_employee = ""; retvalToString.company_website_of_employee = ""; } var eIndex = host.employeeDic[host.employeeid]; var peopleid = host.database.employees.items[eIndex].peopleid; var pIndex = host.peopleDic[peopleid]; retval.employee_name = host.employeeid; retvalToString.employee_name = host.database.employees.items[eIndex].fullname; if (host.database.peoples.items[pIndex].content.phone_1) { retval.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_1; retvalToString.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_1; } else if (host.database.peoples.items[pIndex].content.phone_2) { retval.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_2; retvalToString.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_2; } else { retval.phonenumber_of_employee = ""; retvalToString.phonenumber_of_employee = ""; } if (host.database.peoples.items[pIndex].content.work_email) { retval.email_of_employee = host.database.peoples.items[pIndex].content.work_email; retvalToString.email_of_employee = host.database.peoples.items[pIndex].content.work_email; } else if (host.database.peoples.items[pIndex].content.private_email) { retval.email_of_employee = host.database.peoples.items[pIndex].content.private_email; retvalToString.email_of_employee = host.database.peoples.items[pIndex].content.private_email; } else { retval.email_of_employee = ""; retvalToString.email_of_employee = ""; } retval.permanent_address = host.database.peoples.items[pIndex].content.permanent_address; retval.probation_start_date = host.database.peoples.items[pIndex].content.start_date; retval.start_date_of_work = host.database.peoples.items[pIndex].content.official_date; retvalToString.permanent_address = host.database.peoples.items[pIndex].content.permanent_address; retvalToString.probation_start_date = host.database.peoples.items[pIndex].content.start_date; retvalToString.start_date_of_work = host.database.peoples.items[pIndex].content.official_date; retval.position_of_employee = host.database.employees.items[eIndex].positions; retvalToString.position_of_employee = ""; retval.position_of_employee.forEach(function(elt){ if (retvalToString.position_of_employee.length != 0) retvalToString.position_of_employee += ","; retvalToString.position_of_employee += host.database.positions.items[host.positionDic[elt]].name; }); retval.department_of_employee = host.database.employees.items[eIndex].orgid; retvalToString.department_of_employee = host.database.orgs.items[host.orgDic[retval.department_of_employee]].name; var orgid = host.database.employees.items[eIndex].orgid; if (host.database.orgs.items[host.orgDic[orgid]].geopos.length > 0) { var geoposContent = host.database.geopos.items[host.geoposDic[host.database.orgs.items[host.orgDic[orgid]].geopos[0]]]; retval.workplace_address_of_employee = geoposContent.address; retvalToString.workplace_address_of_employee = geoposContent.address; retval.workplace_name_of_employee = geoposContent.name; retvalToString.workplace_name_of_employee = geoposContent.name; retval.workplace_gps_address_of_employee = geoposContent.location; retvalToString.workplace_gps_address_of_employee = geoposContent.location; } else { retval.workplace_address_of_employee = ""; retvalToString.workplace_address_of_employee = ""; retval.workplace_name_of_employee = ""; retvalToString.workplace_name_of_employee = ""; retval.workplace_gps_address_of_employee = ""; retvalToString.workplace_gps_address_of_employee = ""; } retval.support_staff_hr = host.database.peoples.items[pIndex].content.hr_support_employee; retvalToString.support_staff_hr = host.database.peoples.items[pIndex].content.hr_support_employee; retval.name_of_direct_manager = host.database.employees.items[eIndex].direct_manager; retvalToString.name_of_direct_manager = ""; if (retval.name_of_direct_manager != 0) retvalToString.name_of_direct_manager = host.database.employees.items[host.employeeDic[retval.name_of_direct_manager]].fullname; retval.name_of_indirect_manager = host.database.employees.items[eIndex].indirect_manager; retvalToString.name_of_indirect_manager = ""; if (retval.name_of_indirect_manager != 0) retvalToString.name_of_indirect_manager = host.database.employees.items[host.employeeDic[retval.name_of_indirect_manager]].fullname; if (retval.name_of_direct_manager != 0){ var dmIndex = host.employeeDic[retval.name_of_direct_manager]; if (dmIndex != 0) { var peopleid = host.database.employees.items[dmIndex].peopleid; var pIndexOfDirectManager = host.peopleDic[peopleid]; var email, phone, position, depar; if (host.database.peoples.items[pIndexOfDirectManager].content.phone_1) { retval.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; retvalToString.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; } else if (host.database.peoples.items[pIndexOfDirectManager].content.phone_2) { retval.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; retvalToString.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; } else { retval.phonenumber_of_direct_manager = ""; retvalToString.phonenumber_of_direct_manager = ""; } if (host.database.peoples.items[pIndexOfDirectManager].content.work_email) { retval.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; retvalToString.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; } else if (host.database.peoples.items[pIndexOfDirectManager].content.private_email) { retval.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; retvalToString.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; } else { retval.email_of_direct_manager = ""; retvalToString.email_of_direct_manager = ""; } retval.position_of_direct_manager = 0; retvalToString.position_of_direct_manager = ""; for (var i = 0; i < host.database.employees.items[dmIndex].positions.length; i++){ retval.position_of_direct_manager = host.database.positions.items[host.positionDic[host.database.employees.items[dmIndex].positions[i]]].name; retvalToString.position_of_direct_manager = host.database.positions.items[host.positionDic[host.database.employees.items[dmIndex].positions[i]]].name; break; } retval.department_of_direct_manager = host.database.employees.items[dmIndex].orgid; retvalToString.department_of_direct_manager = host.database.orgs.items[host.orgDic[host.database.employees.items[dmIndex].orgid]].name; } } else { retval.email_of_direct_manager = ""; retvalToString.email_of_direct_manager = ""; retval.phonenumber_of_direct_manager = ""; retvalToString.phonenumber_of_direct_manager = ""; retval.position_of_direct_manager = 0; retvalToString.position_of_direct_manager = ""; retval.department_of_direct_manager = 0; retvalToString.department_of_direct_manager = ""; } if (retval.name_of_indirect_manager) { var idmIndex = host.employeeDic[retval.name_of_indirect_manager]; if (idmIndex != 0) { var peopleid = host.database.employees.items[idmIndex].peopleid; var pIndex = host.peopleDic[peopleid]; var email, phone, position, depar; if (host.database.peoples.items[pIndexOfDirectManager].content.phone_1) { retval.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; retvalToString.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; } else if (host.database.peoples.items[pIndexOfDirectManager].content.phone_2) { retval.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; retvalToString.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; } else { retval.phonenumber_of_indirect_manager = ""; retvalToString.phonenumber_of_indirect_manager = ""; } if (host.database.peoples.items[pIndexOfDirectManager].content.work_email) { retval.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; retvalToString.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; } else if (host.database.peoples.items[pIndexOfDirectManager].content.private_email) { retval.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; retvalToString.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; } else { retval.email_of_indirect_manager = ""; retvalToString.email_of_indirect_manager = ""; } retval.position_of_indirect_manager = 0; retvalToString.position_of_indirect_manager = ""; for (var i = 0; i < host.database.employees.items[idmIndex].positions.length; i++){ retval.position_of_indirect_manager = host.database.positions.items[host.positionDic[host.database.employees.items[idmIndex].positions[i]]].name; retvalToString.position_of_indirect_manager = host.database.positions.items[host.positionDic[host.database.employees.items[idmIndex].positions[i]]].name; break; } retval.department_of_indirect_manager = host.database.employees.items[idmIndex].orgid; retvalToString.department_of_indirect_manager = host.database.orgs.items[host.orgDic[host.database.employees.items[idmIndex].orgid]].name; } } else { retval.email_of_indirect_manager = ""; retvalToString.email_of_indirect_manager = ""; retval.phonenumber_of_indirect_manager = ""; retvalToString.phonenumber_of_indirect_manager = ""; retval.position_of_indirect_manager = 0; retvalToString.position_of_indirect_manager = ""; retval.department_of_indirect_manager = 0; retvalToString.department_of_indirect_manager = ""; } resolve({ originVariable: retval, variableToString: retvalToString }); }); }); }; hr.onboarding.deleteOnboarding = function(host, id){ return new Promise(function(resolve, reject){ ModalElement.show_loading(); FormClass.api_call({ url: "orgs_delete_employee_onboarding.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.onboarding.getIndex(id); host.database.onboarding.items.splice(index, 1); resolve(); } 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.onboarding.deleteOnboardingConfirm = function(host, id){ return new Promise(function(resolve, reject){ var index = host.database.onboarding.getIndex(id); ModalElement.question({ title: LanguageModule.text("war_title_delete_onboarding"), message: LanguageModule.text2("war_txt_detele", [""]), onclick: function(sel){ if (sel == 0){ hr.onboarding.deleteOnboarding(host, id).then(function(value){ resolve(value); }); } } }); }); }; hr.onboarding.addOnboardingSubmit = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction(); if (!data) return; data.id = id; if (id > 0){ var index = host.database.onboarding.getIndex(id); var ischange = contentModule.isChanged(host.database.onboarding.items[index], data, ["employeeid", "comment", "available"] ); if (!ischange){ ModalElement.close(); return; } data.ver = host.database.onboarding.items[index].ver; } else { data.ver = 1; } data.available = data.available? 1: 0; data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_edit_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"){ var content = EncodingClass.string.toVariable(message.substr(2)); content.extrainfo = EncodingClass.string.toVariable(content.extrainfo); if (content.available){ host.database.onboarding.items.forEach(function(item){ if (item.employeeid == data.employeeid) item.available = 0; }); } host.dataOnboardingEdit = content; if (id > 0){ var index = host.database.onboarding.getIndex(id); if (index < 0){ ModalElement.alert({message: LanguageModule.text("war_txt_failed_ver_reload_data")}); return; } host.database.onboarding.items[index] = content; host.drawOnboardingGeneralInforFunc(); } else { host.database.onboarding.items.push(content); } ModalElement.close(); hr.onboarding.redraw(host); } else if (message == "war_txt_code_was_used"){ ModalElement.alert({ message: LanguageModule.text(message) }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.onboarding.addOnboardingClose = function(host, id, getValueFunction, resolveAdd, resolve){ return new Promise(function(resolve, reject){ var data = getValueFunction(); var closeFunc = function(){ ModalElement.close(); }; if (!data) { ModalElement.close(); closeFunc(); } else { if (id > 0){ var index = host.database.onboarding.getIndex(id); var ischange = contentModule.isChanged(host.database.onboarding.items[index], data, ["employeeid", "contractid", "effective_date", "salary_grade", "basic_salary_amount", "gross_salary_amount", "calculated_on", "reference_number", "decision_date", "attachments", "extrainfo", "available"] ); } else { var ischange = contentModule.isChanged({contractid: 0, effective_date_from: new Date()}, data, ["contractid", "effective_date"] ); } if (!ischange){ closeFunc(); } else { contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ hr.onboarding.addOnboardingSubmit(host, id, getValueFunction); } else if (sel == 1){ closeFunc(); } } }); } } }); }; hr.onboarding.redrawDetails = function(host, id){ function redraw(value){ var formContainer = DOMElement.div({}); ModalElement.showWindow({ title: LanguageModule.text("txt_onboarding"), bodycontent: formContainer, buttonlist: [ { text: LanguageModule.text("txt_save"), onclick: function(){ hr.onboarding.addOnboardingSubmit(host, id, getValueFunction); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ hr.onboarding.addOnboardingClose(host, id, getValueFunction); } } ] }); var getValueFunction; contentModule.makeFormData({ typeid: host.form_config.onboarding.typeid, formid: host.form_config.onboarding.input_form, initialValue: value, formContainer: formContainer, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; formContainer.formFragment.setContext('host', host); }); }; if (id != 0){ redraw(host.dataOnboardingEdit); } else { redraw(); } }; hr.onboarding.addOnboarding = function(host, id){ if (id == 0){ hr.onboarding.redrawDetails(host, id); } else { ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_by_id"}, {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.dataOnboardingEdit = EncodingClass.string.duplicate(st.onboarding); if (host.dataOnboardingEdit.extrainfo == "") host.dataOnboardingEdit.extrainfo = {}; else host.dataOnboardingEdit.extrainfo = EncodingClass.string.toVariable(host.dataOnboardingEdit.extrainfo); delete(st.onboarding); contentModule.makeDatabaseContent(host, st); hr.onboarding.redrawDetails(host, id); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.onboarding.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } }; hr.onboarding.drawGeneralInformation = function(host, params){ var viewGeneralInformation = DOMElement.div({ attrs: { style: { paddingLeft: "var(--control-verticle-distance-2)", paddingTop: "var(--control-verticle-distance-2)" } } }); host.drawOnboardingGeneralInforFunc = function(){ contentModule.makeOutputFormData({ typeid: host.form_config.onboarding.typeid, formid: host.form_config.onboarding.output_form, initialValue: host.dataOnboardingEdit, formContainer: viewGeneralInformation, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){}); }; host.drawOnboardingGeneralInforFunc(); var res = absol.buildDom({ attr: { "data-sectionid": "general_information" }, child: [ absol.buildDom({ class: 'mk-section-header', child: [ { class: 'mk-section-header-name', child: { text: LanguageModule.text("txt_general_information") }, }, { class: 'mk-section-header-right', child: [ DOMElement.a({ attrs: { onclick: function(){ params.editFunc(); } }, text: LanguageModule.text("txt_edit") }) ] } ] }), viewGeneralInformation ] }); return res; }; hr.onboarding.addEmailSave = function(host, id, templateIdList) { hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var email_array = []; templateIdList.forEach(function(elt){ var index = host.database.email_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.email_templates.items[index].content); var emailContent = { receiver: hr.sclang.executeExpression(template.receiver.substring(3, template.receiver.length - 3), valueOfVariable.originVariable) }; if (template.carbon_copy.startsWith("{{") && template.carbon_copy.endsWith("}}")){ emailContent.carbon_copy = [hr.sclang.executeExpression(template.carbon_copy.substring(3, template.carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.carbon_copy = []; if (template.blind_carbon_copy.startsWith("{{") && template.blind_carbon_copy.endsWith("}}")){ emailContent.blind_carbon_copy = [hr.sclang.executeExpression(template.blind_carbon_copy.substring(3, template.blind_carbon_copy.length - 3), valueOfVariable.originVariable)]; } else emailContent.blind_carbon_copy = []; emailContent.email_content = hr.sclang.executeTemplate(template.email_content, valueOfVariable.variableToString); emailContent.subject = template.subject; email_array.push(emailContent); }); ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_email_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(email_array)}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var emailContent = EncodingClass.string.toVariable(message.substr(2)); emailErr = []; emailContent.forEach(function(elt, idx){ if (elt.email_record == 0) { emailErr.push(templateIdList[idx]); } }); if (emailErr.length > 0){ var str = ""; emailErr.forEach((item, i) => { var index = host.database.email_templates.getIndex(elt); if (str != "") str += ", "; str += host.database.email_templates.items[index].name; }); ModalElement.alert({ message: "Có " + emailErr.length + "/" + templateIdList.length + " gửi không thành công: " + str, }) } } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.onboarding.addEmail = function(host, id){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_email_template"} ], 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); var dict = {}; var groupItems = host.database.template_groups.items.map(function(elt){ dict[elt.id] = elt.name; return { value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name.toLowerCase()) } }); groupItems.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); groupItems.unshift({value: 0, text: LanguageModule.text("txt_all")}); var data = host.database.email_templates.items.map(function(elt){ return { id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ hr.onboarding.emailPreview(host, elt.id); } }; }); theme.formOnboardingAddEmail({data: data, groupItems: groupItems}).then(function(rs){ hr.onboarding.addEmailSave(host, id, rs); }); } else { console.log(message); } } else { console.log(message); } } }); }; hr.onboarding.drawEmployeeInformation = function(host, params){ var content = {}; var eIndex = host.database.employees.getIndex(host.employeeid); content.employeeName = host.database.peoples.items[host.database.peoples.getIndex(host.database.employees.items[eIndex].peopleid)].fullname; content.orgName = host.database.orgs.items[host.database.orgs.getIndex(host.database.employees.items[eIndex].orgid)].name; content.positionName = host.database.employees.items[eIndex].positions.map(function(elt){ return host.database.positions.items[host.database.positions.getIndex(elt)].name; }); return theme.formOnboardingEmployeeInformation(content); }; hr.onboarding.drawEmployeeInformationChart = function(host, params){ var content = { count: 0, pending: 0, success: 0, unsuccess: 0 }; if (params.workSelected == "task" || params.workSelected == "both") { content.count += host.database.tasks.items.length; host.database.tasks.items.forEach(function(elt){ if (elt.status == 1) content.success += 1; else { if (elt.endtime.getTime() > (new Date()).getTime()) content.pending += 1; else content.unsuccess += 1; } }); } if (params.workSelected == "meeting" || params.workSelected == "both") { content.count += host.database.meetings.items.length; host.database.meetings.items.forEach(function(elt){ if (elt.status == 1) content.success += 1; else { if (elt.endtime.getTime() > (new Date()).getTime()) content.pending += 1; else content.unsuccess += 1; } }); } return theme.formOnboardingEmployeeInformationChart(content); }; hr.onboarding.drawEmailInformation = function(host, params) { var data = []; for (var i = 0; i < host.database.emails.items.length; i++){ data.push({ subject: host.database.emails.items[i].subject, toList: host.database.emails.items[i].receiver, ccList: host.database.emails.items[i].cc, bccList: host.database.emails.items[i].bcc, id: host.database.emails.items[i].id }); } return theme.formOnboardingEmailInformation({content: data, addEmail: params.addEmail}); }; hr.templateSupportFunctions = {}; hr.templateSupportFunctions.toString = function toString(o){ if (typeof o == 'string') return o; if (o === null) return '[null]'; if (o instanceof Date) return absol.datetime.formatDateTime(o, 'dd/MM/yyyy'); if (o instanceof Array) return o.map(toString).join(', '); return o + ''; }; hr.templateSupportFunctions.dateAfter = function(date, af){ return new Date(date.getTime() + 3600000 * 24 * af); }; hr.templateSupportFunctions.dateBefore = function(date, af){ return new Date(date.getTime() - 3600000 * 24 * af); }; hr.templateSupportFunctions.templateParser = function(str, args){ var template = absol.TemplateString.parse(str); template.parts = template.parts.map(function(p){ if (p.type === 0) return p; p.data = 'toString('+ p.data +')'; }); var jsExpression = absol.TemplateString.parse(str).toJSCode(); var argsCode = Object.keys(args).map(function(name){ return 'var '+ name + ' = args.'+ name +';'; }).join('\n')+'\n'; var bodyCode = argsCode + '\n return ' + jsExpression; var func = new Function('args', bodyCode); return func(args); }; hr.onboarding.addTaskSave = function(host, id, templateIdList, params) { hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var task_array = []; templateIdList.forEach(function(elt){ //////////////////// var index = host.database.task_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.task_templates.items[index].content); var taskContent = { name: hr.sclang.executeTemplate(template.task_name, valueOfVariable.variableToString), status: template.task_status ? 1 : 0, endtime: hr.sclang.executeExpression(template.task_expire_time.substring(3, template.task_expire_time.length - 3), valueOfVariable.originVariable), reminder: template.task_reminder, assignto: hr.sclang.executeExpression(template.task_assign_to.substring(3, template.task_assign_to.length - 3), valueOfVariable.originVariable), // participant: hr.templateSupportFunctions.templateParser(content.task_participant, Object.assign({},hr.templateSupportFunctions ,valueOfVariable.originVariable)), result: hr.sclang.executeTemplate(template.task_result, valueOfVariable.variableToString), extrainfo: EncodingClass.string.fromVariable({}) }; if (template.task_participant.startsWith("{{") && template.task_participant.endsWith("}}")){ taskContent.participant = [hr.sclang.executeExpression(template.task_participant.substring(3, template.task_participant.length - 3), valueOfVariable.originVariable)]; } else taskContent.participant = []; var participantStr = ""; taskContent.participant.forEach(function(elt){ if (elt != 0) participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; taskContent.participant = participantStr; task_array.push(taskContent); }); FormClass.api_call({ url: "onboarding_task_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(task_array)}, {name: "id", value: id}, {name: "tableName", value: params.tableName} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); host.database.tasks.items = host.database.tasks.items.concat(content.tasks); host.database.task_links.items = host.database.task_links.items.concat(content.task_links); hr.onboarding.drawTaskInformation(host, id, params) params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.onboarding.addTaskByTemplate = function(host, id, params){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_task_template"} ], 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); var dict = {}; var groupItems = host.database.template_groups.items.map(function(elt){ dict[elt.id] = elt.name; return { value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name.toLowerCase()) } }); groupItems.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); groupItems.unshift({value: 0, text: LanguageModule.text("txt_all")}); var data = host.database.task_templates.items.map(function(elt){ return { id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ hr.onboarding.taskPreview(host, elt.id); } }; }); theme.formOnboardingAddTask({data: data, groupItems: groupItems}).then(function(rs){ hr.onboarding.addTaskSave(host, id, rs, params); }); } else { console.log(message); } } else { console.log(message); } } }); }; hr.onboarding.deleteTask = function(host, onboardingid, id, params){ return new Promise(function(rs, rj){ ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_delete_task_save.php", params: [ {name: "onboardingid", value: onboardingid}, {name: "taskid", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok") { for (var i = 0; i < host.database.task_links.items.length; i++){ if (host.database.task_links.items[i].onboardingid == onboardingid && host.database.task_links.items[i].taskid == id){ host.database.task_links.items.splice(i, 1); break; } } host.database.tasks.items = host.database.tasks.items.filter(function(elt){ return elt.id != "task_" + id; }); host.database.activities.items = host.database.activities.items.filter(function(elt){ return elt.id != "task_" + id; }); rs("success"); hr.onboarding.drawTaskInformation(host, onboardingid, params); params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.onboarding.drawTaskInformation = function(host, onboardingid, params) { var data = []; for (var i = 0; i < host.database.tasks.items.length; i++){ host.database.tasks.items[i].func = { editTask: function(host, onboardingid, id){ return function(){ hr.onboarding.editTask(host, onboardingid, id, params); } }(host, onboardingid, host.database.tasks.items[i].id), deleteTask: function(host, onboardingid, id){ return function(){ hr.onboarding.deleteTask(host, onboardingid, id, params); } }(host, onboardingid, host.database.tasks.items[i].taskid), statusChange: function(host, onboardingid, id){ return function(status){ hr.onboarding.activitiesStatusChangeSave(host, "task", id, status, params); } }(host, onboardingid, host.database.tasks.items[i].id) }; data.push(host.database.tasks.items[i]); } var displayDic = { name: true, status: true, assignto: true, userid: true, createdtime: true }; var columnList = contentModule.getColumnListFromDatatype(host, "task", displayDic); if (!host.task_user_column_configsDic[params.tableName + "activities_task_view_on_function"]){ for (var i = 0; i < columnList.length; i++){ if (columnList[i].value == "status"){ var x = columnList[i]; columnList.splice(i, 1); columnList.unshift(x); break; } } } var redrawTableFunc = function(){ contentModule.getColumnListConfig(host, host.task_user_column_configsDic, columnList, params.tableName + "activities_task_view_on_function").then(function(value){ host.configColumnActivitiesTask = value; params.task.clearChild(); host.dataView = theme.formOnboardingTaskContentData({ data: data, inputsearchbox: host.inputsearchbox, configColumnActivitiesTask: host.configColumnActivitiesTask, configColumnFunc: function(){ contentModule.userColumnConfigForm({ type: params.tableName + "activities_task_view_on_function", columnList: columnList }).then(function(value){ host.task_user_column_configsDic[params.tableName + "activities_task_view_on_function"] = value; redrawTableFunc(); }); }, addTaskByTemplate: params.addTaskByTemplate, addTask: function(){ hr.onboarding.editTask(host, onboardingid, 0, params); }, addActivitiesSelected: params.addActivitiesSelected }); params.task.addChild(host.dataView); }); }; redrawTableFunc(); // return theme.formOnboardingTaskInformation({ // content: data, // addTask: params.addTask // }); }; hr.onboarding.addMeetingSave = function(host, id, templateIdList, params) { hr.onboarding.getValueOfVariableForTemplate(host).then(function(valueOfVariable){ var meeting_array = []; templateIdList.forEach(function(elt){ //////////////////// var index = host.database.meeting_templates.getIndex(elt); var template = EncodingClass.string.toVariable(host.database.meeting_templates.items[index].content); var meetingContent = { name: hr.sclang.executeTemplate(template.meeting_name, valueOfVariable.variableToString), location: hr.sclang.executeTemplate(template.meeting_location, valueOfVariable.variableToString), status: template.meeting_status ? 1 : 0, type: template.meeting_type, starttime: hr.sclang.executeExpression(template.meeting_start_time.substring(3, template.meeting_start_time.length - 3), valueOfVariable.originVariable), endtime: hr.sclang.executeExpression(template.meeting_end_time.substring(3, template.meeting_end_time.length - 3), valueOfVariable.originVariable), reminder: template.meeting_reminder, allday: template.meeting_all_day ? 1 : 0, assignto: hr.sclang.executeExpression(template.meeting_assign_to.substring(3, template.meeting_assign_to.length - 3), valueOfVariable.originVariable), result: hr.sclang.executeTemplate(template.meeting_result, valueOfVariable.variableToString), extrainfo: EncodingClass.string.fromVariable({}) }; if (template.meeting_participant.startsWith("{{") && template.meeting_participant.endsWith("}}")){ meetingContent.participant = [hr.sclang.executeExpression(template.meeting_participant.substring(3, template.meeting_participant.length - 3), valueOfVariable.originVariable)]; } else meetingContent.participant = []; var participantStr = ""; meetingContent.participant.forEach(function(elt){ if (elt != 0) participantStr += "_" + elt; }); if (participantStr != "") participantStr += "_"; meetingContent.participant = participantStr; meeting_array.push(meetingContent); }); FormClass.api_call({ url: "onboarding_meeting_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(meeting_array)}, {name: "id", value: id}, {name: "tableName", value: params.tableName} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); host.database.meetings.items = host.database.meetings.items.concat(content.meetings); host.database.meeting_links.items = host.database.meeting_links.items.concat(content.meeting_links); hr.onboarding.drawMeetingInformation(host, id, params) params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.onboarding.addMeetingByTemplate = function(host, id, params){ ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_meeting_template"} ], 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); var dict = {}; var groupItems = host.database.template_groups.items.map(function(elt){ dict[elt.id] = elt.name; return { value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name.toLowerCase()) } }); groupItems.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); groupItems.unshift({value: 0, text: LanguageModule.text("txt_all")}); var data = host.database.meeting_templates.items.map(function(elt){ return { id: elt.id, name: elt.name, comment: elt.comment, groupid: elt.groupid, groupText: dict[elt.groupid], preview: function(){ hr.onboarding.meetingPreview(host, elt.id); } }; }); theme.formOnboardingAddTask({data: data, groupItems: groupItems}).then(function(rs){ hr.onboarding.addMeetingSave(host, id, rs, params); }); } else { console.log(message); } } else { console.log(message); } } }); }; hr.onboarding.deleteMeeting = function(host, onboardingid, id, params){ return new Promise(function(rs, rj){ ModalElement.show_loading(); FormClass.api_call({ url: "onboarding_delete_meeting_save.php", params: [ {name: "onboardingid", value: onboardingid}, {name: "meetingid", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok") { for (var i = 0; i < host.database.meeting_links.items.length; i++){ if (host.database.meeting_links.items[i].onboardingid == onboardingid && host.database.meeting_links.items[i].meetingid == id){ host.database.meeting_links.items.splice(i, 1); break; } } host.database.meetings.items = host.database.meetings.items.filter(function(elt){ return elt.id != "meeting_" + id; }); host.database.activities.items = host.database.activities.items.filter(function(elt){ return elt.id != "meeting_" + id; }); rs("success"); hr.onboarding.drawMeetingInformation(host, onboardingid, params); params.chartContainer.clearChild(); params.chartContainer.addChild(hr.onboarding.drawEmployeeInformationChart(host, params)); } else { console.log(message); } } else { console.log(message); } } }); }); }; hr.onboarding.drawMeetingInformation = function(host, onboardingid, params) { var data = []; for (var i = 0; i < host.database.meetings.items.length; i++){ host.database.meetings.items[i].func = { editMeeting: function(host, onboardingid, id){ return function(){ hr.onboarding.editMeeting(host, onboardingid, id, params); } }(host, onboardingid, host.database.meetings.items[i].id), deleteMeeting: function(host, onboardingid, id){ return function(){ hr.onboarding.deleteMeeting(host, onboardingid, id, params); } }(host, onboardingid, host.database.meetings.items[i].meetingid), statusChange: function(host, onboardingid, id){ return function(status){ hr.onboarding.activitiesStatusChangeSave(host, "meeting", id, status, params); } }(host, onboardingid, host.database.meetings.items[i].id) }; data.push(host.database.meetings.items[i]); } var displayDic = { name: true, status: true, assignto: true, userid: true, createdtime: true }; var columnList = contentModule.getColumnListFromDatatype(host, "meeting", displayDic); if (!host.meeting_user_column_configsDic[params.tableName + "activities_meeting_view_on_function"]){ for (var i = 0; i < columnList.length; i++){ if (columnList[i].value == "status"){ var x = columnList[i]; columnList.splice(i, 1); columnList.unshift(x); break; } } } var redrawTableFunc = function(){ contentModule.getColumnListConfig(host, host.meeting_user_column_configsDic, columnList, params.tableName + "activities_meeting_view_on_function").then(function(value){ host.configColumnActivitiesMeeting = value; params.meeting.clearChild(); host.dataView = theme.formOnboardingMeetingContentData({ data: data, inputsearchbox: host.inputsearchbox, configColumnActivitiesMeeting: host.configColumnActivitiesMeeting, configColumnFunc: function(){ contentModule.userColumnConfigForm({ type: params.tableName + "activities_meeting_view_on_function", columnList: columnList }).then(function(value){ host.meeting_user_column_configsDic[params.tableName + "activities_meeting_view_on_function"] = value; redrawTableFunc(); }); }, addMeetingByTemplate: params.addMeetingByTemplate, addMeeting: function(){ hr.onboarding.editMeeting(host, onboardingid, 0, params); }, addActivitiesSelected: params.addActivitiesSelected }); params.meeting.addChild(host.dataView); }); }; redrawTableFunc(); }; hr.onboarding.showOnboardingFunc = function(host, onboardingid, params){ contentModule.activitiesInformation({ workSelected: "both", // task, meeting, both tableName: "onboarding", instanceid: onboardingid, employeeid: host.employeeid, // id người thực hiện công việc addActivitiesSelected: "normal" // normal/template/both }).then(function(result){ var nav = absol.buildDom({ tag:'mknav', class: 'mk-nav', props: { items: [ {text: LanguageModule.text("txt_general_information"), value: "general_information"}, {text: LanguageModule.text("txt_task"), value: "task"}, {text: LanguageModule.text("txt_meeting"), value: "meeting"}, // {text: LanguageModule.text("txt_email"), value: "email"}, {text: LanguageModule.text("txt_history"), value: "history"}, ], value: "general_information" }, on:{ clickitem: function(event){ rightCtn.off('scroll',scrollRightFunc);// prevent loop if (sectionList[this.value]) sectionList[this.value].scrollIntoView(); setTimeout(function(){ rightCtn.on('scroll',scrollRightFunc ); }, 10); } } }); var rightChild = []; host.employeeInformation = absol._({ child: hr.onboarding.drawEmployeeInformation(host) }); var t = absol.$(".activities-chart-container", host.employeeInformation); t.appendChild(result.getChartContent()); rightChild.push(host.employeeInformation); rightChild.push(hr.onboarding.drawGeneralInformation(host, params)); // host.emailInformation = absol._({ // child: hr.onboarding.drawEmailInformation(host, params) // }); // rightChild.push(host.emailInformation); result.task["data-sectionid"] = "task"; host.taskInformation = absol._({ child: result.task }); rightChild.push(host.taskInformation); result.task["data-sectionid"] = "meeting"; host.meetingInformation = absol._({ child: result.meeting }); rightChild.push(host.meetingInformation); var scrollRightFunc = function(){ var elt; var bound = rightCtn.getBoundingClientRect(); var eltBound; var nearestEltId; var nearestDistance = 100000000; var distance; for (var i in sectionList){ elt = sectionList[i]; eltBound = elt.getBoundingClientRect(); distance = 1000000; if (eltBound.top <= bound.top){ if (eltBound.bottom >= bound.bottom){ distance = -1e6; } else if (bound.top - eltBound.top < 30){ distance = eltBound.top - bound.bottom;//negative } else if (eltBound.bottom > bound.top){ distance = bound.top - eltBound.top; } } else if (eltBound.top < bound.bottom){ distance = eltBound.top - bound.bottom;//negative } else { distance = Math.abs(bound.top - eltBound.top) } if (nearestDistance > distance){ nearestDistance = distance; nearestEltId = i; } } nav.value = nearestEltId; }; var rightCtn = absol.buildDom({ class: 'mk-main-right', style: { paddingBottom: "var(--footer-margin)" }, child: rightChild, on: { scroll: scrollRightFunc } }); var data_ctn = absol._({ class: 'mk-main', style: { height: '100%' }, child: [ { class: 'mk-main-left-ctn', child: [nav] }, rightCtn ] }); var sectionList = {}; absol.$("div", rightCtn, function(elt){ var id = elt.getAttribute("data-sectionid"); if (!id) return; sectionList[id] = elt; }); var singlePage = absol.buildDom({ tag: "singlepage", class: ["cd-page-not-padding-right", "as-viewport-full", "as-no-scroll"], child: [ { class: ['button-panel-header', 'absol-single-page-header'], child: [ { class: "single-button-header", child: theme.closeButton({ onclick: params.closeFunc }) }, { class: "single-button-header", child: theme.noneIconButton({ text: LanguageModule.text("txt_send_mail"), onclick: function(){ hr.onboarding.addEmail(host, onboardingid); } }) } ] }, data_ctn ] }); if (host.frameList.getLength() > 1) host.frameList.removeLast(); host.frameList.addChild(singlePage); singlePage.requestActive(); }); }; hr.onboarding.showOnboarding = function(host, id){ hr.menu.changeCurrentUrlTab(host, "onboarding/" + id); host.id = id; host.showOnboardingParams = { editFunc: function(){ hr.onboarding.addOnboarding(host, id); }, closeFunc: function(){ host.frameList.removeLast(); hr.menu.changeCurrentUrlTab(host, "onboarding"); }, addTask: function(){ hr.onboarding.addTask(host, id); }, addMeeting: function(){ hr.onboarding.addMeeting(host, id); }, addEmail: function(){ hr.onboarding.addEmail(host, id); } }; hr.onboarding.showOnboardingFunc(host, id, host.showOnboardingParams); }; hr.onboarding.showOnboardingPre = function(host, id){ if (host.database.onboarding.getIndex(id) < 0){ ModalElement.alert({message: LanguageModule.text("war_txt_no_privilege_view_content")}); return; } ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_by_id"}, {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.dataOnboardingEdit = EncodingClass.string.duplicate(st.onboarding); host.employeeid = host.dataOnboardingEdit.employeeid; if (host.dataOnboardingEdit.extrainfo == "") host.dataOnboardingEdit.extrainfo = {}; else host.dataOnboardingEdit.extrainfo = EncodingClass.string.toVariable(host.dataOnboardingEdit.extrainfo); delete(st.onboarding); contentModule.makeDatabaseContent(host, st); // host.database.emails.items.forEach(function(elt){ // elt.receiver = EncodingClass.string.toVariable(elt.receiver); // elt.cc = EncodingClass.string.toVariable(elt.cc); // elt.bcc = EncodingClass.string.toVariable(elt.bcc); // }); hr.onboarding.showOnboarding(host, id); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.onboarding.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.onboarding.getCellOnboarding = function(host, id){ var index = host.database.onboarding.getIndex(id); var func = { view: function(resolve){ hr.onboarding.showOnboardingPre(host, id); } }; func.delete = function(){ return new Promise(function(resolve, reject){ hr.onboarding.deleteOnboardingConfirm(host, id).then(function(value){ resolve(value); }); }); }; var res = host.database.onboarding.items[index]; var empIndex = host.employeeDic[res.employeeid]; res.departmentid = host.database.employees.items[empIndex].orgid; res.func = func; return res; }; hr.onboarding.redraw = function(host){ var departmentid = host.department_select.value; if (departmentid == 0){ var oIndex = host.database.orgs.getIndex(host.company_select.value); var orgIDList = contentModule.getDepartmentIDList(host, oIndex); } else { var oIndex = host.database.orgs.getIndex(departmentid); var orgIDList = contentModule.getDepartmentIDList(host, oIndex); } var employeeDic = {}; for (var i = 0; i < host.database.employees.items.length; i++){ if (orgIDList.indexOf(host.database.employees.items[i].orgid) >= 0) employeeDic[host.database.employees.items[i].id] = true; } var displayDic = { employeeid: true, position: true, available: true }; var columnList = contentModule.getColumnListFromDatatype(host, "onboarding", displayDic); var k = -1; for (var i = 0; i < columnList.length; i++){ if (columnList[i].value == "employeeid"){ k = i; break; } } if (k >= 0){ columnList.splice(k, 0, {value: "departmentid", display: true, main: true, type: -24, text: LanguageModule.text("txt_department")}); } var redrawTableFunc = function(){ var data = []; var row; for (var i = 0; i < host.database.onboarding.items.length; i++){ if (!employeeDic[host.database.onboarding.items[i].employeeid]) continue; row = hr.onboarding.getCellOnboarding(host, host.database.onboarding.items[i].id); if (!row) continue; data.push(row); } contentModule.getColumnListConfig(host, host.user_column_configsDic, columnList, "onboarding_list").then(function(value){ host.configColumnOnboarding = value; DOMElement.removeAllChildren(host.data_container); host.dataView = host.funcs.formOnboardingContentData({ data: data, inputsearchbox: host.inputsearchbox, configColumnOnboarding: host.configColumnOnboarding, configColumnFunc: function(){ contentModule.userColumnConfigForm({ type: "onboarding_list", columnList: columnList }).then(function(value){ host.user_column_configsDic["onboarding_list"] = value; redrawTableFunc(); }); } }); host.data_container.appendChild(host.dataView); }); } redrawTableFunc(); }; hr.onboarding.init2 = function(host){ return new Promise(function(resolveMn, rejectMn){ var departmentid = host.company_select.value; var oIndex = host.database.orgs.getIndex(host.company_select.value); var orgIDList = contentModule.getDepartmentIDList(host, oIndex); var orgDic = contentModule.makeDictionaryIndex(host.database.orgs.items); var employeeIdList = []; for (var i = 0; i < orgIDList.length; i++){ oIndex = orgDic[orgIDList[i]]; host.database.orgs.items[oIndex].employeeIndexList.forEach(function(empIndex){ employeeIdList.push(host.database.employees.items[empIndex].id); }); } employeeIdList.sort(function(a, b){ return a - b; }); if (employeeIdList.length == 0) { ModalElement.close(-1); return; } ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_init2"}, {name: "employeeIdList", value: EncodingClass.string.fromVariable(employeeIdList)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); contentModule.makeDatabaseContent(host, st); hr.onboarding.redraw(host); resolveMn(host); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.onboarding.init = function(host){ return new Promise(function(resolveMn, rejectMn){ hr.menu.changeCurrentUrlTab(host, "onboarding"); host.database = {}; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "onboarding_load_init"} ], func: function(success, message){ 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); if (host.database.orgs.items.length == 0){ ModalElement.alert({message: "Chưa có bộ phận"}); return; } // contentModule.makeInputFormDecode(host.database.input_forms.items); // hr.input_form.loadFormConstructorToAssembler(host.database.input_forms.items, host.database.typelists.items); contentModule.makeOrgsIndex(host); contentModule.makeEmployeeData(host); contentModule.makeEmployeesIndex(host); contentModule.makeEmployeePositionData(host); contentModule.makePositionsIndex(host); contentModule.makeGeoposOrgsData(host); contentModule.makeEmployeeManagerData(host); host.database.peoples.items.forEach(function(elt){ elt.content = EncodingClass.string.toVariable(elt.content); elt.email = []; if (elt.content.work_email) elt.email.push(elt.content.work_email); if (elt.content.private_email) elt.email.push(elt.content.private_email); elt.phone = []; if (elt.content.phone_1) elt.email.push(elt.content.phone_1); if (elt.content.phone_2) elt.email.push(elt.content.phone_2); }); host.employeeDic = contentModule.makeDictionaryIndex(host.database.employees.items); host.peopleDic = contentModule.makeDictionaryIndex(host.database.peoples.items); host.positionDic = contentModule.makeDictionaryIndex(host.database.positions.items); host.orgDic = contentModule.makeDictionaryIndex(host.database.orgs.items); host.geoposDic = contentModule.makeDictionaryIndex(host.database.geopos.items); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); var cmdbutton = { close: function () { if (hr.isMobile){ host.holder.selfRemove(); hr.menu.loadPage(100); } else { hr.menu.tabPanel.removeTab(host.holder.id); } }, add: function () { hr.onboarding.wizardAddPre(host); } }; host.inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var companyList = []; for (var i = 0; i < host.database.orgs.items.length; i++){ if (host.database.orgs.items[i].parentid == 0) { companyList.push({ value: host.database.orgs.items[i].id, text: host.database.orgs.items[i].name }); } } host.company_select = absol.buildDom({ tag: "selectmenu", props: { items: companyList, enableSearch: true }, on: { change: function(){ departmentList = contentModule.getDepartmentListSelectTreeMenuFilter(host, this.value); host.department_select.items = departmentList; host.department_select.value = departmentList[0].value; hr.onboarding.init2(host); } } }); var departmentList; if (companyList.length > 1){ departmentList = contentModule.getDepartmentListSelectTreeMenuFilter(host, host.company_select.value); } else { departmentList = contentModule.getDepartmentListSelectTreeMenuFilter(host, 0); } host.department_select = absol.buildDom({ tag: "selecttreemenu", props: { items: departmentList, enableSearch: true }, on: { change: function(){ hr.onboarding.redraw(host); } } }); host.data_container = DOMElement.div({attrs: {style: {paddingBottom: "var(--footer-margin)"}}}); host.holder.addChild(host.frameList); var singlePage = host.funcs.formOnboardingInit({ cmdbutton: cmdbutton, company_select: host.company_select, department_select: host.department_select, data_container: host.data_container, inputsearchbox: host.inputsearchbox, companyList: companyList }); host.frameList.addChild(singlePage); singlePage.requestActive(); hr.onboarding.init2(host).then(function(value){ resolveMn(value); }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); };