mobilemode.api.refresh_wev8.js 3.25 KB
define("mApi/refresh",["mobilebone","mUtil","Component","pageStack"],function(d,s,f,c){var g=["List","UrlList","LargeList","APIList","Timelinr","GridTable","UrlGridTable","RSSList","NList"],l=function(e){var t="[id='"+e+"']",r=document.querySelectorAll(t),n=function(e,r){var t=e.closest(".tabpanel");return t.length?t[0].id:r};if(1===r.length)return $(r[0]).closest("."+d.classPage).attr("id");var a,i=s.getCurrentPageId(),o=$(t,$("#"+i));return o.length?n(o,i):(c.getAllPrevPages().reverse().every(function(e){var r=$(t,$("#"+e.id));if(!r.length)return!0;a=n(r,e.id)}),a)};return{refresh:function(e,t,r){var n=require("mobilemode"),a=e?s.getPageId(e):s.getCurrentPageId(),i=document.getElementById(a);if(i){s.isFunction(t)&&(r=t,t={});var o=s.getPageParam(a);t=$.extend({},o,t),t=Object.keys(t).map(function(e,r){return e+"="+t[e]}).join("&"),n.pageInit(i,null,{formdata:t,isrefresh:!0,onPageLoad:r})}},refreshList:function(e,r,t){var n=l(e),a=$("#"+n).find("[id='"+e+"']");s.isFunction(r)&&(t=r,r="");var i=s.strToParamJSON(r);if("false"==a.attr("data-loaded"))return this.triggerRefresh(e,i,t);var o=f.getInstance(e,n);if(!o)return s.console.error("未找到指定id的列表插件:"+e);o.reload(i,t)},refreshPrevPageList:function(e,t,n){var r=c.getPrevPage();if(r){var a=r.id,i=function(e){var r=f.getInstance(e,a);r&&s.isFunction(r.reload)&&r.reload(s.strToParamJSON(t),n)};if(!e){var o=$(r),d="";return g.forEach(function(e){d&&(d+=","),d+="abbr[data-type='"+e+"']"}),void o.find(d).each(function(){i(this.id)})}s.isFunction(t)&&(n=t,t=""),i(e)}},refreshSpecifiedList:function(e,r,t,n){if(s.isFunction(r)&&(n=r,t=r=""),s.isFunction(t)&&(n=t,t=""),-1!=e.indexOf(".")&&(e=e.replace(".","_")),e=s.getPageId(e),!r){var a=$("#"+e);if(0==a.length)return void s.console.error("未找到id为"+e+"的页面,请检查参数设置是否正确");var i="";g.forEach(function(e){i&&(i+=","),i+="abbr[data-type='"+e+"']"});var o=a.find(i)[0];if(o&&(r=o.id),!r)return void s.console.error("在id为"+e+"的页面未找到列表组件,请检查参数设置是否正确")}var d=f.getInstance(r,e);if(d){var c=s.strToParamJSON(t);d.reload(c,n)}else s.console.error("在页面"+e+"中未找到指定id的列表插件:"+r)},triggerRefresh:function(n,e,a){var r=l(n),i=$("#"+r),t=i.find("[id='"+n+"']");if(t.length){t.data("loaded",!1).html(""),s.isFunction(e)&&(a=e,e={});var o=s.getCurrPageParam(),d=t.attr("data-type");$.extend(o,e),$.when(s.getComponentOpt(n,r),s.getComponent(d)).then(function(e,r){var t=new r({el:n,type:d,option:e,container:i});t.render().then(function(){t.$el.data("loaded",!0);try{a&&a(n)}catch(e){console.error(e)}})})}},triggerLazyLoad:function(e,r,t){var n=l(e),a=$("#"+n).find("[id='"+e+"']"),i=a.data("lazyload"),o=a.data("loaded");1==i&&!0!==o&&this.triggerRefresh(e,r,t)},refreshRemind:function(n,e){n=void 0===n?s.getCurrentPageId():32==n.length?l(e=n):s.getPageId(n);var r=[];if(e)r.push(e);else{var t=$("#"+n),a=t.children(".page-header"),i=t.children(".page-content"),o=t.children(".page-footer");$(a.find(".wev-badge").concat(i.children(".page-scroller").find(".wev-badge"),o.find(".wev-badge"))).each(function(){var e=$(this).closest("abbr").attr("id");-1==r.toString().indexOf(e)&&r.push(e)})}$.each(r,function(e,r){var t=f.getInstance(r,n);try{t.refreshBadge()}catch(e){s.console.error(e)}})}}});