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/theme/mobile/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/keeview_app/html/theme/mobile/work_flows_view.js
"use strict";

theme.formAddFromEmployeeTemplate = function(params){
    var itemsList = [{value: 0, text: LanguageModule.text("txt_select_value")}];
    for (var i = 0; i < params.database.employee_templates.items.length; i++){
        itemsList.push({
            value: params.database.employee_templates.items[i].id,
            text: params.database.employee_templates.items[i].name
        });
    }
    var template_select = absol.buildDom({
        tag: "selectmenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: itemsList,
            enableSearch: true
        },
        on: {
            change: function(){
                if (this.value == 0){
                    view_select.values = [];
                    edit_select.values = [];
                }
                else {
                    var index = params.database.employee_templates.getIndex(this.value);
                    view_select.values = params.database.employee_templates.items[index].view;
                    edit_select.values = params.database.employee_templates.items[index].edit;
                }
            }
        }
    });
    var view_select = absol.buildDom({
        tag: "multichecktreemenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: params.itemsList,
            disabled: true
        }
    });
    var edit_select = absol.buildDom({
        tag: "multichecktreemenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: params.itemsList,
            disabled: true
        }
    });
    var res = DOMElement.table({
        data: [
            [
                {text: LanguageModule.text("txt_employee_template")},
                {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}},
                template_select
            ],
            [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}],
            [
                {text: LanguageModule.text("txt_employee_has_permission_view")},
                {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}},
                view_select
            ],
            [{attrs: {style: {height: "var(--control-verticle-distance-2)"}}}],
            [
                {text: LanguageModule.text("txt_employee_has_permission_edit")},
                {attrs: {style: {width: "var(--control-horizontal-distance-2)"}}},
                edit_select
            ]
        ]
    });
    res.getValue = function(){
        var templateid = template_select.value;
        if (templateid == 0){
            ModalElement.alert({message: LanguageModule.text("war_txt_no_select_template")});
            return;
        }
        return templateid;
    };
    ModalElement.showWindow({
        title: params.title,
        bodycontent: res,
        buttonlist: [
            {
                text: LanguageModule.text("txt_save"),
                onclick: function(){
                    var templateid = res.getValue();
                    if (!templateid) return;
                    ModalElement.close();
                    params.func.save(templateid);
                }
            },
            {
                text: LanguageModule.text("txt_cancel"),
                onclick: function(){
                    ModalElement.close();
                }
            }
        ]
    });
};

theme.fromObjectEditExtraData = function(params){
    var commands = [{
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    }];
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.func.cancel().then(function(){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                });
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.formContainer]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.func.cancel().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
};

theme.formWork_flowsAdd = function(params){
    hr.menu.showMobileTabbar(false);
    var firstPageCtn = DOMElement.div({
        children: [
            DOMElement.div({
                attrs: {
                    className: 'm-kv-document-page-content'
                },
                children: [params.general_informationEdit]
            }),
            absol.buildDom({
                class: 'm-kv-document-page-footer',
                child: [
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-right"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        var data = params.general_informationEdit.getValue();
                                        if (!data) return;
                                        header.title = LanguageModule.text("txt_period");
                                        firstPageCtn.style.display = "none";
                                        secondPageCtn.style.display = "";
                                    }
                                },
                                text: LanguageModule.text("txt_next")
                            })
                        ]
                    })
                ]
            })
        ]
    });
    var secondPageCtn = DOMElement.div({
        attrs: {
            style: {display: "none"}
        },
        children: [
            DOMElement.div({
                attrs: {
                    className: 'm-kv-document-page-content'
                },
                children: [params.periodEdit]
            }),
            absol.buildDom({
                class: 'm-kv-document-page-footer',
                child: [
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-left"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        header.title = LanguageModule.text("txt_general_information");
                                        firstPageCtn.style.display = "";
                                        secondPageCtn.style.display = "none";
                                    }
                                },
                                text: LanguageModule.text("txt_back")
                            })
                        ]
                    }),
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-right"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        var data = params.periodEdit.getValue();
                                        if (!data) return;
                                        header.title = LanguageModule.text("txt_permission");
                                        secondPageCtn.style.display = "none";
                                        thirdPageCtn.style.display = "";
                                    }
                                },
                                text: LanguageModule.text("txt_next")
                            })
                        ]
                    })
                ]
            })
        ]
    });
    var thirdPageCtn = DOMElement.div({
        attrs: {
            style: {display: "none"}
        },
        children: [
            DOMElement.div({
                attrs: {
                    className: 'm-kv-document-page-content'
                },
                children: [params.permissionEdit]
            }),
            absol.buildDom({
                class: 'm-kv-document-page-footer',
                child: [
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-left"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        header.title = LanguageModule.text("txt_period");
                                        secondPageCtn.style.display = "";
                                        thirdPageCtn.style.display = "none";
                                    }
                                },
                                text: LanguageModule.text("txt_back")
                            })
                        ]
                    }),
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-right"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        params.func.save().then(function(){
                                            params.frameList.removeLast();
                                            window.backLayoutFunc.pop();
                                            hr.menu.showMobileTabbar(true);
                                        });
                                    }
                                },
                                text: LanguageModule.text("txt_save")
                            })
                        ]
                    })
                ]
            })
        ]
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text("txt_general_information")
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
                hr.menu.showMobileTabbar(true);
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    console.log(secondPageCtn);
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            firstPageCtn,
            secondPageCtn,
            thirdPageCtn
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
            hr.menu.showMobileTabbar(true);
        }
    });
};

theme.workFlowAddContactForm = function(params){
    var inputsearchbox = absol.buildDom({
        tag:'searchcrosstextinput',
        style: {
            width: "var(--searchbox-width)"
        },
        props:{
            placeholder: LanguageModule.text("txt_search")
        }
    });
    var addNewContact = function(){
        var formContainer = DOMElement.div({});
        var commands = [{
            icon:  DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "save"
            }),
            cmd: function(){
                params.func.add_new_save(getValueFunction).then(function(value){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                });
            }
        }];
        var header = absol.buildDom({
            tag: 'mheaderbar',
            props: {
                actionIcon: DOMElement.i({
                    attrs: {
                        className: "material-icons"
                    },
                    text: "arrow_back_ios"
                }),
                title: LanguageModule.text("txt_add_contact"),
                commands: commands
            },
            on: {
                action: function(){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                },
                command: function(event){
                    event.commandItem.cmd();
                }
            }
        });
        var x = absol.buildDom({
            tag: 'tabframe',
            child:[
                header,
                DOMElement.div({
                    attrs: {
                        className: "card-mobile-content"
                    },
                    children: [formContainer]
                })
            ]
        });
        params.frameList.addChild(x);
        x.requestActive();
        window.backLayoutFunc.push({
            func: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            }
        });
        var getValueFunction;
        contentModule.makeFormData({
            typeid: data_module.form_config.contact.typeid,
            formid: data_module.form_config.contact.input_form,
            formContainer: formContainer,
            typelists: data_module.typelists.items,
            variableType: "system"
        }).then(function(getValue){
            getValueFunction = getValue;
            absol.form.traversal(formContainer.formFragment.view, function(item){
                if (item.node.tag === "TextInput") {
                    item.node.domElt.focus();
                    item.stop();
                    return;
                }
            });
            var elt = absol.form.findComponent(formContainer.formFragment.view, {
                name: 'type_contact_owner',
                depth: false
            });
            if (elt){
                elt.attributes.value = params.employeeOfMe[0];
            }
        });
    };
    var commands = [{
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.ok().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    }];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "search"
        }),
        cmd: function(){
            header.searchMode(true);
        }
    });
    var header = absol.buildDom({
        tag: 'headerbarwithsearch',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text('txt_contact'),
            commands: commands,
            quickmenu: {
                props: {
                    extendClasses: 'cd-context-menu',
                    items: [
                        {
                            text: LanguageModule.text("txt_add_contact"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "add"
                            }),
                            cmd: function(){
                                addNewContact();
                            }
                        }
                    ]
                },
                onSelect: function (x) {
                    x.cmd();
                }
            }
        },
        data: {
            searchInput: inputsearchbox
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var data_ctn = DOMElement.div({
        attrs: {
            className: "card-mobile-content"
        }
    });
    data_ctn.inputsearchbox = inputsearchbox;
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            data_ctn
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
    return data_ctn; 
};

theme.workFlowAddPartnerForm = function(params){
    var filterFunc = function(){
        theme.modalFormMobile({
            title: LanguageModule.text("txt_filter"),
            bodycontent: DOMElement.div({
                children: [
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit-first"
                        },
                        text: LanguageModule.text("txt_partner_class")
                    }),
                    partner_class_select,
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit"
                        },
                        text: LanguageModule.text("txt_nationcity")
                    }),
                    nation_cities_select
                ]
            })
        });
    };
    var inputsearchbox = absol.buildDom({
        tag:'searchcrosstextinput',
        style: {
            width: "var(--searchbox-width)"
        },
        props:{
            placeholder: LanguageModule.text("txt_search")
        },
        on: {
            stoptyping: function(){
                params.func.filter_change_func();
            }
        }
    });
    var itemsList = contentModule.getNationCityDualSelectMenu(params);
    itemsList.forEach(function(nItem){
        nItem.items.unshift({value: 0, text: LanguageModule.text("txt_all_city")});
    });
    itemsList.unshift({
        value: 0,
        text: LanguageModule.text("txt_all_nation"),
        items: [{value: 0, text: LanguageModule.text("txt_all_city")}]
    });
    var nation_cities_select = absol.buildDom({
        tag: "dualselectmenu",
        props: {
            items: itemsList,
            enableSearch: true,
            value: [0, 0]
        },
        on: {
            change: function(){
                params.func.filter_change_func();
            }
        }
    });
    var partner_class_select = absol.buildDom({
        tag: "mselectmenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: contentModule.getPartnerClassFilterList(params),
            enableSearch: true
        },
        on: {
            change: function(){
                params.func.filter_change_func();
            }
        }
    });
    var addNewPartner = function(){
        var formContainer = DOMElement.div({});
        var commands = [{
            icon:  DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "save"
            }),
            cmd: function(){
                params.func.add_new_save(getValueFunction).then(function(value){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                });
            }
        }];
        var header = absol.buildDom({
            tag: 'mheaderbar',
            props: {
                actionIcon: DOMElement.i({
                    attrs: {
                        className: "material-icons"
                    },
                    text: "arrow_back_ios"
                }),
                title: LanguageModule.text("txt_add_partner"),
                commands: commands
            },
            on: {
                action: function(){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                },
                command: function(event){
                    event.commandItem.cmd();
                }
            }
        });
        var x = absol.buildDom({
            tag: 'tabframe',
            child:[
                header,
                DOMElement.div({
                    attrs: {
                        className: "card-mobile-content"
                    },
                    children: [formContainer]
                })
            ]
        });
        params.frameList.addChild(x);
        x.requestActive();
        window.backLayoutFunc.push({
            func: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            }
        });
        var getValueFunction;
        contentModule.makeFormData({
            typeid: data_module.form_config.partner.typeid,
            formid: data_module.form_config.partner.input_form,
            formContainer: formContainer,
            typelists: data_module.typelists.items,
            variableType: "system"
        }).then(function(getValue){
            getValueFunction = getValue;
            absol.form.traversal(formContainer.formFragment.view, function(item){
                if (item.node.tag === "TextInput") {
                    item.node.domElt.focus();
                    item.stop();
                    return;
                }
            });
        });
    };
    var commands = [{
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.ok().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    }];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "search"
        }),
        cmd: function(){
            header.searchMode(true);
        }
    });
    var header = absol.buildDom({
        tag: 'headerbarwithsearch',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text('txt_partner'),
            commands: commands,
            quickmenu: {
                props: {
                    extendClasses: 'cd-context-menu',
                    items: [
                        {
                            text: LanguageModule.text("txt_filter"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "filter_alt"
                            }),
                            cmd: function(){
                                filterFunc();
                            }
                        },
                        {
                            text: LanguageModule.text("txt_add_partner"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "add"
                            }),
                            cmd: function(){
                                addNewPartner();
                            }
                        }
                    ]
                },
                onSelect: function (x) {
                    x.cmd();
                }
            }
        },
        data: {
            searchInput: inputsearchbox
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var data_ctn = DOMElement.div({
        attrs: {
            className: "card-mobile-content"
        }
    });

    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            data_ctn
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
    data_ctn.inputsearchbox = inputsearchbox;
    data_ctn.nation_cities_select = nation_cities_select;
    data_ctn.partner_class_select = partner_class_select;
    return data_ctn;
};

theme.formWork_flowsGetPeriodEdit = function(params){
    var getRow = function(content){
        var name_input = theme.input({
            style: {
                flexGrow: '1'
            },
            value: content? content.name : ""
        });
        var color_input = absol.buildDom({
            tag: "colorpickerbutton",
            style: {
                margin:'0 5px'
            },
            props: {
                mode: 'HEX6',
                value: content? content.color : "white"
            }
        });
        var child = [
            name_input,
            color_input
        ];
        if (content && content.isSystem){
            name_input.disabled = true;
            child.push(DOMElement.button({
                attrs: {
                    className: "am-cabinet-transparent-btn",
                    style: {
                        visibility: "hidden"
                    }
                },
                children: [DOMElement.i({
                    attrs: {className: "material-icons card-icon-remove"},
                    text: "remove_circle"
                })]
            }));
        }
        else {
            child.push(DOMElement.button({
                attrs: {
                    className: "am-cabinet-transparent-btn",
                    onclick: function(){
                        item.selfRemove();
                    }
                },
                children: [DOMElement.i({
                    attrs: {className: "material-icons card-icon-remove"},
                    text: "remove_circle"
                })]
            }));
        }
        var item = absol.buildDom({
            tag: "mcabinetitem",
            class: "am-flex-content",
            child: child
        });
        if (content && content.isSystem) item.draggable = false;
        item.getValue = function(){
            if (content && content.isSystem) return;
            var name = name_input.value.trim();
            if (name == ""){
                ModalElement.alert({message: LanguageModule.text("war_txt_no_name")});
                return;
            }
            return {
                id: content? content.id : 0,
                name: name,
                color: color_input.value
            };
        };
        return item;
    };
    var childs = [];
    for (var i = 0; i < params.list.length; i++){
        childs.push(getRow(params.list[i]));
    }
    var list = absol.buildDom({
        tag: "mcabinetlist",
        props: {
            draggable: true
        },
        child: childs
    });;
    var res = DOMElement.div({
        children: [
            list,
            DOMElement.div({
                children: [DOMElement.span({
                    attrs: {
                        style: {
                            height: "var(--control-height)",
                            lineHeight: "var(--control-height)",
                            color: "var(--a-color)"
                        },
                        onclick: function(){
                            var at = Array.prototype.find.call(list.childNodes, function(elt){
                                return elt.draggable === false;
                            });
                            list.addChildBefore(getRow(), at);
                        }
                    },
                    text: LanguageModule.text("txt_add")
                })]
            })
        ]
    });
    res.getValue = function(){
        var x = list.getChildren();
        var value = [], name, color;
        var v;
        for (i = 0; i < x.length; i++){
            v = x[i].getValue();
            if (v) value.push(v);
        }
        return value;
    };
    return res;
};

theme.formWork_flowsEditPeriods = function(params){
    var commands = [];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.data_ctn]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
};

theme.formWork_flowsEdit = function(params){
    var commands = [];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.func.cancel().then(function(){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                });
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.formContainer]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.func.cancel().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
};

theme.formWork_flowsCloseObjectConfirm = function(params){
    var bodycontent = DOMElement.div({attrs: {style: {maxWidth: "500px"}}});
    if ((params.st.meeting.length + params.st.task.length) > 0){
        bodycontent.appendChild(DOMElement.p({text: LanguageModule.text2("war_txt_close_object_warning_activities", [params.st.meeting.length + params.st.task.length])}))
    }
    if (params.st.period > 0){
        bodycontent.appendChild(DOMElement.p({text: LanguageModule.text("war_txt_close_object_warning_period")}));
        var itemsList = [{value: 0, text: LanguageModule.text("txt_select_value")}];
        var systemList = contentModule.getObjectPeriodSystemList();
        for (var i = 0; i < systemList.length; i++){
            itemsList.push({value: systemList[i].id, text: systemList[i].name});
        }
        var period_select = absol.buildDom({
            tag: "mselectmenu",
            props: {
                items: itemsList
            }
        });
        bodycontent.appendChild(DOMElement.div({
            attrs: {align: "center"},
            children: [
                DOMElement.span({
                    attrs: {
                        style: {
                            verticalAlign: "middle",
                            lineHeight: "var(--control-height)",
                            marginRight: "var(--control-horizontal-distance-2)"
                        },
                    },
                    text: LanguageModule.text("txt_period")
                }),
                period_select
            ]
        }));
    }
    bodycontent.appendChild(DOMElement.p({text: LanguageModule.text("war_txt_close_object")}));
    theme.modalFormMobile({
        title: LanguageModule.text("txt_archive_object"),
        bodycontent: bodycontent,
        buttonList: [
            {
                text: LanguageModule.text("txt_ok"),
                typeColor: "light"
            },
            {
                text: LanguageModule.text("txt_cancel")
            }
        ],
        func: function(sel){
            if (sel == 0){
                var data = {
                    id: params.id,
                    closed: 1
                };
                if (params.st.period > 0){
                    var period = period_select.value;
                    if (period == 0){
                        ModalElement.alert({message: LanguageModule.text("war_txt_period_is_null")});
                        return;
                    }
                    data.period = period;
                }
                params.func.save(data);
            }
        }
    });
};

theme.formWork_flowsViewPeriods = function(params){
    var getRow = function(content){
        var row = [
            {
                text: content.name
            },
            {
                attrs: {align: "center"},
                children: [absol.buildDom({
                    tag: "colorpickerbutton",
                    props: {
                        mode: 'RGB',
                        disabled: true,
                        value: content.color
                    }
                })]
            }
        ];
        return row;
    };
    var header = [
        {text: LanguageModule.text("txt_name")},
        {
            attrs: {style: {width: "60px", whiteSpace: "nowrap"}},
            text: LanguageModule.text("txt_color")
        }
    ];
    var data = [];
    for (var i = 0; i < params.list.length; i++){
        data.push(getRow(params.list[i]));
    }
    var res = DOMElement.table({
        attrs: {style: {width: "100%"}},
        header: header,
        data: data
    });
    return res;
};

theme.formWork_flowsEditPermission = function(params){
    var commands = [];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.data_ctn]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
};

theme.workFlowEditObjectEmployeeForm = function(params){
    var commands = [];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.data_ctn]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
};

theme.workFlowEditObject = function(params){
    var commands = [];
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "save"
        }),
        cmd: function(){
            params.func.save().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.title,
            commands: commands
        },
        on: {
            action: function(){
                params.func.close().then(function(){
                    params.frameList.removeLast();
                    window.backLayoutFunc.pop();
                });
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.formContainer]
            })
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.func.close().then(function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            });
        }
    });
};

theme.formWork_flowEmployeeObject = function(params){
    if (params.type == "view"){
        var items_assign_to_ListDic = new absol.ListDictionary(params.data.items_assign_to_List);
        var assign_to_text = "";
        var item = items_assign_to_ListDic.getItemByValue(params.data.assign_to);
        if (item) assign_to_text = item.text;

        var itemsListDic = new absol.ListDictionary(params.data.itemsList);
        var priv_view_text = "";
        var viewDic = {};
        for (var i = 0; i < params.data.privViewValues.length; i++){
            if (viewDic[params.data.privViewValues[i]]) continue;
            item = itemsListDic.getItemByValue(params.data.privViewValues[i]);
            if (item) priv_view_text += "; " + item.text;
            viewDic[params.data.privViewValues[i]] = true;
        }
        if (priv_view_text.length > 0) priv_view_text = priv_view_text.substr(2);

        var priv_edit_text = "";
        var editDic = {};
        for (var i = 0; i < params.data.privEditValues.length; i++){
            if (editDic[params.data.privEditValues[i]]) continue;
            item = itemsListDic.getItemByValue(params.data.privEditValues[i]);
            if (item) priv_edit_text += "; " + item.text;
            editDic[params.data.privEditValues[i]] = true;
        }
        if (priv_edit_text.length > 0) priv_edit_text = priv_edit_text.substr(2);

        var res = DOMElement.div({
            children: [
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit-first"},
                    text: LanguageModule.text("txt_assign_to") + ": "
                }),
                DOMElement.span({
                    text: assign_to_text
                }),
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit"},
                    text: LanguageModule.text("txt_employee_has_permission_view") + ": "
                }),
                DOMElement.span({
                    text: priv_view_text
                }),
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit"},
                    text: LanguageModule.text("txt_employee_has_permission_edit") + ": "
                }),
                DOMElement.span({
                    text: priv_edit_text
                })
            ]
        });
    }
    else {
        var assign_to_select = absol.buildDom({
            tag: "selecttreeleafmenu",
            style: {
                width: "100%",
                display: "block"
            },
            props: {
                items: params.data.items_assign_to_List,
                value: params.data.assign_to,
                enableSearch: true
            }
        });
        var priv_view_select = absol.buildDom({
            tag: "multichecktreemenu",
            style: {
                width: "100%",
                display: "block"
            },
            props: {
                items: params.data.itemsList,
                values: params.data.privViewValues,
                enableSearch: true
            }
        });
        var priv_edit_select = absol.buildDom({
            tag: "multichecktreemenu",
            style: {
                width: "100%",
                display: "block"
            },
            props: {
                items: params.data.itemsList,
                values: params.data.privEditValues,
                enableSearch: true
            }
        });
        var res = DOMElement.div({
            children: [
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit-first"},
                    text: LanguageModule.text("txt_assign_to")
                }),
                assign_to_select,
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit"},
                    text: LanguageModule.text("txt_employee_has_permission_view")
                }),
                priv_view_select,
                DOMElement.div({
                    attrs: {className: "card-mobile-label-form-edit"},
                    text: LanguageModule.text("txt_employee_has_permission_edit")
                }),
                priv_edit_select
            ]
        });
        res.getValue = function(){
            var assign_to = assign_to_select.value;
            if (assign_to == 0){
                ModalElement.alert({message: LanguageModule.text("war_txt_assign_to_is_null")});
                return;
            }
            var data = {
                assign_to: assign_to,
                priv_view: priv_view_select.values,
                priv_edit: priv_edit_select.values
            };
            return data;
        };
    }
    return res;
};

theme.workFlowViewObject = function(params){
    params.viewGeneralInformation.style.paddingTop = "var(--control-verticle-distance-2)";
    params.viewEmployee.style.paddingTop = "var(--control-verticle-distance-2)";
    if (params.viewExtraData) params.viewExtraData.style.paddingTop = "var(--control-verticle-distance-2)";
    params.viewPartner.style.paddingTop = "var(--control-verticle-distance-2)";
    params.viewContact.style.paddingTop = "var(--control-verticle-distance-2)";
    var scrollInto = function(value){
        if (sectionList[value]) sectionList[value].scrollIntoView();
    };
    var commands = [];
    var quickmenuItems = [];
    if (params.cmdbutton.close_object){
        quickmenuItems.push(
            {
                text: LanguageModule.text("txt_archive_object"),
                extendClasses: "bsc-quickmenu",
                icon: DOMElement.i({
                    attrs: {
                        className: "mdi mdi-archive-outline"
                    }
                }),
                cmd: function(){
                    params.cmdbutton.close_object();
                }
            },
            "============"
        );
    }
    quickmenuItems.push(
        {
            text: LanguageModule.text("txt_general_information"),
            icon: DOMElement.i({
                attrs: {
                    className: "mdi mdi-information-outline"
                }
            }),
            extendClasses: "bsc-quickmenu",
            cmd: function(){
                scrollInto("general_information");
            }
        },
        {
            text: LanguageModule.text("txt_data_extra"),
            extendClasses: "bsc-quickmenu",
            cmd: function(){
                scrollInto("data_extra");
            }
        },
        {
            text: LanguageModule.text("txt_employee"),
            extendClasses: "bsc-quickmenu",
            icon: DOMElement.i({
                attrs: {
                    className: "account-circle-outline"
                }
            }),
            cmd: function(){
                scrollInto("employee");
            }
        },
        {
            text: LanguageModule.text("txt_partner"),
            icon: DOMElement.i({
                attrs: {
                    className: "mdi mdi-store"
                }
            }),
            extendClasses: "bsc-quickmenu",
            cmd: function(){
                scrollInto("partner");
            }
        },
        {
            text: LanguageModule.text("txt_contact"),
            extendClasses: "bsc-quickmenu",
            icon: DOMElement.i({
                attrs: {
                    className: "mdi mdi-card-account-phone-outline"
                }
            }),
            cmd: function(){
                scrollInto("contact");
            }
        },
        {
            text: LanguageModule.text("txt_to_do"),
            extendClasses: "bsc-quickmenu",
            icon: DOMElement.span({
                attrs: {
                    className: "mdi mdi-checkbox-marked-circle-outline"
                }
            }),
            cmd: function(){
                scrollInto("to_do");
            }
        },
        {
            text: LanguageModule.text("txt_comment"),
            icon: DOMElement.i({
                attrs: {
                    className: "mdi mdi-comment-multiple-outline"
                }
            }),
            extendClasses: "bsc-quickmenu",
            cmd: function(){
                scrollInto("comment");
            }
        }
    );
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.data.name,
            commands: commands,
            quickmenu: {
                props: {
                    extendClasses: 'cd-context-menu',
                    items: quickmenuItems
                },
                onSelect: function (x) {
                    x.cmd();
                }
            }
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var chartCtn = DOMElement.div({
        attrs: {style: {display: "inline-block", verticalAlign: "middle", paddingLeft: "20px"}}
    });
    var markedIcon = contentModule.getMarkIcon(params.data.marked, params.func.markedFunc);
    var processlbar;
    var periodsList = [];
    for (var i = 0; i < params.periodsList.length; i++){
        periodsList.push({
            name: params.periodsList[i].name,
            value: params.periodsList[i].id,
            color: params.periodsList[i].color
        });
    }
    processlbar = absol.buildDom({
        tag: 'processlbar',
        style: {
            verticalAlign: "middle"
        },
        props: {
            items: periodsList,
            value: params.data.period,
            lHeight: 1
        },
        on: {
            change: function(){
                params.func.change_period(this.value);
            }
        }
    });
    var drawInitInfor = function(disabled){
        processlbar.disabled = disabled;
        var lock_ctn;
        if (disabled){
            lock_ctn = DOMElement.div({
                attrs: {
                    title: LanguageModule.text("txt_archive_object"),
                    className: "card-icon-cover-disabled",
                    style: {
                        marginLeft: "20px"
                    }
                },
                children: [DOMElement.i({
                    attrs: {
                        className: "mdi mdi-archive-lock",
                        style: {
                            color: "red",
                            fontSize: "var(--icon-fontsize)"
                        }
                    }
                })]
            });
        }
        else {
            lock_ctn = DOMElement.div({
                attrs: {
                    title: LanguageModule.text("txt_archive_object"),
                    className: "card-icon-cover disabled",
                    onclick: function(){
                        params.cmdbutton.close_object();
                    }
                },
                children: [DOMElement.i({
                    attrs: {
                        className: "mdi mdi-archive-outline bsc-icon-hover-black"
                    }
                })]
            });
        }
        var viewInitInfor = DOMElement.div({
            attrs: {
                className: "m-hr-intro-view-form"
            },
            children: [
                processlbar,
                chartCtn,
                lock_ctn,
                DOMElement.div({
                    attrs: {
                        title: LanguageModule.text("txt_marked"),
                        style: {
                            display: "inline-block"
                        }
                    },
                    children: [markedIcon]
                })
            ]
        });
        if (params.data.closed){
            viewInitInfor.classList.add("disabled");
        }
        DOMElement.removeAllChildren(init_infor_ctn);
        init_infor_ctn.appendChild(viewInitInfor);
    };
    var edit_general_information_ctn = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: params.func.editGeneralInformationFunc
                },
                text: LanguageModule.text("txt_edit")
            })
        ]
    });
    var getGeneralInformationCtn = function(){
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: {text: LanguageModule.text("txt_general_information")},
            }
        ];
        if (params.func.editGeneralInformationFunc){
            childs.push(edit_general_information_ctn);
        }
        var res = absol.buildDom({
            attr: {
                "data-sectionid": "general_information"
            },
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                params.viewGeneralInformation
            ]
        });
        return res;
    };
    var edit_data_extra_ctn = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: params.func.editExtraDataFunc
                },
                text: LanguageModule.text("txt_edit")
            })
        ]
    });
    var getExtraDataCtn = function(){
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_data_extra") },
            }
        ];
        if (params.func.editExtraDataFunc){
            childs.push(edit_data_extra_ctn);
        }
        var res = absol.buildDom({
            attr: {
                "data-sectionid": "data_extra"
            },
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                params.viewExtraData
            ]
        });
        return res;
    };
    var edit_employee_ctn = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: params.func.editEmployeeFunc
                },
                text: LanguageModule.text("txt_edit")
            })
        ]
    });
    var getEmployeeCtn = function(){
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_employee") },
            }
        ];
        if (params.func.editEmployeeFunc){
            childs.push(edit_employee_ctn);
        }
        var res = absol.buildDom({
            attr: {
                "data-sectionid": "employee"
            },
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                params.viewEmployee
            ]
        });
        return res;
    };
    var add_partner_ctn = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: params.func.addPartnerFunc
                },
                text: LanguageModule.text("txt_add")
            })
        ]
    });
    var getPartnerCtn = function(){
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_partner") },
            }
        ];
        if (params.func.addPartnerFunc){
            childs.push(add_partner_ctn);
        }
        var res = absol.buildDom({
            attr: {
                "data-sectionid": "partner"
            },
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                params.viewPartner
            ]
        });
        return res;
    };
    var add_contact_ctn = absol.buildDom({
        class: 'm-mk-section-header-right',
        child: [
            DOMElement.a({
                attrs: {
                    onclick: params.func.addContactFunc
                },
                text: LanguageModule.text("txt_add")
            })
        ]
    });
    var getContactCtn = function(){
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_contact") },
            }
        ];
        if (params.func.addContactFunc){
            childs.push(add_contact_ctn);
        }
        var res = absol.buildDom({
            attr: {
                "data-sectionid": "contact"
            },
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                params.viewContact
            ]
        });
        return res;
    };
    var init_infor_ctn = DOMElement.div({});
    drawInitInfor(params.data.closed);
    var data_ctn = DOMElement.div({
        attrs: {
            className: "card-mobile-content"
        },
        children: [
            init_infor_ctn,
            getGeneralInformationCtn()
        ]
    });
    if (params.viewExtraData){
        data_ctn.appendChild(getExtraDataCtn());
    }
    data_ctn.appendChild(getEmployeeCtn());
    data_ctn.appendChild(getPartnerCtn());
    data_ctn.appendChild(getContactCtn());
    var activitiesCtn = absol.buildDom({
        attr: {
            "data-sectionid": "to_do"
        }
    });
    data_ctn.appendChild(activitiesCtn);
    data_ctn.appendChild(params.viewComment);
    var sectionList = {};
    absol.$("div", data_ctn, function(elt){
        var id = elt.getAttribute("data-sectionid");
        if (!id) return;
        sectionList[id] = elt;
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            data_ctn
        ]
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
    singlePage.processlbar = processlbar;
    singlePage.chartCtn = chartCtn;
    singlePage.activitiesCtn = activitiesCtn;
    singlePage.drawInitInfor = drawInitInfor;
    singlePage.removePrivEdit = function(){
        processlbar.disabled = true;
        DOMElement.removeAllChildren(edit_general_information_ctn);
        DOMElement.removeAllChildren(edit_data_extra_ctn);
        DOMElement.removeAllChildren(edit_employee_ctn);
        DOMElement.removeAllChildren(add_partner_ctn);
        DOMElement.removeAllChildren(add_contact_ctn);
        header.quickmenu = null;
    };
    return singlePage;
};

theme.formSettingWorkFlow = function(host, params){
    hr.menu.showMobileTabbar(false);
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text("txt_work_flows")
        },
        on: {
            action: function(){
                host.frameList.removeLast();
                window.backLayoutFunc.pop();
                hr.menu.showMobileTabbar(true);
            }
        }
    });
    var data_ctn = DOMElement.div({
        attrs: {
            className: "card-mobile-content"
        }
    });
    var drawGeneralInformation = function(){
        var viewGeneralInformation = DOMElement.div({
            attrs: {
                style: {
                    paddingTop: "var(--control-verticle-distance-2)"
                }
            }
        });
        host.drawGeneralInforFunc(viewGeneralInformation);
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_general_information") },
            }
        ];
        childs.push({
            class: 'm-mk-section-header-right',
            child: [
                DOMElement.a({
                    attrs: {
                        onclick: function(){
                            params.func.edit_general_information_func();
                        }
                    },
                    text: LanguageModule.text("txt_edit")
                })
            ]
        });
        var res = absol.buildDom({
            child: [
                absol.buildDom({
                    class: ['m-mk-section-header', 'first'],
                    child: childs
                }),
                viewGeneralInformation
            ]
        });
        return res;
    };
    data_ctn.appendChild(drawGeneralInformation());
    var drawPeriods = function(){
        var viewPeriod = DOMElement.div({
            attrs: {
                style: {
                    paddingTop: "var(--control-verticle-distance-2)"
                }
            }
        });
        host.drawPeriodsFunc(viewPeriod);
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_period") },
            }
        ];
        childs.push({
            class: 'm-mk-section-header-right',
            child: [
                DOMElement.a({
                    attrs: {
                        onclick: function(){
                            params.func.edit_periods_func();
                        }
                    },
                    text: LanguageModule.text("txt_edit")
                })
            ]
        });
        var res = absol.buildDom({
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                viewPeriod
            ]
        });
        return res;
    };
    data_ctn.appendChild(drawPeriods());
    var drawPermissions = function(){
        var viewPermission = DOMElement.div({
            attrs: {
                style: {
                    paddingTop: "var(--control-verticle-distance-2)"
                }
            }
        });
        host.drawPermissionsFunc(viewPermission);
        var childs = [
            {
                class: 'm-mk-section-header-name',
                child: { text: LanguageModule.text("txt_permission") },
            }
        ];
        childs.push({
            class: 'm-mk-section-header-right',
            child: [
                DOMElement.a({
                    attrs: {
                        onclick: function(){
                            params.func.edit_permission_func();
                        }
                    },
                    text: LanguageModule.text("txt_edit")
                })
            ]
        });
        var res = absol.buildDom({
            child: [
                absol.buildDom({
                    class: 'm-mk-section-header',
                    child: childs
                }),
                viewPermission
            ]
        });
        return res;
    };
    data_ctn.appendChild(drawPermissions());
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            data_ctn
        ]
    });
    host.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
};

theme.workFlowAddObject = function(params){
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text("txt_general_information")
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                window.backLayoutFunc.pop();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var generalInformationPageCtn = DOMElement.div({
        children: [
            DOMElement.div({
                attrs: {
                    className: 'm-kv-document-page-content'
                },
                children: [params.formContainer]
            }),
            absol.buildDom({
                class: 'm-kv-document-page-footer',
                child: [
                    DOMElement.div({attrs: {className: "m-kv-document-page-footer-left"}}),
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-right"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        var data = params.getValueFunction();
                                        if (!data) return;
                                        generalInformationPageCtn.style.display = "none";
                                        if (params.type_extra_of_object != 0){
                                            extraDataPageCtn.style.display = "";
                                            header.title = LanguageModule.text("txt_data_extra");
                                        }
                                        else {
                                            employeePageCtn.style.display = "";
                                            header.title = LanguageModule.text("txt_employee");
                                        }
                                    }
                                },
                                text: LanguageModule.text("txt_next")
                            })
                        ]
                    })
                ]
            })
        ]
    });
    var employeeElt = theme.formWork_flowEmployeeObject({data: params.employeeData, type: "edit"})
    var employeePageCtn = DOMElement.div({
        attrs: {
            style: {display: "none"}
        },
        children: [
            DOMElement.div({
                attrs: {
                    className: 'm-kv-document-page-content'
                },
                children: [employeeElt]
            }),
            absol.buildDom({
                class: 'm-kv-document-page-footer',
                child: [
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-left"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        employeePageCtn.style.display = "none";
                                        if (params.type_extra_of_object != 0){
                                            extraDataPageCtn.style.display = "";
                                            header.title = LanguageModule.text("txt_data_extra");
                                        }
                                        else {
                                            generalInformationPageCtn.style.display = "";
                                            header.title = LanguageModule.text("txt_general_information");
                                        }
                                    }
                                },
                                text: LanguageModule.text("txt_back")
                            })
                        ]
                    }),
                    DOMElement.div({
                        attrs: {className: "m-kv-document-page-footer-right"},
                        children: [
                            DOMElement.div({
                                attrs: {
                                    className: "m-kv-document-link",
                                    onclick: function(){
                                        var data = {
                                            general_information: params.getValueFunction(),
                                            employee: employeeElt.getValue()
                                        };
                                        if (params.type_extra_of_object > 0){
                                            data.extra_data = params.getValueExtraDataFunction();
                                        }
                                        params.func.save(data).then(function(){
                                            params.frameList.removeLast();
                                            window.backLayoutFunc.pop();
                                        });
                                    }
                                },
                                text: LanguageModule.text("txt_save")
                            })
                        ]
                    })
                ]
            })
        ]
    });
    var childs = [
        header,
        generalInformationPageCtn,
        employeePageCtn
    ];
    if (params.type_extra_of_object != 0){
        var extraDataPageCtn = DOMElement.div({
            attrs: {
                style: {display: "none"}
            },
            children: [
                DOMElement.div({
                    attrs: {
                        className: 'm-kv-document-page-content'
                    },
                    children: [params.formExtraDataContainer]
                }),
                absol.buildDom({
                    class: 'm-kv-document-page-footer',
                    child: [
                        DOMElement.div({
                            attrs: {className: "m-kv-document-page-footer-left"},
                            children: [
                                DOMElement.div({
                                    attrs: {
                                        className: "m-kv-document-link",
                                        onclick: function(){
                                            generalInformationPageCtn.style.display = "";
                                            extraDataPageCtn.style.display = "none";
                                            header.title = LanguageModule.text("txt_general_information");
                                        }
                                    },
                                    text: LanguageModule.text("txt_back")
                                })
                            ]
                        }),
                        DOMElement.div({
                            attrs: {className: "m-kv-document-page-footer-right"},
                            children: [
                                DOMElement.div({
                                    attrs: {
                                        className: "m-kv-document-link",
                                        onclick: function(){
                                            extraDataPageCtn.style.display = "none";
                                            employeePageCtn.style.display = "";
                                            header.title = LanguageModule.text("txt_employee");
                                        }
                                    },
                                    text: LanguageModule.text("txt_next")
                                })
                            ]
                        })
                    ]
                })
            ]
        });
        childs.push(extraDataPageCtn);
    }
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child: childs
    });
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
};

theme.workFlowsViewForm = function(params){
    hr.menu.showMobileTabbar(false);
    var filterFunc = function(){
        theme.modalFormMobile({
            title: LanguageModule.text("txt_filter"),
            bodycontent: filter_ctn
        });
    };
    var filterBoxes;
    if (params.onlyViewTable){
        if (params.viewType == "kanban"){
            ModalElement.alert({message: LanguageModule.text2("war_txt_kanban_view_objects", [hr.objects_kanban_view_limit])});
            params.func.change_type_view("table");
        }
        params.viewType = "table";
    }
    var filter_ctn = DOMElement.div({});
    var data_ctn = DOMElement.div({});
    var tlboardtable = absol.buildDom({
        tag: 'tlboardtable',
        style: {
            height: "100%"
        },
        class: 'ac-main',
        props: {
            hasAddBtn: false
        }
    });
    var iconFilter = DOMElement.i({
        attrs: {
            className: "material-icons m-hr-icon-filter active"
        },
        text: "filter_alt"
    });
    var commands = [{
        icon: iconFilter,
        cmd: function(){
            filterFunc();
        }
    }];
    var header = absol.buildDom({
        tag: 'mheaderbar',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: params.data.name,
            commands: commands,
            quickmenu: {
                getMenuProps: function(){
                    var quickmenuItems =  [];
                    if (params.viewType == "kanban"){
                        quickmenuItems.push({
                            text: LanguageModule.text("txt_table_view"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "mdi mdi-table-eye"
                                }
                            }),
                            cmd: function(){
                                params.viewType = "table";
                                singlePage.redrawFunc(params.periodsList, true);
                                params.func.change_type_view("table");
                            }
                        });
                    }
                    else {
                        if (!params.onlyViewTable) quickmenuItems.push({
                            text: LanguageModule.text("txt_kanban_view"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "mdi mdi-trello"
                                }
                            }),
                            cmd: function(){
                                params.viewType = "kanban";
                                singlePage.redrawFunc(params.periodsList, true);
                                params.func.change_type_view("kanban");
                            }
                        });
                    }
                    if (params.cmdbutton.add_object){
                        quickmenuItems.push({
                            text: LanguageModule.text("txt_add_object"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "add"
                            }),
                            cmd: function(){
                                params.cmdbutton.add_object();
                            }
                        });
                    }
                    return {
                        extendClass: 'cd-context-menu',
                        items: quickmenuItems
                    }
                },
                onSelect: function (x) {
                    x.cmd();
                }
            }
        },
        on: {
            action: function(){
                params.frameList.removeLast();
                hr.menu.showMobileTabbar(true);
                window.backLayoutFunc.pop();
                params.func.close_view_func();
            },
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {className: "card-mobile-content"},
                children: [
                    data_ctn,
                    tlboardtable
                ]
            })
        ]
    });
    var inputsearchbox = absol.buildDom({
        tag:'searchcrosstextinput',
        props:{
            placeholder: LanguageModule.text("txt_search")
        }
    });
    var inputsearchbox_ctn = DOMElement.div({
        children: [
            DOMElement.div({
                attrs: {
                    className: "card-mobile-label-form-edit",
                }
            }),
            inputsearchbox
        ]
    });
    singlePage.redrawFilterList = function(){
        DOMElement.removeAllChildren(filter_ctn);
        var filterChange = function(loadClosed){
            var isFilter = false;
            for (var i = 0; i < params.filterConfigList.length; i++){
                if (!params.filterConfigList[i].display) continue;
                if (filterBoxes[params.filterConfigList[i].name].value != "all"){
                    isFilter = true;
                    break;
                }
            }
            if (isFilter){
                iconFilter.classList.add("active");
            }
            else {
                iconFilter.classList.remove("active");
            }
            if (loadClosed){
                params.func.filterChangeFunc().then(function(periodsList){
                    singlePage.redrawFunc(periodsList, false, true);
                });
            }
            else {
                singlePage.redrawFunc(params.periodsList, false, true);
            }
        };
        filterBoxes = {};
        for (var i = 0; i < params.filterConfigList.length; i++){
            if (!params.filterConfigList[i].display) continue;
            if (params.filterConfigList[i].tree_leaf){
                filterBoxes[params.filterConfigList[i].name] = absol.buildDom({
                    tag: "selecttreeleafmenu",
                    style: {
                        display: "inline-block",
                        width: "100%"
                    },
                    props: {
                        items: params.filterConfigList[i].itemsList,
                        value: params.filterConfigList[i].value,
                        enableSearch: true
                    },
                    on: {
                        change: function(){
                            filterChange();
                        }
                    }
                });
            }
            else if (params.filterConfigList[i].tree){
                filterBoxes[params.filterConfigList[i].name] = absol.buildDom({
                    tag: "selecttreemenu",
                    style: {
                        display: "inline-block",
                        width: "100%"
                    },
                    props: {
                        items: params.filterConfigList[i].itemsList,
                        value: params.filterConfigList[i].value,
                        enableSearch: true
                    },
                    on: {
                        change: function(){
                            filterChange();
                        }
                    }
                });
            }
            else if (params.filterConfigList[i].nation_city){
                filterBoxes[params.filterConfigList[i].name] = absol.buildDom({
                    tag: "dualselectmenu",
                    style: {
                        display: "inline-block",
                        width: "100%"
                    },
                    props: {
                        items: params.filterConfigList[i].itemsList,
                        value: params.filterConfigList[i].value,
                        enableSearch: true
                    },
                    on: {
                        change: function(){
                            filterChange();
                        }
                    }
                });
            }
            else {
                filterBoxes[params.filterConfigList[i].name] = absol.buildDom({
                    tag: "mselectmenu",
                    style: {
                        display: "inline-block",
                        width: "100%"
                    },
                    props: {
                        items: params.filterConfigList[i].itemsList,
                        value: params.filterConfigList[i].value,
                        enableSearch: true
                    },
                    on: {
                        change: function(i){
                            return function(){
                                if (params.filterConfigList[i].name == "opening") filterChange(true);
                                else filterChange();
                            }
                        }(i)
                    }
                });
            }
            filter_ctn.appendChild(DOMElement.div({
                attrs: {
                    className: (i == 0)? "card-mobile-label-form-edit-first" : "card-mobile-label-form-edit"
                },
                text: params.filterConfigList[i].text
            }));
            filter_ctn.appendChild(filterBoxes[params.filterConfigList[i].name]);
        }
        filter_ctn.appendChild(inputsearchbox_ctn);
    };
    var getViewObjectItem = function(objectItem){
        var view = true, value;
        for (var j = 0; j < params.filterConfigList.length; j++){
            if (!params.filterConfigList[j].display) continue;
            if (filterBoxes[params.filterConfigList[j].name].value == "all") continue;
            if (params.filterConfigList[j].name == "related_person"){
                if (!objectItem.employeeRelatedDic[filterBoxes[params.filterConfigList[j].name].value]) view = false;
            }
            else {
                if (params.filterConfigList[j].extra){
                    value = objectItem.extra_data[params.filterConfigList[j].name];
                }
                else {
                    if (params.filterConfigList[j].main){
                        value = objectItem[params.filterConfigList[j].name];
                    }
                    else {
                        value = objectItem.extrainfo[params.filterConfigList[j].name];
                    }
                }
                if (params.filterConfigList[j].nation_city){
                    if (params.filterConfigList[j].value[0] == 0) continue;
                    if (params.filterConfigList[j].value[1] == 0){
                        if (!EncodingClass.type.isArray(value)
                        || value[0] != params.filterConfigList[j].value[0]){
                            view = false;
                            break;
                        }
                    }
                    else {
                        if (!EncodingClass.type.isArray(value)
                        || value[1] != params.filterConfigList[j].value[1]){
                            view = false;
                            break;
                        }
                    }
                }
                else {
                    if (filterBoxes[params.filterConfigList[j].name].value != value){
                        view = false;
                        break;
                    }
                }
            }
        }
        return view;
    };
    singlePage.redrawFunc = function(periodsList, changeUrl, checkCountObject){
        var countObjectView = 0;
        for (var i = 0; i < params.database.objects.items.length; i++){
            params.database.objects.items[i].isView = false;
        }
        for (var i = 0; i < params.database.objects.items.length; i++){
            if (!params.database.objects.items[i].privView) continue;
            var view = getViewObjectItem(params.database.objects.items[i]);
            if (view){
                params.database.objects.items[i].isView = true;
                countObjectView++;
            }
        }
        if (checkCountObject){
            if (countObjectView > hr.objects_kanban_view_limit){
                if (params.viewType == "kanban"){
                    params.viewType = "table";
                    params.onlyViewTable = true;
                    ModalElement.alert({message: LanguageModule.text2("war_txt_kanban_view_objects", [hr.objects_kanban_view_limit])});
                    singlePage.redrawFunc(periodsList, true);
                    params.func.change_type_view("table");
                    return;
                }
                else {
                    params.onlyViewTable = true;
                }
            }
            else {
                params.onlyViewTable = false;
            }
        }
        params.periodsList = periodsList;
        DOMElement.removeAllChildren(data_ctn);
        tlboardtable.clearItem();
        if (params.viewType == "kanban"){
            inputsearchbox_ctn.style.display = "none";
            tlboardtable.style.display = "";
            absol.ResizeSystem.update();
            var getObjectCard = function(objectItem){
                var view = getViewObjectItem(objectItem);
                if (view){
                    var itemsList = [
                        {
                            text: LanguageModule.text("txt_view"),
                            extendClasses: "bsc-quickmenu",
                            icon: {
                                tag: "i",
                                class: "material-icons",
                                child: { text: "visibility" }
                            },
                            cmd: function(){
                                params.func.view_objects(objectItem.id);
                            }
                        }
                    ];
                    if (objectItem.privEdit){
                        itemsList.push(
                            {
                                text: LanguageModule.text("txt_delete"),
                                extendClasses: "bsc-quickmenu red",
                                icon: {
                                    tag: "i",
                                    class: "material-icons",
                                    child: { text: "delete" }
                                },
                                cmd: function(){
                                    params.func.delete(objectItem.id).then(function(){
                                        object.selfRemove();
                                    });
                                }
                            },
                            {
                                text: LanguageModule.text("txt_archive_object"),
                                extendClasses: "bsc-quickmenu",
                                icon: {
                                    tag: "i",
                                    class: ["mdi", "mdi-archive-outline"]
                                },
                                cmd: function(){
                                    params.func.close_object(objectItem.id);
                                }
                            }
                        );
                    }
                    var object = absol.buildDom({
                        tag: 'tlcard',
                        style:{
                            backgroundColor: 'white'
                        },
                        props: {
                            name: objectItem.name,
                            ident: objectItem.id,
                            quickmenu: {
                                props: {
                                    extendClasses: 'cd-context-menu',
                                    items: itemsList
                                },
                                onSelect: function (item) {
                                    item.cmd();
                                }
                            }
                        },
                        on: {
                            dblclick: function(){
                                params.func.view_objects(objectItem.id);
                            }
                        }
                    });
                    return object;
                }
                else {
                    return null;
                }
            };
            params.tlListDic = {};
            periodsList.map(function(item, i) {
               var tlList = absol.buildDom({
                   tag: 'tllist',
                   style:{
                     backgroundColor: item.color
                   },
                   props: {
                       ident: item.id,
                       name: item.name,
                       desc: "",
                       hasAddBtn: false,
                       quickmenu: null
                   },
                   on: {
                       itemorderchange: function (event) {
                           console.log("itemorderchange", event);
                       },
                       itementer: function (event) {
                           params.func.change_period_for_object(event.item.ident, item.id);
                       },
                       itemleave: function (event) {
                           console.log("itemleave", event);
                       },
                       dragitemstart: function (event) {
                           console.log("dragitemstart", event);
                       },
                       dragitemend: function (event) {
                           console.log("dragitemend", event);
                       }
                   }
               });
               params.tlListDic[item.id] = tlList;
               tlboardtable.addItem(tlList, item.isSystem);//nếu truyền cờ static là true thì board đó không drag đuợc, chỉ dùng cho các phần tử ở đầu hoặc cuối
            });
            params.database.objects.items.forEach(function(objectItem){
                if (objectItem.isView){
                    if (params.tlListDic[objectItem.period]) params.tlListDic[objectItem.period].addItem(getObjectCard(objectItem));
                }
            });
            singlePage.insertDataFunc = function(objects){
                objects.forEach(function(objectItem){
                    var object = getObjectCard(objectItem);
                    if (object){
                        if (params.tlListDic[objectItem.period]) params.tlListDic[objectItem.period].addItem(object);
                    }
                });
            };
        }
        else {
            inputsearchbox_ctn.style.display = "";
            tlboardtable.style.display = "none";
            var getCellObject = function(content){
                content.status = !content.close;
                var cells = [
                    {
                        render: function(tdElt){
                            tdElt.addChild(DOMElement.div({
                                attrs: {
                                    onclick: function(){
                                        params.func.view_objects(content.id);
                                    }
                                },
                                text: content.name
                            }));
                        }
                    },
                    {
                        render: function(tdElt){
                            var markedIcon = contentModule.getMarkIcon(content.marked, function(marked){
                                return params.func.markedObjectFunc(content.id, marked);
                            });
                            tdElt.addChild(markedIcon);
                        }
                    }
                ];
                cells.push({
                    style: {width: "40px"},
                    render: function(tdElt){
                        var qmenuButton = DOMElement.div({
                            attrs: {
                                className: "card-icon-cover"
                            },
                            children: [DOMElement.i({
                                attrs: {
                                    className: "material-icons bsc-icon-hover-black"
                                },
                                text: "more_horiz"
                            })]
                        });
                        var quickMenuItems = [];
                        quickMenuItems.push({
                            text: LanguageModule.text("txt_view"),
                            extendClasses: "bsc-quickmenu",
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "visibility"
                            }),
                            onclick: function(){
                                params.func.view_objects(content.id);
                            }
                        });
                        if (content.privEdit) quickMenuItems.push({
                            text: LanguageModule.text("txt_delete"),
                            extendClasses: ["bsc-quickmenu", "red"],
                            icon: DOMElement.i({
                                attrs: {
                                    className: "material-icons"
                                },
                                text: "delete"
                            }),
                            cmd: function(){
                                params.func.delete(content.id).then(function(value){
                                    var x = tableView.rowOf(row)
                                    x.remove();
                                });
                            }
                        });
                        if (content.privEdit) quickMenuItems.push({
                            text: LanguageModule.text("txt_archive_object"),
                            extendClasses: ["bsc-quickmenu"],
                            icon: DOMElement.i({
                                attrs: {
                                    className: "mdi mdi-archive-outline"
                                }
                            }),
                            cmd: function(){
                                params.func.close_object(content.id);
                            }
                        });
                        absol.QuickMenu.showWhenClick(qmenuButton, {items: quickMenuItems}, [3, 4], function (menuItem) {
                            if (menuItem.cmd) menuItem.cmd();
                        });
                        if (quickMenuItems.length > 0){
                            tdElt.addChild(qmenuButton);
                        }
                    }
                });
                var row = {
                    cells: cells
                };
                return row;
            };
            var data = [];
            for (var i = 0; i < params.database.objects.items.length; i++){
                if (params.database.objects.items[i].isView) data.push(getCellObject(params.database.objects.items[i]));
            }
            DOMElement.removeAllChildren(data_ctn);
            var tableView = absol.buildDom({
                tag: "dynamictable",
                style: {
                    height: "calc(var(--body-height) - 100px)"
                },
                props: {
                    id: "object",
                    adapter: {
                       data: {
                           head: {
                               rows: []
                           },
                           body: {
                               rows: data
                           }
                       }
                   }
                }
            });
            tableView.attachSearchInput(inputsearchbox);
            data_ctn.appendChild(tableView);
            singlePage.insertDataFunc = function(objects){
                var rows = [];
                for (var i = 0; i < objects.length; i++){
                    if (!objects[i].privView) continue;
                    var view = getViewObjectItem(objects[i]);
                    if (!view) continue;
                    rows.push(getCellObject(objects[i]));
                }
                tableView.addRows(rows);
            };
        }
    };
    singlePage.redrawFilterList();
    singlePage.redrawFunc(params.periodsList, true);
    params.frameList.addChild(singlePage);
    singlePage.requestActive();
    window.backLayoutFunc.push({
        func: function(){
            params.frameList.removeLast();
            window.backLayoutFunc.pop();
        }
    });
    return singlePage;
};

theme.formWork_flowGetRow = function(content){
    var markedIcon = contentModule.getMarkIcon(content.marked, content.func.markedFunc);
    var item = absol.buildDom({
        tag: "mcabinetitem",
        class: "am-flex-content",
        child: [
            DOMElement.div({
                attrs: {
                    style: {
                        flexGrow: 1
                    },
                    onclick: function(){
                        if (content.default_open == "kanban") content.func.view();
                        else content.func.table_view();
                    }
                },
                text: content.name
            }),
            DOMElement.div({
                children: [markedIcon]
            })
        ]
    });
    var itemsList = [];
    itemsList.push({
        text: LanguageModule.text("txt_kanban_view"),
        extendClasses: ["bsc-quickmenu"],
        icon: DOMElement.i({
            attrs: {
                className: "mdi mdi-trello"
            }
        }),
        cmd: function(){
            content.func.view();
        }
    });
    itemsList.push({
        text: LanguageModule.text("txt_table_view"),
        extendClasses: ["bsc-quickmenu"],
        icon: DOMElement.i({
            attrs: {
                className: "mdi mdi-table-eye"
            }
        }),
        cmd: function(){
            content.func.table_view();
        }
    });
    if (content.func.setting) itemsList.push({
        text: LanguageModule.text("txt_settings"),
        extendClasses: ["bsc-quickmenu"],
        icon: DOMElement.i({
            attrs: {
                className: "mdi mdi-tools"
            }
        }),
        cmd: function(){
            content.func.setting();
        }
    });
    if (content.func.delete) itemsList.push({
        text: LanguageModule.text("txt_delete"),
        extendClasses: ["bsc-quickmenu", "red"],
        icon: DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "delete"
        }),
        cmd: function(){
            content.func.delete().then(function(value){
                item.selfRemove();
            });
        }
    });
    if (itemsList.length > 0){
        item.quickmenu = {
            props: {
                extendClasses: 'cd-context-menu',
                items: itemsList
            },
            onSelect: function (x) {
                x.cmd();
            }
        };
    }
    return item;
};

theme.formWork_flowsContentData = function(params){
    DOMElement.removeAllChildren(params.ctn);
    var childs = [], x;
    for (var i = 0; i < params.database.work_flows.items.length; i++){
        if (params.groupid != 0 && params.database.work_flows.items[i].groupid != params.groupid) continue;
        if (!params.database.work_flows.items[i].privView) continue;
        x = params.getCellWork_flow(params.database.work_flows.items[i].id);
        childs.push(theme.formWork_flowGetRow(x));
    }
    var list = absol.buildDom({
        tag: "mcabinetlist",
        child: childs
    });
    if (params.inputsearchbox) list.addInputSearch(params.inputsearchbox);
    params.ctn.appendChild(list);
};

theme.formWork_flowsInit = function(params){
    var filterFunc = function(){
        theme.modalFormMobile({
            title: LanguageModule.text("txt_filter"),
            bodycontent: DOMElement.div({
                children: [
                    DOMElement.div({
                        attrs: {
                            className: "card-mobile-label-form-edit-first"
                        },
                        text: LanguageModule.text("txt_work_flow_group")
                    }),
                    group_select
                ]
            })
        });
    };
    var group_select = absol.buildDom({
        tag: "mselectmenu",
        style: {
            display: "block",
            width: "100%"
        },
        props: {
            items: contentModule.getWork_flowGroupsFilterList(params),
            enableSearch: true
        },
        on: {
            change: function(){
                params.filter_change_func();
            }
        }
    });
    var commands = [];
    if (params.cmdbutton.add !== undefined){
        commands.push({
            icon:  DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "add"
            }),
            cmd: params.cmdbutton.add
        });
    }
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "filter_alt"
        }),
        cmd: function(){
            filterFunc();
        }
    });
    commands.push({
        icon:  DOMElement.i({
            attrs: {
                className: "material-icons"
            },
            text: "search"
        }),
        cmd: function(){
            header.searchMode(true);
        }
    });
    var inputsearchbox = absol.buildDom({
        tag: 'searchcrosstextinput',
        style: {
            width: "var(--searchbox-width)"
        },
        props:{
            placeholder: LanguageModule.text("txt_search")
        }
    });
    var header = absol.buildDom({
        tag: 'headerbarwithsearch',
        props: {
            actionIcon: DOMElement.i({
                attrs: {
                    className: "material-icons"
                },
                text: "arrow_back_ios"
            }),
            title: LanguageModule.text("txt_work_flows"),
            commands: commands
        },
        data: {
            searchInput: inputsearchbox
        },
        on: {
            action: params.cmdbutton.close,
            command: function(event){
                event.commandItem.cmd();
            }
        }
    });
    var singlePage = absol.buildDom({
        tag: 'tabframe',
        child:[
            header,
            DOMElement.div({
                attrs: {
                    className: "card-mobile-content"
                },
                children: [params.data_container]
            })
        ]
    });
    singlePage.group_select = group_select;
    singlePage.inputsearchbox = inputsearchbox;
    return singlePage;
};
ModuleManagerClass.register({
    name: "Work_flows_view",
    prerequisites: ["ModalElement"]
});

VaKeR 2022