angular.module("smart-table",[]).run(["$templateCache",function(n){n.put("template/smart-table/pagination.html",'<nav><div class="col-md-10"><ul class="pagination"><li ng-repeat="page in pages" ng-class="{active: page==currentPage}"><a href="" ng-click="page != currentPage && selectPage(page)">{{page}}<\/a><\/li><\/ul><\/div><div class="col-md-2 pagination"><div class="col-md-4" style="padding-top: 8px;">Show<\/div> <select class="form-control form-control-md input-md" style="width: auto; font-size: 0.9em;" ng-model="stItemsByPage" ng-options="ot.value as ot.name for ot in availableOptions" ng-change="pageSizeChanged(stItemsByPage)"><\/select><\/div><\/nav>')}]);angular.module("app").constant("stConfig",{pagination:{template:"template/smart-table/pagination.html",itemsByPage:10,displayedPages:5},search:{delay:400,inputEvent:"input"},select:{mode:"single",selectedClass:"st-selected"},sort:{ascentClass:"st-sort-ascent",descentClass:"st-sort-descent",skipNatural:!1},pipe:{delay:100}});angular.module("app").directive("stPagination",["stConfig",function(n){return{restrict:"EA",require:"^stTable",scope:{stItemsByPage:"=?",stDisplayedPages:"=?",stPageChange:"&"},templateUrl:function(t,i){return i.stTemplate?i.stTemplate:n.pagination.template},link:function(t,i,r,u){function f(){var n=u.tableState().pagination,i=1,r,f,e=t.currentPage;for(t.totalItemCount=n.totalItemCount,t.currentPage=Math.floor(n.start/n.number)+1,i=Math.max(i,t.currentPage-Math.abs(Math.floor(t.stDisplayedPages/2))),r=i+t.stDisplayedPages,r>n.numberOfPages&&(r=n.numberOfPages+1,i=Math.max(1,r-t.stDisplayedPages)),t.pages=[],t.numPages=n.numberOfPages,f=i;f<r;f++)t.pages.push(f);e!==t.currentPage&&t.stPageChange({newPage:t.currentPage})}t.stItemsByPage=t.stItemsByPage?+t.stItemsByPage:n.pagination.itemsByPage;t.stDisplayedPages=t.stDisplayedPages?+t.stDisplayedPages:n.pagination.displayedPages;t.currentPage=1;t.pages=[];t.availableOptions=[{value:10,name:"10 rows"},{value:25,name:"25 rows"},{value:50,name:"50 rows"},];t.$watch(function(){return u.tableState().pagination},f,!0);t.$watch("stItemsByPage",function(n,i){n!==i&&t.selectPage(1)});t.$watch("stDisplayedPages",f);t.selectPage=function(n){n>0&&n<=t.numPages&&u.slice((n-1)*t.stItemsByPage,t.stItemsByPage)};t.pageSizeChanged=function(n){n==null&&(n=10);t.stItemsByPage=n;t.selectPage(1)};t.resetPage=function(){$route.reload()};u.tableState().pagination.number||u.slice(0,t.stItemsByPage)}}}]);angular.module("app").directive("stPipe",["stConfig","$timeout",function(n,t){return{require:"stTable",scope:{stPipe:"="},link:{pre:function(i,r,u,f){var e=null;angular.isFunction(i.stPipe)&&(f.preventPipeOnWatch(),f.pipe=function(){return e!==null&&t.cancel(e),e=t(function(){i.stPipe(f.tableState(),f)},n.pipe.delay)})},post:function(n,t,i,r){r.pipe()}}}}]);angular.module("app").directive("stSearch",["stConfig","$timeout","$parse",function(n,t,i){return{require:"^stTable",link:function(r,u,f,e){var s=e,o=null,h=f.stDelay||n.search.delay,c=f.stInputEvent||n.search.inputEvent;f.$observe("stSearch",function(n,t){var i=u[0].value;n!==t&&i&&(e.tableState().search={},s.search(i,n))});r.$watch(function(){return e.tableState().search},function(n){var t=f.stSearch||"$";n.predicateObject&&i(t)(n.predicateObject)!==u[0].value&&(u[0].value=i(t)(n.predicateObject)||"")},!0);u.bind(c,function(n){n=n.originalEvent||n;o!==null&&t.cancel(o);o=t(function(){s.search(n.target.value,f.stSearch||"");o=null},h)})}}}]);angular.module("app").directive("stSelectRow",["stConfig",function(n){return{restrict:"A",require:"^stTable",scope:{row:"=stSelectRow"},link:function(t,i,r,u){var f=r.stSelectMode||n.select.mode;i.bind("click",function(){t.$apply(function(){u.select(t.row,f)})});t.$watch("row.isSelected",function(t){t===!0?i.addClass(n.select.selectedClass):i.removeClass(n.select.selectedClass)})}}}]);angular.module("app").directive("stSort",["stConfig","$parse",function(n,t){return{restrict:"A",require:"^stTable",link:function(i,r,u,f){function v(){e++;o=angular.isFunction(h(i))?h(i):u.stSort;e%3==0&&!!y!=!0?(e=0,f.tableState().sort={},f.tableState().pagination.start=0,f.pipe()):f.sortBy(o,e%2==0)}var o=u.stSort,h=t(o),e=0,c=u.stClassAscent||n.sort.ascentClass,l=u.stClassDescent||n.sort.descentClass,a=[c,l],s,y=u.stSkipNatural!==undefined?u.stSkipNatural:n.sort.skipNatural;u.stSortDefault&&(s=i.$eval(u.stSortDefault)!==undefined?i.$eval(u.stSortDefault):u.stSortDefault);r.bind("click",function(){o&&i.$apply(v)});s&&(e=s==="reverse"?1:0,v());i.$watch(function(){return f.tableState().sort},function(n){n.predicate!==o?(e=0,r.removeClass(c).removeClass(l)):(e=n.reverse===!0?2:1,r.removeClass(a[e%2]).addClass(a[e-1]))},!0)}}}]);angular.module("app").controller("stTableController",["$scope","$parse","$filter","$attrs",function(n,t,i,r){function c(n){return n?[].concat(n):[]}function y(){e=c(o(n));v===!0&&k.pipe()}function p(n,i){if(i.indexOf(".")!=-1){var r=i.split("."),e=r.pop(),u=r.join("."),f=t(u)(n);delete f[e];Object.keys(f).length==0&&p(n,u)}else delete n[i]}var w=r.stTable,s=t(w),b=s.assign,o,l=i("orderBy"),a=i("filter"),e=c(s(n)),u={sort:{},search:{},pagination:{start:0,totalItemCount:0}},f,v=!0,k=this,h;r.stSafeSrc&&(o=t(r.stSafeSrc),n.$watch(function(){var t=o(n);return t?t.length:0},function(n){n!==e.length&&y()}),n.$watch(function(){return o(n)},function(n,t){n!==t&&y()}));this.sortBy=function(n,t){return u.sort.predicate=n,u.sort.reverse=t===!0,angular.isFunction(n)?u.sort.functionName=n.name:delete u.sort.functionName,u.pagination.start=0,this.pipe()};this.search=function(n,i){var r=u.search.predicateObject||{},f=i?i:"$";return n=angular.isString(n)?n.trim():n,t(f).assign(r,n),n||p(r,f),u.search.predicateObject=r,u.pagination.start=0,this.pipe()};this.pipe=function(){var t=u.pagination,i;f=u.search.predicateObject?a(e,u.search.predicateObject):e;u.sort.predicate&&(f=l(f,u.sort.predicate,u.sort.reverse));t.totalItemCount=f.length;t.number!==undefined&&(t.numberOfPages=f.length>0?Math.ceil(f.length/t.number):1,t.start=t.start>=f.length?(t.numberOfPages-1)*t.number:t.start,i=f.slice(t.start,t.start+parseInt(t.number)));b(n,i||f)};this.select=function(t,i){var r=c(s(n)),u=r.indexOf(t);u!==-1&&(i==="single"?(t.isSelected=t.isSelected!==!0,h&&(h.isSelected=!1),h=t.isSelected===!0?t:undefined):r[u].isSelected=!r[u].isSelected)};this.slice=function(n,t){return u.pagination.start=n,u.pagination.number=t,this.pipe()};this.tableState=function(){return u};this.getFilteredCollection=function(){return f||e};this.setFilterFunction=function(n){a=i(n)};this.setSortFunction=function(n){l=i(n)};this.preventPipeOnWatch=function(){v=!1}}]).directive("stTable",function(){return{restrict:"A",controller:"stTableController",link:function(n,t,i,r){i.stSetFilter&&r.setFilterFunction(i.stSetFilter);i.stSetSort&&r.setSortFunction(i.stSetSort);i.defaultSortColumn&&r.sortBy(i.defaultSortColumn,!0)}}})