diff --git a/CHANGELOG.md b/CHANGELOG.md
index d7c00913..dad3d1f9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,60 @@
+
+# 1.0.0-alpha.7 (2015-08-27)
+
+
+## Bug Fixes
+
+- **NgTableParams:** the url method does not URI encoded all parameter values
+ ([6e7bf3a7](https://github.com/esvit/ng-table/commit/6e7bf3a733f15987b5b3aefeb738f3d5c03aaa8e))
+
+
+## Features
+
+- **NgTableParams:** improved support for grouping data
+ ([1cd90cde](https://github.com/esvit/ng-table/commit/1cd90cdeb1b3720945c246e875d602ea8d30c873))
+- **groupRow:** extend header with a data group picker
+ ([ffa617cb](https://github.com/esvit/ng-table/commit/ffa617cb53fd02d38d02b86d4b37e52813dcec1e))
+- **ngTableDefaultGetData:** allow NgTableParams to determine if sorting, filtering, and paging apply
+ ([6536d734](https://github.com/esvit/ng-table/commit/6536d734f865a101021639db311648e334b649a7))
+
+
+## Breaking Changes
+
+- **NgTableParams:**
+ - due to [1cd90cde](https://github.com/esvit/ng-table/commit/1cd90cdeb1b3720945c246e875d602ea8d30c873),
+
+
+* `settings().groupBy` renamed and moved to `parameters().group`
+
+Previously:
+
+```js
+var params = new NgTableParams({...}, { groupBy: 'role'});
+// changing value:
+params.settings({ groupBy: 'age'});
+
+```
+
+Now:
+
+```js
+var params = new NgTableParams({group: 'role'}, {...});
+// changing value:
+params.group('age');
+// OR
+params.parameters({ group: { age: undefined }});
+```
+
+* paging is applied after grouping
+
+This means that groups will no longer be duplicated and split across pages.
+
+ - due to [6e7bf3a7](https://github.com/esvit/ng-table/commit/6e7bf3a733f15987b5b3aefeb738f3d5c03aaa8e),
+
+
+All parameter values are now URI encoded, thus a numerical filter value will now be returned as a quoted string
+
+
# 1.0.0-alpha.6 (2015-08-17)
diff --git a/bower.json b/bower.json
index 1940d263..d7a773a2 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "ng-table",
- "version": "1.0.0-alpha.6",
+ "version": "1.0.0-alpha.7",
"main": [
"./dist/ng-table.min.js",
"./dist/ng-table.min.css"
diff --git a/dist/ng-table.css b/dist/ng-table.css
index 8382dc73..6140657a 100644
--- a/dist/ng-table.css
+++ b/dist/ng-table.css
@@ -83,6 +83,15 @@
-moz-box-sizing: border-box;
box-sizing: border-box;
}
+.ng-table .ng-table-group-header th {
+ text-align: left;
+}
+.ng-table .ng-table-group-selector {
+ display: block;
+}
+.ng-table .ng-table-group-selector > button {
+ float: right;
+}
.ng-table + .pagination {
margin-top: 0;
}
@@ -134,11 +143,14 @@
display: block;
}
}
+.ng-table-group-selector:before,
+.ng-table-group-selector:after,
.filter:before,
.filter:after {
display: table;
content: " ";
}
+.ng-table-group-selector:after,
.filter:after {
clear: both;
}
diff --git a/dist/ng-table.js b/dist/ng-table.js
index 9ea4e960..4e26ef6e 100644
--- a/dist/ng-table.js
+++ b/dist/ng-table.js
@@ -288,6 +288,12 @@
*/
function ngTableDefaultGetData($filter) {
+ var defaultDataOptions = {applyFilter: true, applySort: true, applyPaging: true};
+
+ getData.applyPaging = applyPaging;
+ getData.getFilterFn = getFilterFn;
+ getData.getOrderByFn = getOrderByFn;
+
return getData;
function getFilterFn(params) {
@@ -299,7 +305,15 @@
}
}
+ function getOrderByFn (/*params*/){
+ return $filter(provider.sortingFilterName);
+ }
+
function applyFilter(data, params) {
+ if (!params.hasFilter()) {
+ return data;
+ }
+
var filter = params.filter(true);
var filterKeys = Object.keys(filter);
var parsedFilter = filterKeys.reduce(function(result, key){
@@ -310,17 +324,28 @@
return filterFn.call(params, data, parsedFilter, params.settings().filterComparator);
}
+ function applyPaging(data, params) {
+ var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count());
+ params.total(data.length); // set total for recalc pagination
+ return pagedData;
+ }
+
+ function applySort(data, params) {
+ var orderBy = params.orderBy();
+ var orderByFn = getOrderByFn(params);
+ return orderBy.length ? orderByFn(data, orderBy) : data;
+ }
+
function getData(data, params) {
if (data == null){
return [];
}
- var fData = params.hasFilter() ? applyFilter(data, params) : data;
- var orderBy = params.orderBy();
- var orderedData = orderBy.length ? $filter(provider.sortingFilterName)(fData, orderBy) : fData;
- var pagedData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
- params.total(orderedData.length); // set total for recalc pagination
- return pagedData;
+ var options = angular.extend({}, defaultDataOptions, params.settings().dataOptions);
+
+ var fData = options.applyFilter ? applyFilter(data, params) : data;
+ var orderedData = options.applySort ? applySort(fData, params) : fData;
+ return options.applyPaging ? applyPaging(orderedData, params) : orderedData;
}
// Sets the value at any depth in a nested object based on the path
@@ -401,17 +426,31 @@
*/
angular.module('ngTable').factory('ngTableColumn', [function () {
- var defaults = {
- 'class': function(){ return ''; },
- filter: function(){ return false; },
- filterData: angular.noop,
- headerTemplateURL: function(){ return false; },
- headerTitle: function(){ return ''; },
- sortable: function(){ return false; },
- show: function(){ return true; },
- title: function(){ return ''; },
- titleAlt: function(){ return ''; }
- };
+ function createDefaults(){
+ return {
+ 'class': createGetterSetter(''),
+ filter: createGetterSetter(false),
+ groupable: createGetterSetter(false),
+ filterData: angular.noop,
+ headerTemplateURL: createGetterSetter(false),
+ headerTitle: createGetterSetter(''),
+ sortable: createGetterSetter(false),
+ show: createGetterSetter(true),
+ title: createGetterSetter(''),
+ titleAlt: createGetterSetter('')
+ };
+ }
+
+ function createGetterSetter(initialValue){
+ var value = initialValue;
+ var getter = function (/*$scope, locals*/){
+ return value;
+ };
+ getter.assign = function($scope, newValue){
+ value = newValue;
+ };
+ return getter;
+ }
/**
* @ngdoc method
@@ -425,6 +464,7 @@
function buildColumn(column, defaultScope){
// note: we're not modifying the original column object. This helps to avoid unintended side affects
var extendedCol = Object.create(column);
+ var defaults = createDefaults();
for (var prop in defaults) {
if (extendedCol[prop] === undefined) {
extendedCol[prop] = defaults[prop];
@@ -435,21 +475,28 @@
// - note that the original column object is being "proxied"; this is important
// as it ensure that any changes to the original object will be returned by the "getter"
(function(prop1){
- extendedCol[prop1] = function(){
+ var getterFn = function () {
return column[prop1];
};
+ getterFn.assign = function($scope, value){
+ column[prop1] = value;
+ };
+ extendedCol[prop1] = getterFn;
})(prop);
}
(function(prop1){
// satisfy the arguments expected by the function returned by parsedAttribute in the ngTable directive
var getterFn = extendedCol[prop1];
- extendedCol[prop1] = function(){
- if (arguments.length === 0){
+ extendedCol[prop1] = function () {
+ if (arguments.length === 0) {
return getterFn.call(column, defaultScope);
} else {
return getterFn.apply(column, arguments);
}
};
+ if (getterFn.assign){
+ extendedCol[prop1].assign = getterFn.assign;
+ }
})(prop);
}
return extendedCol;
@@ -477,7 +524,7 @@
* @description Parameters manager for ngTable
*/
- angular.module('ngTable').factory('NgTableParams', ['$q', '$log', 'ngTableDefaults', 'ngTableGetDataBcShim', 'ngTableDefaultGetData', 'ngTableEventsChannel', function($q, $log, ngTableDefaults, ngTableGetDataBcShim, ngTableDefaultGetData, ngTableEventsChannel) {
+ angular.module('ngTable').factory('NgTableParams', ['$q', '$log', '$filter', 'ngTableDefaults', 'ngTableGetDataBcShim', 'ngTableDefaultGetData', 'ngTableEventsChannel', function($q, $log, $filter, ngTableDefaults, ngTableGetDataBcShim, ngTableDefaultGetData, ngTableEventsChannel) {
var isNumber = function(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
};
@@ -490,13 +537,17 @@
}
var self = this,
- committedParams,
- erroredParams,
+ prevParamsMemento,
+ errParamsMemento,
isCommittedDataset = false,
log = function() {
if (settings.debugMode && $log.debug) {
$log.debug.apply(this, arguments);
}
+ },
+ defaultGroupOptions = {
+ defaultSort: 'asc', // set to 'asc' or 'desc' to apply sorting to groups
+ isExpanded: true
};
this.data = [];
@@ -531,7 +582,11 @@
}
params[lastKey] = angular.extend(params[lastKey] || {}, value[lastKey]);
} else {
- params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);
+ if (key === 'group'){
+ params[key] = parseGroup(newParameters[key]);
+ } else {
+ params[key] = (isNumber(newParameters[key]) ? parseFloat(newParameters[key]) : newParameters[key]);
+ }
}
}
log('ngTable: set parameters', params);
@@ -540,6 +595,18 @@
return params;
};
+ function parseGroup(group){
+ if (angular.isFunction(group)) {
+ return group;
+ } else if (angular.isString(group)) {
+ var grp = {};
+ grp[group] = settings.groupOptions && settings.groupOptions.defaultSort;
+ return grp;
+ } else {
+ return group;
+ }
+ }
+
/**
* @ngdoc method
* @name NgTableParams#settings
@@ -550,6 +617,14 @@
*/
this.settings = function(newSettings) {
if (angular.isDefined(newSettings)) {
+
+ // todo: don't modify newSettings object: this introduces unexpected side effects;
+ // instead take a copy of newSettings
+
+ if (newSettings.groupOptions){
+ newSettings.groupOptions = angular.extend({}, settings.groupOptions, newSettings.groupOptions);
+ }
+
if (angular.isArray(newSettings.data)) {
//auto-set the total from passed in data
newSettings.total = newSettings.data.length;
@@ -660,6 +735,37 @@
}
};
+ /**
+ * @ngdoc method
+ * @name NgTableParams#group
+ * @description If 'group' parameter is not set, return current grouping. Otherwise set current group.
+ *
+ * @param {string|Function|Object} group New group field
+ * @param {string} sortDirection Optional direction that the list of groups should be sorted
+ * @returns {Object} Current grouping or `this`
+ */
+ this.group = function(group, sortDirection) {
+ if (!angular.isDefined(group)){
+ return params.group;
+ }
+
+ var newParameters = {
+ page: 1
+ };
+ if (angular.isFunction(group) && angular.isDefined(sortDirection)){
+ group.sortDirection = sortDirection;
+ newParameters.group = group;
+ } else if (angular.isDefined(group) && angular.isDefined(sortDirection)) {
+ var groupArray = {};
+ groupArray[group] = sortDirection;
+ newParameters.group = groupArray;
+ } else {
+ newParameters.group = group;
+ }
+ this.parameters(newParameters);
+ return this;
+ };
+
/**
* @ngdoc method
* @name NgTableParams#sorting
@@ -707,13 +813,17 @@
* @returns {Array} Array like: [ '-name', '+age' ]
*/
this.orderBy = function() {
- var sorting = [];
- for (var column in params.sorting) {
- sorting.push((params.sorting[column] === "asc" ? "+" : "-") + column);
- }
- return sorting;
+ return convertSortToOrderBy(params.sorting);
};
+ function convertSortToOrderBy(sorting){
+ var result = [];
+ for (var column in sorting) {
+ result.push((sorting[column] === "asc" ? "+" : "-") + column);
+ }
+ return result;
+ }
+
/**
* @ngdoc method
* @name NgTableParams#generatePagesArray
@@ -795,9 +905,17 @@
*/
this.isDataReloadRequired = function(){
// note: using != as want to treat null and undefined the same
- return !isCommittedDataset || !angular.equals(params, committedParams) || hasGlobalSearchFieldChanges();
+ return !isCommittedDataset || !angular.equals(createComparableParams(), prevParamsMemento)
+ || hasGlobalSearchFieldChanges();
};
+ function createComparableParams(){
+ var result = {params: params};
+ if (angular.isFunction(params.group)){
+ result.groupSortDirection = params.group.sortDirection;
+ }
+ return result
+ }
/**
* @ngdoc method
* @name NgTableParams#hasFilter
@@ -809,6 +927,32 @@
return Object.keys(this.filter(true)).length > 0;
};
+ /**
+ * @ngdoc method
+ * @name NgTableParams#hasGroup
+ * @description Determines if at least one group has been set
+ * @returns {Boolean}
+ */
+ this.hasGroup = function(group, sortDirection){
+ if (group == null) {
+ return angular.isFunction(params.group) || Object.keys(params.group).length > 0
+ }
+
+ if (angular.isFunction(group)) {
+ if (sortDirection == null) {
+ return params.group === group;
+ } else {
+ return params.group === group && group.sortDirection === sortDirection;
+ }
+ } else {
+ if (sortDirection == null) {
+ return Object.keys(params.group).indexOf(group) !== -1;
+ } else {
+ return params.group[group] === sortDirection;
+ }
+ }
+ };
+
/**
* @ngdoc method
* @name NgTableParams#hasFilterChanges
@@ -816,13 +960,14 @@
* to be run so as to ensure the data presented to the user reflects these filters
*/
this.hasFilterChanges = function(){
- return !angular.equals((params && params.filter), (committedParams && committedParams.filter)) ||
- hasGlobalSearchFieldChanges();
+ var previousFilter = (prevParamsMemento && prevParamsMemento.params.filter);
+ return !angular.equals((params.filter), previousFilter) || hasGlobalSearchFieldChanges();
};
function hasGlobalSearchFieldChanges(){
- var currentVal = (params && params.filter && params.filter.$);
- var previousVal = (committedParams && committedParams.filter && committedParams.filter.$);
+ var currentVal = (params.filter && params.filter.$);
+ var previousVal =
+ (prevParamsMemento && prevParamsMemento.params.filter && prevParamsMemento.params.filter.$);
return !angular.equals(currentVal, previousVal);
}
@@ -843,25 +988,29 @@
name = encodeURIComponent(key);
if (typeof item === "object") {
for (var subkey in item) {
- if (!angular.isUndefined(item[subkey]) && item[subkey] !== "") {
+ if (isSignificantValue(item[subkey], key)) {
var pname = name + "[" + encodeURIComponent(subkey) + "]";
- if (asString) {
- pairs.push(pname + "=" + item[subkey]);
- } else {
- pairs[pname] = item[subkey];
- }
+ collectValue(item[subkey], pname);
}
}
- } else if (!angular.isFunction(item) && !angular.isUndefined(item) && item !== "") {
- if (asString) {
- pairs.push(name + "=" + encodeURIComponent(item));
- } else {
- pairs[name] = encodeURIComponent(item);
- }
+ } else if (!angular.isFunction(item) && isSignificantValue(item, key)) {
+ collectValue(item, name);
}
}
}
return pairs;
+
+ function collectValue(value, key){
+ if (asString) {
+ pairs.push(key + "=" + encodeURIComponent(value));
+ } else {
+ pairs[key] = encodeURIComponent(value);
+ }
+ }
+
+ function isSignificantValue(value, key){
+ return key === "group" ? true : angular.isDefined(value) && value !== "";
+ }
};
/**
@@ -875,10 +1024,10 @@
settings.$loading = true;
- committedParams = angular.copy(params);
+ prevParamsMemento = angular.copy(createComparableParams());
isCommittedDataset = true;
- if (settings.groupBy) {
+ if (self.hasGroup()) {
pData = runInterceptorPipeline(runGetGroups);
} else {
pData = runInterceptorPipeline(runGetData);
@@ -889,7 +1038,7 @@
var oldData = self.data;
return pData.then(function(data) {
settings.$loading = false;
- erroredParams = null;
+ errParamsMemento = null;
self.data = data;
// note: I think it makes sense to publish this event even when data === oldData
@@ -904,8 +1053,8 @@
return data;
}).catch(function(reason){
- erroredParams = committedParams;
- committedParams = null;
+ errParamsMemento = prevParamsMemento;
+ prevParamsMemento = null;
isCommittedDataset = false;
// "rethrow"
return $q.reject(reason);
@@ -922,7 +1071,7 @@
* `parameter` values have changed
*/
this.hasErrorState = function(){
- return !!(erroredParams && angular.equals(erroredParams, params));
+ return !!(errParamsMemento && angular.equals(errParamsMemento, createComparableParams()));
};
this.reloadPages = (function() {
@@ -989,35 +1138,60 @@
* @description Return groups of data to display in the table
*
* Called by `NgTableParams` whenever it considers new data is to be loaded
- * and when the `settings` object has a `groupBy` value
+ * and when a `group` value has been assigned
*
* @param {Object} params the `NgTableParams` requesting data
*/
function getGroups(params) {
+
+ var group = params.group();
+ var groupFn;
+ var sortDirection = undefined;
+ if (angular.isFunction(group)) {
+ groupFn = group;
+ sortDirection = group.sortDirection;
+ } else {
+ // currently support for only one group implemented
+ var groupField = Object.keys(group)[0];
+ sortDirection = group[groupField];
+ groupFn = function(item){
+ return item[groupField];
+ };
+ }
+
var settings = params.settings();
+ var originalDataOptions = settings.dataOptions;
+ settings.dataOptions = { applyPaging: false };
var adaptedFn = settings.getDataFnAdaptor(settings.getData);
var gotData = $q.when(adaptedFn.call(settings, params));
return gotData.then(function(data) {
var groups = {};
+ var groupOptions = settings.groupOptions || defaultGroupOptions;
angular.forEach(data, function(item) {
- var groupName;
- if (angular.isFunction(settings.groupBy)) {
- groupName = settings.groupBy(item);
- } else {
- groupName = item[settings.groupBy];
- }
-
+ var groupName = groupFn(item);
groups[groupName] = groups[groupName] || {
- data: []
+ data: [],
+ $hideRows: !groupOptions.isExpanded,
+ value: groupName
};
- groups[groupName]['value'] = groupName;
groups[groupName].data.push(item);
});
var result = [];
for (var i in groups) {
result.push(groups[i]);
}
- return result;
+ if (sortDirection) {
+ var orderByFn = ngTableDefaultGetData.getOrderByFn();
+ var orderBy = convertSortToOrderBy({
+ value: sortDirection
+ });
+ result = orderByFn(result, orderBy);
+ }
+
+ return ngTableDefaultGetData.applyPaging(result, params);
+ }).finally(function(){
+ // restore the real options
+ settings.dataOptions = originalDataOptions;
});
}
}
@@ -1027,8 +1201,7 @@
count: 10,
filter: {},
sorting: {},
- group: {},
- groupBy: null
+ group: {}
};
angular.extend(params, ngTableDefaults.params);
@@ -1050,6 +1223,7 @@
filterFilterName: undefined, // when defined overrides ngTableDefaultGetDataProvider.filterFilterName
filterFn: undefined, // when defined overrides the filter function that ngTableDefaultGetData uses
filterLayout: 'stack', // alternative: 'horizontal'
+ groupOptions: angular.copy(defaultGroupOptions),
counts: [10, 25, 50, 100],
interceptors: [],
paginationMaxBlocks: 11,
@@ -1261,6 +1435,24 @@
$scope.show_filter = value;
});
}
+
+ $scope.$groupRow = {};
+ if ($attrs.showGroup) {
+ var showGroupGetter = $parse($attrs.showGroup);
+ $scope.$parent.$watch(showGroupGetter, function(value) {
+ $scope.$groupRow.show = value;
+ });
+ if (showGroupGetter.assign){
+ $scope.$watch('$groupRow.show', function(value) {
+ showGroupGetter.assign($scope.$parent, value);
+ });
+ }
+ } else{
+ $scope.$watch('params.hasGroup()', function(newValue) {
+ $scope.$groupRow.show = newValue;
+ });
+ }
+
if ($attrs.disableFilter) {
$scope.$parent.$watch($attrs.disableFilter, function(value) {
$scope.$filterRow.disabled = value;
@@ -1275,7 +1467,7 @@
ngTableEventsChannel.onPagesChanged(bindPagesToScope, $scope, isMyPublisher);
function bindDataToScope(params, newDatapage){
- if (params.settings().groupBy) {
+ if (params.hasGroup()) {
$scope.$groups = newDatapage;
} else {
$scope.$data = newDatapage;
@@ -1325,19 +1517,24 @@
compile: function(element) {
var columns = [],
i = 0,
- row = null;
+ dataRow,
+ groupRow,
+ rows = [];
- // IE 8 fix :not(.ng-table-group) selector
angular.forEach(angular.element(element.find('tr')), function(tr) {
- tr = angular.element(tr);
- if (!tr.hasClass('ng-table-group') && !row) {
- row = tr;
- }
+ rows.push(angular.element(tr))
});
- if (!row) {
+ dataRow = rows.filter(function(tr){
+ return !tr.hasClass('ng-table-group');
+ })[0];
+ groupRow = rows.filter(function(tr){
+ return tr.hasClass('ng-table-group');
+ })[0];
+
+ if (!dataRow) {
return;
}
- angular.forEach(row.find('td'), function(item) {
+ angular.forEach(dataRow.find('td'), function(item) {
var el = angular.element(item);
if (el.attr('ignore-cell') && 'true' === el.attr('ignore-cell')) {
return;
@@ -1346,19 +1543,43 @@
var getAttrValue = function(attr){
return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr);
};
+ var setAttrValue = function(attr, value){
+ if (el.attr('x-data-' + attr)){
+ el.attr('x-data-' + attr, value)
+ } else if (el.attr('data' + attr)){
+ el.attr('data' + attr, value)
+ } else {
+ el.attr(attr, value)
+ }
+ };
var parsedAttribute = function(attr) {
var expr = getAttrValue(attr);
if (!expr){
return undefined;
}
- return function(scope, locals) {
+
+ var localValue;
+ var getter = function (scope, locals) {
+ if (localValue !== undefined){
+ return localValue;
+ }
return $parse(expr)(scope, angular.extend(locals || {}, {
$columns: columns
}));
};
+ getter.assign = function($scope, value){
+ var parsedExpr = $parse(expr);
+ if (parsedExpr.assign) {
+ // we should be writing back to the parent scope as this is where the expression
+ // came from
+ parsedExpr.assign($scope.$parent, value);
+ } else {
+ localValue = value;
+ }
+ };
+ return getter;
};
-
var titleExpr = getAttrValue('title-alt') || getAttrValue('title');
if (titleExpr){
el.attr('data-title-text', '{{' + titleExpr + '}}'); // this used in responsive table
@@ -1373,12 +1594,19 @@
sortable: parsedAttribute('sortable'),
'class': parsedAttribute('header-class'),
filter: parsedAttribute('filter'),
+ groupable: parsedAttribute('groupable'),
headerTemplateURL: parsedAttribute('header'),
filterData: parsedAttribute('filter-data'),
- show: (el.attr("ng-if") ? function (scope) {
- return $parse(el.attr("ng-if"))(scope);
- } : undefined)
+ show: el.attr("ng-if") ? parsedAttribute('ng-if') : undefined
});
+
+ if (groupRow){
+ // change ng-if to bind to our column definition which we know will be writable
+ // because this will potentially increase the $watch count, only do so when we definitely
+ // need to change visibility of the columns.
+ // currently only ngTableGroupRow directive needs this
+ setAttrValue('ng-if', '$columns[' + (columns.length - 1) + '].show(this)');
+ }
});
return function(scope, element, attrs, controller) {
scope.$columns = columns = controller.buildColumns(columns);
@@ -1413,7 +1641,7 @@
* A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns
* definitions to render
*/
- angular.module('ngTable').directive('ngTableDynamic', ['$parse', function ($parse){
+ angular.module('ngTable').directive('ngTableDynamic', [function (){
return {
restrict: 'A',
@@ -1586,6 +1814,149 @@
}
})();
+/**
+ * ngTable: Table + Angular JS
+ *
+ * @author Vitalii Savchuk
+ * @url https://github.com/esvit/ng-table/
+ * @license New BSD License
+ */
+
+(function(){
+ 'use strict';
+
+ angular.module('ngTable')
+ .controller('ngTableGroupRowController', ngTableGroupRowController);
+
+ ngTableGroupRowController.$inject = ['$scope'];
+
+ function ngTableGroupRowController($scope){
+
+ var groupFns = [];
+
+ init();
+
+ function init(){
+ $scope.getGroupables = getGroupables;
+ $scope.getGroupTitle = getGroupTitle;
+ $scope.getVisibleColumns = getVisibleColumns;
+ $scope.groupBy = groupBy;
+ $scope.isSelectedGroup = isSelectedGroup;
+
+ $scope.$watch('params.group()', setGroup, true);
+ }
+
+ function changeSortDirection(){
+ var newDirection;
+ if ($scope.params.hasGroup($scope.$selGroup, 'asc')) {
+ newDirection = 'desc';
+ } else if ($scope.params.hasGroup($scope.$selGroup, 'desc')){
+ newDirection = '';
+ } else {
+ newDirection = 'asc';
+ }
+ $scope.params.group($scope.$selGroup, newDirection);
+ }
+
+ function findGroupColumn(groupKey) {
+ return $scope.$columns.filter(function ($column) {
+ return $column.groupable($scope) === groupKey;
+ })[0];
+ }
+
+ function getGroupTitle(group){
+ return angular.isFunction(group) ? group.title : group.title($scope);
+ }
+
+ function getGroupables(){
+ var groupableCols = $scope.$columns.filter(function ($column) {
+ return $column.groupable($scope);
+ });
+ return groupFns.concat(groupableCols);
+ }
+
+ function getVisibleColumns(){
+ return $scope.$columns.filter(function($column){
+ return $column.show($scope);
+ })
+ }
+
+ function groupBy(group){
+ if (group.groupable){
+ if (group.groupable($scope) === $scope.$selGroup){
+ changeSortDirection();
+ } else {
+ var existingGroupCol = findGroupColumn($scope.$selGroup);
+ if (existingGroupCol && existingGroupCol.show.assign && group.show.assign){
+ existingGroupCol.show.assign($scope, true);
+ group.show.assign($scope, false);
+ }
+ $scope.params.group(group.groupable($scope));
+ }
+ } else{
+ if (group === $scope.$selGroup){
+ changeSortDirection();
+ } else {
+ $scope.params.group(group);
+ }
+ }
+ }
+
+ function isSelectedGroup(group){
+ if (group.groupable){
+ return group.groupable($scope) === $scope.$selGroup;
+ } else {
+ return group === $scope.$selGroup;
+ }
+ }
+
+ function setGroup(group){
+ if (angular.isFunction(group)) {
+ groupFns = [group];
+ $scope.$selGroup = group;
+ $scope.$selGroupTitle = group.title;
+ } else {
+ // note: currently only one group is implemented
+ var groupKey = Object.keys(group || {})[0];
+ var groupedColumn = findGroupColumn(groupKey);
+ if (groupedColumn) {
+ $scope.$selGroupTitle = groupedColumn.title($scope);
+ $scope.$selGroup = groupKey;
+ }
+ }
+ }
+ }
+})();
+
+/**
+ * ngTable: Table + Angular JS
+ *
+ * @author Vitalii Savchuk
+ * @url https://github.com/esvit/ng-table/
+ * @license New BSD License
+ */
+
+(function(){
+ 'use strict';
+
+ angular.module('ngTable')
+ .directive('ngTableGroupRow', ngTableGroupRow);
+
+ ngTableGroupRow.$inject = [];
+
+ function ngTableGroupRow(){
+ var directive = {
+ restrict: 'E',
+ replace: true,
+ templateUrl: 'ng-table/groupRow.html',
+ scope: true,
+ controller: 'ngTableGroupRowController',
+ controllerAs: 'dctrl'
+ };
+ return directive;
+ }
+})();
+
/**
* ngTable: Table + Angular JS
*
@@ -1735,9 +2106,10 @@ angular.module('ngTable').run(['$templateCache', function ($templateCache) {
$templateCache.put('ng-table/filters/select-multiple.html', ' ');
$templateCache.put('ng-table/filters/select.html', ' ');
$templateCache.put('ng-table/filters/text.html', ' ');
- $templateCache.put('ng-table/header.html', ' ');
+ $templateCache.put('ng-table/groupRow.html', ' ');
+ $templateCache.put('ng-table/header.html', ' ');
$templateCache.put('ng-table/pager.html', ' ');
- $templateCache.put('ng-table/sorterRow.html', ' |
');
+ $templateCache.put('ng-table/sorterRow.html', ' ');
}]);
return angular.module('ngTable');
}));
diff --git a/dist/ng-table.less b/dist/ng-table.less
index afb0abf6..3a35abd2 100644
--- a/dist/ng-table.less
+++ b/dist/ng-table.less
@@ -89,6 +89,17 @@
}
}
+ .ng-table-group-header {
+ th {
+ text-align: left;
+ }
+ }
+ .ng-table-group-selector {
+ display: block;
+ > button {
+ float: right;
+ }
+ }
& + .pagination {
margin-top: 0;
}
@@ -150,11 +161,14 @@
.ng-table-counts {}
}
+.ng-table-group-selector:before,
+.ng-table-group-selector:after,
.filter:before,
.filter:after {
display: table;
content: " ";
}
+.ng-table-group-selector:after,
.filter:after {
clear: both;
}
diff --git a/dist/ng-table.min.css b/dist/ng-table.min.css
index 1e3e2cfd..0e6d3e75 100644
--- a/dist/ng-table.min.css
+++ b/dist/ng-table.min.css
@@ -1,3 +1,3 @@
-/*! ngTable v1.0.0-alpha.6 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
+/*! ngTable v1.0.0-alpha.7 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
-.ng-table th{text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-table th.sortable{cursor:pointer}.ng-table th.sortable .sort-indicator{padding-right:18px;position:relative}.ng-table th.sortable .sort-indicator:after,.ng-table th.sortable .sort-indicator:before{content:"";border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:visible;right:5px;top:50%;position:absolute;opacity:.3;margin-top:-4px}.ng-table th.sortable .sort-indicator:before{margin-top:2px;border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000}.ng-table th.sortable .sort-indicator:hover:after,.ng-table th.sortable .sort-indicator:hover:before{opacity:1;visibility:visible}.ng-table th.sortable.sort-desc,.ng-table th.sortable.sort-asc{background-color:rgba(141,192,219,.25);text-shadow:0 1px 1px rgba(255,255,255,.75)}.ng-table th.sortable.sort-desc .sort-indicator:after,.ng-table th.sortable.sort-asc .sort-indicator:after{margin-top:-2px}.ng-table th.sortable.sort-desc .sort-indicator:before,.ng-table th.sortable.sort-asc .sort-indicator:before{visibility:hidden}.ng-table th.sortable.sort-asc .sort-indicator:after,.ng-table th.sortable.sort-asc .sort-indicator:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.sortable.sort-desc .sort-indicator:after{border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.filter .input-filter{margin:0;display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-table+.pagination{margin-top:0}@media only screen and (max-width:800px){.ng-table-responsive{border-bottom:1px solid #999}.ng-table-responsive tr{border-top:1px solid #999;border-left:1px solid #999;border-right:1px solid #999}.ng-table-responsive td:before{position:absolute;padding:8px;left:0;top:0;width:50%;white-space:nowrap;text-align:left;font-weight:700}.ng-table-responsive thead tr th{text-align:left}.ng-table-responsive thead tr.ng-table-filters th{padding:0}.ng-table-responsive thead tr.ng-table-filters th form>div{padding:8px}.ng-table-responsive td{border:0;border-bottom:1px solid #eee;position:relative;padding-left:50%;white-space:normal;text-align:left}.ng-table-responsive td:before{content:attr(data-title-text)}.ng-table-responsive,.ng-table-responsive thead,.ng-table-responsive tbody,.ng-table-responsive th,.ng-table-responsive td,.ng-table-responsive tr{display:block}}.filter:before,.filter:after{display:table;content:" "}.filter:after{clear:both}.filter>.filter-cell{float:left;box-sizing:border-box}.filter-horizontal>.filter-cell{padding:0 2px}.filter-horizontal>.filter-cell:first-child{padding-left:0}.filter-horizontal>.filter-cell:last-child,.filter-horizontal>.filter-cell.last{padding-right:0}.s12{width:100%}.s11{width:91.66666666666666%}.s10{width:83.33333333333334%}.s9{width:75%}.s8{width:66.66666666666666%}.s7{width:58.333333333333336%}.s6{width:50%}.s5{width:41.66666666666667%}.s4{width:33.33333333333333%}.s3{width:25%}.s2{width:16.666666666666664%}.s1{width:8.333333333333332%}@media all and (max-width:468px){.s12,.s11,.s10,.s9,.s8,.s7,.s6,.s5,.s4,.s3,.s2,.s1{width:100%}.filter>.filter-cell{padding:0}}
\ No newline at end of file
+.ng-table th{text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-table th.sortable{cursor:pointer}.ng-table th.sortable .sort-indicator{padding-right:18px;position:relative}.ng-table th.sortable .sort-indicator:after,.ng-table th.sortable .sort-indicator:before{content:"";border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:visible;right:5px;top:50%;position:absolute;opacity:.3;margin-top:-4px}.ng-table th.sortable .sort-indicator:before{margin-top:2px;border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000}.ng-table th.sortable .sort-indicator:hover:after,.ng-table th.sortable .sort-indicator:hover:before{opacity:1;visibility:visible}.ng-table th.sortable.sort-desc,.ng-table th.sortable.sort-asc{background-color:rgba(141,192,219,.25);text-shadow:0 1px 1px rgba(255,255,255,.75)}.ng-table th.sortable.sort-desc .sort-indicator:after,.ng-table th.sortable.sort-asc .sort-indicator:after{margin-top:-2px}.ng-table th.sortable.sort-desc .sort-indicator:before,.ng-table th.sortable.sort-asc .sort-indicator:before{visibility:hidden}.ng-table th.sortable.sort-asc .sort-indicator:after,.ng-table th.sortable.sort-asc .sort-indicator:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.sortable.sort-desc .sort-indicator:after{border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.filter .input-filter{margin:0;display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-table .ng-table-group-header th{text-align:left}.ng-table .ng-table-group-selector{display:block}.ng-table .ng-table-group-selector>button{float:right}.ng-table+.pagination{margin-top:0}@media only screen and (max-width:800px){.ng-table-responsive{border-bottom:1px solid #999}.ng-table-responsive tr{border-top:1px solid #999;border-left:1px solid #999;border-right:1px solid #999}.ng-table-responsive td:before{position:absolute;padding:8px;left:0;top:0;width:50%;white-space:nowrap;text-align:left;font-weight:700}.ng-table-responsive thead tr th{text-align:left}.ng-table-responsive thead tr.ng-table-filters th{padding:0}.ng-table-responsive thead tr.ng-table-filters th form>div{padding:8px}.ng-table-responsive td{border:0;border-bottom:1px solid #eee;position:relative;padding-left:50%;white-space:normal;text-align:left}.ng-table-responsive td:before{content:attr(data-title-text)}.ng-table-responsive,.ng-table-responsive thead,.ng-table-responsive tbody,.ng-table-responsive th,.ng-table-responsive td,.ng-table-responsive tr{display:block}}.ng-table-group-selector:before,.ng-table-group-selector:after,.filter:before,.filter:after{display:table;content:" "}.ng-table-group-selector:after,.filter:after{clear:both}.filter>.filter-cell{float:left;box-sizing:border-box}.filter-horizontal>.filter-cell{padding:0 2px}.filter-horizontal>.filter-cell:first-child{padding-left:0}.filter-horizontal>.filter-cell:last-child,.filter-horizontal>.filter-cell.last{padding-right:0}.s12{width:100%}.s11{width:91.66666666666666%}.s10{width:83.33333333333334%}.s9{width:75%}.s8{width:66.66666666666666%}.s7{width:58.333333333333336%}.s6{width:50%}.s5{width:41.66666666666667%}.s4{width:33.33333333333333%}.s3{width:25%}.s2{width:16.666666666666664%}.s1{width:8.333333333333332%}@media all and (max-width:468px){.s12,.s11,.s10,.s9,.s8,.s7,.s6,.s5,.s4,.s3,.s2,.s1{width:100%}.filter>.filter-cell{padding:0}}
\ No newline at end of file
diff --git a/dist/ng-table.min.js b/dist/ng-table.min.js
index a3e8a555..b01f5ce6 100644
--- a/dist/ng-table.min.js
+++ b/dist/ng-table.min.js
@@ -1,4 +1,4 @@
-/*! ngTable v1.0.0-alpha.6 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
+/*! ngTable v1.0.0-alpha.7 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
-!function(a,b){"use strict";return"function"==typeof define&&define.amd?void define(["angular"],function(a){return b(a)}):b(a)}(window.angular||null,function(a){"use strict";return function(){a.module("ngTable",[])}(),function(){a.module("ngTable").value("ngTableDefaults",{params:{},settings:{}})}(),function(){function b(b){function c(b,c){var f=b.charAt(0).toUpperCase()+b.substring(1),g={};return g["on"+f]=d(b),g["publish"+f]=e(b),a.extend(c,g)}function d(c){return function(d){var e=a.identity,g=b;if(2===arguments.length?a.isFunction(arguments[1].$new)?g=arguments[1]:e=arguments[1]:arguments.length>2&&(g=arguments[1],e=arguments[2]),a.isObject(e)){var h=e;e=function(a){return a===h}}return g.$on("ngTable:"+c,function(a,b){if(!b.isNullInstance){var c=f(arguments,2),g=[b].concat(c);e.apply(this,g)&&d.apply(this,g)}})}}function e(a){return function(){var c=["ngTable:"+a].concat(Array.prototype.slice.call(arguments));b.$broadcast.apply(b,c)}}function f(a,b){return Array.prototype.slice.call(a,null==b?1:b)}var g={};return g=c("afterCreated",g),g=c("afterReloadData",g),g=c("datasetChanged",g),g=c("pagesChanged",g)}a.module("ngTable").factory("ngTableEventsChannel",b),b.$inject=["$rootScope"]}(),function(){function b(){function b(){c()}function c(){f=g}function d(b){var c=a.extend({},f,b);c.aliasUrls=a.extend({},f.aliasUrls,b.aliasUrls),f=c}function e(){function b(b,c){return a.isObject(b)&&(b=b.id),-1!==b.indexOf("/")?b:e.getUrlForAlias(b,c)}function c(a){return f.aliasUrls[a]||f.defaultBaseUrl+a+f.defaultExt}var d,e={config:d,getTemplateUrl:b,getUrlForAlias:c};return Object.defineProperty(e,"config",{get:function(){return d=d||a.copy(f)},enumerable:!0}),e}var f,g={defaultBaseUrl:"ng-table/filters/",defaultExt:".html",aliasUrls:{}};this.$get=e,this.resetConfigs=c,this.setConfig=d,b(),e.$inject=[]}a.module("ngTable").provider("ngTableFilterConfig",b),b.$inject=[]}(),function(){function b(){function b(b){function d(d){var e=d.settings();return a.isFunction(e.filterFn)?e.filterFn:b(e.filterFilterName||c.filterFilterName)}function e(a,b){var c=b.filter(!0),e=Object.keys(c),f=e.reduce(function(a,b){return a=g(a,c[b],b)},{}),h=d(b);return h.call(b,a,f,b.settings().filterComparator)}function f(a,d){if(null==a)return[];var f=d.hasFilter()?e(a,d):a,g=d.orderBy(),h=g.length?b(c.sortingFilterName)(f,g):f,i=h.slice((d.page()-1)*d.count(),d.page()*d.count());return d.total(h.length),i}function g(a,b,c){var d=c.split("."),e=a,f=d[d.length-1],g=e,h=d.slice(0,d.length-1);return h.forEach(function(a){g.hasOwnProperty(a)||(g[a]={}),g=g[a]}),g[f]=b,e}return f}var c=this;c.$get=b,c.filterFilterName="filter",c.sortingFilterName="orderBy",b.$inject=["$filter"]}a.module("ngTable").provider("ngTableDefaultGetData",b),b.$inject=[]}(),function(){function b(a){function b(b){return function(){var c=a.defer(),d=b.apply(this,[c].concat(Array.prototype.slice.call(arguments)));return d||(d=c.promise),d}}return b}a.module("ngTable").factory("ngTableGetDataBcShim",b),b.$inject=["$q"]}(),function(){a.module("ngTable").factory("ngTableColumn",[function(){function b(b,d){var e=Object.create(b);for(var f in c)void 0===e[f]&&(e[f]=c[f]),a.isFunction(e[f])||!function(a){e[a]=function(){return b[a]}}(f),function(a){var c=e[a];e[a]=function(){return 0===arguments.length?c.call(b,d):c.apply(b,arguments)}}(f);return e}var c={"class":function(){return""},filter:function(){return!1},filterData:a.noop,headerTemplateURL:function(){return!1},headerTitle:function(){return""},sortable:function(){return!1},show:function(){return!0},title:function(){return""},titleAlt:function(){return""}};return{buildColumn:b}}])}(),function(){a.module("ngTable").factory("NgTableParams",["$q","$log","ngTableDefaults","ngTableGetDataBcShim","ngTableDefaultGetData","ngTableEventsChannel",function(b,c,d,e,f,g){var h=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},i=function(i,j){function k(){var b=u&&u.filter&&u.filter.$,c=p&&p.filter&&p.filter.$;return!a.equals(b,c)}function l(){var a=v.getDataFnAdaptor(v.getData);return b.when(a.call(v,r))}function m(){var a=v.getGroupsFnAdaptor(v.getGroups);return b.when(a.call(v,r))}function n(a){var c=v.interceptors||[];return c.reduce(function(a,c){var d=c.response&&c.response.bind(c)||b.when,e=c.responseError&&c.responseError.bind(c)||b.reject;return a.then(function(a){return d(a,r)},function(a){return e(a,r)})},a())}function o(){function c(a){return f(a.settings().data,a)}function d(c){var d=c.settings(),e=d.getDataFnAdaptor(d.getData),f=b.when(e.call(d,c));return f.then(function(b){var c={};a.forEach(b,function(b){var e;e=a.isFunction(d.groupBy)?d.groupBy(b):b[d.groupBy],c[e]=c[e]||{data:[]},c[e].value=e,c[e].data.push(b)});var e=[];for(var f in c)e.push(c[f]);return e})}return{getDataFnAdaptor:a.identity,getGroupsFnAdaptor:a.identity,getData:c,getGroups:d}}"boolean"==typeof i&&(this.isNullInstance=!0);var p,q,r=this,s=!1,t=function(){v.debugMode&&c.debug&&c.debug.apply(this,arguments)};this.data=[],this.parameters=function(b,c){if(c=c||!1,a.isDefined(b)){for(var d in b){var e=b[d];if(c&&d.indexOf("[")>=0){for(var f=d.split(/\[(.*)\]/).reverse(),g="",i=0,j=f.length;j>i;i++){var k=f[i];if(""!==k){var l=e;e={},e[g=k]=h(l)?parseFloat(l):l}}"sorting"===g&&(u[g]={}),u[g]=a.extend(u[g]||{},e[g])}else u[d]=h(b[d])?parseFloat(b[d]):b[d]}return t("ngTable: set parameters",u),this}return u},this.settings=function(b){if(a.isDefined(b)){a.isArray(b.data)&&(b.total=b.data.length),b.getData&&b.getData.length>1&&(b.getDataFnAdaptor=e),b.getGroups&&b.getGroups.length>2&&(b.getGroupsFnAdaptor=e);var c=v.data;v=a.extend(v,b);var d=b.hasOwnProperty("data")&&b.data!=c;return d&&(s&&this.page(1),s=!1,g.publishDatasetChanged(this,b.data,c)),t("ngTable: set settings",v),this}return v},this.page=function(b){return a.isDefined(b)?this.parameters({page:b}):u.page},this.total=function(b){return a.isDefined(b)?this.settings({total:b}):v.total},this.count=function(b){return a.isDefined(b)?this.parameters({count:b,page:1}):u.count},this.filter=function(b){if(a.isDefined(b)&&a.isObject(b))return this.parameters({filter:b,page:1});if(b===!0){for(var c=Object.keys(u.filter),d={},e=0;ed?6:d,i=[],h=Math.ceil(b/c),h>1){i.push({type:"prev",number:Math.max(1,a-1),active:a>1}),i.push({type:"first",number:1,active:a>1,current:1===a}),f=Math.round((v.paginationMaxBlocks-v.paginationMinBlocks)/2),g=Math.max(2,a-f),e=Math.min(h-1,a+2*f-(a-g)),g=Math.max(2,g-(2*f-(e-g)));for(var j=g;e>=j;)i.push(j===g&&2!==j||j===e&&j!==h-1?{type:"more",active:!1}:{type:"page",number:j,active:a!==j,current:a===j}),j++;i.push({type:"last",number:h,active:a!==h,current:a===h}),i.push({type:"next",number:Math.min(h,a+1),active:h>a})}return i},this.isDataReloadRequired=function(){return!s||!a.equals(u,p)||k()},this.hasFilter=function(){return Object.keys(this.filter(!0)).length>0},this.hasFilterChanges=function(){return!a.equals(u&&u.filter,p&&p.filter)||k()},this.url=function(b){b=b||!1;var c=b?[]:{};for(var d in u)if(u.hasOwnProperty(d)){var e=u[d],f=encodeURIComponent(d);if("object"==typeof e){for(var g in e)if(!a.isUndefined(e[g])&&""!==e[g]){var h=f+"["+encodeURIComponent(g)+"]";b?c.push(h+"="+e[g]):c[h]=e[g]}}else a.isFunction(e)||a.isUndefined(e)||""===e||(b?c.push(f+"="+encodeURIComponent(e)):c[f]=encodeURIComponent(e))}return c},this.reload=function(){var c=this,d=null;v.$loading=!0,p=a.copy(u),s=!0,d=n(v.groupBy?m:l),t("ngTable: reload data");var e=c.data;return d.then(function(a){return v.$loading=!1,q=null,c.data=a,g.publishAfterReloadData(c,a,e),c.reloadPages(),v.$scope&&v.$scope.$emit("ngTableAfterReloadData"),a})["catch"](function(a){return q=p,p=null,s=!1,b.reject(a)})},this.hasErrorState=function(){return!(!q||!a.equals(q,u))},this.reloadPages=function(){var b;return function(){var c=b,d=r.generatePagesArray(r.page(),r.total(),r.count());a.equals(c,d)||(b=d,g.publishPagesChanged(this,d,c))}}();var u={page:1,count:10,filter:{},sorting:{},group:{},groupBy:null};a.extend(u,d.params);var v={$scope:null,$loading:!1,data:null,total:0,defaultSort:"desc",filterComparator:void 0,filterDelay:750,filterFilterName:void 0,filterFn:void 0,filterLayout:"stack",counts:[10,25,50,100],interceptors:[],paginationMaxBlocks:11,paginationMinBlocks:5,sortingIndicator:"span"};return this.settings(o()),this.settings(d.settings),this.settings(j),this.parameters(i,!0),g.publishAfterCreated(this),this};return i}]),a.module("ngTable").factory("ngTableParams",["NgTableParams",function(a){return a}])}(),function(){a.module("ngTable").controller("ngTableController",["$scope","NgTableParams","$timeout","$parse","$compile","$attrs","$element","ngTableColumn","ngTableEventsChannel",function(b,c,d,e,f,g,h,i,j){function k(a){if(a&&!b.params.hasErrorState()){b.params.settings().$scope=b;var c=b.params;if(c.hasFilterChanges()){var d=function(){c.page(1),c.reload()};c.settings().filterDelay?m(d,c.settings().filterDelay):d()}else c.reload()}}function l(){function a(a,c){a.settings().groupBy?b.$groups=c:b.$data=c}function c(a,c){b.pages=c}function d(a){return b.params===a}j.onAfterReloadData(a,b,d),j.onPagesChanged(c,b,d)}b.$filterRow={},b.$loading=!1,b.hasOwnProperty("params")||(b.params=new c(!0)),b.params.settings().$scope=b;var m=function(){var a=0;return function(b,c){d.cancel(a),a=d(b,c)}}();b.$watch("params",function(a,b){a!==b&&a&&a.reload()},!1),b.$watch("params.isDataReloadRequired()",k),this.compileDirectiveTemplates=function(){if(!h.hasClass("ng-table")){b.templates={header:g.templateHeader?g.templateHeader:"ng-table/header.html",pagination:g.templatePagination?g.templatePagination:"ng-table/pager.html"},h.addClass("ng-table");var c=null,d=!1;a.forEach(h.children(),function(a){"THEAD"===a.tagName&&(d=!0)}),d||(c=a.element(document.createElement("thead")).attr("ng-include","templates.header"),h.prepend(c));var e=a.element(document.createElement("div")).attr({"ng-table-pagination":"params","template-url":"templates.pagination"});h.after(e),c&&f(c)(b),f(e)(b)}},this.loadFilterData=function(c){a.forEach(c,function(c){var d;if(d=c.filterData(b,{$column:c}),!d)return void delete c.filterData;if(a.isObject(d)&&(a.isObject(d.promise)||a.isFunction(d.then))){var e=a.isFunction(d.then)?d:d.promise;return delete c.filterData,e.then(function(b){a.isArray(b)||a.isFunction(b)||a.isObject(b)||(b=[]),c.data=b})}return c.data=d})},this.buildColumns=function(a){return a.map(function(a){return i.buildColumn(a,b)})},this.parseNgTableDynamicExpr=function(a){if(!a||a.indexOf(" with ")>-1){var b=a.split(/\s+with\s+/);return{tableParams:b[0],columns:b[1]}}throw new Error("Parse error (expected example: ng-table-dynamic='tableParams with cols')")},this.setupBindingsToInternalScope=function(c){var d=e(c);b.$watch(d,function(c){a.isUndefined(c)||(b.paramsModel=d,b.params=c)},!1),g.showFilter&&b.$parent.$watch(g.showFilter,function(a){b.show_filter=a}),g.disableFilter&&b.$parent.$watch(g.disableFilter,function(a){b.$filterRow.disabled=a})},l()}])}(),function(){a.module("ngTable").directive("ngTable",["$q","$parse",function(b,c){return{restrict:"A",priority:1001,scope:!0,controller:"ngTableController",compile:function(b){var d=[],e=0,f=null;return a.forEach(a.element(b.find("tr")),function(b){b=a.element(b),b.hasClass("ng-table-group")||f||(f=b)}),f?(a.forEach(f.find("td"),function(b){var f=a.element(b);if(!f.attr("ignore-cell")||"true"!==f.attr("ignore-cell")){var g=function(a){return f.attr("x-data-"+a)||f.attr("data-"+a)||f.attr(a)},h=function(b){var e=g(b);return e?function(b,f){return c(e)(b,a.extend(f||{},{$columns:d}))}:void 0},i=g("title-alt")||g("title");i&&f.attr("data-title-text","{{"+i+"}}"),d.push({id:e++,title:h("title"),titleAlt:h("title-alt"),headerTitle:h("header-title"),sortable:h("sortable"),"class":h("header-class"),filter:h("filter"),headerTemplateURL:h("header"),filterData:h("filter-data"),show:f.attr("ng-if")?function(a){return c(f.attr("ng-if"))(a)}:void 0})}}),function(a,b,c,e){a.$columns=d=e.buildColumns(d),e.setupBindingsToInternalScope(c.ngTable),e.loadFilterData(d),e.compileDirectiveTemplates()}):void 0}}}])}(),function(){a.module("ngTable").directive("ngTableDynamic",["$parse",function(){return{restrict:"A",priority:1001,scope:!0,controller:"ngTableController",compile:function(b){var c;return a.forEach(a.element(b.find("tr")),function(b){b=a.element(b),b.hasClass("ng-table-group")||c||(c=b)}),c?(a.forEach(c.find("td"),function(b){var c=a.element(b),d=function(a){return c.attr("x-data-"+a)||c.attr("data-"+a)||c.attr(a)},e=d("title");e||c.attr("data-title-text","{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}");var f=c.attr("ng-if");f||c.attr("ng-if","$columns[$index].show(this)")}),function(a,b,c,d){var e=d.parseNgTableDynamicExpr(c.ngTableDynamic);d.setupBindingsToInternalScope(e.tableParams),d.compileDirectiveTemplates(),a.$watchCollection(e.columns,function(b){a.$columns=d.buildColumns(b),d.loadFilterData(a.$columns)})}):void 0}}}])}(),function(){a.module("ngTable").directive("ngTablePagination",["$compile","ngTableEventsChannel",function(b,c){return{restrict:"A",scope:{params:"=ngTablePagination",templateUrl:"="},replace:!1,link:function(d,e){c.onAfterReloadData(function(a){d.pages=a.generatePagesArray()},d,function(a){return a===d.params}),d.$watch("templateUrl",function(c){if(!a.isUndefined(c)){var f=a.element(document.createElement("div"));f.attr({"ng-include":"templateUrl"}),e.append(f),b(f)(d)}})}}}])}(),function(){function b(b,c){b.config=c,b.getFilterCellCss=function(a,b){if("horizontal"!==b)return"s12";var c=Object.keys(a).length,d=parseInt(12/c,10);return"s"+d},b.getFilterPlaceholderValue=function(b){return a.isObject(b)?b.placeholder:""}}a.module("ngTable").controller("ngTableFilterRowController",b),b.$inject=["$scope","ngTableFilterConfig"]}(),function(){function b(){var a={restrict:"E",replace:!0,templateUrl:"ng-table/filterRow.html",scope:!0,controller:"ngTableFilterRowController"};return a}a.module("ngTable").directive("ngTableFilterRow",b),b.$inject=[]}(),function(){function b(a){function b(b,c){var d=b.sortable&&b.sortable();if(d){var e=a.params.settings().defaultSort,f="asc"===e?"desc":"asc",g=a.params.sorting()&&a.params.sorting()[d]&&a.params.sorting()[d]===e,h=c.ctrlKey||c.metaKey?a.params.sorting():{};h[d]=g?f:e,a.params.parameters({sorting:h})}}a.sortBy=b}a.module("ngTable").controller("ngTableSorterRowController",b),b.$inject=["$scope"]}(),function(){function b(){var a={restrict:"E",replace:!0,templateUrl:"ng-table/sorterRow.html",scope:!0,controller:"ngTableSorterRowController"};return a}a.module("ngTable").directive("ngTableSorterRow",b),b.$inject=[]}(),function(){function b(){var a={restrict:"A",controller:c};return a}function c(b,c,d,e){function f(){var a=c(d.ngTableSelectFilterDs)(b);h(a).then(function(a){a&&!g(a)&&a.unshift({id:"",title:""}),a=a||[],b.$selectData=a})}function g(a){for(var b,c=0;c | '),a.put("ng-table/filters/number.html",' '),a.put("ng-table/filters/select-multiple.html",' '),a.put("ng-table/filters/select.html",' '),a.put("ng-table/filters/text.html",' '),a.put("ng-table/header.html"," "),a.put("ng-table/pager.html",' '),a.put("ng-table/sorterRow.html",' |
')}]),a.module("ngTable")});
+!function(a,b){"use strict";return"function"==typeof define&&define.amd?void define(["angular"],function(a){return b(a)}):b(a)}(window.angular||null,function(a){"use strict";return function(){a.module("ngTable",[])}(),function(){a.module("ngTable").value("ngTableDefaults",{params:{},settings:{}})}(),function(){function b(b){function c(b,c){var f=b.charAt(0).toUpperCase()+b.substring(1),g={};return g["on"+f]=d(b),g["publish"+f]=e(b),a.extend(c,g)}function d(c){return function(d){var e=a.identity,g=b;if(2===arguments.length?a.isFunction(arguments[1].$new)?g=arguments[1]:e=arguments[1]:arguments.length>2&&(g=arguments[1],e=arguments[2]),a.isObject(e)){var h=e;e=function(a){return a===h}}return g.$on("ngTable:"+c,function(a,b){if(!b.isNullInstance){var c=f(arguments,2),g=[b].concat(c);e.apply(this,g)&&d.apply(this,g)}})}}function e(a){return function(){var c=["ngTable:"+a].concat(Array.prototype.slice.call(arguments));b.$broadcast.apply(b,c)}}function f(a,b){return Array.prototype.slice.call(a,null==b?1:b)}var g={};return g=c("afterCreated",g),g=c("afterReloadData",g),g=c("datasetChanged",g),g=c("pagesChanged",g)}a.module("ngTable").factory("ngTableEventsChannel",b),b.$inject=["$rootScope"]}(),function(){function b(){function b(){c()}function c(){f=g}function d(b){var c=a.extend({},f,b);c.aliasUrls=a.extend({},f.aliasUrls,b.aliasUrls),f=c}function e(){function b(b,c){return a.isObject(b)&&(b=b.id),-1!==b.indexOf("/")?b:e.getUrlForAlias(b,c)}function c(a){return f.aliasUrls[a]||f.defaultBaseUrl+a+f.defaultExt}var d,e={config:d,getTemplateUrl:b,getUrlForAlias:c};return Object.defineProperty(e,"config",{get:function(){return d=d||a.copy(f)},enumerable:!0}),e}var f,g={defaultBaseUrl:"ng-table/filters/",defaultExt:".html",aliasUrls:{}};this.$get=e,this.resetConfigs=c,this.setConfig=d,b(),e.$inject=[]}a.module("ngTable").provider("ngTableFilterConfig",b),b.$inject=[]}(),function(){function b(){function b(b){function d(d){var e=d.settings();return a.isFunction(e.filterFn)?e.filterFn:b(e.filterFilterName||c.filterFilterName)}function e(){return b(c.sortingFilterName)}function f(a,b){if(!b.hasFilter())return a;var c=b.filter(!0),e=Object.keys(c),f=e.reduce(function(a,b){return a=j(a,c[b],b)},{}),g=d(b);return g.call(b,a,f,b.settings().filterComparator)}function g(a,b){var c=a.slice((b.page()-1)*b.count(),b.page()*b.count());return b.total(a.length),c}function h(a,b){var c=b.orderBy(),d=e(b);return c.length?d(a,c):a}function i(b,c){if(null==b)return[];var d=a.extend({},k,c.settings().dataOptions),e=d.applyFilter?f(b,c):b,i=d.applySort?h(e,c):e;return d.applyPaging?g(i,c):i}function j(a,b,c){var d=c.split("."),e=a,f=d[d.length-1],g=e,h=d.slice(0,d.length-1);return h.forEach(function(a){g.hasOwnProperty(a)||(g[a]={}),g=g[a]}),g[f]=b,e}var k={applyFilter:!0,applySort:!0,applyPaging:!0};return i.applyPaging=g,i.getFilterFn=d,i.getOrderByFn=e,i}var c=this;c.$get=b,c.filterFilterName="filter",c.sortingFilterName="orderBy",b.$inject=["$filter"]}a.module("ngTable").provider("ngTableDefaultGetData",b),b.$inject=[]}(),function(){function b(a){function b(b){return function(){var c=a.defer(),d=b.apply(this,[c].concat(Array.prototype.slice.call(arguments)));return d||(d=c.promise),d}}return b}a.module("ngTable").factory("ngTableGetDataBcShim",b),b.$inject=["$q"]}(),function(){a.module("ngTable").factory("ngTableColumn",[function(){function b(){return{"class":c(""),filter:c(!1),groupable:c(!1),filterData:a.noop,headerTemplateURL:c(!1),headerTitle:c(""),sortable:c(!1),show:c(!0),title:c(""),titleAlt:c("")}}function c(a){var b=a,c=function(){return b};return c.assign=function(a,c){b=c},c}function d(c,d){var e=Object.create(c),f=b();for(var g in f)void 0===e[g]&&(e[g]=f[g]),a.isFunction(e[g])||!function(a){var b=function(){return c[a]};b.assign=function(b,d){c[a]=d},e[a]=b}(g),function(a){var b=e[a];e[a]=function(){return 0===arguments.length?b.call(c,d):b.apply(c,arguments)},b.assign&&(e[a].assign=b.assign)}(g);return e}return{buildColumn:d}}])}(),function(){a.module("ngTable").factory("NgTableParams",["$q","$log","$filter","ngTableDefaults","ngTableGetDataBcShim","ngTableDefaultGetData","ngTableEventsChannel",function(b,c,d,e,f,g,h){var i=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},j=function(d,j){function k(b){if(a.isFunction(b))return b;if(a.isString(b)){var c={};return c[b]=z.groupOptions&&z.groupOptions.defaultSort,c}return b}function l(a){var b=[];for(var c in a)b.push(("asc"===a[c]?"+":"-")+c);return b}function m(){var b={params:y};return a.isFunction(y.group)&&(b.groupSortDirection=y.group.sortDirection),b}function n(){var b=y.filter&&y.filter.$,c=s&&s.params.filter&&s.params.filter.$;return!a.equals(b,c)}function o(){var a=z.getDataFnAdaptor(z.getData);return b.when(a.call(z,u))}function p(){var a=z.getGroupsFnAdaptor(z.getGroups);return b.when(a.call(z,u))}function q(a){var c=z.interceptors||[];return c.reduce(function(a,c){var d=c.response&&c.response.bind(c)||b.when,e=c.responseError&&c.responseError.bind(c)||b.reject;return a.then(function(a){return d(a,u)},function(a){return e(a,u)})},a())}function r(){function c(a){return g(a.settings().data,a)}function d(c){var d,e=c.group(),f=void 0;if(a.isFunction(e))d=e,f=e.sortDirection;else{var h=Object.keys(e)[0];f=e[h],d=function(a){return a[h]}}var i=c.settings(),j=i.dataOptions;i.dataOptions={applyPaging:!1};var k=i.getDataFnAdaptor(i.getData),m=b.when(k.call(i,c));return m.then(function(b){var e={},h=i.groupOptions||x;a.forEach(b,function(a){var b=d(a);e[b]=e[b]||{data:[],$hideRows:!h.isExpanded,value:b},e[b].data.push(a)});var j=[];for(var k in e)j.push(e[k]);if(f){var m=g.getOrderByFn(),n=l({value:f});j=m(j,n)}return g.applyPaging(j,c)})["finally"](function(){i.dataOptions=j})}return{getDataFnAdaptor:a.identity,getGroupsFnAdaptor:a.identity,getData:c,getGroups:d}}"boolean"==typeof d&&(this.isNullInstance=!0);var s,t,u=this,v=!1,w=function(){z.debugMode&&c.debug&&c.debug.apply(this,arguments)},x={defaultSort:"asc",isExpanded:!0};this.data=[],this.parameters=function(b,c){if(c=c||!1,a.isDefined(b)){for(var d in b){var e=b[d];if(c&&d.indexOf("[")>=0){for(var f=d.split(/\[(.*)\]/).reverse(),g="",h=0,j=f.length;j>h;h++){var l=f[h];if(""!==l){var m=e;e={},e[g=l]=i(m)?parseFloat(m):m}}"sorting"===g&&(y[g]={}),y[g]=a.extend(y[g]||{},e[g])}else y[d]="group"===d?k(b[d]):i(b[d])?parseFloat(b[d]):b[d]}return w("ngTable: set parameters",y),this}return y},this.settings=function(b){if(a.isDefined(b)){b.groupOptions&&(b.groupOptions=a.extend({},z.groupOptions,b.groupOptions)),a.isArray(b.data)&&(b.total=b.data.length),b.getData&&b.getData.length>1&&(b.getDataFnAdaptor=f),b.getGroups&&b.getGroups.length>2&&(b.getGroupsFnAdaptor=f);var c=z.data;z=a.extend(z,b);var d=b.hasOwnProperty("data")&&b.data!=c;return d&&(v&&this.page(1),v=!1,h.publishDatasetChanged(this,b.data,c)),w("ngTable: set settings",z),this}return z},this.page=function(b){return a.isDefined(b)?this.parameters({page:b}):y.page},this.total=function(b){return a.isDefined(b)?this.settings({total:b}):z.total},this.count=function(b){return a.isDefined(b)?this.parameters({count:b,page:1}):y.count},this.filter=function(b){if(a.isDefined(b)&&a.isObject(b))return this.parameters({filter:b,page:1});if(b===!0){for(var c=Object.keys(y.filter),d={},e=0;ed?6:d,i=[],h=Math.ceil(b/c),h>1){i.push({type:"prev",number:Math.max(1,a-1),active:a>1}),i.push({type:"first",number:1,active:a>1,current:1===a}),f=Math.round((z.paginationMaxBlocks-z.paginationMinBlocks)/2),g=Math.max(2,a-f),e=Math.min(h-1,a+2*f-(a-g)),g=Math.max(2,g-(2*f-(e-g)));for(var j=g;e>=j;)i.push(j===g&&2!==j||j===e&&j!==h-1?{type:"more",active:!1}:{type:"page",number:j,active:a!==j,current:a===j}),j++;i.push({type:"last",number:h,active:a!==h,current:a===h}),i.push({type:"next",number:Math.min(h,a+1),active:h>a})}return i},this.isDataReloadRequired=function(){return!v||!a.equals(m(),s)||n()},this.hasFilter=function(){return Object.keys(this.filter(!0)).length>0},this.hasGroup=function(b,c){return null==b?a.isFunction(y.group)||Object.keys(y.group).length>0:a.isFunction(b)?null==c?y.group===b:y.group===b&&b.sortDirection===c:null==c?-1!==Object.keys(y.group).indexOf(b):y.group[b]===c},this.hasFilterChanges=function(){var b=s&&s.params.filter;return!a.equals(y.filter,b)||n()},this.url=function(b){function c(a,c){b?e.push(c+"="+encodeURIComponent(a)):e[c]=encodeURIComponent(a)}function d(b,c){return"group"===c?!0:a.isDefined(b)&&""!==b}b=b||!1;var e=b?[]:{};for(var f in y)if(y.hasOwnProperty(f)){var g=y[f],h=encodeURIComponent(f);if("object"==typeof g){for(var i in g)if(d(g[i],f)){var j=h+"["+encodeURIComponent(i)+"]";c(g[i],j)}}else!a.isFunction(g)&&d(g,f)&&c(g,h)}return e},this.reload=function(){var c=this,d=null;z.$loading=!0,s=a.copy(m()),v=!0,d=q(c.hasGroup()?p:o),w("ngTable: reload data");var e=c.data;return d.then(function(a){return z.$loading=!1,t=null,c.data=a,h.publishAfterReloadData(c,a,e),c.reloadPages(),z.$scope&&z.$scope.$emit("ngTableAfterReloadData"),a})["catch"](function(a){return t=s,s=null,v=!1,b.reject(a)})},this.hasErrorState=function(){return!(!t||!a.equals(t,m()))},this.reloadPages=function(){var b;return function(){var c=b,d=u.generatePagesArray(u.page(),u.total(),u.count());a.equals(c,d)||(b=d,h.publishPagesChanged(this,d,c))}}();var y={page:1,count:10,filter:{},sorting:{},group:{}};a.extend(y,e.params);var z={$scope:null,$loading:!1,data:null,total:0,defaultSort:"desc",filterComparator:void 0,filterDelay:750,filterFilterName:void 0,filterFn:void 0,filterLayout:"stack",groupOptions:a.copy(x),counts:[10,25,50,100],interceptors:[],paginationMaxBlocks:11,paginationMinBlocks:5,sortingIndicator:"span"};return this.settings(r()),this.settings(e.settings),this.settings(j),this.parameters(d,!0),h.publishAfterCreated(this),this};return j}]),a.module("ngTable").factory("ngTableParams",["NgTableParams",function(a){return a}])}(),function(){a.module("ngTable").controller("ngTableController",["$scope","NgTableParams","$timeout","$parse","$compile","$attrs","$element","ngTableColumn","ngTableEventsChannel",function(b,c,d,e,f,g,h,i,j){function k(a){if(a&&!b.params.hasErrorState()){b.params.settings().$scope=b;var c=b.params;if(c.hasFilterChanges()){var d=function(){c.page(1),c.reload()};c.settings().filterDelay?m(d,c.settings().filterDelay):d()}else c.reload()}}function l(){function a(a,c){a.hasGroup()?b.$groups=c:b.$data=c}function c(a,c){b.pages=c}function d(a){return b.params===a}j.onAfterReloadData(a,b,d),j.onPagesChanged(c,b,d)}b.$filterRow={},b.$loading=!1,b.hasOwnProperty("params")||(b.params=new c(!0)),b.params.settings().$scope=b;var m=function(){var a=0;return function(b,c){d.cancel(a),a=d(b,c)}}();b.$watch("params",function(a,b){a!==b&&a&&a.reload()},!1),b.$watch("params.isDataReloadRequired()",k),this.compileDirectiveTemplates=function(){if(!h.hasClass("ng-table")){b.templates={header:g.templateHeader?g.templateHeader:"ng-table/header.html",pagination:g.templatePagination?g.templatePagination:"ng-table/pager.html"},h.addClass("ng-table");var c=null,d=!1;a.forEach(h.children(),function(a){"THEAD"===a.tagName&&(d=!0)}),d||(c=a.element(document.createElement("thead")).attr("ng-include","templates.header"),h.prepend(c));var e=a.element(document.createElement("div")).attr({"ng-table-pagination":"params","template-url":"templates.pagination"});h.after(e),c&&f(c)(b),f(e)(b)}},this.loadFilterData=function(c){a.forEach(c,function(c){var d;if(d=c.filterData(b,{$column:c}),!d)return void delete c.filterData;if(a.isObject(d)&&(a.isObject(d.promise)||a.isFunction(d.then))){var e=a.isFunction(d.then)?d:d.promise;return delete c.filterData,e.then(function(b){a.isArray(b)||a.isFunction(b)||a.isObject(b)||(b=[]),c.data=b})}return c.data=d})},this.buildColumns=function(a){return a.map(function(a){return i.buildColumn(a,b)})},this.parseNgTableDynamicExpr=function(a){if(!a||a.indexOf(" with ")>-1){var b=a.split(/\s+with\s+/);return{tableParams:b[0],columns:b[1]}}throw new Error("Parse error (expected example: ng-table-dynamic='tableParams with cols')")},this.setupBindingsToInternalScope=function(c){var d=e(c);if(b.$watch(d,function(c){a.isUndefined(c)||(b.paramsModel=d,b.params=c)},!1),g.showFilter&&b.$parent.$watch(g.showFilter,function(a){b.show_filter=a}),b.$groupRow={},g.showGroup){var f=e(g.showGroup);b.$parent.$watch(f,function(a){b.$groupRow.show=a}),f.assign&&b.$watch("$groupRow.show",function(a){f.assign(b.$parent,a)})}else b.$watch("params.hasGroup()",function(a){b.$groupRow.show=a});g.disableFilter&&b.$parent.$watch(g.disableFilter,function(a){b.$filterRow.disabled=a})},l()}])}(),function(){a.module("ngTable").directive("ngTable",["$q","$parse",function(b,c){return{restrict:"A",priority:1001,scope:!0,controller:"ngTableController",compile:function(b){var d,e,f=[],g=0,h=[];return a.forEach(a.element(b.find("tr")),function(b){h.push(a.element(b))}),d=h.filter(function(a){return!a.hasClass("ng-table-group")})[0],e=h.filter(function(a){return a.hasClass("ng-table-group")})[0],d?(a.forEach(d.find("td"),function(b){var d=a.element(b);if(!d.attr("ignore-cell")||"true"!==d.attr("ignore-cell")){var h=function(a){return d.attr("x-data-"+a)||d.attr("data-"+a)||d.attr(a)},i=function(a,b){d.attr("x-data-"+a)?d.attr("x-data-"+a,b):d.attr("data"+a)?d.attr("data"+a,b):d.attr(a,b)},j=function(b){var d=h(b);if(!d)return void 0;var e,g=function(b,g){return void 0!==e?e:c(d)(b,a.extend(g||{},{$columns:f}))};return g.assign=function(a,b){var f=c(d);f.assign?f.assign(a.$parent,b):e=b},g},k=h("title-alt")||h("title");k&&d.attr("data-title-text","{{"+k+"}}"),f.push({id:g++,title:j("title"),titleAlt:j("title-alt"),headerTitle:j("header-title"),sortable:j("sortable"),"class":j("header-class"),filter:j("filter"),groupable:j("groupable"),headerTemplateURL:j("header"),filterData:j("filter-data"),show:d.attr("ng-if")?j("ng-if"):void 0}),e&&i("ng-if","$columns["+(f.length-1)+"].show(this)")}}),function(a,b,c,d){a.$columns=f=d.buildColumns(f),d.setupBindingsToInternalScope(c.ngTable),d.loadFilterData(f),d.compileDirectiveTemplates()}):void 0}}}])}(),function(){a.module("ngTable").directive("ngTableDynamic",[function(){return{restrict:"A",priority:1001,scope:!0,controller:"ngTableController",compile:function(b){var c;return a.forEach(a.element(b.find("tr")),function(b){b=a.element(b),b.hasClass("ng-table-group")||c||(c=b)}),c?(a.forEach(c.find("td"),function(b){var c=a.element(b),d=function(a){return c.attr("x-data-"+a)||c.attr("data-"+a)||c.attr(a)},e=d("title");e||c.attr("data-title-text","{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}");var f=c.attr("ng-if");f||c.attr("ng-if","$columns[$index].show(this)")}),function(a,b,c,d){var e=d.parseNgTableDynamicExpr(c.ngTableDynamic);d.setupBindingsToInternalScope(e.tableParams),d.compileDirectiveTemplates(),a.$watchCollection(e.columns,function(b){a.$columns=d.buildColumns(b),d.loadFilterData(a.$columns)})}):void 0}}}])}(),function(){a.module("ngTable").directive("ngTablePagination",["$compile","ngTableEventsChannel",function(b,c){return{restrict:"A",scope:{params:"=ngTablePagination",templateUrl:"="},replace:!1,link:function(d,e){c.onAfterReloadData(function(a){d.pages=a.generatePagesArray()},d,function(a){return a===d.params}),d.$watch("templateUrl",function(c){if(!a.isUndefined(c)){var f=a.element(document.createElement("div"));f.attr({"ng-include":"templateUrl"}),e.append(f),b(f)(d)}})}}}])}(),function(){function b(b,c){b.config=c,b.getFilterCellCss=function(a,b){if("horizontal"!==b)return"s12";var c=Object.keys(a).length,d=parseInt(12/c,10);return"s"+d},b.getFilterPlaceholderValue=function(b){return a.isObject(b)?b.placeholder:""}}a.module("ngTable").controller("ngTableFilterRowController",b),b.$inject=["$scope","ngTableFilterConfig"]}(),function(){function b(){var a={restrict:"E",replace:!0,templateUrl:"ng-table/filterRow.html",scope:!0,controller:"ngTableFilterRowController"};return a}a.module("ngTable").directive("ngTableFilterRow",b),b.$inject=[]}(),function(){function b(b){function c(){b.getGroupables=g,b.getGroupTitle=f,b.getVisibleColumns=h,b.groupBy=i,b.isSelectedGroup=j,b.$watch("params.group()",k,!0)}function d(){var a;a=b.params.hasGroup(b.$selGroup,"asc")?"desc":b.params.hasGroup(b.$selGroup,"desc")?"":"asc",b.params.group(b.$selGroup,a)}function e(a){return b.$columns.filter(function(c){return c.groupable(b)===a})[0]}function f(c){return a.isFunction(c)?c.title:c.title(b)}function g(){var a=b.$columns.filter(function(a){return a.groupable(b)});return l.concat(a)}function h(){return b.$columns.filter(function(a){return a.show(b)})}function i(a){if(a.groupable)if(a.groupable(b)===b.$selGroup)d();else{var c=e(b.$selGroup);c&&c.show.assign&&a.show.assign&&(c.show.assign(b,!0),a.show.assign(b,!1)),b.params.group(a.groupable(b))}else a===b.$selGroup?d():b.params.group(a)}function j(a){return a.groupable?a.groupable(b)===b.$selGroup:a===b.$selGroup}function k(c){if(a.isFunction(c))l=[c],b.$selGroup=c,b.$selGroupTitle=c.title;else{var d=Object.keys(c||{})[0],f=e(d);f&&(b.$selGroupTitle=f.title(b),b.$selGroup=d)}}var l=[];c()}a.module("ngTable").controller("ngTableGroupRowController",b),b.$inject=["$scope"]}(),function(){function b(){var a={restrict:"E",replace:!0,templateUrl:"ng-table/groupRow.html",scope:!0,controller:"ngTableGroupRowController",controllerAs:"dctrl"};return a}a.module("ngTable").directive("ngTableGroupRow",b),b.$inject=[]}(),function(){function b(a){function b(b,c){var d=b.sortable&&b.sortable();if(d){var e=a.params.settings().defaultSort,f="asc"===e?"desc":"asc",g=a.params.sorting()&&a.params.sorting()[d]&&a.params.sorting()[d]===e,h=c.ctrlKey||c.metaKey?a.params.sorting():{};h[d]=g?f:e,a.params.parameters({sorting:h})}}a.sortBy=b}a.module("ngTable").controller("ngTableSorterRowController",b),b.$inject=["$scope"]}(),function(){function b(){var a={restrict:"E",replace:!0,templateUrl:"ng-table/sorterRow.html",scope:!0,controller:"ngTableSorterRowController"};return a}a.module("ngTable").directive("ngTableSorterRow",b),b.$inject=[]}(),function(){function b(){var a={restrict:"A",controller:c};return a}function c(b,c,d,e){function f(){var a=c(d.ngTableSelectFilterDs)(b);h(a).then(function(a){a&&!g(a)&&a.unshift({id:"",title:""}),a=a||[],b.$selectData=a})}function g(a){for(var b,c=0;c | '),a.put("ng-table/filters/number.html",' '),a.put("ng-table/filters/select-multiple.html",' '),a.put("ng-table/filters/select.html",' '),a.put("ng-table/filters/text.html",' '),a.put("ng-table/groupRow.html",' '),a.put("ng-table/header.html"," "),a.put("ng-table/pager.html",' '),a.put("ng-table/sorterRow.html",' ')}]),a.module("ngTable")});
//# sourceMappingURL=ng-table.min.js.map
\ No newline at end of file
diff --git a/dist/ng-table.min.js.map b/dist/ng-table.min.js.map
index cdc00004..c8c8919a 100644
--- a/dist/ng-table.min.js.map
+++ b/dist/ng-table.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"ng-table.min.js","sources":["ng-table.js"],"names":["angular","factory","define","amd","window","module","value","params","settings","ngTableEventsChannel","$rootScope","addChangeEvent","eventName","target","fnName","charAt","toUpperCase","substring","event","createEventSubscriptionFn","createPublishEventFn","extend","handler","eventSelector","identity","scope","arguments","length","isFunction","$new","isObject","requiredPublisher","publisher","$on","isNullInstance","eventArgs","rest","fnArgs","concat","apply","this","Array","prototype","slice","call","$broadcast","array","n","events","$inject","ngTableFilterConfigProvider","init","resetConfigs","config","defaultConfig","setConfig","customConfig","mergeConfig","aliasUrls","ngTableFilterConfig","getTemplateUrl","filterValue","filterKey","id","indexOf","service","getUrlForAlias","aliasName","defaultBaseUrl","defaultExt","publicConfig","Object","defineProperty","get","copy","enumerable","$get","provider","ngTableDefaultGetDataProvider","ngTableDefaultGetData","$filter","getFilterFn","filterFn","filterFilterName","applyFilter","data","filter","filterKeys","keys","parsedFilter","reduce","result","key","setPath","filterComparator","getData","fData","hasFilter","orderBy","orderedData","sortingFilterName","pagedData","page","count","total","obj","path","split","ret","lastKey","parentPathKeys","forEach","hasOwnProperty","ngTableGetDataBcShim","$q","createWrapper","getDataFn","$defer","defer","pData","promise","buildColumn","column","defaultScope","extendedCol","create","prop","defaults","undefined","prop1","getterFn","class","filterData","noop","headerTemplateURL","headerTitle","sortable","show","title","titleAlt","$log","ngTableDefaults","isNumber","isNaN","parseFloat","isFinite","NgTableParams","baseParameters","baseSettings","hasGlobalSearchFieldChanges","currentVal","$","previousVal","committedParams","equals","runGetData","getDataFnAdaptor","when","self","runGetGroups","getGroupsFn","getGroupsFnAdaptor","getGroups","runInterceptorPipeline","fetchFn","interceptors","interceptor","thenFn","response","bind","rejectFn","responseError","reject","then","reason","getDefaultSettingFns","adaptedFn","gotData","groups","item","groupName","groupBy","push","i","erroredParams","isCommittedDataset","log","debugMode","debug","parameters","newParameters","parseParamsFromUrl","isDefined","reverse","len","name","v","newSettings","isArray","originalDataset","hasDatasetChanged","publishDatasetChanged","significantFilter","sorting","sortArray","isSortBy","field","direction","generatePagesArray","currentPage","totalItems","pageSize","maxBlocks","maxPage","maxPivotPages","minPage","numPages","pages","Math","ceil","type","number","max","active","current","round","paginationMaxBlocks","paginationMinBlocks","min","isDataReloadRequired","hasFilterChanges","url","asString","pairs","encodeURIComponent","subkey","isUndefined","pname","reload","$loading","oldData","publishAfterReloadData","reloadPages","$scope","$emit","hasErrorState","currentPages","oldPages","newPages","publishPagesChanged","group","defaultSort","filterDelay","filterLayout","counts","sortingIndicator","publishAfterCreated","controller","$timeout","$parse","$compile","$attrs","$element","ngTableColumn","onDataReloadStatusChange","newStatus","currentParams","delayFilter","commonInit","bindDataToScope","newDatapage","$groups","$data","bindPagesToScope","isMyPublisher","onAfterReloadData","onPagesChanged","$filterRow","timer","callback","ms","cancel","$watch","newParams","oldParams","compileDirectiveTemplates","hasClass","templates","header","templateHeader","pagination","templatePagination","addClass","headerTemplate","theadFound","children","e","tagName","element","document","createElement","attr","prepend","paginationTemplate","ng-table-pagination","template-url","after","loadFilterData","$columns","$column","buildColumns","columns","map","col","parseNgTableDynamicExpr","parts","tableParams","Error","setupBindingsToInternalScope","tableParamsExpr","tableParamsGetter","paramsModel","showFilter","$parent","show_filter","disableFilter","disabled","directive","restrict","priority","compile","row","find","tr","el","getAttrValue","parsedAttribute","expr","locals","titleExpr","attrs","ngTable","tElement","showExpr","ngTableDynamic","$watchCollection","newCols","templateUrl","replace","link","pubParams","template","ng-include","append","ngTableFilterRowController","getFilterCellCss","layout","size","width","parseInt","getFilterPlaceholderValue","placeholder","ngTableFilterRow","ngTableSorterRowController","sortBy","parsedSortable","inverseSort","sortingParams","ctrlKey","metaKey","ngTableSorterRow","ngTableSelectFilterDs","ngTableSelectFilterDsController","getSelectListData","hasEmptyOption","unshift","$selectData","isMatch","run","$templateCache","put"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ng-table.min.js","sources":["ng-table.js"],"names":["angular","factory","define","amd","window","module","value","params","settings","ngTableEventsChannel","$rootScope","addChangeEvent","eventName","target","fnName","charAt","toUpperCase","substring","event","createEventSubscriptionFn","createPublishEventFn","extend","handler","eventSelector","identity","scope","arguments","length","isFunction","$new","isObject","requiredPublisher","publisher","$on","isNullInstance","eventArgs","rest","fnArgs","concat","apply","this","Array","prototype","slice","call","$broadcast","array","n","events","$inject","ngTableFilterConfigProvider","init","resetConfigs","config","defaultConfig","setConfig","customConfig","mergeConfig","aliasUrls","ngTableFilterConfig","getTemplateUrl","filterValue","filterKey","id","indexOf","service","getUrlForAlias","aliasName","defaultBaseUrl","defaultExt","publicConfig","Object","defineProperty","get","copy","enumerable","$get","provider","ngTableDefaultGetDataProvider","ngTableDefaultGetData","$filter","getFilterFn","filterFn","filterFilterName","getOrderByFn","sortingFilterName","applyFilter","data","hasFilter","filter","filterKeys","keys","parsedFilter","reduce","result","key","setPath","filterComparator","applyPaging","pagedData","page","count","total","applySort","orderBy","orderByFn","getData","options","defaultDataOptions","dataOptions","fData","orderedData","obj","path","split","ret","lastKey","parentPathKeys","forEach","hasOwnProperty","ngTableGetDataBcShim","$q","createWrapper","getDataFn","$defer","defer","pData","promise","createDefaults","class","createGetterSetter","groupable","filterData","noop","headerTemplateURL","headerTitle","sortable","show","title","titleAlt","initialValue","getter","assign","$scope","newValue","buildColumn","column","defaultScope","extendedCol","create","defaults","prop","undefined","prop1","getterFn","$log","ngTableDefaults","isNumber","isNaN","parseFloat","isFinite","NgTableParams","baseParameters","baseSettings","parseGroup","group","isString","grp","groupOptions","defaultSort","convertSortToOrderBy","sorting","push","createComparableParams","groupSortDirection","sortDirection","hasGlobalSearchFieldChanges","currentVal","$","previousVal","prevParamsMemento","equals","runGetData","getDataFnAdaptor","when","self","runGetGroups","getGroupsFn","getGroupsFnAdaptor","getGroups","runInterceptorPipeline","fetchFn","interceptors","interceptor","thenFn","response","bind","rejectFn","responseError","reject","then","reason","getDefaultSettingFns","groupFn","groupField","item","originalDataOptions","adaptedFn","gotData","groups","defaultGroupOptions","groupName","$hideRows","isExpanded","i","errParamsMemento","isCommittedDataset","log","debugMode","debug","parameters","newParameters","parseParamsFromUrl","isDefined","reverse","len","name","v","newSettings","isArray","originalDataset","hasDatasetChanged","publishDatasetChanged","significantFilter","groupArray","sortArray","isSortBy","field","direction","generatePagesArray","currentPage","totalItems","pageSize","maxBlocks","maxPage","maxPivotPages","minPage","numPages","pages","Math","ceil","type","number","max","active","current","round","paginationMaxBlocks","paginationMinBlocks","min","isDataReloadRequired","hasGroup","hasFilterChanges","previousFilter","url","asString","collectValue","pairs","encodeURIComponent","isSignificantValue","subkey","pname","reload","$loading","oldData","publishAfterReloadData","reloadPages","$emit","hasErrorState","currentPages","oldPages","newPages","publishPagesChanged","filterDelay","filterLayout","counts","sortingIndicator","publishAfterCreated","controller","$timeout","$parse","$compile","$attrs","$element","ngTableColumn","onDataReloadStatusChange","newStatus","currentParams","delayFilter","commonInit","bindDataToScope","newDatapage","$groups","$data","bindPagesToScope","isMyPublisher","onAfterReloadData","onPagesChanged","$filterRow","timer","callback","ms","cancel","$watch","newParams","oldParams","compileDirectiveTemplates","hasClass","templates","header","templateHeader","pagination","templatePagination","addClass","headerTemplate","theadFound","children","e","tagName","element","document","createElement","attr","prepend","paginationTemplate","ng-table-pagination","template-url","after","loadFilterData","$columns","$column","buildColumns","columns","map","col","parseNgTableDynamicExpr","parts","tableParams","Error","setupBindingsToInternalScope","tableParamsExpr","tableParamsGetter","isUndefined","paramsModel","showFilter","$parent","show_filter","$groupRow","showGroup","showGroupGetter","disableFilter","disabled","directive","restrict","priority","compile","dataRow","groupRow","rows","find","tr","el","getAttrValue","setAttrValue","parsedAttribute","expr","localValue","locals","parsedExpr","titleExpr","attrs","ngTable","tElement","row","showExpr","ngTableDynamic","$watchCollection","newCols","templateUrl","replace","link","pubParams","template","ng-include","append","ngTableFilterRowController","getFilterCellCss","layout","size","width","parseInt","getFilterPlaceholderValue","placeholder","ngTableFilterRow","ngTableGroupRowController","getGroupables","getGroupTitle","getVisibleColumns","groupBy","isSelectedGroup","setGroup","changeSortDirection","newDirection","$selGroup","findGroupColumn","groupKey","groupableCols","groupFns","existingGroupCol","$selGroupTitle","groupedColumn","ngTableGroupRow","controllerAs","ngTableSorterRowController","sortBy","parsedSortable","inverseSort","sortingParams","ctrlKey","metaKey","ngTableSorterRow","ngTableSelectFilterDs","ngTableSelectFilterDsController","getSelectListData","hasEmptyOption","unshift","$selectData","isMatch","run","$templateCache","put"],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index 6ebaf92c..b270daa4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ng-table",
- "version": "1.0.0-alpha.6",
+ "version": "1.0.0-alpha.7",
"author": "Vitalii Savchuk ",
"license": "BSD",
"repository": {