VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/keeview_app/html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/keeview_app/html/activities_task.js
hr.activities_task.deleteActivitiesTask = function(host, id){
    return new Promise(function(resolve,reject){
        ModalElement.show_loading();
        FormClass.api_call({
            url: "tasks_delete.php",
            params: [{name: "id", value: id}],
            func: function(success, message){
                ModalElement.close(-1);
                if (success){
                    if (message.substr(0, 2) == "ok"){
                        var index = host.database.tasks.getIndex(id);
                        host.database.tasks.items.splice(index, 1);
                        resolve();
                    }
                    else if (message == "lock_system"){
                        ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")});
                    }
                    else if (message == "failed_used"){
                        ModalElement.alert({
                            message: LanguageModule.text("war_txt_can_not_delete")
                        });
                    }
                    else {
                        ModalElement.alert({message: message});
                    }
                }
                else {
                    ModalElement.alert({message: message});
                }
            }
        });
    });
};

hr.activities_task.deleteActivitiesTaskConfirm = function(host, id){
    return new Promise(function(resolve,reject){
        var index = host.database.tasks.getIndex(id);
        ModalElement.question({
            title: LanguageModule.text("war_title_delete_activities_task"),
            message: LanguageModule.text2("war_txt_detele", [host.database.tasks.items[index].name]),
            onclick: function(sel){
                if (sel == 0){
                    hr.activities_task.deleteActivitiesTask(host, id).then(function(value){
                        resolve(value);
                    });
                }
            }
        });
    });
};

hr.activities_task.addActivitiesTaskSubmit = function(host, id, getValueFunction){
    return new Promise(function(resolve, reject){
        var data = getValueFunction();
        if (!data) return;
        var oldData;
        if (id > 0){
            oldData = host.dataTaskEdit;
            var ischange = contentModule.isChanged(oldData, data,
                ["name", "status", "expiredtime", "reminder", "assignto", "participant", "result"]
            );
            if (!ischange){
                ModalElement.close();
                return;
            }
        }
        for (var i = 0; i < host.database.tasks.items.length; i++){
            if (host.database.tasks.items[i].id == id) continue;
            if (host.database.tasks.items[i].name.toLowerCase() == data.name.toLowerCase()){
                ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")});
                return;
            }
        }
        data.id = id;
        data.status = data.status? 1 : 0;
        participantStr = "";
        data.participant.forEach(function(elt){
            participantStr += "_" + elt;
        });
        if (participantStr != "") participantStr += "_";
        data.participant = participantStr;
        if (id > 0){
            var index = host.database.tasks.getIndex(id);
            data.ver = host.dataTaskEdit.ver;
        }
        else {
            data.ver = 1;
        }
        data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo);
        ModalElement.show_loading();
        FormClass.api_call({
            url: "activities_task_save.php",
            params: [{name: "data", value: EncodingClass.string.fromVariable(data)}],
            func: function(success, message){
                ModalElement.close(-1);
                if (success){
                    if (message.substr(0, 2) == "ok"){
                        host.dataTaskEdit = EncodingClass.string.toVariable(message.substr(2));
                        if (host.dataTaskEdit.extrainfo == "") host.dataTaskEdit.extrainfo = {};
                        else host.dataTaskEdit.extrainfo = EncodingClass.string.toVariable(host.dataTaskEdit.extrainfo);
                        var strIdx = 0;
                        var participantStr = host.dataTaskEdit.participant;
                        var strLength = participantStr.length;
                        var participant = [];
                        while (strIdx < strLength - 2){
                            var num = parseInt(participantStr[strIdx + 1]);
                            if (!isNaN(num)) participant.push(num);
                            strIdx += 2;
                        }
                        host.dataTaskEdit.participant = participant;
                        if (id > 0){
                            var index = host.database.tasks.getIndex(id);
                            host.database.tasks.items[index] = host.dataTaskEdit;
                            host.drawGeneralInforFunc();
                        }
                        else {
                            id = host.dataTaskEdit.id;
                            data.id = id;
                            host.id = id;
                            host.database.tasks.items.push(host.dataTaskEdit);
                            hr.activities_task.redraw(host);
                        }
                        resolve(hr.activities_task.getCellActivitiesTask(host, id));
                        ModalElement.close();
                        hr.menu.changeCurrentUrlTab(host, "activities_task");
                    }
                    else if (message == "lock_system"){
                        ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")});
                    }
                    else if (message == "deleted" || message == "edited"){
                        ModalElement.alert({
                            message: LanguageModule.text("war_txt_failed_ver_reload_data")
                        });
                    }
                    else if (message == "exist_name"){
                        ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")});
                    }
                    else {
                        ModalElement.alert({message: message});
                    }
                }
                else {
                    ModalElement.alert({message: message});
                }
            }
        });
    });
};

hr.activities_task.addActivitiesTaskClose = function(host, id, getValueFunction, resolve, resolveAdd){
    var data = getValueFunction();
    if (!data) {
        ModalElement.close();
        ModalElement.close();
        return;
    }
    var oldData;
    if (id > 0){
        oldData = host.dataTaskEdit;
    }
    else {
        oldData = {
            name: "",
            status: 0,
            expiredtime: new Date(),
            reminder: "type_reminder_none",
            assignto: 0,
            participant: [],
            result: ""
        };
    }
    var ischange = contentModule.isChanged(oldData, data,
        ["name", "status", "expiredtime", "reminder", "assignto", "participant", "result"]
    );
    if (!ischange){
        ModalElement.close();
        return;
    }
    contentModule.questionChange({
        onclick: function(sel){
            if (sel == 0){
                if (host.id == 0){
                    hr.activities_task.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){
                        resolveAdd(value);
                    });
                }
                else {
                    hr.activities_task.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){
                        resolve(value);
                    });
                }
            }
            else if (sel == 1){
                ModalElement.close();
            }
        }
    });
};

hr.activities_task.redrawDetails = function(host, id, resolve, resolveAdd){
    if (id > 0) hr.menu.changeCurrentUrlTab(host, "activities_task/" + id);
    host.id = id;
    function redraw(value){
        var formContainer = DOMElement.div({});
        ModalElement.showWindow({
            title: LanguageModule.text("txt_activities_task"),
            bodycontent: formContainer,
            buttonlist: [
                {
                    text: LanguageModule.text("txt_save"),
                    onclick: function(){
                        if (host.id == 0){
                            hr.activities_task.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){
                                resolveAdd(value);
                            });
                        }
                        else {
                            hr.activities_task.addActivitiesTaskSubmit(host, host.id, getValueFunction).then(function(value){
                                resolve(value);
                            });
                        }
                    }
                },
                {
                    text: LanguageModule.text("txt_cancel"),
                    onclick: function(){
                        hr.activities_task.addActivitiesTaskClose(host, host.id, getValueFunction, resolve, resolveAdd);
                    }
                }
            ]
        });
        var getValueFunction;
        contentModule.makeFormData({
            typeid: host.form_config.task.typeid,
            formid: host.form_config.task.input_form,
            initialValue: value,
            formContainer: formContainer,
            typelists: host.database.typelists.items,
            variableType: "system"
        }).then(function(getValue){
            getValueFunction = getValue;
            absol.form.traversal(formContainer.formFragment.view, function(item){
                if (item.node.tag === "TextInput") {
                    item.node.domElt.focus();
                    item.stop();
                    return;
                }
            });
        });
    };
    if (id > 0){
        redraw(host.dataTaskEdit);
    }
    else {
        redraw({});
    }
};

hr.activities_task.addActivitiesTask = function(host, id, resolve, resolveAdd){
    hr.activities_task.redrawDetails(host, id, resolve, resolveAdd);
    // if (id == 0){
    // }
    // else {
    //     ModalElement.show_loading();
    //     FormClass.api_call({
    //         url: "database_load.php",
    //         params: [
    //             {name: "task", value: "task_load_by_id"},
    //             {name: "id", value: id}
    //         ],
    //         func: function(success, message){
    //             ModalElement.close(-1);
    //             if (success){
    //                 if (message.substr(0, 2) == "ok"){
    //                     host.dataTaskEdit = EncodingClass.string.toVariable(message.substr(2));
    //                     if (host.dataTaskEdit.extrainfo == "") host.dataTaskEdit.extrainfo = {};
    //                     else host.dataTaskEdit.extrainfo = EncodingClass.string.toVariable(host.dataTaskEdit.extrainfo);
    //                     var strIdx = 0;
    //                     var participantStr = host.dataTaskEdit.participant;
    //                     var strLength = participantStr.length;
    //                     var participant = [];
    //                     while (strIdx < strLength - 2){
    //                         participant.push(parseInt(participantStr[strIdx + 1]));
    //                         strIdx += 2;
    //                     }
    //                     host.dataTaskEdit.participant = participant;
    //                     hr.activities_task.showActivitiesTask(host, {
    //                         taskid: id,
    //                         editInforFunc: function(){
    //                             hr.activities_task.addActivitiesTask(host, id, resolve);
    //                         }
    //                     });
    //                     // hr.activities_task.redrawDetails(host, id, resolve, resolveAdd);
    //                 }
    //                 else if (message == "war_txt_failed_data"){
    //                     ModalElement.alert({
    //                         message: LanguageModule.text("war_txt_failed_data"),
    //                         func: function(){
    //                             hr.activities_task.init(host);
    //                         }
    //                     });
    //                 }
    //                 else {
    //                     ModalElement.alert({message: message});
    //                 }
    //             }
    //             else {
    //                 ModalElement.alert({message: message});
    //             }
    //         }
    //     });
    // }
};

hr.activities_task.drawGeneralInformation = function(host, params){
    var viewGeneralInformation = DOMElement.div({
        attrs: {
            style: {
                paddingLeft: "var(--control-verticle-distance-2)",
                paddingTop: "var(--control-verticle-distance-2)"
            }
        }
    });
    host.drawGeneralInforFunc = function(){
        contentModule.makeOutputFormData({
            typeid: host.form_config['task'].typeid,
            formid: host.form_config['task'].output_form,
            initialValue: host.dataTaskEdit,
            formContainer: viewGeneralInformation,
            typelists: host.database.typelists.items,
            variableType: "system"
        }).then(function(getValue){});
    };
    host.drawGeneralInforFunc();
    var childs = [
        {
            class: 'mk-section-header-name',
            child: { text: LanguageModule.text("txt_general_information") },
        }
    ];
    childs.push({
        class: 'mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: function(){
                        params.editInforFunc();
                    }
                },
                text: LanguageModule.text("txt_edit")
            })
        ]
    });
    var res = absol.buildDom({
        attr: {
            "data-sectionid": "general_information"
        },
        child: [
            absol.buildDom({
                class: 'mk-section-header',
                child: childs
            }),
            viewGeneralInformation
        ]
    });
    return res;
};

hr.activities_task.showActivitiesTask = function(host, params){
    hr.menu.changeCurrentUrlTab(host, "activities_task/" + params.taskid);
    var nav = absol.buildDom({
        tag:'mknav',
        class: 'mk-nav',
        props: {
            items: [
                {text: LanguageModule.text("txt_general_information"), value: "general_information"},
                {text: LanguageModule.text("txt_comment"), value: "comment"}
            ],
            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 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)"
        },
        on: {
            scroll: scrollRightFunc
        }
    });
    rightCtn.appendChild(hr.activities_task.drawGeneralInformation(host, params));
    rightCtn.appendChild(contentModule.drawComment({taskid: params.taskid, tablename: "task"}));
    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: [
            DOMElement.div({
                attrs: {className: 'button-panel-header absol-single-page-header'},
                children: [
                    DOMElement.div({
                        attrs: {className: "single-button-header"},
                        children: [theme.backButton({
                            onclick: function(){
                                host.frameList.removeLast();
                                hr.menu.changeCurrentUrlTab(host, "activities_task");
                            }
                        })]
                    })
                ]
            }),
            data_ctn
        ]
    });
    host.frameList.addChild(singlePage);
    singlePage.requestActive();
};

hr.activities_task.showActivitiesTaskPre = function(host, id, resolve){
    if (host.database.tasks.getIndex(id) < 0) return;
    ModalElement.show_loading();
    FormClass.api_call({
        url: "database_load.php",
        params: [
            {name: "task", value: "task_load_by_id"},
            {name: "id", value: id}
        ],
        func: function(success, message){
            ModalElement.close(-1);
            if (success){
                if (message.substr(0, 2) == "ok"){
                    host.dataTaskEdit = EncodingClass.string.toVariable(message.substr(2));
                    if (host.dataTaskEdit.extrainfo == "") host.dataTaskEdit.extrainfo = {};
                    else host.dataTaskEdit.extrainfo = EncodingClass.string.toVariable(host.dataTaskEdit.extrainfo);
                    var strIdx = 0;
                    var participantStr = host.dataTaskEdit.participant;
                    var strLength = participantStr.length;
                    var participant = [];
                    while (strIdx < strLength - 2){
                        participant.push(parseInt(participantStr[strIdx + 1]));
                        strIdx += 2;
                    }
                    host.dataTaskEdit.participant = participant;
                    hr.activities_task.showActivitiesTask(host, {
                        taskid: id,
                        editInforFunc: function(){
                            hr.activities_task.addActivitiesTask(host, id, resolve);
                        }
                    });
                }
                else if (message == "war_txt_failed_data"){
                    ModalElement.alert({
                        message: LanguageModule.text("war_txt_failed_data"),
                        func: function(){
                            hr.activities_task.init(host);
                        }
                    });
                }
                else {
                    ModalElement.alert({message: message});
                }
            }
            else {
                ModalElement.alert({message: message});
            }
        }
    });
};

hr.activities_task.getCellActivitiesTask = function(host, id){
    var index = host.database.tasks.getIndex(id);
    var func = {
        view: function(resolve){
            hr.activities_task.showActivitiesTaskPre(host, id, resolve);
        },
    };
    func.delete = function(){
        return new Promise(function(resolve,reject){
            hr.activities_task.deleteActivitiesTaskConfirm(host, id).then(function(value){
                resolve(value);
            });
        });
    };
    func.changeStatus = function(value){
        hr.onboarding.activitiesStatusChangeSave(host, "task", id, value);
    };
    var res = host.database.tasks.items[index];
    res.func = func;
    return res;
};

hr.activities_task.redraw = function(host){
    var holderForSort = host.database.tasks.items.map(function(item){
        return {
            item: item,
            val: absol.string.nonAccentVietnamese(item.name.toLowerCase())
        }
    });
    holderForSort.sort(function(a, b){
        if (a.val < b.val) return -1;
        if (a.val > b.val) return 1;
        return 0;
    });

    host.database.tasks.items = holderForSort.map(function(holder){
        return holder.item;
    });
    var displayDic = {
        name: true,
        status: true,
        assignto: true,
        userid: true,
        createdtime: true
    };
    var columnList = contentModule.getColumnListFromDatatype(host, "task", displayDic);
    if (!host.user_column_configsDic["activities_task_list"]){
        for (var i = 0; i < columnList.length; i++){
            if (columnList[i].value == "status"){
                var x = columnList[i];
                console.log(x);
                columnList.splice(i, 1);
                columnList.unshift(x);
                break;
            }
        }
    }
    console.log(columnList);
    var redrawTableFunc = function(){
        var data = [];
        for (var i = 0; i < host.database.tasks.items.length; i++){
            data.push(hr.activities_task.getCellActivitiesTask(host, host.database.tasks.items[i].id));
        }
        contentModule.getColumnListConfig(host, host.user_column_configsDic, columnList, "activities_task_list").then(function(value){
            host.configColumnActivitiesTask = value;
            DOMElement.removeAllChildren(host.data_container);
            host.dataView = host.funcs.formActivitiesTaskContentData({
                data: data,
                inputsearchbox: host.inputsearchbox,
                configColumnActivitiesTask: host.configColumnActivitiesTask,
                configColumnFunc: function(){
                    contentModule.userColumnConfigForm({
                        type: "activities_task_list",
                        columnList: columnList
                    }).then(function(value){
                        host.user_column_configsDic["activities_task_list"] = value;
                        redrawTableFunc();
                    });
                }
            });
            host.data_container.appendChild(host.dataView);
        });
    };
    redrawTableFunc();
};

hr.activities_task.init = function(host){
    return new Promise(function(resolveMn, rejectMn){
        host.database = {};
        ModalElement.show_loading();
        FormClass.api_call({
            url: "database_load.php",
            params: [
                {name: "task", value: "tasks_load_init"}
            ],
            func: function(success, message){
                ModalElement.close(-1);
                if (success){
                    if (message.substr(0, 2) == "ok"){
                        var content = EncodingClass.string.toVariable(message.substr(2));
                        contentModule.makeDatabaseContent(host, content);
                        host.form_config = contentModule.configVariable(host);
                        // contentModule.makeInputFormDecode(host.database.input_forms.items);
                        // hr.input_form.loadFormConstructorToAssembler(host.database.input_forms.items, host.database.typelists.items);
                        host.user_column_configsDic = contentModule.getUser_column_configsDic(host);
                        host.dictionary = {
                            input_forms: contentModule.makeDictionaryIndex(host.database.input_forms.items),
                            output_forms: contentModule.makeDictionaryIndex(host.database.output_forms.items),
                            typelists: contentModule.makeDictionaryIndex(host.database.typelists.items),
                            tasks: contentModule.makeDictionaryIndex(host.database.tasks.items),
                            employees: contentModule.makeDictionaryIndex(host.database.employees.items),
                            peoples: contentModule.makeDictionaryIndex(host.database.peoples.items)
                        };
                        host.database.tasks.items.forEach(function(elt){
                            var strIdx = 0;
                            var participantStr = elt.participant;
                            var strLength = participantStr.length;
                            var participant = [];
                            while (strIdx < strLength - 2){
                                participant.push(parseInt(participantStr[strIdx + 1]));
                                strIdx += 2;
                            }
                            elt.participant = participant;
                        })
                        host.dictionary.users = {};
                        host.database.users.items.forEach(function(elt, index){
                            host.dictionary.users[elt.homeid] = index;
                        });
                        host.inputsearchbox = absol.buildDom({
                            tag:'searchcrosstextinput',
                            style: {
                                width: "var(--searchbox-width)"
                            },
                            props:{
                                placeholder: LanguageModule.text("txt_search")
                            }
                        });
                        var cmdbutton = {
                            close: function(host){
                                return function (event, me) {
                                    if (hr.isMobile){
                                        host.holder.selfRemove();
                                        hr.menu.loadPage(100);
                                    }
                                    else {
                                        hr.menu.tabPanel.removeTab(host.holder.id);
                                    }
                                }
                            } (host),
                            add: function(host){
                                return function (event, me) {
                                    hr.activities_task.addActivitiesTask(host, 0, function onSave(value){
                                        host.newRecord = host.newRecord.updateCurrentRow(host.funcs.formActivitiesTaskGetRow(host.configColumnActivitiesTask, value));
                                    }, function onAdd(value){
                                        host.newRecord = host.dataView.insertRow(host.funcs.formActivitiesTaskGetRow(host.configColumnActivitiesTask, value));
                                    });
                                }
                            } (host)
                        };
                        host.data_container = DOMElement.div({attrs: {style: {paddingBottom: "var(--footer-margin)"}}});
                        host.holder.addChild(host.frameList);
                        var singlePage = host.funcs.formActivitiesTaskInit({
                            cmdbutton: cmdbutton,
                            data_container: host.data_container,
                            inputsearchbox: host.inputsearchbox
                        });
                        host.frameList.addChild(singlePage);
                        singlePage.requestActive();
                        hr.activities_task.redraw(host);
                        resolveMn(host);
                    }
                    else {
                        ModalElement.alert({message: message});
                    }
                }
                else {
                    ModalElement.alert({message: message});
                }
            }
        });
    });
};

VaKeR 2022