magix-components
Version:
1 lines • 2.44 kB
JavaScript
define("mx-table/sticky",["magix","$"],function(e,_,t){var i=e("magix"),n=e("$");t.exports=i.View.extend({init:function(e){var _=this;_.__e_=50;var t=n("#"+_.id).parents("bP"),i=n("#inmain");t.length||i.length||(i=n(window),_.__e_=0);var o=t.parent(),r=function(){_.__ea(o)},s=function(){_.__ea(i)};_.on("destroy",function(){o.off("scroll",r),i.off("scroll",s)}),o.on("scroll",r),i.on("scroll",s),_.__ex=o,_.__ey=t,_.__eb=i,_.__ez=e.zIndex},__ee:function(){var e=this,_=n("#"+e.id).find("table"),t=_.find("thead"),i=t.find("tr").last(),o=_.find("tbody>tr").eq(0),r="ph_"+e.id,s=n("#"+r),a=i.find("th"),d=o.find("td");d.length&&d.length==a.length&&(s.length||(s=n("<caption />").css({border:"solid 1px "+_.css("border-color")}).insertBefore(t).attr("id",r)),t.css({position:"absolute",background:"#fff",zIndex:e.__ez||1})),e.__eA="abs",e.__ec=s,e.__h=_,e.__ed=t,e.__eB=o,e.__eC=d,e.__eD=a},__ei:function(){var e=this,_=n.now();if(!e.__ef||e.__ef+3e3<_){e.__ef=_;var t=e.__h,i=void 0,o=void 0;i=e.__ey.length?t.position().top+parseInt(e.__ey.css("top"),10):e.__e_?t.offset().top+e.__eb.scrollTop()-e.__e_:t.offset().top,o=t.height();var r=t.find("tfoot"),s=0;return r.length&&(s=r.height()),e.__eg={min:i,max:i+o-e.__eh-s}}return e.__eg},render:function(){var e=this;e.__ee(),e.__eE(),e.__ej(),e.__ea(e.__ex)},__ej:function(){var e=this,_=e.__ed,t=e.__ec,i=_.height();i!=e.__eh&&("abs"==e.__eA&&_.css({marginTop:-i}),t.css("height",i),e.__eh=i)},__eE:function(){var e=this;e.__ed.width(e.__eB.width()-1);var _,t=e.__eC,i=e.__eD;t.length>0&&t.length==i.length&&(t.each(function(e,t){t=n(t);var o=(_=n(i[e])).attr("width");o?(_.removeAttr("width"),t.attr("width",o)):(o=_.attr("style"))&&(_.removeAttr("style"),t.attr("style",o))}),t.each(function(e,t){t=n(t),(_=n(i[e])).children("div").length||_.wrapInner("<div/>"),_.children("div").width(t.width())}))},__ea:function(e){var _=this;e||(e=_.__eb);var t=e.scrollTop(),i=_.__ei();if(t>i.min&&t<i.max){if("fixed"!=_.__eA){var n=_.__ex;_.__eA="fixed",_.__ed.css({position:"fixed",top:n&&n.length?0:_.__e_,marginTop:"auto"})}}else"abs"!=_.__eA&&(_.__eA="abs",_.__ed.css({marginTop:-_.__eh,position:"absolute",top:"auto"}))},"$win<resize>":function(){this.__eE(),this.__ej()},"$doc<htmlchanged,navslidend>":function(e){var _=this;(i.inside(e.target,_.id)||"navslidend"==e.type)&&(clearTimeout(_.__ew),_.__ew=setTimeout(function(){_.__ee(),_.__eE(),_.__ej(),delete _.__ef,_.__ea(_.__ex)},0))}})});