UNPKG

ng-table-async

Version:

ngTable wrapper that offers some basic functionality and abstractions for working with asynchronous tables.

11 lines (10 loc) 8.2 kB
/* * ng-table-async * ngTable wrapper that offers some basic functionality and abstractions for working with asynchronous tables. * @author Andrés Mata Suárez <amatasuarez@gmail.com> * @version 0.0.20 * @link https://andresmatasuarez.github.io/ng-table-async * @license MIT */ (function(){"use strict";angular.module("ngTableAsync",["ngTable"])}).call(this),function(){"use strict";var n,t,a,e;n=angular.module("ngTableAsync"),a=function(n){var t,a,e;return n=angular.element(n),t=n.html(),t?(e=_.isEmpty(n.find("nta-content"))?n:n.find("nta-content"),t="<td>"+e[0].outerHTML+"</td>"):(a=n.attr("content"),t=a?'<td ng-bind="'+a+'"></td>':"<td></td>"),t},e=function(n){var t;return n=angular.element(n),t=_.isEmpty(n.attr("header"))?"":n.attr("header"),t?t='<th ng-bind="'+t+'"></th>':(_.isEmpty(n.find("nta-content"))||(t=n.find("nta-header").html()),t="<th>"+t+"</th>"),t},t=function(n){return{header:e(n),content:a(n)}},n.directive("ngTableAsync",function(){return{restrict:"E",scope:{options:"="},template:function(n,a){var e,l,i,r,s,o,c,u,d,p;return e=n.find("nta-column"),p=_.map(e,t),i=_.map(p,"header"),l=_.map(p,"content"),o=_.last(n.find("nta-no-data")),c=o?o.outerHTML:"<nta-no-data></nta-no-data>",u=_.last(n.find("nta-pager")),d=u?u.outerHTML:"<nta-pager></nta-pager>",r=_.last(n.find("nta-loading")),s=r?r.outerHTML:"<nta-loading></nta-loading>",'<div class="container-fluid nta-container" ng-show="options.headerIfEmpty || tableParams.total()">\n <div class="row">\n <div class="col-md-12">\n\n <div ng-if="options.pagerOnTop">\n '+d+'\n </div>\n\n <div class="nta-content row">\n <div class="panel panel-default">\n <table ng-table="tableParams" class="table ng-table ng-table-responsive nta-table">\n <thead>\n <tr>\n '+i.join(" ")+'\n </tr>\n </thead>\n\n <tbody>\n <tr ng-repeat="item in $data track by $index">\n '+l.join(" ")+'\n </tr>\n\n <tr class="no-data-container" ng-show="!tableParams.total()">\n <td colspan="'+i.length+'">'+c+'</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div ng-show="loading" class="nta-loading-container">\n '+s+'\n </div>\n\n </div>\n\n <div ng-if="options.pagerOnBottom">\n '+d+'\n </div>\n\n </div>\n </div>\n\n</div>\n\n<div class="container-fluid no-data-container" ng-if="!options.headerIfEmpty" ng-show="!tableParams.total()">\n '+c+"\n</div>\n"},controller:["$scope","$element","$q","ngTableAsyncDefaults","NgTableParams",function(n,t,a,e,l){return n.options=_.merge({pagerOnTop:e.PAGER_ON_TOP,pagerOnBottom:e.PAGER_ON_BOTTOM,defaultPage:e.DEFAULT_PAGE,pageSize:e.PAGE_SIZE,headerIfEmpty:e.HEADER_IF_EMPTY},n.options),n.mainScope=n,n.tableParams=new l({page:n.options.defaultPage,count:n.options.pageSize},{getData:function(t){var e,l,i;return n.loading=!0,i=(t.page()-1)*t.count(),e=t.count(),l=n.options.getPage(i,e),l.then||(l=a.all(l)),l.then(function(t){return n.tableParams.total(t[0]),delete n.loading,t[1]})}}),n.$on("ng-table-async:reload",function(){return n.loading=!0,n.tableParams.reload().then(function(){return delete n.loading})})}]}})}.call(this),function(){"use strict";var n;n=angular.module("ngTableAsync"),n.value("ngTableAsyncDefaults",{DEFAULT_PAGE:1,PAGE_SIZE:10,NO_DATA_TEXT:"No available results to show",PAGER_ON_TOP:!1,PAGER_ON_BOTTOM:!0,HEADER_IF_EMPTY:!0,SUPPORTED_VALUES:{NTA_ACTION_SIZE:["xs","sm","lg"],NTA_ACTION_STYLE:["default","primary","success","info","warning","danger","link"]},DEFAULT_VALUES:{NTA_ACTION_SIZE:"",NTA_ACTION_STYLE:"default"},DEFAULT_TEMPLATES:{NTA_ACTION:"/_ng_table_async_action.html",NTA_LOADING:"/_ng_table_async_loading.html",NTA_NO_DATA:"/_ng_table_async_no_data.html",NTA_PAGER:"/_ng_table_async_pager.html"}})}.call(this),function(){angular.module("ngTableAsync").run(["$templateCache",function(n){n.put("/_ng_table_async_action.html",'<button class="btn {{size}} {{style}}" type="button" ng-click="do()"><span ng-if="icon"><span class="{{icon}}"></span><span ng-if="label">&nbsp;</span></span><span ng-bind="label"></span></button>'),n.put("/_ng_table_async_loading.html",'<div class="nta-loading"><div class="nta-loading-loader"><i class="glyphicon glyphicon-refresh nta-loading-spinner"></i></div></div>'),n.put("/_ng_table_async_no_data.html",'<h2 class="text-muted text-center" ng-bind="text"></h2>'),n.put("/_ng_table_async_pager.html",'<div class="text-center"><ul class="pagination ng-table-pagination"><li ng-repeat="page in pages" ng-class="{\'disabled active\': !page.active, \'previous\': page.type == \'prev\', \'next\': page.type == \'next\'}" ng-switch="page.type"><a ng-switch-when="prev" ng-click="params.page(page.number)" href=""><span class="glyphicon glyphicon-chevron-left"></span></a><a ng-switch-when="next" ng-click="params.page(page.number)" href=""><span class="glyphicon glyphicon-chevron-right"></span></a><a ng-switch-when="more" ng-click="params.page(page.number)" href="">...</a><a ng-switch-default="" ng-click="params.page(page.number)" href="">{{ page.number }}</a></li></ul></div>')}])}.call(this),function(){"use strict";var n,t,a=[].indexOf||function(n){for(var t=0,a=this.length;t<a;t++)if(t in this&&this[t]===n)return t;return-1};n=angular.module("ngTableAsync"),t=function(n){var t;return t=n&&n.templateUrl?n:void 0,_.isUndefined(t)||_.isEmpty(t.params)||_.isFunction(t.params)?t:(t.params=function(){_.isEmpty(t.params)},t.params=function(n){if(_.isObject(t.params))return t.params},_.isString(t.params)&&(t.params=function(n){var a;return a={},a[t.params]=n,a}),t.params=function(n,t){return{item:n,index:t}},t)},n.directive("ntaAction",["ngTableAsyncDefaults",function(n){return{restrict:"E",scope:!0,templateUrl:function(t,a){return a.templateUrl&&"undefined"!==a.templateUrl?a.templateUrl:n.DEFAULT_TEMPLATES.NTA_ACTION},controller:["$scope","$attrs","$q","$injector",function(e,l,i,r){var s,o,c,u,d,p,g,m,f,T,A,h;if(c=n,o=e.options.actions[l.action],p=_.isFunction(o)?o:o.method,A=!!_.isUndefined(o.reload)||o.reload,u=t(o.dialog),e.label=l.label,e.icon=l.icon&&"undefined"!==l.icon?l.icon:void 0,f=l.size,a.call(c.SUPPORTED_VALUES.NTA_ACTION_SIZE,f)>=0?e.size="btn-"+l.size:e.size=c.DEFAULT_VALUES.NTA_ACTION_SIZE,T=l.style,a.call(c.SUPPORTED_VALUES.NTA_ACTION_STYLE,T)>=0?e.style="btn-"+l.style:e.style="btn-"+c.DEFAULT_VALUES.NTA_ACTION_STYLE,g=function(n,t){return e.mainScope.loading=!0,i.when().then(function(){return p(n,t)}).then(function(){if(A)return e.tableParams.reload()})["finally"](function(){return delete e.mainScope.loading})},_.isEmpty(o.dialog))h=g;else try{s=r.get("$modal"),m=function(n,t){var a,l,i;return i=u.params(n,t),l=_.merge(e.$new(!0),i),a=s.open({templateUrl:u.templateUrl,scope:l}),a.result.then(function(){return g(n,t)})["catch"](function(){if(u&&u.onCancel)return u.onCancel(n,i)})},h=m}catch(b){d=b,h=g}return e["do"]=function(){return h(e.item,e.$index)}}]}}])}.call(this),function(){"use strict";var n;n=angular.module("ngTableAsync"),n.directive("ntaLoading",["ngTableAsyncDefaults",function(n){return{restrict:"E",templateUrl:function(t,a){return a.templateUrl&&"undefined"!==a.templateUrl?a.templateUrl:n.DEFAULT_TEMPLATES.NTA_LOADING}}}])}.call(this),function(){"use strict";var n;n=angular.module("ngTableAsync"),n.directive("ntaNoData",["ngTableAsyncDefaults",function(n){return{restrict:"E",scope:!0,templateUrl:function(t,a){return a.templateUrl&&"undefined"!==a.templateUrl?a.templateUrl:n.DEFAULT_TEMPLATES.NTA_NO_DATA},controller:["$scope","$element","$attrs",function(t,a,e){return e.text&&"undefined"!==e.text||(e.text=n.NO_DATA_TEXT),t.text=e.text}]}}])}.call(this),function(){"use strict";var n;n=angular.module("ngTableAsync"),n.directive("ntaPager",["ngTableAsyncDefaults",function(n){return{restrict:"E",template:function(t,a){return a.templateUrl&&"undefined"!==a.templateUrl||(a.templateUrl=n.DEFAULT_TEMPLATES.NTA_PAGER),'<div ng-table-pagination="tableParams" template-url="\''+a.templateUrl+"'\"></div>"}}}])}.call(this); //# sourceMappingURL=ng-table-async-tpls.min.js.map