pageExpandHelper.js 2.74 KB
define(['mUtil'], function (mUtil) {
    var appendListExpandBtns = function ($btnWrapper, expandBtns, cfg) {
        if (!mUtil.isArray(expandBtns) || (mUtil.isArray(expandBtns) && expandBtns.length == 0)) return;

        var btnMap = {};
        expandBtns.map(function (ele) {
            ele.id = mUtil.UUID();
            btnMap[ele.id] = ele;
        });
        cfg.btnMap = btnMap;

        var $btnList = $btnWrapper.find(".wev-list-btn-container");
        if (!$btnList.length) {
            $btnList = $('<div class="wev-list-btn-container"></div>');
            $btnWrapper.append($btnList);
        }

        var templateHtml = ['{@each btns as btn, index}',
            '<button class="btn ${btn.className}" data-id="${btn.id}">$${btn.text}</button>',
            '{@/each}'].join('');

        var html = mUtil.parseTemplate(templateHtml, {btns : expandBtns});
        $btnList.append(html);
        events($btnWrapper, cfg);
    };

    var events = function ($btnWrapper, cfg) {
        var pageid = cfg.pageid,
            pluginid = cfg.pluginid,
            btnMap = cfg.btnMap;
            instance = mUtil.getInstance(pluginid, pageid);
        $(".wev-list-btn-container", $btnWrapper).on("click", ".btn.wev-btn-expand", function () {
            var btnId = $(this).data("id"),
                btnObj = btnMap[btnId];
            var billids, interfaceurl;

            var cfg = {
                pageid: pageid,
                resourceType: btnObj.resourceType,
                remindMsg: btnObj.remindMsg,
                callback: btnObj.callback
            };
            mUtil.isFunction(instance.getCheckedData) && instance.getCheckedData(function (result) {
                billids = result.reduce(function (prev, curr) {
                    return prev + "," + curr.id;
                }, "");
                interfaceurl = btnObj.interfaceurl && billids ? btnObj.interfaceurl + "&billids=" + billids.substring(1) : "";
            });
            Mobile_NS.doPageExpand(interfaceurl, btnObj.click, cfg);
        })
    };

    return {
        parsePageExpand: function ($btnWrapper, pluginid, cfg) {
            var pageid = cfg.pageid;
            var params = {
                action: "parsePageExpand",
                pageid: pageid.substring(pageid.lastIndexOf("_") + 1)
            };
            params = $.extend(cfg, mUtil.getPageParam(pageid), params);
            var actionUrl = mUtil.getActionUrl("service.FormComponent", params, pageid);
            mUtil.getJSON(actionUrl, function(result){
                var expandBtns = result.data.btns || [];
                appendListExpandBtns($btnWrapper, expandBtns, {
                    pluginid: pluginid,
                    pageid: pageid
                });
            });
        }
    };
});