-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathangular-table-restful.min.js
More file actions
7 lines (6 loc) · 18.2 KB
/
angular-table-restful.min.js
File metadata and controls
7 lines (6 loc) · 18.2 KB
1
2
3
4
5
6
7
/*
angular-table-restful v0.0.1
https://github.com/mateusmcg/angular-table-restful
*/
(function(){"use strict";var a,b,c,d,e,f,g,h,i,j,k={}.hasOwnProperty,l=function(a,b){function c(){this.constructor=a}for(var d in b)k.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};h='<tr ng-show="isEmpty()"><td colspan="100%"><strong class="text-warning"><i18n>No item found.</i18n></strong></td></tr>',j="<div ng-show='isInitialized() && !isEmpty() && getNumberOfPages() > 1' style='margin: 0px;margin-top:10px;'><ul class='pagination'><li ng-class='{disabled: getCurrentPage() <= 0}'><a href='' ng-click='firstPage()'>‹</a></li><li ng-if='pageSequence.data[0] > 0'><a href='' ng-click='stepPage(-atConfig.numberOfPages)'>1</a></li><li ng-if='pageSequence.data[0] > 0'><a href='' ng-click='stepPage(-(pageSequence.data.indexOf(getCurrentPage()) + atConfig.numberOfPagesToShow))'>…</a></li><li ng-class='{active: getCurrentPage() == page}' ng-repeat='page in pageSequence.data'><a href='' ng-click='goToPage(page)'>{{page + 1}}</a></li><li ng-if='pageSequence.data[pageSequence.data.length -1] < getNumberOfPages() - 1'><a href='' ng-click='stepPage(atConfig.numberOfPagesToShow - pageSequence.data.indexOf(getCurrentPage()))'>…</a></li><li ng-if='pageSequence.data[pageSequence.data.length -1] < getNumberOfPages() - 1'><a href='' ng-click='stepPage(getNumberOfPages())'>{{getNumberOfPages()}}</a></li><li ng-class='{disabled: getCurrentPage() >= getNumberOfPages() - 1}'><a href='' ng-click='stepPage(1)'>›</a></li></ul></div>",i="<tr ng-show='isInitialized() && !isEmpty() && getNumberOfPages() > 1' class='at-pagination'><td colspan='100%'>"+j+"</td></tr>",angular.module("angular-table",[]).constant("atTableConfig",{i18nDirective:"",defaultPageSize:10,emptyTableTemplate:""}),a=function(){function a(a,b,c){this.attribute=a.attribute,this.title=a.title,this.sortable=a.sortable,this.width=a.width,this.initialSorting=a.initialSorting,b&&(this.customContent=b.customContent,this.attributes=b.attributes),this.atTableConfig=c}return a.prototype.createElement=function(){var a;return a=angular.element(document.createElement("th")),this.atTableConfig.i18nDirective?a.attr(this.atTableConfig.i18nDirective,""):a},a.prototype.renderTitle=function(a){return a.html(this.customContent||this.title)},a.prototype.renderAttributes=function(a){var b,c,d,e,f;if(this.attributes){for(e=this.attributes,f=[],c=0,d=e.length;d>c;c++)b=e[c],f.push(a.attr(b.name,b.value));return f}},a.prototype.renderSorting=function(a){var b;return this.sortable?(a.attr("ng-click","sort('"+this.attribute+"')"),b=angular.element("<i style='margin-left: 10px;'></i>"),b.attr("ng-class","getSortIcon('"+this.attribute+"')"),a.append(b)):void 0},a.prototype.renderWidth=function(a){return a.attr("width",this.width)},a.prototype.renderHtml=function(){var a;return a=this.createElement(),this.renderTitle(a),this.renderAttributes(a),this.renderSorting(a),this.renderWidth(a),a},a}(),d=function(){function a(a,b,c,d,e,f,g,h){angular.isDefined(c)&&(c=""===c.trim()?h.defaultPageSize:parseInt(c));var i=this;this.scope=a,this.$q=e,this.$filter=g,this.checkedItemsList=[];var j=a.$parent.$eval(b);a.isMemory=!1,"function"==typeof j?j={changeEvent:j}:_.isArray(j)||"undefined"==typeof j?(a.isMemory=!0,j={}):j.checkedKey&&j.checkedFilter&&(a.hasCheck=!0,j=angular.extend(j,{getCheckedItems:function(){return i.saveCheckedItems(),i.checkedItemsList},clearAllCheckedItems:function(){i.checkedItemsList=[]}})),a.atConfig=this.atConfig=angular.extend(j,{itemsPerPage:c,currentPage:0,sortContext:"global",orderBy:"orderBy",listName:a.isMemory?b:"listData",sortList:[],predicates:[],numberOfPages:1,numberOfPagesToShow:d?d:5,getLastPage:function(){return a.sortedAndPaginatedList.totalCount%c===0?this.numberOfPages+1:this.numberOfPages},setSortAndPredicates:function(a,b){this.sortList=a?a:[],this.predicates=b?b:[]},refresh:function(){i.checkedItemsList=[],i.callChangeEvent(0,i.atConfig.itemsPerPage,void 0,function(a){i.setCurrentPage(0),i.atConfig.setSortAndPredicates(),i.setList(a),i.keepItemSelected()})},refreshAndGoToLastPage:function(){i.callChangeEvent(i.atConfig.numberOfPages-1,i.atConfig.itemsPerPage,void 0,function(a){i.setCurrentPage(i.atConfig.numberOfPages-1),i.atConfig.setSortAndPredicates(),i.setList(a),i.keepItemSelected()})},refreshAndKeepCurrentPage:function(){var a=i.atConfig.predicates,b=i.atConfig.sortList;i.callChangeEvent(i.atConfig.currentPage,i.atConfig.itemsPerPage,i.atConfig.predicates,function(c){i.setCurrentPage(i.atConfig.currentPage),i.atConfig.setSortAndPredicates(b,a),i.setList(c),i.keepItemSelected()})},hasData:function(){return i.getList()?i.getList().length>0:!1},clearData:function(){var b=[];b.totalCount=0,a.$eval(i.atConfig.listName+"=value",{value:b})},clearTable:function(){a.$eval(i.atConfig.listName+"=value",{value:null})},getList:function(){return i.getList()?i.getList().slice(0):void 0},checkAllItems:function(a){var b=i.getList();angular.forEach(b,function(b){i.atConfig.checkItem(b,a)})},prepareData:j.prepareData?j.prepareData:function(a){var b=a;return!_.isArray(a)&&a.pageItems&&a.pageNo&&a.totalCount>=0&&(b=[],b=a.pageItems,b.totalCount=a.totalCount,b.pageNo=a.pageNo),b}}),a.isMemory||a.$parent.$eval(b+"=value",{value:this.atConfig})}return a.prototype.getList=function(){return this.scope.$eval(this.atConfig.listName)},a.prototype.getTotalCount=function(){var a=this.getList();return a?this.atConfig.changeEvent?a.totalCount:a.length:void 0},a.prototype.setList=function(a){this.scope.$eval(this.atConfig.listName+"=list",{list:a})},a.prototype.getSortList=function(){return this.atConfig.sortList},a.prototype.setSortList=function(a){return this.atConfig.sortList=a},a.prototype.setPredicates=function(a){return this.atConfig.predicates=a},a.prototype.getPredicates=function(){return this.atConfig.predicates},a.prototype.callChangeEvent=function(a,b,c,d){var e=this,f=this.$q.defer();f.promise.then(function(b){var c=e.atConfig.prepareData(b);c&&!c.pageNo&&(c.pageNo=a+1),d(c)}),this.atConfig.changeEvent({pageNo:a+1,pageSize:b,sort:c},f)},a.prototype.getItemsPerPage=function(){return this.atConfig.itemsPerPage},a.prototype.getCurrentPage=function(){return this.atConfig.currentPage},a.prototype.getSortContext=function(){return this.atConfig.sortContext},a.prototype.setCurrentPage=function(a){return this.atConfig.currentPage=a},a.prototype.getOrderBy=function(){return this.atConfig.orderBy},a.prototype.getOrderBy=function(){return this.atConfig.orderBy},a.prototype.getNumberOfPages=function(){return this.atConfig.numberOfPages},a.prototype.setNumberOfPages=function(a){return this.atConfig.numberOfPages=a},a.prototype.getNumberOfPagesToShow=function(){return this.atConfig.numberOfPagesToShow},a.prototype.keepItemSelected=function(){var a=this.atConfig?this.atConfig.selectedItem:void 0;a&&(angular.forEach(this.getList(),function(b){b.id&&a.id&&b.id==a.id&&(a=b)}),this.atConfig.selectedItem=a)},a.prototype.saveCheckedItems=function(){var a=this,b=this.getList(),c=this.atConfig.checkedFilter(),d=this.atConfig.checkedKey();angular.forEach(b,function(b){var c=_.findIndex(a.checkedItemsList,function(a){return a[d]===b[d]});-1!==c&&a.checkedItemsList.splice(c,1)});var e=this.$filter("filter")(b,c);a.checkedItemsList=_.union(a.checkedItemsList,e)},a.prototype.applyCheckedItems=function(){var a=this,b=this.getList(),c=this.atConfig.checkedKey();angular.forEach(b,function(b){var d=_.find(a.checkedItemsList,function(a){return a[c]===b[c]});if(void 0!==d){delete d.$$hashKey;var e=Object.getOwnPropertyNames(d),f=Object.getOwnPropertyNames(b),g=_.difference(e,f);angular.forEach(g,function(a){b[a]=d[a]})}})},a}(),g=function(){function b(a,b,c){this.tableElement=a,this.attributes=b,this.id=this.attributes.id,this.paginated=null!=this.attributes.atPaginated,this.list=this.attributes.atTable,this.atChange=this.attributes.atChange,this.atTableConfig=c,this.createColumnConfigurations()}return b.prototype.capitaliseFirstLetter=function(a){return a?a.charAt(0).toUpperCase()+a.slice(1):""},b.prototype.extractWidth=function(a){var b;return b=/([0-9]+px)/i.exec(a),b?b[0]:""},b.prototype.isSortable=function(a){var b;return b=/(sortable)/i.exec(a),b?!0:!1},b.prototype.getInitialSorting=function(a){var b;if(b=a.attr("at-initial-sorting")){if("asc"===b||"desc"===b)return b;throw"Invalid value for initial-sorting: "+b+". Allowed values are 'asc' or 'desc'."}return void 0},b.prototype.collectHeaderMarkup=function(a){var b,c,d,e,f,g,h;for(b={},d=a.find("tr"),e=a.find("thead"),h=d.find("th"),f=0,g=h.length;g>f;f++)c=h[f],c=angular.element(c),b[c.attr("at-attribute")]={customContent:c.html(),attributes:c[0].attributes},e.is("[at-ignore-header]")||c.remove();return b},b.prototype.collectBodyMarkup=function(a){var b,c,d,e,f,g,h,i,j,k;for(c=[],k=a.find("td"),i=0,j=k.length;j>i;i++)f=k[i],f=angular.element(f),"false"!==a.attr("at-ellipsis")&&f.addClass("text-ellipsis"),b=f.attr("at-attribute"),g=f.attr("at-title")||this.capitaliseFirstLetter(f.attr("at-attribute")),e=void 0!==f.attr("at-sortable")||this.isSortable(f.attr("class")),h=this.extractWidth(f.attr("width")?f.attr("width"):f.attr("class")),d=this.getInitialSorting(f),c.push({attribute:b,title:g,sortable:e,width:h,initialSorting:d});return c},b.prototype.createColumnConfigurations=function(){var b,c,d,e,f;for(c=this.collectHeaderMarkup(this.tableElement),b=this.collectBodyMarkup(this.tableElement),this.columnConfigurations=[],e=0,f=b.length;f>e;e++)d=b[e],this.columnConfigurations.push(new a(d,c[d.attribute],this.atTableConfig))},b}(),e=function(){function a(){}return a.prototype.setupTr=function(a,b){var c,d;return c=a.find("tbody"),d=c.find("tr"),d.attr("ng-repeat",b),c},a}(),c=function(a){function c(){}return l(c,a),c.prototype.compile=function(a){var b=a.attr("track-by")||"";b&&""!==b.trim()?(b.trim().indexOf("$")<0&&b.trim().indexOf("item.")<0&&(b="item."+b),this.setupTr(a,"item in sortedAndPaginatedList track by "+b)):this.setupTr(a,"item in sortedAndPaginatedList")},c.prototype.link=function(a,c,e,f,g,h,i){var j,k,l,m,n,o=!1;l=new d(a,e.atTable,e.atPaginated,e.atPagesToShow,g,h,f,i),j=function(a,b,c,d,e,f,g){var h,i;return a?(i=a,c&&(h=c*b-a.length),"global"===e?(f.length>0&&(i=g(d)(i,f)),c&&(i=g("limitTo")(i,h),i=g("limitTo")(i,c))):(c&&(i=g("limitTo")(i,h),i=g("limitTo")(i,c)),f.length>0&&(i=g(d)(i,f))),i):[]},m=function(a,b,c){return a=Math.max(b,a),Math.min(c,a)},k=function(){if(l.getList()?a.atConfig.changeEvent?a.sortedAndPaginatedList=l.getList():a.sortedAndPaginatedList=j(l.getList(),l.getCurrentPage(),l.getItemsPerPage(),l.getOrderBy(),l.getSortContext(),l.getPredicates(),f):a.sortedAndPaginatedList=null,l.getItemsPerPage()){var b,c,d;d=l.getTotalCount();var e;return d>0?(b=Math.ceil(d/l.getItemsPerPage()),c=b>=l.getNumberOfPagesToShow()?l.getNumberOfPagesToShow():b,l.setNumberOfPages(b),a.pageSequence.resetParameters(0,b,c),l.setCurrentPage(m(l.getCurrentPage(),0,l.getNumberOfPages()-1)),e=l.getCurrentPage()):(l.setNumberOfPages(1),a.pageSequence.resetParameters(0,1,1),l.setCurrentPage(0),e=0),n(),h.$broadcast("Angular-Table-Restful.TableUpdated",l.atConfig),a.pageSequence.realignGreedy(e)}n(),h.$broadcast("Angular-Table-Restful.TableUpdated",l.atConfig)},n=function(){if(a.hasCheck&&"function"==typeof l.atConfig.onAllChecked){var b=l.getList();if(b&&0!==b.length){var c=f("filter")(b,l.atConfig.checkedFilter()),d=c.length===b.length&&0!==c.length;d!==o&&(l.atConfig.onAllChecked(d),o=d)}else o&&(l.atConfig.onAllChecked(!1),o=!1)}},a.isInitialized=function(){return!angular.isUndefined(l.getList())&&!angular.isUndefined(l.getTotalCount())},a.isEmpty=function(){return a.isInitialized()&&l.getTotalCount()<1},a.getNumberOfPages=function(){return l.getNumberOfPages()},a.getCurrentPage=function(){return l.getCurrentPage()},a.sort=function(b){if(l.getSortList()){var c=[];c=c.concat(l.getSortList());var d=_.find(c,function(a){return a.predicate===b});if(d)if(d.descending)d.descending=!1;else{var e=c.indexOf(d);c.splice(e,1)}else c.push({predicate:b,descending:!0});var f=[];angular.forEach(c,function(a){a.descending?f.push("-"+a.predicate):f.push(a.predicate)}),a.atConfig.changeEvent?(0!==l.getCurrentPage()&&l.setCurrentPage(0),a.hasCheck&&l.saveCheckedItems(),l.callChangeEvent(l.getCurrentPage(),l.getItemsPerPage(),f,function(b){l.setSortList(c),l.setPredicates(f),l.setList(b),l.keepItemSelected(),a.hasCheck&&l.applyCheckedItems()})):(l.setSortList(c),l.setPredicates(f),0!==l.getCurrentPage()?l.setCurrentPage(0):k())}},a.stepPage=function(b){b=parseInt(b),b=m(l.getCurrentPage()+b,0,l.getNumberOfPages()-1),a.atConfig.changeEvent?(a.hasCheck&&l.saveCheckedItems(),l.callChangeEvent(b,l.getItemsPerPage(),l.getPredicates(),function(c){a.pageSequence.realignGreedy(b),l.setCurrentPage(b),l.setList(c),l.keepItemSelected(),a.hasCheck&&l.applyCheckedItems()})):(a.pageSequence.realignGreedy(b),l.setCurrentPage(b))},a.firstPage=function(){return a.stepPage(-1)},a.goToPage=function(b){return a.atConfig.changeEvent?(a.hasCheck&&l.saveCheckedItems(),void l.callChangeEvent(b,l.getItemsPerPage(),l.getPredicates(),function(c){l.setCurrentPage(b),l.setList(c),l.keepItemSelected(),a.hasCheck&&l.applyCheckedItems()})):l.setCurrentPage(b)},a.pageSequence=new b,a.atConfig.changeEvent||a.$watch("atConfig.currentPage",function(a,b){return a!==b?k():void 0}),a.$watch("atConfig.itemsPerPage",function(b,c){if(b!==c){if(!a.atConfig.changeEvent)return k();l.callChangeEvent(l.getCurrentPage(),b,l.getPredicates(),function(a){l.setItemsPerPage(b),l.setList(a),l.keepItemSelected()})}}),a.atConfig.changeEvent||a.$watch("atConfig.sortContext",function(a,b){return a!==b?k():void 0}),a.isMemory&&(a.$watchCollection(e.atTable,function(a,b){a!==b&&k()}),a.$watch(e.atTable,function(a,b){a!==b&&h.$broadcast("Angular-Table-Restful.ListChanged",l.atConfig)},!0)),a.isMemory||(a.$watch("listData",function(a,b){a!==b&&k()},!0),(a.atConfig.loadOnStartup||angular.isDefined(e.atLoadOnStartup))&&setTimeout(function(){l.callChangeEvent(0,l.getItemsPerPage(),void 0,function(a){l.setList(a),l.keepItemSelected()})},1)),k()},c}(e),f=function(){function a(a,b,c){this.element=a,this.tableConfiguration=b,this.atTableConfig=c}return a.prototype.constructHeader=function(){var a,b,c,d,e;for(b=this.element.find("thead > tr"),0===b.length&&(b=angular.element(document.createElement("tr"))),e=this.tableConfiguration.columnConfigurations,c=0,d=e.length;d>c;c++)a=e[c],b.append(a.renderHtml());return b},a.prototype.setupHeader=function(){var a,b;return b=this.element.find("thead"),0===b.length&&(b=$("<thead></thead>"),this.element.prepend(b)),b.is("[at-ignore-header]")||(a=this.constructHeader()),this.element.hasClass("table")||this.element.addClass("table table-bordered table-striped table-responsive table-hover"),b.append(a)},a.prototype.setupFooter=function(){var a=this.element.find("tfoot");0===a.length&&(a=$("<tfoot></tfoot>"),this.element.append(a));var b;if(b=this.atTableConfig.emptyTableTemplate?this.atTableConfig.emptyTableTemplate:h,this.atTableConfig.i18nDirective&&(b=b.replace(/i18n/g,this.atTableConfig.i18nDirective)),a.append(b),this.tableConfiguration.paginated)if("false"===this.element.attr("at-scroll"))a.append(i);else{var c=angular.element(j);c.addClass("scrolled-pagination"),a.append(c)}},a.prototype.getSetup=function(){return new c},a.prototype.compile=function(){return this.setupHeader(),this.setupFooter(),this.setup=this.getSetup(),this.setup.compile(this.element)},a.prototype.setupInitialSorting=function(a){var b,c,d,e,f;for(e=this.tableConfiguration.columnConfigurations,f=[],c=0,d=e.length;d>c;c++)if(b=e[c],b.initialSorting){if(!b.attribute)throw"initial-sorting specified without attribute.";f.push(a.descending="desc"===b.initialSorting),a.sort(b.attribute)}else f.push(void 0);return f},a.prototype.post=function(a,b,c,d,e,f,g){a.getSortIcon||(a.getSortIcon=function(b){var c;return a.atConfig.sortList&&a.atConfig.sortList.length>0&&(c=_.find(a.atConfig.sortList,function(a){return a.predicate===b})),c?c.descending?"glyphicon glyphicon-chevron-down":"glyphicon glyphicon-chevron-up":"glyphicon glyphicon-minus"});var h=this.setup.link(a,b,c,d,e,f,g);return this.setupInitialSorting(a),h},a}(),b=function(){function a(a,b,c,d){if(this.lowerBound=null!=a?a:0,this.upperBound=null!=b?b:1,null==c&&(c=0),this.length=null!=d?d:1,this.length>this.upperBound-this.lowerBound)throw"sequence is too long";this.data=this.generate(c)}return a.prototype.generate=function(a){var b,c,d,e;for(a>this.upperBound-this.length?a=this.upperBound-this.length:a<this.lowerBound&&(a=this.lowerBound),e=[],b=c=a,d=parseInt(a)+parseInt(this.length)-1;d>=a?d>=c:c>=d;b=d>=a?++c:--c)e.push(b);return e},a.prototype.resetParameters=function(a,b,c){if(this.lowerBound=a,this.upperBound=b,this.length=c,this.length>this.upperBound-this.lowerBound)throw"sequence is too long";return this.data=this.generate(this.data[0])},a.prototype.relocate=function(a){var b;return b=this.data[0]+a,this.data=this.generate(b,b+this.length)},a.prototype.realignGreedy=function(a){var b;return-1===this.data.indexOf(a)?(b=a,this.data=this.generate(b)):void 0},a.prototype.realignGenerous=function(a){},a}(),angular.module("angular-table").directive("atTable",["$filter","$q","$rootScope","$compile","atTableConfig",function(a,b,c,d,e){return{restrict:"AC",scope:!0,compile:function(d,h){var i,j,k=angular.element(d.find("tbody").find("tr"));return"ng-click"in k[0].attributes?k[0].attributes["ng-click"].value=k[0].attributes["ng-click"].value.concat("; markSelected(item)"):k.attr("ng-click","markSelected(item)"),k.attr("ng-class","{'table-selected-row' : item == atConfig.selectedItem}"),j=new g(d,h,e),i=new f(d,j,e),i.compile(),{post:function(d,f,g){if(i.post(d,f,g,a,b,c,e),d.markSelected=function(a){return this.atConfig.selectedItem!==a?void(this.atConfig.selectedItem=a):void(this.atConfig.selectedItem=void 0)},"false"!==g.atScroll){var h=angular.element('<div class="table-scroll"></div>');f.before(h),h.append(f);var j=f.find(".scrolled-pagination");j.insertAfter(h).addClass("text-center");var k=function(){var a=h,b=j;h=null,j=null,a&&a.remove(),b&&b.remove()};d.$on("$destroy",function(){k()}),f.on("$destroy",function(){k()})}}}}}}]),angular.module("angular-table").directive("atAttribute",[function(){return{restrict:"A",compile:function(a,b){var c;if(c=a.attr("at-attribute"),!c)throw"at-attribute specified without value: "+a.html();return 0===a.children().length?b.atFilter?a.append("{{item."+c+" | "+b.atFilter+"}}"):a.append("{{item."+c+"}}"):void 0}}}])}).call(this);
//# sourceMappingURL=angular-table-restful.min.map