/**
 * Created by Tony on 2017/6/26.
 */
'use strict'
const PRE_PAGE_OFFSET = 150;
const NEXT_PAGE_OFFSET = 160;
const FIRST_PAGE_OFFSET = 50;
const LAST_PAGE_OFFSET = 60;
const WAIT_TIME_EXPORT = 300000;
let fontSuffixMapObj = {"表标题": "title", "列标题": "column", "正文内容": "content", "合计": "summary", "表眉/表脚": "header_footer"};
let rptTplObj = {
    hasInitialized: false,
    project_tree: null,
    pdfFont: {'SmartSimsun': [], 'simhei': [], 'simkai': []},
    iniPage: function() {
        let me = this;
        if (!me.hasInitialized) {
            zTreeOprObj.getCustomerCfg();
            zTreeOprObj.getReportTemplateTree();
            me.hasInitialized = true;
            let canvas = document.getElementById("rptCanvas");
            canvas.onclick = canvasOprObj.canvasOnClick;
            canvas.onmousemove = canvasOprObj.canvasOnMouseMove;
            if (JpcJsPDFHelper.doc === null) {
                JpcJsPDFHelper.initialize('p', 'pt', 'a4');
            }
            //收集本单位工程所属的建设项目下所有单位工程id用
            me.project_tree = tree_Data_Helper.buildTreeNodeDirectly(JSON.parse(sessionStorage.getItem('projects_tree_data')), false);
            console.log(me.getAllPrjIds());
            // projectObj.project.projectInfo.ID
            // dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js');
            // dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js', me.pdfFontSimsunCallBack);
        }
    },
    
    getAllPrjIds: function() {
        let me = this;
        let rst = [];
        if (me.project_tree) {
            const _chkIfHasCurrentPrjId = function(nodeItem) {
                let chkRst = (nodeItem.ID === projectObj.project.projectInfo.ID);
                if (!chkRst && nodeItem.items && nodeItem.items.length > 0) {
                    for (const subItem of nodeItem.items) {
                        chkRst = _chkIfHasCurrentPrjId(subItem);
                        if (chkRst) {
                            break;
                        }
                    }
                }
                return chkRst;
            };
            const _retrievAllDtlPrjIds = function(parentNode) {
                if (parentNode.items === null || parentNode.items === undefined || parentNode.items.length === 0) {
                    rst.push(parentNode.ID);
                } else {
                    for (const subNode of parentNode.items) {
                        _retrievAllDtlPrjIds(subNode);
                    }
                }
            };
            for (let topNode of me.project_tree) {
                if (_chkIfHasCurrentPrjId(topNode)) {
                    _retrievAllDtlPrjIds(topNode);
                    break;
                }
            }
        }
        return rst;
    },
    pdfFontSimsunCallBack: function() {
        rptTplObj.pdfFont['SmartSimsun'].push('normal');
        rptTplObj.pdfFont['SmartSimsun'].push('bold');
    },
    pdfFontSimkaiCallBack: function() {
        rptTplObj.pdfFont['simkai'].push('normal');
        rptTplObj.pdfFont['simkai'].push('bold');
    },
    pdfFontSimheiCallBack: function() {
        rptTplObj.pdfFont['simhei'].push('normal');
        rptTplObj.pdfFont['simhei'].push('bold');
    }
}
let zTreeOprObj = {
    treeObj: null,
    currentNode: null,
    checkedRptTplNodes: null,
    currentRptPageRst: null,
    reportPageCfg: null,
    defReportPageCfg: null,
    currentPage: 1,
    maxPages: 0,
    countChkedRptTpl: function () {
        let me = zTreeOprObj;
        if (me.treeObj) {
            me.checkedRptTplNodes = [];
            let chkNodes = me.treeObj.getCheckedNodes(true), cnt = 0, hasCurrentNode = false;
            for (let node of chkNodes) {
                if (node.nodeType === TPL_TYPE_TEMPLATE) {
                    cnt++;
                    me.checkedRptTplNodes.push(node);
                    if (me.currentNode === node) hasCurrentNode = true;
                }
            }
            if (!hasCurrentNode && cnt === 0 && me.currentNode !== null) {
                //这里根据实际需求再做处理
                cnt++;
                me.checkedRptTplNodes.push(me.currentNode);
            }
            $("#export_div").find("span").each(function(cIdx,elementSpan){
                elementSpan.innerText = cnt;
            });
            $("#print_div").find("span").each(function(cIdx,elementSpan){
                elementSpan.innerText = cnt;
            });
        }
    },
    getReportTemplateTree: function() {
        let me = zTreeOprObj, params = {};
        params.engineerId = projectObj.project.projectInfo.property.engineering;
        let private_chk_hide = function (chkTplItem) {
            //考虑未来拓展,统一在此判断报表模板是否显示
            let rst = false;
            if (chkTplItem.hasOwnProperty('flags') && chkTplItem.flags.hasOwnProperty('taxType') && chkTplItem.flags['taxType'] !== null &&
                parseInt(chkTplItem.flags['taxType']) !== parseInt(projectObj.project.projectInfo.property.taxType)) {
                rst = true;
            }
            return rst;
        };
        // projectObj.project.projectInfo.property.taxType === 1 //1: 一般计税 2: 简易计税
        CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
            let private_remove_hide_item = function (items) {
                if (items && items.length > 0) {
                    for (let i = items.length - 1; i >= 0; i--) {
                        if (!(items[i].released) && items[i].nodeType === 2) {
                            items.splice(i, 1);
                        } else if(private_chk_hide(items[i])) {
                            items.splice(i, 1);
                        } else {
                            if (items[i].items && items[i].items.length > 0) {
                                private_remove_hide_item(items[i].items);
                            }
                        }
                    }
                }
            }
            private_remove_hide_item(result);
            for (let topNode of result) {
                if (topNode.userId === "-100") {
                    topNode.name = topNode.name + " - 标准报表";
                } else {
                    topNode.name = topNode.name + " - 定制报表";
                }
            }
            zTreeHelper.createTreeDirectly(result, rpt_tpl_setting, "rptTplTree", me);
            me.refreshNodes();
        }, null, null);
    },
    getCustomerCfg: function() {
        let me = zTreeOprObj, params = {};
        params.engineerId = projectObj.project.projectInfo.property.engineering;
        CommonAjax.postEx("report_tpl_api/getCustomizeCfg", params, 20000, true, function(result){
                if (result) {
                    me.defReportPageCfg = result[0];
                    me.reportPageCfg = result[1];
                    me.iniFontCfgDom(me.reportPageCfg);
                    me.renderRptCfg(result[1]);
                } else {
                    me.reportPageCfg = null;
                    me.defReportPageCfg = null;
                }
            }, null, null
        );
    },
    iniFontCfgDom: function (cfg) {
        for (let font of cfg.fonts) {
            let domArrs = [];
            let fontPropSuffix = fontSuffixMapObj[font.CfgDispName];
            domArrs.push("
");
            //1. label
            domArrs.push("
" + font.CfgDispName + "
");
            //2. font name
            domArrs.push("
");
            domArrs.push("");
            domArrs.push("
");
            //3. font height
            domArrs.push("
");
            domArrs.push("");
            domArrs.push("
");
            //4. font bold italic underline
            domArrs.push("
");
            domArrs.push("
");
            domArrs.push("
");
            domArrs.push("
");
            domArrs.push("
");
            //
            domArrs.push("