UNPKG

uxrocket.treelist

Version:
7 lines 4.63 kB
/*! UX Rocket Treelist * Tree view in tables * @author Bilal Cinarli <bcinarli@gmail.com> (https://github.com/bcinarli) * @version 0.2.0 * @build Sun Oct 04 2015 16:52:53 GMT+0300 (EEST) */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports&&"function"==typeof require?jQuery:jQuery)}(function(e){"use strict";var t,a="uxrTreelist",s={header:"",content:"",toggle:"",onReady:!1,onRemove:!1},n={click:"click.uxrTreelist",ready:"uxrready.uxTreelist",collapsed:"uxrcollapsed.uxTreelist",expanded:"uxrexpanded.uxTreelist",leafcollapsed:"uxrleafcollapsed.uxrTreelist",remove:"uxrremove.uxTreelist"},i={prefix:"uxr-",rocket:"uxRocket",data:a,name:"treelist",id:"uxrtl-id",parent:"uxrtl-parent",leaves:"uxrtl-leaves",classes:{ready:"ready",header:"header",toggle:"toggle",expanded:"expanded",collapsed:"collapsed",content:"content"}},o=function(t,n,i){this._name=a,this._defaults=s,this.el=t,this.$el=e(t),this.options=e.extend(!0,{},s,n,this.$el.data()),this.selector=i,this.headers=[],this.contents=[],this.init()};e.extend(o.prototype,{init:function(){this.$el.addClass(l.getClassname("ready")),this.$rows=this.$el.find("> thead > tr, > tbody > tr, > tr"),this.prepare(),this.bindUIActions(),this.emitEvent("ready")},prepare:function(){this.getRows(),this.setContents(),this.setHeaders()},getRows:function(){var t=this,a=[];this.$rows.filter("[data-"+i.parent+"]").map(function(s){var n=e(this).data(i.parent);t.contents.push(e(this)),a.indexOf(n)<0&&(a.push(n),t.headers.push(t.$rows.filter("[data-"+i.id+'="'+n+'"]')))})},setHeaders:function(){var e=this,t=e.options.toggle||l.getClassname("toggle");this.headers.map(function(a){var s=e.$el.find("[data-"+i.parent+'="'+a.data(i.id)+'"]');a.addClass(l.getClassname("header")+" "+e.options.header).data(i.leaves,s),a.data("active")===!0&&(a.addClass(l.getClassname("expanded")),s.removeClass(l.getClassname("collapsed"))),0===a.find("> ."+t).length?a.addClass(l.getClassname("toggle")):a.find("> ."+t).addClass(l.getClassname("toggle"))})},setContents:function(){var e=this;this.contents.map(function(t){t.addClass(l.getClassname("content")+" "+l.getClassname("collapsed")+" "+e.options.content)})},bindUIActions:function(){var t=this;t.$el.on(n.click,"."+l.getClassname("toggle"),function(a){a.preventDefault();var s=e(this).is("."+l.getClassname("header"))?e(this):e(this).parent();s.is("."+l.getClassname("expanded"))?t.collapse(s):t.expand(s)}).on(n.ready,function(){t.onReady()}).on(n.remove,function(){t.onDestroy()}).on(n.expanded,"."+l.getClassname("header"),function(){t.onBranchExpanded(this)}).on(n.collapsed,"."+l.getClassname("header"),function(){t.onBranchCollapsed(this)}).on(n.leafcollapsed,"."+l.getClassname("content"),function(){t.onLeafCollapsed(this)})},unbindUIActions:function(){this.$el.off("."+a)},expand:function(e){e.addClass(l.getClassname("expanded")).trigger("uxrexpanded").data(i.leaves).removeClass(l.getClassname("collapsed"))},collapse:function(e){e.removeClass(l.getClassname("expanded")).trigger("uxrcollapsed").data(i.leaves).addClass(l.getClassname("collapsed")).filter("."+l.getClassname("header")).trigger("uxrleafcollapsed")},onReady:function(){l.callback(this.options.onReady)},onBranchExpanded:function(e){this.triggerCallback(e,"expand")},onBranchCollapsed:function(e){this.triggerCallback(e,"collapse")},onLeafCollapsed:function(t){var a=e(t);a.is("."+l.getClassname("header"))&&this.collapse(a)},onDestroy:function(){l.callback(this.options.onRemove)},removeClasses:function(){this.$el.removeClass(l.getClassname("ready"))},destroy:function(){return t.destroy(this.el)},emitEvent:function(e){this.$el.trigger("uxr"+e)},triggerCallback:function(t,a){var s=e(t),n=s.data("on-"+a)||!1;l.callback(n)}});var l={callback:function(e){if("function"==typeof e)e.apply(this);else if(e!==!1){for(var t=/([a-zA-Z._$0-9]+)(\(?(.*)?\))?/.exec(e),a=t[1].split("."),s=t[3]?t[3]:"",n=a.pop(),i=a[0]?window[a[0]]:window,o=1;o<a.length;o++)i=i[a[o]];return i[n](s)}},getStringVariable:function(e){var t;if(e.indexOf(".")>-1){for(var a=e.split("."),s=window[a[0]],n=1;n<a.length;n++)s=s[a[n]];t=s}else t=window[e];return t},getClassname:function(e){return i.prefix+i.name+"-"+i.classes[e]}};t=e.fn.treelist=e.fn.uxrtreelist=e.uxrtreelist=function(t){var a=this.selector;return this.each(function(){e.data(this,i.data)||e.data(this,i.data,new o(this,t,a))})},t.destroy=function(t){var a=e(void 0!==t?t:".uxr-treelist-ready");a.each(function(){var t=e(this),a=t.data(i.data);a.removeClasses("uxr-treelist-ready"),a.unbindUIActions(),t.removeData(i.data)})},t.version="0.3.0",t.settings=s});