-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdata-table.min.js
More file actions
7 lines (7 loc) · 7.81 KB
/
data-table.min.js
File metadata and controls
7 lines (7 loc) · 7.81 KB
1
2
3
4
5
6
7
/*
DataTable v1.0.6
dependencies:
AngularJS v1.2.0 >
jquery v2.2.4 >
*/
var dataTable = angular.module("dataTable", []); dataTable.directive("table", ["$compile", "$filter", "tableService", function (a, e, t) { return { restrict: "A", priority: 2, scope: { list: "=", pageSize: "=", serverSideRecords: "=", currentPage: "=", returnAction: "&", filter: "=", filterBy: "@", filterAdvance: "=", lang: "@" }, link: function (i, n) { function r() { var a = (new Date).getTime(), e = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (e) { var t = (a + 16 * Math.random()) % 16 | 0; return a = Math.floor(a / 16), ("x" === e ? t : 3 & t | 8).toString(16) }); return e } var l = angular.version; if (l.minor < 2 || l.dot < 0) return n.remove(), console.error("data-table not work on " + angular.version.full + " version"), console.warn("try use new version of angular 1.2.0 or uper"), !1; var d = angular.isUndefined(i.currentPage) ? 0 : i.currentPage, s = d, o = i.pageSize, c = n.find("tbody tr:first-child").data("orderby"), f = n.find("tbody tr:first-child").data("asc"), g = { fa: { search: "جستجو کن", or: "یا", and: "و" }, en: { search: "search", or: "OR", and: "AND" } }; if (angular.isUndefined(i.lang)) i.language = g.en; else switch (i.lang) { case "en": i.language = g.en; break; case "fa": i.language = g.fa } i.items = [], i.paging = [], i.condition = 0; var u = angular.copy(r()), v = function (a, e) { return Math.ceil(a / e) }; n.attr("id", "id_" + u), n.prepend("<thead><tr></tr></thead>"); var p = '<nav id="id_' + u + '"><ul class="pagination"><li><a class="previous" aria-label="Previous"><span aria-hidden="true">«</span></a></li><li class="repeat"><a ng-click="goToPage(page.row);pageAction();" ng-bind="page.row"></a></li><li><a class="next" aria-label="Next"><span aria-hidden="true">»</span></a></li></ul></nav>', h = '<div class="col-lg-4"><div class="angular-data-table-filter row"><input type="text" class="form-control filtering" placeholder="{{language.search}}..."></div></div><br><br>', b = '<div class="col-lg-4"><div class="row"><a class="btn btn-default show-hide search-advance-button"><i class="fa fa-search"></i></a><div class="angular-data-table-filter advance-filter"><div class="repeat"><div class="form-group"><input type="text" ng-model="filter.value" ng-if="filter.setup.type == \'text\'" ng-change="onChange(filter.name,filter.value)" class="form-control filtering" placeholder="{{filter.setup.title}}"></div><div class="form-group"><select class="form-control" ng-if="filter.setup.type == \'select\'" ng-model="filter.value" ng-options="option as option.name for option in filter.setup.options" ng-change="onChange(filter.name,filter.value)"></select></div></div><div class="condition"><a class="btn btn-primary or" ng-class="{\'active\': condition === 0}">{{language.or}}</a> <a class="btn btn-primary and" ng-class="{\'active\': condition === 1}">{{language.and}}</a></div><hr><button class="btn btn-primary search">{{language.search}}</button></div></div></div>', x = function (a, t, n, r, l) { angular.isUndefined(o) && (t = a.length); var d = e("orderBy")(a, r, l), s = e("startFrom")(d, n * t), c = e("limitTo")(angular.isUndefined(i.serverSideRecords) ? s : d, t); return c }; i.$watch("list", function (a) { if (a) { var e; i.paging = [], e = angular.isUndefined(i.serverSideRecords) ? v(a.length, i.pageSize) : v(i.serverSideRecords, i.pageSize); for (var t = 0; e > t; t++) i.paging.push({ row: t + 1 }); i.items = x(a, o, s, c, f) } }, !0), i.orderTable = function (a) { var e = n.find(".binding-to-" + a + " span"), t = n.find(".binding-to-" + a).data("source"); n.find("thead tr th").each(function () { var a = $(this).find("span"); a.html(' <i class="fa fa-sort"></i>') }), c = t, f = !f, f ? e.html(' <i class="fa fa-sort-alpha-desc"></i>') : e.html(' <i class="fa fa-sort-alpha-asc"></i>'), i.items = x(i.list, o, d, c, f), i.pageAction() }, i.previousPage = function () { var a = d; return 0 === a ? !1 : (d--, s = a - 1, i.currentPage = s, i.items = x(i.list, o, a - 1, c, f), !1) }, i.goToPage = function (a) { s = a - 1, i.currentPage = s, i.items = x(i.list, o, a - 1, c, f) }, i.nextPage = function () { var a = d, e = i.paging.length; return a === e - 1 ? !1 : (d++, s = a + 1, i.currentPage = s, i.items = x(i.list, o, a + 1, c, f), !1) }, i.pageAction = function () { var a = { orderByOn: c, orderType: f, pageSize: o, pageIndex: s, filters: i.advanceFilters }; i.filtersHandler(a) }; var m = n.find("tbody tr:first-child").attr("ng-repeat", "item in items"); i.filter && (m = n.find("tbody tr:first-child").attr("ng-repeat", "item in items | filter:filtering")); var y = n.find("tbody tr td").each(function (e) { var t = $(this), r = t.data("binding"), l = t.data("header-source"), d = t.data("header"), s = t.data("sortable"); if (angular.isUndefined(r) || t.html('<span ng-bind="item.' + r + '"></span>'), t.find("[data-binding]").each(function () { var a = $(this), e = a.data("binding"); a.attr("ng-bind", "item." + e) }), n.find("thead tr:first-child").append('<th data-source="' + l + '" class="binding-to-' + e + '">' + d + "</th>"), s) { var o = n.find(".binding-to-" + e).attr("ng-click", "orderTable(" + e + ")"); n.find(".binding-to-" + e).append('<span><i class="fa fa-sort"></i></span>'), a(o)(i) } }); i.filtersHandler = function (a) { var e = []; angular.forEach(a.filters, function (a) { angular.isUndefined(a.value) || e.push({ name: a.name, value: a.value }) }), a.filters = e, t.setAction(a), i.returnAction() }; var k; if (i.conditionHanlder = function (a) { k.filters = [], k.condition = a, i.condition = a }, i.getFilters = function () { k.filters = i.advanceFilters, i.filtersHandler(k) }, !angular.isUndefined(i.pageSize)) { n.after(p); var P = $("nav#id_" + u + " .previous").attr("ng-click", "previousPage();pageAction();"); P = $("nav#id_" + u + " .previous").parent().addClass("{{currentPage === 0 ? 'disabled':''}}"); var A = $("nav#id_" + u + " .repeat").attr("ng-repeat", "page in paging"); A = $("nav#id_" + u + " .repeat").addClass("{{currentPage + 1 === page.row ? 'active':''}}"); var w = $("nav#id_" + u + " .next").attr("ng-click", "nextPage();pageAction();"); w = $("nav#id_" + u + " .next").parent().addClass("{{currentPage == paging.length - 1 ? 'disabled':''}}"), a(P)(i), a(A)(i), a(w)(i) } if (i.filter) if (angular.isUndefined(i.filterAdvance)) { n.before(h); var T, S = $(".angular-data-table-filter"); T = angular.isUndefined(i.filterBy) ? S.find(".filtering").attr("ng-model", "filtering") : S.find(".filtering").attr("ng-model", "filtering." + i.filterBy), a(T)(i) } else { i.advanceFilters = [], n.before(b); var F = $(".angular-data-table-filter"), U = i.filterAdvance.fields, B = e("filter")(U, { filter: !0 }, !0); i.advanceFilters = B; var _ = F.find(".repeat").attr("ng-repeat", "filter in advanceFilters"), z = F.find(".search").attr("ng-click", "getFilters()"), H = F.find(".condition .or").attr("ng-click", "conditionHanlder(0)"), C = F.find(".condition .and").attr("ng-click", "conditionHanlder(1)"), R = $(".show-hide").attr("ng-click", "filterBox = !filterBox"), M = F.attr("ng-show", "filterBox"); k = { orderByOn: c, orderType: f, pageSize: o, pageIndex: s, condition: 1, filters: [] }, a(_)(i), a(z)(i), a(H)(i), a(C)(i), a(R)(i), a(M)(i) } return a(m)(i), a(y)(i), !1 } } }]), dataTable.service("tableService", function () { var a; this.setAction = function (e) { a = e }, this.getAction = function () { return a } }), dataTable.filter("startFrom", function () { return function (a, e) { return e = +e, a.slice(e) } }), dataTable.factory("tableFactory", function () { var a = {}; return a.set = function (e) { a.data = e }, a }), dataTable.directive("click", ["$compile", "tableFactory", function (a, e) { return { restrict: "A", scope: { click: "@", clickParams: "=" }, link: function (a, t) { var i = e.data; t.on("click", function () { i[a.click].apply(this, a.clickParams) }) } } }]);