From e3e4338c32a9cc5d5bea2ef5afd9d1a6517b10df Mon Sep 17 00:00:00 2001 From: Zach Barnes Date: Fri, 31 Jul 2015 09:36:37 -0500 Subject: [PATCH] Expose page count in options --- bower.json | 2 +- dist/tc-grid.js | 2 ++ dist/tc-grid.min.js | 2 +- src/js/tcGridDirective.js | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 840fe86..f4268bb 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "tc-grid", - "version": "0.7.16", + "version": "0.7.17", "homepage": "https://github.com/ThirdCornerLLC/tc-grid", "authors": [ "Zach Barnes ", diff --git a/dist/tc-grid.js b/dist/tc-grid.js index f1ab1c7..b4eb569 100644 --- a/dist/tc-grid.js +++ b/dist/tc-grid.js @@ -329,6 +329,8 @@ if (vm.pageCount < 1) { vm.pageCount = 1; } + + vm.options.paging.pageCount = vm.pageCount; } function first() { diff --git a/dist/tc-grid.min.js b/dist/tc-grid.min.js index 9064470..016900c 100644 --- a/dist/tc-grid.min.js +++ b/dist/tc-grid.min.js @@ -1 +1 @@ -"use strict";!function(){function t(t,n,o,i){return{restrict:"E",scope:!0,compile:function(t,n){var i=t.find("tc-column"),e="";n.columns={},n.colTemplates=[],n.headerTemplates=[],angular.forEach(i,function(t,o){var i=angular.element(t),a=i.attr("tc-field"),r=i.attr("tc-name")||a||"",s=(i.attr("tc-sort"),i.attr("tc-ignore-click")),c=i.attr("tc-class"),p="",l="",g="";a&&(p=" ng-click=\"tcGrid.sort('"+a+"')\"",l=' id="'+n.tcOptions+"_"+a.replace(/\./g,"")+'"',""===i.html()&&i.html("{{row."+a+"}}")),n.columns[o]={field:a,visible:i.attr("tc-visible")},s&&i.attr("ng-click","$event.stopPropagation();"),i.addClass(c||"tc-style_td"),i.attr("tc-col-index",o+1),i.attr("tc-visible")&&(i.attr("ng-class","{'tc-hide-col': !tcGrid.columns['"+o+"'].visible}"),g="ng-class=\"{'tc-hide-col': !tcGrid.columns['"+o+"'].visible}\"");var d='
"+r+'
';if(e+=d,r){var u='
'+r+"
";i.prepend(u)}n.headerTemplates.push(angular.element(d)),n.colTemplates.push(i.clone())});var a=o.get("tcGrid.html");a=a.replace(/%OPTIONS%/g,n.tcOptions),a=a.replace(/%HEADER%/g,e),a=a.replace(/%GRIDCLASS%/g,n.tcGridClass||"tc-grid"),a=a.replace(/%ROWCLICK%/g,n.tcRowClick?'ng-click="'+n.tcRowClick+'"':""),a=a.replace(/%FILTER%/g,n.tcGridFilter?" | filter: "+n.tcGridFilter:""),a=a.replace(/%ROWCLASS%/g,n.tcRowClass?"":"tc-style_tr"),a=a.replace(/%ROWEXPRESSION%/g,n.tcRowClass||""),a=a.replace(/%CHILDREN%/g,i.parent().html());var r,s=angular.element(a),c=s.find("div");for(var p in c)if("tc-row-container"==c[p].id){r=c[p];break}return n.rowTemplate=angular.element(r),n.rowTemplate.html(""),t.html(""),t.append(s),{pre:function(){},post:function(){}}},controller:["$scope","$element","$attrs",function(o,e,a){function r(){D.options=t(a.tcOptions)(o.$parent),D.data=t(a.tcData)(o.$parent),c(),f(),v(),D.options&&(D.options.onLoad&&"function"==typeof D.options.onLoad?D.options.onLoad():D.options.sorting.onSortChange?O():D.options.paging.onPageChange&&_())}function s(){D.options.paging.currentPage=1,D.options.sorting.sort=[],$(),_(),O()}function c(){for(var n in a.columns)a.columns[n].visible?(m(n,a.columns[n].visible),D.columns[n]={field:a.columns[n].field,visible:t(a.columns[n].visible)(o.$parent)}):D.columns[n]={field:a.columns[n].field,visible:!0}}function p(t){var n=u();g(n,t),l(n,t)}function l(t,e){var a=angular.element('
'),r=angular.element(D.rowTemplate);z=i(function(){r.html(""),t.tbody.parentNode.removeChild(t.tbody);for(var i in e){var s=d(D.columnTemplates,e[i]);s.removeAttr("ng-transclude"),r.append(s.clone())}a.append(r),n(a)(o),t=angular.element(t),t.append(a),o.$apply()})}function g(t,e){var a=angular.element(t.thead),r=angular.element(a.find("div")[0]);T=i(function(){r.html("");for(var t in e){var i=d(D.headerTemplates,e[t]);r.append(i.clone())}n(a)(o),C()})}function d(t,n){for(var o in t){var i=t[o].attr("tc-col-index"),e=t[o].attr("tc-name"),a=t[o].attr("tc-field");if(i==n||e==n||a==n)return t[o]}}function u(){var t,n,o,i=document.getElementsByClassName("tc-display_table")[0];for(var e in i.children)o=i.children[e],o.className&&o.className.indexOf("tc-display_thead")>-1?t=o:o.className&&o.className.indexOf("tc-display_tbody")>-1&&(n=o,n.parent=o.parentNode);return i.tbody=n,i.thead=t,i}function m(t,n){o.$parent.$watch(n,function(n,o){n!=o&&(D.columns[t].visible=n)})}function f(){D.options&&(D.options.reset=s,D.options.prev=G,D.options.next=P,D.options.first=b,D.options.last=S,D.options.sort=w,D.options.paging?h():D.options.paging={},D.options.sorting?C():D.options.sorting={})}function v(){function t(){return N?void(D.options&&D.options.paging&&y()):void(N=!0)}a.tcOptions&&o.$parent.$watch(a.tcOptions,function(n,o){if(D.options=n,n==o&&n.columnDisplay)p(D.options.columnDisplay);else if(n!=o||n.columnDisplay)n.columnDisplay!=o.columnDisplay&&p(D.options.columnDisplay);else{for(var i=[],e=0;e0?Math.ceil(D.options.paging.totalItemCount/D.options.paging.pageSize):0,D.pageCount<1&&(D.pageCount=1)}function b(){D.options.paging.currentPage=1,_()}function G(){D.options.paging.currentPage-=1,D.options.paging.currentPage<1&&(D.options.paging.currentPage=1),_()}function P(){D.options.paging.currentPage+=1,D.options.paging.currentPage>D.pageCount&&(D.options.paging.currentPage=D.pageCount),_()}function S(){D.options.paging.currentPage=D.pageCount,_()}function _(){D.options.paging.onPageChange&&D.options.paging.onPageChange(D.options.paging.currentPage,D.options.paging.pageSize,D.options.sorting.sort)}function O(){D.options.sorting.onSortChange&&(D.options.paging?(D.options.paging.currentPage=1,D.options.sorting.onSortChange(D.options.paging.currentPage,D.options.paging.pageSize,D.options.sorting.sort)):D.options.sorting.onSortChange(null,null,D.options.sorting.sort))}function w(t){if(0!==Object.getOwnPropertyNames(D.columns).length){var n=R(t);if(n){var o="asc";n.hasClass("asc")&&(o="desc"),$(),n.addClass(o),D.options.sorting.sort=[t+" "+o],O()}}}function $(){angular.forEach(Object.keys(D.columns),function(t){if(D.columns[t].field){var n=R(D.columns[t].field);n&&(n.removeClass("desc"),n.removeClass("asc"))}})}function R(t){if(t){var n=a.tcOptions+"_"+t.replace(/\./g,""),o=document.getElementById(n);if(o){var i=o.childNodes;for(var e in i)if(i[e].className&&i[e].className.indexOf("tc-display_sort")>-1)return angular.element(i[e])}return null}}function E(t){-1==D.columns.indexOf(t)&&D.columns.push(t)}function I(){y(),D.options.paging.currentPage>D.pageCount?D.options.paging.currentPage=D.pageCount:D.options.paging.currentPage<0&&(D.options.paging.currentPage=0),_()}var T,z,N=!1,D=this;D.pageCount=1,D.showFooter=!1,D.columns=[],D.columnTemplates=a.colTemplates,D.headerTemplates=a.headerTemplates,D.rowTemplate=a.rowTemplate,D.addColumn=E,D.prev=G,D.next=P,D.first=b,D.last=S,D.sort=w,D.updatePageSize=I,D.orderColumns=p,r(),o.$on("$destroy",function(){T&&i.cancel(T),z&&i.cancel(z)})}],controllerAs:"tcGrid"}}function n(){return{restrict:"E",require:"^tcGrid",replace:!0,transclude:!0,template:"
"}}angular.module("tc-grid",[]).directive("tcGrid",t).directive("tcColumn",n),t.$inject=["$parse","$compile","$templateCache","$timeout"]}(),angular.module("tc-grid").run(["$templateCache",function(t){t.put("tcGrid.html",'
\r\n
\r\n
\r\n
\r\n
\r\n %HEADER%\r\n
\r\n
\r\n
\r\n
\r\n %CHILDREN%\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n {{(tcGrid.options.paging.currentPage - 1) * tcGrid.options.paging.pageSize + 1}}\r\n -\r\n {{tcGrid.options.paging.currentPage === tcGrid.pageCount ? tcGrid.options.paging.totalItemCount : tcGrid.options.paging.currentPage * tcGrid.options.paging.pageSize}}\r\n of\r\n {{tcGrid.options.paging.totalItemCount}}\r\n
\r\n
\r\n {{tcGrid.options.paging.currentPage}} / {{tcGrid.pageCount}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n')}]); \ No newline at end of file +"use strict";!function(){function t(t,n,o,i){return{restrict:"E",scope:!0,compile:function(t,n){var i=t.find("tc-column"),e="";n.columns={},n.colTemplates=[],n.headerTemplates=[],angular.forEach(i,function(t,o){var i=angular.element(t),a=i.attr("tc-field"),r=i.attr("tc-name")||a||"",s=(i.attr("tc-sort"),i.attr("tc-ignore-click")),c=i.attr("tc-class"),p="",l="",g="";a&&(p=" ng-click=\"tcGrid.sort('"+a+"')\"",l=' id="'+n.tcOptions+"_"+a.replace(/\./g,"")+'"',""===i.html()&&i.html("{{row."+a+"}}")),n.columns[o]={field:a,visible:i.attr("tc-visible")},s&&i.attr("ng-click","$event.stopPropagation();"),i.addClass(c||"tc-style_td"),i.attr("tc-col-index",o+1),i.attr("tc-visible")&&(i.attr("ng-class","{'tc-hide-col': !tcGrid.columns['"+o+"'].visible}"),g="ng-class=\"{'tc-hide-col': !tcGrid.columns['"+o+"'].visible}\"");var d='
"+r+'
';if(e+=d,r){var u='
'+r+"
";i.prepend(u)}n.headerTemplates.push(angular.element(d)),n.colTemplates.push(i.clone())});var a=o.get("tcGrid.html");a=a.replace(/%OPTIONS%/g,n.tcOptions),a=a.replace(/%HEADER%/g,e),a=a.replace(/%GRIDCLASS%/g,n.tcGridClass||"tc-grid"),a=a.replace(/%ROWCLICK%/g,n.tcRowClick?'ng-click="'+n.tcRowClick+'"':""),a=a.replace(/%FILTER%/g,n.tcGridFilter?" | filter: "+n.tcGridFilter:""),a=a.replace(/%ROWCLASS%/g,n.tcRowClass?"":"tc-style_tr"),a=a.replace(/%ROWEXPRESSION%/g,n.tcRowClass||""),a=a.replace(/%CHILDREN%/g,i.parent().html());var r,s=angular.element(a),c=s.find("div");for(var p in c)if("tc-row-container"==c[p].id){r=c[p];break}return n.rowTemplate=angular.element(r),n.rowTemplate.html(""),t.html(""),t.append(s),{pre:function(){},post:function(){}}},controller:["$scope","$element","$attrs",function(o,e,a){function r(){D.options=t(a.tcOptions)(o.$parent),D.data=t(a.tcData)(o.$parent),c(),f(),v(),D.options&&(D.options.onLoad&&"function"==typeof D.options.onLoad?D.options.onLoad():D.options.sorting.onSortChange?O():D.options.paging.onPageChange&&_())}function s(){D.options.paging.currentPage=1,D.options.sorting.sort=[],$(),_(),O()}function c(){for(var n in a.columns)a.columns[n].visible?(m(n,a.columns[n].visible),D.columns[n]={field:a.columns[n].field,visible:t(a.columns[n].visible)(o.$parent)}):D.columns[n]={field:a.columns[n].field,visible:!0}}function p(t){var n=u();g(n,t),l(n,t)}function l(t,e){var a=angular.element('
'),r=angular.element(D.rowTemplate);z=i(function(){r.html(""),t.tbody.parentNode.removeChild(t.tbody);for(var i in e){var s=d(D.columnTemplates,e[i]);s.removeAttr("ng-transclude"),r.append(s.clone())}a.append(r),n(a)(o),t=angular.element(t),t.append(a),o.$apply()})}function g(t,e){var a=angular.element(t.thead),r=angular.element(a.find("div")[0]);T=i(function(){r.html("");for(var t in e){var i=d(D.headerTemplates,e[t]);r.append(i.clone())}n(a)(o),h()})}function d(t,n){for(var o in t){var i=t[o].attr("tc-col-index"),e=t[o].attr("tc-name"),a=t[o].attr("tc-field");if(i==n||e==n||a==n)return t[o]}}function u(){var t,n,o,i=document.getElementsByClassName("tc-display_table")[0];for(var e in i.children)o=i.children[e],o.className&&o.className.indexOf("tc-display_thead")>-1?t=o:o.className&&o.className.indexOf("tc-display_tbody")>-1&&(n=o,n.parent=o.parentNode);return i.tbody=n,i.thead=t,i}function m(t,n){o.$parent.$watch(n,function(n,o){n!=o&&(D.columns[t].visible=n)})}function f(){D.options&&(D.options.reset=s,D.options.prev=G,D.options.next=P,D.options.first=b,D.options.last=S,D.options.sort=w,D.options.paging?C():D.options.paging={},D.options.sorting?h():D.options.sorting={})}function v(){function t(){return N?void(D.options&&D.options.paging&&y()):void(N=!0)}a.tcOptions&&o.$parent.$watch(a.tcOptions,function(n,o){if(D.options=n,n==o&&n.columnDisplay)p(D.options.columnDisplay);else if(n!=o||n.columnDisplay)n.columnDisplay!=o.columnDisplay&&p(D.options.columnDisplay);else{for(var i=[],e=0;e0?Math.ceil(D.options.paging.totalItemCount/D.options.paging.pageSize):0,D.pageCount<1&&(D.pageCount=1),D.options.paging.pageCount=D.pageCount}function b(){D.options.paging.currentPage=1,_()}function G(){D.options.paging.currentPage-=1,D.options.paging.currentPage<1&&(D.options.paging.currentPage=1),_()}function P(){D.options.paging.currentPage+=1,D.options.paging.currentPage>D.pageCount&&(D.options.paging.currentPage=D.pageCount),_()}function S(){D.options.paging.currentPage=D.pageCount,_()}function _(){D.options.paging.onPageChange&&D.options.paging.onPageChange(D.options.paging.currentPage,D.options.paging.pageSize,D.options.sorting.sort)}function O(){D.options.sorting.onSortChange&&(D.options.paging?(D.options.paging.currentPage=1,D.options.sorting.onSortChange(D.options.paging.currentPage,D.options.paging.pageSize,D.options.sorting.sort)):D.options.sorting.onSortChange(null,null,D.options.sorting.sort))}function w(t){if(0!==Object.getOwnPropertyNames(D.columns).length){var n=R(t);if(n){var o="asc";n.hasClass("asc")&&(o="desc"),$(),n.addClass(o),D.options.sorting.sort=[t+" "+o],O()}}}function $(){angular.forEach(Object.keys(D.columns),function(t){if(D.columns[t].field){var n=R(D.columns[t].field);n&&(n.removeClass("desc"),n.removeClass("asc"))}})}function R(t){if(t){var n=a.tcOptions+"_"+t.replace(/\./g,""),o=document.getElementById(n);if(o){var i=o.childNodes;for(var e in i)if(i[e].className&&i[e].className.indexOf("tc-display_sort")>-1)return angular.element(i[e])}return null}}function E(t){-1==D.columns.indexOf(t)&&D.columns.push(t)}function I(){y(),D.options.paging.currentPage>D.pageCount?D.options.paging.currentPage=D.pageCount:D.options.paging.currentPage<0&&(D.options.paging.currentPage=0),_()}var T,z,N=!1,D=this;D.pageCount=1,D.showFooter=!1,D.columns=[],D.columnTemplates=a.colTemplates,D.headerTemplates=a.headerTemplates,D.rowTemplate=a.rowTemplate,D.addColumn=E,D.prev=G,D.next=P,D.first=b,D.last=S,D.sort=w,D.updatePageSize=I,D.orderColumns=p,r(),o.$on("$destroy",function(){T&&i.cancel(T),z&&i.cancel(z)})}],controllerAs:"tcGrid"}}function n(){return{restrict:"E",require:"^tcGrid",replace:!0,transclude:!0,template:"
"}}angular.module("tc-grid",[]).directive("tcGrid",t).directive("tcColumn",n),t.$inject=["$parse","$compile","$templateCache","$timeout"]}(),angular.module("tc-grid").run(["$templateCache",function(t){t.put("tcGrid.html",'
\r\n
\r\n
\r\n
\r\n
\r\n %HEADER%\r\n
\r\n
\r\n
\r\n
\r\n %CHILDREN%\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n {{(tcGrid.options.paging.currentPage - 1) * tcGrid.options.paging.pageSize + 1}}\r\n -\r\n {{tcGrid.options.paging.currentPage === tcGrid.pageCount ? tcGrid.options.paging.totalItemCount : tcGrid.options.paging.currentPage * tcGrid.options.paging.pageSize}}\r\n of\r\n {{tcGrid.options.paging.totalItemCount}}\r\n
\r\n
\r\n {{tcGrid.options.paging.currentPage}} / {{tcGrid.pageCount}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n')}]); \ No newline at end of file diff --git a/src/js/tcGridDirective.js b/src/js/tcGridDirective.js index ccd18ea..bcb3bdd 100644 --- a/src/js/tcGridDirective.js +++ b/src/js/tcGridDirective.js @@ -353,6 +353,8 @@ if (vm.pageCount < 1) { vm.pageCount = 1; } + + vm.options.paging.pageCount = vm.pageCount; } function first() {