remindHelper.js 2.89 KB
define(['mUtil'], function (mUtil) {
    return {
        renderBadge: function (badges, $badges, remindApis) {
            if (!mUtil.isArray(badges) && !mUtil.isString(badges) && isNaN(badges)) return;

            var _render = function (_badges) {
                if (!mUtil.isArray(_badges) && mUtil.isString(_badges)) { 
                    _badges = [_badges];
                }

                _badges.forEach(function (badgeNum, i) {
                    var $badgei = $badges.eq(i);
                    if($badgei.data("api")) return;
                    _renderEl($badgei, badgeNum);
                });
            }, _renderEl = function($badgei, badgeNum){
                if (!badgeNum || badgeNum ==  "0") {
                    $badgei.html("").hide();
                    return;
                }
                if(!isNaN(badgeNum) && Number(badgeNum) > 99){
                    badgeNum = "99+";
                }
                $badgei.html(badgeNum).css("visibility", "visible").show();
            };
            
            var remindApiSize = 0;
            if(mUtil.isArray(remindApis) || mUtil.isObject(remindApis)){
                remindApiSize = mUtil.isArray(remindApis) ? remindApis.length : 1;
                require(["apiHelper"], function(apiHelper){
                    var callApi = function(apiConfig){
                        apiHelper.callApi(apiConfig, {}, function(result){
                            var formats = apiConfig.response.formats;
                            var datas = formats.DATAS ? mUtil.getKeyValue(formats.DATAS, result) : result;
                            if(mUtil.isObject(datas)){
                                try{
                                    datas = JSON.stringify(datas);
                                }catch(e){}
                            }
                            var $selEl = $badges.filter(function(index){
                                if(((apiConfig.uuid ? (apiConfig.uuid + "_") : "") + apiConfig.api.id) == $(this).data("api")){
                                    return this;
                                }
                            });
                            _renderEl($selEl, datas);
                        });
                    };
                    if(mUtil.isArray(remindApis)){
                        remindApis.forEach(function(apiConfig){
                            callApi(apiConfig);
                        });
                    }else{
                        callApi(remindApis);
                    }
                });
            }

            if (mUtil.isString(badges)) {
                var actionUrl = badges;
                if($badges.length <= remindApiSize) return;
                return mUtil.getJSON(actionUrl, function (result) {
                    var _badges = result.data || "";

                    _render(_badges);
                });
            }

            _render(badges);
        }
    };
});