You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4002 lines
133 KiB
4002 lines
133 KiB
1 year ago
|
/*
|
||
|
* FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome.
|
||
|
* @version 3.1.5
|
||
|
* @link http://fooplugins.com
|
||
|
* @copyright Steven Usher & Brad Vincent 2015
|
||
|
* @license Released under the GPLv3 license.
|
||
|
*/
|
||
|
!(function (a, b) {
|
||
|
(window.console = window.console || {
|
||
|
log: function () {},
|
||
|
error: function () {},
|
||
|
}),
|
||
|
(a.fn.footable = function (a, c) {
|
||
|
return (
|
||
|
(a = a || {}),
|
||
|
this.filter("table").each(function (d, e) {
|
||
|
b.init(e, a, c);
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
var c = { events: [] };
|
||
|
(b.__debug__ = JSON.parse(localStorage.getItem("footable_debug")) || !1),
|
||
|
(b.__debug_options__ =
|
||
|
JSON.parse(localStorage.getItem("footable_debug_options")) || c),
|
||
|
(b.debug = function (d, e) {
|
||
|
return b.is["boolean"](d)
|
||
|
? ((b.__debug__ = d),
|
||
|
void (b.__debug__
|
||
|
? (localStorage.setItem(
|
||
|
"footable_debug",
|
||
|
JSON.stringify(b.__debug__)
|
||
|
),
|
||
|
(b.__debug_options__ = a.extend(!0, {}, c, e || {})),
|
||
|
b.is.hash(e) &&
|
||
|
localStorage.setItem(
|
||
|
"footable_debug_options",
|
||
|
JSON.stringify(b.__debug_options__)
|
||
|
))
|
||
|
: (localStorage.removeItem("footable_debug"),
|
||
|
localStorage.removeItem("footable_debug_options"))))
|
||
|
: b.__debug__;
|
||
|
}),
|
||
|
(b.get = function (b) {
|
||
|
return a(b).first().data("__FooTable__");
|
||
|
}),
|
||
|
(b.init = function (a, c, d) {
|
||
|
var e = b.get(a);
|
||
|
return e instanceof b.Table && e.destroy(), new b.Table(a, c, d);
|
||
|
}),
|
||
|
(b.getRow = function (b) {
|
||
|
var c = a(b).closest("tr");
|
||
|
return (
|
||
|
c.hasClass("footable-detail-row") && (c = c.prev()),
|
||
|
c.data("__FooTableRow__")
|
||
|
);
|
||
|
});
|
||
|
})(jQuery, (FooTable = window.FooTable || {})),
|
||
|
(function (a) {
|
||
|
var b = function () {
|
||
|
return !0;
|
||
|
};
|
||
|
(a.arr = {}),
|
||
|
(a.arr.each = function (b, c) {
|
||
|
if (a.is.array(b) && a.is.fn(c))
|
||
|
for (var d = 0, e = b.length; e > d && c(b[d], d) !== !1; d++);
|
||
|
}),
|
||
|
(a.arr.get = function (b, c) {
|
||
|
var d = [];
|
||
|
if (!a.is.array(b)) return d;
|
||
|
if (!a.is.fn(c)) return b;
|
||
|
for (var e = 0, f = b.length; f > e; e++) c(b[e], e) && d.push(b[e]);
|
||
|
return d;
|
||
|
}),
|
||
|
(a.arr.any = function (c, d) {
|
||
|
if (!a.is.array(c)) return !1;
|
||
|
d = a.is.fn(d) ? d : b;
|
||
|
for (var e = 0, f = c.length; f > e; e++) if (d(c[e], e)) return !0;
|
||
|
return !1;
|
||
|
}),
|
||
|
(a.arr.contains = function (b, c) {
|
||
|
if (!a.is.array(b) || a.is.undef(c)) return !1;
|
||
|
for (var d = 0, e = b.length; e > d; d++) if (b[d] == c) return !0;
|
||
|
return !1;
|
||
|
}),
|
||
|
(a.arr.first = function (c, d) {
|
||
|
if (!a.is.array(c)) return null;
|
||
|
d = a.is.fn(d) ? d : b;
|
||
|
for (var e = 0, f = c.length; f > e; e++) if (d(c[e], e)) return c[e];
|
||
|
return null;
|
||
|
}),
|
||
|
(a.arr.map = function (b, c) {
|
||
|
var d = [],
|
||
|
e = null;
|
||
|
if (!a.is.array(b) || !a.is.fn(c)) return d;
|
||
|
for (var f = 0, g = b.length; g > f; f++)
|
||
|
null != (e = c(b[f], f)) && d.push(e);
|
||
|
return d;
|
||
|
}),
|
||
|
(a.arr.remove = function (b, c) {
|
||
|
var d = [],
|
||
|
e = [];
|
||
|
if (!a.is.array(b) || !a.is.fn(c)) return e;
|
||
|
for (var f = 0, g = b.length; g > f; f++)
|
||
|
c(b[f], f, e) && (d.push(f), e.push(b[f]));
|
||
|
for (
|
||
|
d.sort(function (a, b) {
|
||
|
return b - a;
|
||
|
}),
|
||
|
f = 0,
|
||
|
g = d.length;
|
||
|
g > f;
|
||
|
f++
|
||
|
) {
|
||
|
var h = d[f] - f;
|
||
|
b.splice(h, 1);
|
||
|
}
|
||
|
return e;
|
||
|
}),
|
||
|
(a.arr["delete"] = function (b, c) {
|
||
|
var d = -1,
|
||
|
e = null;
|
||
|
if (!a.is.array(b) || a.is.undef(c)) return e;
|
||
|
for (var f = 0, g = b.length; g > f; f++)
|
||
|
if (b[f] == c) {
|
||
|
(d = f), (e = b[f]);
|
||
|
break;
|
||
|
}
|
||
|
return -1 != d && b.splice(d, 1), e;
|
||
|
}),
|
||
|
(a.arr.replace = function (a, b, c) {
|
||
|
var d = a.indexOf(b);
|
||
|
-1 !== d && (a[d] = c);
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.is = {}),
|
||
|
(a.is.type = function (a, b) {
|
||
|
return typeof a === b;
|
||
|
}),
|
||
|
(a.is.defined = function (a) {
|
||
|
return "undefined" != typeof a;
|
||
|
}),
|
||
|
(a.is.undef = function (a) {
|
||
|
return "undefined" == typeof a;
|
||
|
}),
|
||
|
(a.is.array = function (a) {
|
||
|
return "[object Array]" === Object.prototype.toString.call(a);
|
||
|
}),
|
||
|
(a.is.date = function (a) {
|
||
|
return (
|
||
|
"[object Date]" === Object.prototype.toString.call(a) &&
|
||
|
!isNaN(a.getTime())
|
||
|
);
|
||
|
}),
|
||
|
(a.is["boolean"] = function (a) {
|
||
|
return "[object Boolean]" === Object.prototype.toString.call(a);
|
||
|
}),
|
||
|
(a.is.string = function (a) {
|
||
|
return "[object String]" === Object.prototype.toString.call(a);
|
||
|
}),
|
||
|
(a.is.number = function (a) {
|
||
|
return (
|
||
|
"[object Number]" === Object.prototype.toString.call(a) && !isNaN(a)
|
||
|
);
|
||
|
}),
|
||
|
(a.is.fn = function (b) {
|
||
|
return (
|
||
|
(a.is.defined(window) && b === window.alert) ||
|
||
|
"[object Function]" === Object.prototype.toString.call(b)
|
||
|
);
|
||
|
}),
|
||
|
(a.is.error = function (a) {
|
||
|
return "[object Error]" === Object.prototype.toString.call(a);
|
||
|
}),
|
||
|
(a.is.object = function (a) {
|
||
|
return "[object Object]" === Object.prototype.toString.call(a);
|
||
|
}),
|
||
|
(a.is.hash = function (b) {
|
||
|
return (
|
||
|
a.is.object(b) &&
|
||
|
b.constructor === Object &&
|
||
|
!b.nodeType &&
|
||
|
!b.setInterval
|
||
|
);
|
||
|
}),
|
||
|
(a.is.element = function (a) {
|
||
|
return "object" == typeof HTMLElement
|
||
|
? a instanceof HTMLElement
|
||
|
: a &&
|
||
|
"object" == typeof a &&
|
||
|
null !== a &&
|
||
|
1 === a.nodeType &&
|
||
|
"string" == typeof a.nodeName;
|
||
|
}),
|
||
|
(a.is.promise = function (b) {
|
||
|
return a.is.object(b) && a.is.fn(b.then) && a.is.fn(b.promise);
|
||
|
}),
|
||
|
(a.is.jq = function (b) {
|
||
|
return (
|
||
|
a.is.defined(window.jQuery) && b instanceof jQuery && b.length > 0
|
||
|
);
|
||
|
}),
|
||
|
(a.is.moment = function (b) {
|
||
|
return (
|
||
|
a.is.defined(window.moment) &&
|
||
|
a.is.object(b) &&
|
||
|
a.is["boolean"](b._isAMomentObject)
|
||
|
);
|
||
|
}),
|
||
|
(a.is.emptyObject = function (b) {
|
||
|
if (!a.is.hash(b)) return !1;
|
||
|
for (var c in b) if (b.hasOwnProperty(c)) return !1;
|
||
|
return !0;
|
||
|
}),
|
||
|
(a.is.emptyArray = function (b) {
|
||
|
return a.is.array(b) ? 0 === b.length : !0;
|
||
|
}),
|
||
|
(a.is.emptyString = function (b) {
|
||
|
return a.is.string(b) ? 0 === b.length : !0;
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.str = {}),
|
||
|
(a.str.contains = function (b, c, d) {
|
||
|
return a.is.emptyString(b) || a.is.emptyString(c)
|
||
|
? !1
|
||
|
: c.length <= b.length &&
|
||
|
-1 !==
|
||
|
(d ? b.toUpperCase().indexOf(c.toUpperCase()) : b.indexOf(c));
|
||
|
}),
|
||
|
(a.str.containsExact = function (b, c, d) {
|
||
|
return a.is.emptyString(b) || a.is.emptyString(c) || c.length > b.length
|
||
|
? !1
|
||
|
: new RegExp(
|
||
|
"\\b" + a.str.escapeRegExp(c) + "\\b",
|
||
|
d ? "i" : ""
|
||
|
).test(b);
|
||
|
}),
|
||
|
(a.str.containsWord = function (b, c, d) {
|
||
|
if (a.is.emptyString(b) || a.is.emptyString(c) || b.length < c.length)
|
||
|
return !1;
|
||
|
for (var e = b.split(/\W/), f = 0, g = e.length; g > f; f++)
|
||
|
if (d ? e[f].toUpperCase() == c.toUpperCase() : e[f] == c) return !0;
|
||
|
return !1;
|
||
|
}),
|
||
|
(a.str.from = function (b, c) {
|
||
|
return a.is.emptyString(b)
|
||
|
? b
|
||
|
: a.str.contains(b, c)
|
||
|
? b.substring(b.indexOf(c) + 1)
|
||
|
: b;
|
||
|
}),
|
||
|
(a.str.startsWith = function (b, c) {
|
||
|
return a.is.emptyString(b) ? b == c : b.slice(0, c.length) == c;
|
||
|
}),
|
||
|
(a.str.toCamelCase = function (b) {
|
||
|
return a.is.emptyString(b)
|
||
|
? b
|
||
|
: b.toUpperCase() === b
|
||
|
? b.toLowerCase()
|
||
|
: b.replace(/^([A-Z])|[-\s_](\w)/g, function (b, c, d) {
|
||
|
return a.is.string(d) ? d.toUpperCase() : c.toLowerCase();
|
||
|
});
|
||
|
}),
|
||
|
(a.str.random = function (b) {
|
||
|
return (
|
||
|
(b = a.is.emptyString(b) ? "" : b),
|
||
|
b + Math.random().toString(36).substr(2, 9)
|
||
|
);
|
||
|
}),
|
||
|
(a.str.escapeRegExp = function (b) {
|
||
|
return a.is.emptyString(b)
|
||
|
? b
|
||
|
: b.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
"use strict";
|
||
|
function b() {}
|
||
|
Object.create ||
|
||
|
(Object.create = (function () {
|
||
|
var b = function () {};
|
||
|
return function (c) {
|
||
|
if (arguments.length > 1)
|
||
|
throw Error("Second argument not supported");
|
||
|
if (!a.is.object(c)) throw TypeError("Argument must be an object");
|
||
|
b.prototype = c;
|
||
|
var d = new b();
|
||
|
return (b.prototype = null), d;
|
||
|
};
|
||
|
})());
|
||
|
var c = /xyz/.test(function () {
|
||
|
xyz;
|
||
|
})
|
||
|
? /\b_super\b/
|
||
|
: /.*/;
|
||
|
(b.__extend__ = function (b, d, e, f) {
|
||
|
b[d] =
|
||
|
a.is.fn(f) && c.test(e)
|
||
|
? (function (a, b) {
|
||
|
return function () {
|
||
|
var a, c;
|
||
|
return (
|
||
|
(a = this._super),
|
||
|
(this._super = f),
|
||
|
(c = b.apply(this, arguments)),
|
||
|
(this._super = a),
|
||
|
c
|
||
|
);
|
||
|
};
|
||
|
})(d, e)
|
||
|
: e;
|
||
|
}),
|
||
|
(b.extend = function (d, e) {
|
||
|
function f(b, d, e, f) {
|
||
|
b[d] =
|
||
|
a.is.fn(f) && c.test(e)
|
||
|
? (function (a, b, c) {
|
||
|
return function () {
|
||
|
var a, d;
|
||
|
return (
|
||
|
(a = this._super),
|
||
|
(this._super = c),
|
||
|
(d = b.apply(this, arguments)),
|
||
|
(this._super = a),
|
||
|
d
|
||
|
);
|
||
|
};
|
||
|
})(d, e, f)
|
||
|
: e;
|
||
|
}
|
||
|
var g = Array.prototype.slice.call(arguments);
|
||
|
if (((d = g.shift()), (e = g.shift()), a.is.hash(d))) {
|
||
|
var h = Object.create(this.prototype),
|
||
|
i = this.prototype;
|
||
|
for (var j in d) "__ctor__" !== j && f(h, j, d[j], i[j]);
|
||
|
var k = a.is.fn(h.__ctor__)
|
||
|
? h.__ctor__
|
||
|
: function () {
|
||
|
if (!a.is.fn(this.construct))
|
||
|
throw new SyntaxError(
|
||
|
'FooTable class objects must be constructed with the "new" keyword.'
|
||
|
);
|
||
|
this.construct.apply(this, arguments);
|
||
|
};
|
||
|
return (
|
||
|
(h.construct = a.is.fn(h.construct) ? h.construct : function () {}),
|
||
|
(k.prototype = h),
|
||
|
(h.constructor = k),
|
||
|
(k.extend = b.extend),
|
||
|
k
|
||
|
);
|
||
|
}
|
||
|
a.is.string(d) &&
|
||
|
a.is.fn(e) &&
|
||
|
f(this.prototype, d, e, this.prototype[d]);
|
||
|
}),
|
||
|
(a.Class = b),
|
||
|
(a.ClassFactory = a.Class.extend({
|
||
|
construct: function () {
|
||
|
this.registered = {};
|
||
|
},
|
||
|
contains: function (b) {
|
||
|
return a.is.defined(this.registered[b]);
|
||
|
},
|
||
|
names: function () {
|
||
|
var a,
|
||
|
b = [];
|
||
|
for (a in this.registered)
|
||
|
this.registered.hasOwnProperty(a) && b.push(a);
|
||
|
return b;
|
||
|
},
|
||
|
register: function (b, c, d) {
|
||
|
if (a.is.string(b) && a.is.fn(c)) {
|
||
|
var e = this.registered[b];
|
||
|
this.registered[b] = {
|
||
|
name: b,
|
||
|
klass: c,
|
||
|
priority: a.is.number(d) ? d : a.is.defined(e) ? e.priority : 0,
|
||
|
};
|
||
|
}
|
||
|
},
|
||
|
load: function (b, c, d) {
|
||
|
var e,
|
||
|
f,
|
||
|
g = this,
|
||
|
h = Array.prototype.slice.call(arguments),
|
||
|
i = [],
|
||
|
j = [];
|
||
|
b = h.shift() || {};
|
||
|
for (e in g.registered)
|
||
|
if (g.registered.hasOwnProperty(e)) {
|
||
|
var k = g.registered[e];
|
||
|
b.hasOwnProperty(e) &&
|
||
|
((f = b[e]),
|
||
|
a.is.string(f) && (f = a.getFnPointer(b[e])),
|
||
|
a.is.fn(f) &&
|
||
|
(k = {
|
||
|
name: e,
|
||
|
klass: f,
|
||
|
priority: g.registered[e].priority,
|
||
|
})),
|
||
|
i.push(k);
|
||
|
}
|
||
|
for (e in b)
|
||
|
b.hasOwnProperty(e) &&
|
||
|
!g.registered.hasOwnProperty(e) &&
|
||
|
((f = b[e]),
|
||
|
a.is.string(f) && (f = a.getFnPointer(b[e])),
|
||
|
a.is.fn(f) && i.push({ name: e, klass: f, priority: 0 }));
|
||
|
return (
|
||
|
i.sort(function (a, b) {
|
||
|
return b.priority - a.priority;
|
||
|
}),
|
||
|
a.arr.each(i, function (b) {
|
||
|
a.is.fn(b.klass) && j.push(g._make(b.klass, h));
|
||
|
}),
|
||
|
j
|
||
|
);
|
||
|
},
|
||
|
make: function (b, c, d) {
|
||
|
var e,
|
||
|
f = this,
|
||
|
g = Array.prototype.slice.call(arguments);
|
||
|
return (
|
||
|
(b = g.shift()),
|
||
|
(e = f.registered[b]),
|
||
|
a.is.fn(e.klass) ? f._make(e.klass, g) : null
|
||
|
);
|
||
|
},
|
||
|
_make: function (a, b) {
|
||
|
function c() {
|
||
|
return a.apply(this, b);
|
||
|
}
|
||
|
return (c.prototype = a.prototype), new c();
|
||
|
},
|
||
|
}));
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.css2json = function (c) {
|
||
|
if (b.is.emptyString(c)) return {};
|
||
|
for (
|
||
|
var d, e, f, g = {}, h = c.split(";"), i = 0, j = h.length;
|
||
|
j > i;
|
||
|
i++
|
||
|
)
|
||
|
b.is.emptyString(h[i]) ||
|
||
|
((d = h[i].split(":")),
|
||
|
b.is.emptyString(d[0]) ||
|
||
|
b.is.emptyString(d[1]) ||
|
||
|
((e = b.str.toCamelCase(a.trim(d[0]))),
|
||
|
(f = a.trim(d[1])),
|
||
|
(g[e] = f)));
|
||
|
return g;
|
||
|
}),
|
||
|
(b.getFnPointer = function (a) {
|
||
|
if (b.is.emptyString(a)) return null;
|
||
|
var c = window,
|
||
|
d = a.split(".");
|
||
|
return (
|
||
|
b.arr.each(d, function (a) {
|
||
|
c[a] && (c = c[a]);
|
||
|
}),
|
||
|
b.is.fn(c) ? c : null
|
||
|
);
|
||
|
}),
|
||
|
(b.checkFnValue = function (a, c, d) {
|
||
|
function e(a, c, d) {
|
||
|
return b.is.fn(c)
|
||
|
? function () {
|
||
|
return c.apply(a, arguments);
|
||
|
}
|
||
|
: d;
|
||
|
}
|
||
|
return (
|
||
|
(d = b.is.fn(d) ? d : null),
|
||
|
b.is.fn(c)
|
||
|
? e(a, c, d)
|
||
|
: b.is.type(c, "string")
|
||
|
? e(a, b.getFnPointer(c), d)
|
||
|
: d
|
||
|
);
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Cell = b.Class.extend({
|
||
|
construct: function (a, b, c, d) {
|
||
|
(this.ft = a),
|
||
|
(this.row = b),
|
||
|
(this.column = c),
|
||
|
(this.created = !1),
|
||
|
this.define(d);
|
||
|
},
|
||
|
define: function (c) {
|
||
|
(this.$el = b.is.element(c) || b.is.jq(c) ? a(c) : null),
|
||
|
(this.$detail = null);
|
||
|
var d = b.is.hash(c) && b.is.hash(c.options) && b.is.defined(c.value);
|
||
|
(this.value = this.column.parser.call(
|
||
|
this.column,
|
||
|
b.is.jq(this.$el) ? this.$el : d ? c.value : c,
|
||
|
this.ft.o
|
||
|
)),
|
||
|
(this.o = a.extend(
|
||
|
!0,
|
||
|
{ classes: null, style: null },
|
||
|
d ? c.options : {}
|
||
|
)),
|
||
|
(this.classes =
|
||
|
b.is.jq(this.$el) && this.$el.attr("class")
|
||
|
? this.$el.attr("class").match(/\S+/g)
|
||
|
: b.is.array(this.o.classes)
|
||
|
? this.o.classes
|
||
|
: b.is.string(this.o.classes)
|
||
|
? this.o.classes.match(/\S+/g)
|
||
|
: []),
|
||
|
(this.style =
|
||
|
b.is.jq(this.$el) && this.$el.attr("style")
|
||
|
? b.css2json(this.$el.attr("style"))
|
||
|
: b.is.hash(this.o.style)
|
||
|
? this.o.style
|
||
|
: b.is.string(this.o.style)
|
||
|
? b.css2json(this.o.style)
|
||
|
: {});
|
||
|
},
|
||
|
$create: function () {
|
||
|
this.created ||
|
||
|
((this.$el = b.is.jq(this.$el) ? this.$el : a("<td/>"))
|
||
|
.data("value", this.value)
|
||
|
.contents()
|
||
|
.detach()
|
||
|
.end()
|
||
|
.append(this.format(this.value)),
|
||
|
this._setClasses(this.$el),
|
||
|
this._setStyle(this.$el),
|
||
|
(this.$detail = a("<tr/>")
|
||
|
.addClass(this.row.classes.join(" "))
|
||
|
.data("__FooTableCell__", this)
|
||
|
.append(a("<th/>"))
|
||
|
.append(a("<td/>"))),
|
||
|
(this.created = !0));
|
||
|
},
|
||
|
collapse: function () {
|
||
|
this.created &&
|
||
|
(this.$detail.children("th").html(this.column.title),
|
||
|
this.$el
|
||
|
.clone()
|
||
|
.attr(
|
||
|
"id",
|
||
|
this.$el.attr("id") ? this.$el.attr("id") + "-detail" : void 0
|
||
|
)
|
||
|
.css("display", "table-cell")
|
||
|
.html("")
|
||
|
.append(this.$el.contents().detach())
|
||
|
.replaceAll(this.$detail.children("td").first()),
|
||
|
b.is.jq(this.$detail.parent()) ||
|
||
|
this.$detail.appendTo(
|
||
|
this.row.$details.find(".footable-details > tbody")
|
||
|
));
|
||
|
},
|
||
|
restore: function () {
|
||
|
if (this.created) {
|
||
|
if (b.is.jq(this.$detail.parent())) {
|
||
|
var a = this.$detail.children("td").first();
|
||
|
this.$el
|
||
|
.attr("class", a.attr("class"))
|
||
|
.attr("style", a.attr("style"))
|
||
|
.css(
|
||
|
"display",
|
||
|
this.column.hidden || !this.column.visible
|
||
|
? "none"
|
||
|
: "table-cell"
|
||
|
)
|
||
|
.append(a.contents().detach());
|
||
|
}
|
||
|
this.$detail.detach();
|
||
|
}
|
||
|
},
|
||
|
parse: function () {
|
||
|
return this.column.parser.call(this.column, this.$el, this.ft.o);
|
||
|
},
|
||
|
format: function (a) {
|
||
|
return this.column.formatter.call(
|
||
|
this.column,
|
||
|
a,
|
||
|
this.ft.o,
|
||
|
this.row.value
|
||
|
);
|
||
|
},
|
||
|
val: function (c, d, e) {
|
||
|
if (b.is.undef(c)) return this.value;
|
||
|
var f = this,
|
||
|
g = b.is.hash(c) && b.is.hash(c.options) && b.is.defined(c.value);
|
||
|
if (
|
||
|
((this.o = a.extend(
|
||
|
!0,
|
||
|
{ classes: f.classes, style: f.style },
|
||
|
g ? c.options : {}
|
||
|
)),
|
||
|
(this.value = g ? c.value : c),
|
||
|
(this.classes = b.is.array(this.o.classes)
|
||
|
? this.o.classes
|
||
|
: b.is.string(this.o.classes)
|
||
|
? this.o.classes.match(/\S+/g)
|
||
|
: []),
|
||
|
(this.style = b.is.hash(this.o.style)
|
||
|
? this.o.style
|
||
|
: b.is.string(this.o.style)
|
||
|
? b.css2json(this.o.style)
|
||
|
: {}),
|
||
|
(e = b.is["boolean"](e) ? e : !0),
|
||
|
this.created && e)
|
||
|
) {
|
||
|
this.$el.data("value", this.value).empty();
|
||
|
var h = this.$detail.children("td").first().empty(),
|
||
|
i = b.is.jq(this.$detail.parent()) ? h : this.$el;
|
||
|
i.append(this.format(this.value)),
|
||
|
this._setClasses(i),
|
||
|
this._setStyle(i),
|
||
|
(b.is["boolean"](d) ? d : !0) && this.row.draw();
|
||
|
}
|
||
|
},
|
||
|
_setClasses: function (a) {
|
||
|
var c = !b.is.emptyArray(this.column.classes),
|
||
|
d = !b.is.emptyArray(this.classes),
|
||
|
e = null;
|
||
|
a.removeAttr("class"),
|
||
|
(c || d) &&
|
||
|
(c && d
|
||
|
? (e = this.classes.concat(this.column.classes).join(" "))
|
||
|
: c
|
||
|
? (e = this.column.classes.join(" "))
|
||
|
: d && (e = this.classes.join(" ")),
|
||
|
b.is.emptyString(e) || a.addClass(e));
|
||
|
},
|
||
|
_setStyle: function (c) {
|
||
|
var d = !b.is.emptyObject(this.column.style),
|
||
|
e = !b.is.emptyObject(this.style),
|
||
|
f = null;
|
||
|
c.removeAttr("style"),
|
||
|
(d || e) &&
|
||
|
(d && e
|
||
|
? (f = a.extend({}, this.column.style, this.style))
|
||
|
: d
|
||
|
? (f = this.column.style)
|
||
|
: e && (f = this.style),
|
||
|
b.is.hash(f) && c.css(f));
|
||
|
},
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Column = b.Class.extend({
|
||
|
construct: function (a, c, d) {
|
||
|
(this.ft = a),
|
||
|
(this.type = b.is.emptyString(d) ? "text" : d),
|
||
|
(this.virtual = b.is["boolean"](c.virtual) ? c.virtual : !1),
|
||
|
(this.$el = b.is.jq(c.$el) ? c.$el : null),
|
||
|
(this.index = b.is.number(c.index) ? c.index : -1),
|
||
|
(this.internal = !1),
|
||
|
this.define(c),
|
||
|
this.$create();
|
||
|
},
|
||
|
define: function (a) {
|
||
|
(this.hidden = b.is["boolean"](a.hidden) ? a.hidden : !1),
|
||
|
(this.visible = b.is["boolean"](a.visible) ? a.visible : !0),
|
||
|
(this.name = b.is.string(a.name) ? a.name : null),
|
||
|
null == this.name && (this.name = "col" + (a.index + 1)),
|
||
|
(this.title = b.is.string(a.title) ? a.title : null),
|
||
|
!this.virtual &&
|
||
|
null == this.title &&
|
||
|
b.is.jq(this.$el) &&
|
||
|
(this.title = this.$el.html()),
|
||
|
null == this.title && (this.title = "Column " + (a.index + 1)),
|
||
|
(this.style = b.is.hash(a.style)
|
||
|
? a.style
|
||
|
: b.is.string(a.style)
|
||
|
? b.css2json(a.style)
|
||
|
: {}),
|
||
|
(this.classes = b.is.array(a.classes)
|
||
|
? a.classes
|
||
|
: b.is.string(a.classes)
|
||
|
? a.classes.match(/\S+/g)
|
||
|
: []),
|
||
|
(this.parser = b.checkFnValue(this, a.parser, this.parser)),
|
||
|
(this.formatter = b.checkFnValue(this, a.formatter, this.formatter));
|
||
|
},
|
||
|
$create: function () {
|
||
|
(this.$el = !this.virtual && b.is.jq(this.$el) ? this.$el : a("<th/>"))
|
||
|
.html(this.title)
|
||
|
.addClass(this.classes.join(" "))
|
||
|
.css(this.style);
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("value");
|
||
|
return b.is.defined(d) ? d : a(c).html();
|
||
|
}
|
||
|
return b.is.defined(c) && null != c ? c + "" : null;
|
||
|
},
|
||
|
formatter: function (a, b, c) {
|
||
|
return null == a ? "" : a;
|
||
|
},
|
||
|
createCell: function (a) {
|
||
|
var c = b.is.jq(a.$el) ? a.$el.children("td,th").get(this.index) : null,
|
||
|
d = b.is.hash(a.value) ? a.value[this.name] : null;
|
||
|
return new b.Cell(this.ft, a, this, c || d);
|
||
|
},
|
||
|
})),
|
||
|
(b.columns = new b.ClassFactory()),
|
||
|
b.columns.register("text", b.Column);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Component = b.Class.extend({
|
||
|
construct: function (a, c) {
|
||
|
if (!(a instanceof b.Table))
|
||
|
throw new TypeError(
|
||
|
"The instance parameter must be an instance of FooTable.Table."
|
||
|
);
|
||
|
(this.ft = a), (this.enabled = b.is["boolean"](c) ? c : !1);
|
||
|
},
|
||
|
preinit: function (a) {},
|
||
|
init: function () {},
|
||
|
destroy: function () {},
|
||
|
predraw: function () {},
|
||
|
draw: function () {},
|
||
|
postdraw: function () {},
|
||
|
})),
|
||
|
(b.components = new b.ClassFactory());
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Defaults = function () {
|
||
|
(this.stopPropagation = !1), (this.on = null);
|
||
|
}),
|
||
|
(b.defaults = new b.Defaults());
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Row = b.Class.extend({
|
||
|
construct: function (a, b, c) {
|
||
|
(this.ft = a), (this.columns = b), (this.created = !1), this.define(c);
|
||
|
},
|
||
|
define: function (c) {
|
||
|
(this.$el = b.is.element(c) || b.is.jq(c) ? a(c) : null),
|
||
|
(this.$toggle = a("<span/>", {
|
||
|
class: "footable-toggle fas fa-plus",
|
||
|
}));
|
||
|
var d = b.is.hash(c),
|
||
|
e = d && b.is.hash(c.options) && b.is.hash(c.value);
|
||
|
(this.value = d ? (e ? c.value : c) : null),
|
||
|
(this.o = a.extend(
|
||
|
!0,
|
||
|
{ expanded: !1, classes: null, style: null },
|
||
|
e ? c.options : {}
|
||
|
)),
|
||
|
(this.expanded = b.is.jq(this.$el)
|
||
|
? this.$el.data("expanded") || this.o.expanded
|
||
|
: this.o.expanded),
|
||
|
(this.classes =
|
||
|
b.is.jq(this.$el) && this.$el.attr("class")
|
||
|
? this.$el.attr("class").match(/\S+/g)
|
||
|
: b.is.array(this.o.classes)
|
||
|
? this.o.classes
|
||
|
: b.is.string(this.o.classes)
|
||
|
? this.o.classes.match(/\S+/g)
|
||
|
: []),
|
||
|
(this.style =
|
||
|
b.is.jq(this.$el) && this.$el.attr("style")
|
||
|
? b.css2json(this.$el.attr("style"))
|
||
|
: b.is.hash(this.o.style)
|
||
|
? this.o.style
|
||
|
: b.is.string(this.o.style)
|
||
|
? b.css2json(this.o.style)
|
||
|
: {}),
|
||
|
(this.cells = this.createCells());
|
||
|
var f = this;
|
||
|
(f.value = {}),
|
||
|
b.arr.each(f.cells, function (a) {
|
||
|
f.value[a.column.name] = a.val();
|
||
|
});
|
||
|
},
|
||
|
$create: function () {
|
||
|
if (!this.created) {
|
||
|
(this.$el = b.is.jq(this.$el) ? this.$el : a("<tr/>")).data(
|
||
|
"__FooTableRow__",
|
||
|
this
|
||
|
),
|
||
|
this._setClasses(this.$el),
|
||
|
this._setStyle(this.$el),
|
||
|
"last" == this.ft.rows.toggleColumn &&
|
||
|
this.$toggle.addClass("last-column"),
|
||
|
(this.$details = a("<tr/>", {
|
||
|
class: "footable-detail-row",
|
||
|
}).append(
|
||
|
a("<td/>", { colspan: this.ft.columns.visibleColspan }).append(
|
||
|
a("<table/>", {
|
||
|
class: "footable-details " + this.ft.classes.join(" "),
|
||
|
}).append("<tbody/>")
|
||
|
)
|
||
|
));
|
||
|
var c = this;
|
||
|
b.arr.each(c.cells, function (a) {
|
||
|
a.created || a.$create(), c.$el.append(a.$el);
|
||
|
}),
|
||
|
c.$el
|
||
|
.off("click.ft.row")
|
||
|
.on("click.ft.row", { self: c }, c._onToggle),
|
||
|
(this.created = !0);
|
||
|
}
|
||
|
},
|
||
|
createCells: function () {
|
||
|
var a = this;
|
||
|
return b.arr.map(a.columns, function (b) {
|
||
|
return b.createCell(a);
|
||
|
});
|
||
|
},
|
||
|
val: function (c, d, e) {
|
||
|
var f = this;
|
||
|
if (!b.is.hash(c))
|
||
|
return (
|
||
|
(b.is.hash(this.value) && !b.is.emptyObject(this.value)) ||
|
||
|
((this.value = {}),
|
||
|
b.arr.each(this.cells, function (a) {
|
||
|
a.column.internal || (f.value[a.column.name] = a.val());
|
||
|
})),
|
||
|
this.value
|
||
|
);
|
||
|
this.collapse(!1);
|
||
|
var g = b.is.hash(c),
|
||
|
h = g && b.is.hash(c.options) && b.is.hash(c.value);
|
||
|
if (
|
||
|
((this.o = a.extend(
|
||
|
!0,
|
||
|
{ expanded: f.expanded, classes: f.classes, style: f.style },
|
||
|
h ? c.options : {}
|
||
|
)),
|
||
|
(this.expanded = this.o.expanded),
|
||
|
(this.classes = b.is.array(this.o.classes)
|
||
|
? this.o.classes
|
||
|
: b.is.string(this.o.classes)
|
||
|
? this.o.classes.match(/\S+/g)
|
||
|
: []),
|
||
|
(this.style = b.is.hash(this.o.style)
|
||
|
? this.o.style
|
||
|
: b.is.string(this.o.style)
|
||
|
? b.css2json(this.o.style)
|
||
|
: {}),
|
||
|
g)
|
||
|
)
|
||
|
if ((h && (c = c.value), b.is.hash(this.value)))
|
||
|
for (var i in c) c.hasOwnProperty(i) && (this.value[i] = c[i]);
|
||
|
else this.value = c;
|
||
|
else this.value = null;
|
||
|
(e = b.is["boolean"](e) ? e : !0),
|
||
|
b.arr.each(this.cells, function (a) {
|
||
|
!a.column.internal &&
|
||
|
b.is.defined(f.value[a.column.name]) &&
|
||
|
a.val(f.value[a.column.name], !1, e);
|
||
|
}),
|
||
|
this.created &&
|
||
|
e &&
|
||
|
(this._setClasses(this.$el),
|
||
|
this._setStyle(this.$el),
|
||
|
(b.is["boolean"](d) ? d : !0) && this.draw());
|
||
|
},
|
||
|
_setClasses: function (a) {
|
||
|
var c = !b.is.emptyArray(this.classes),
|
||
|
d = null;
|
||
|
a.removeAttr("class"),
|
||
|
c &&
|
||
|
((d = this.classes.join(" ")),
|
||
|
b.is.emptyString(d) || a.addClass(d));
|
||
|
},
|
||
|
_setStyle: function (a) {
|
||
|
var c = !b.is.emptyObject(this.style),
|
||
|
d = null;
|
||
|
a.removeAttr("style"),
|
||
|
c && ((d = this.style), b.is.hash(d) && a.css(d));
|
||
|
},
|
||
|
expand: function () {
|
||
|
if (this.created) {
|
||
|
var a = this;
|
||
|
a.ft.raise("expand.ft.row", [a]).then(function () {
|
||
|
(a.__hidden__ = b.arr.map(a.cells, function (a) {
|
||
|
return a.column.hidden && a.column.visible ? a : null;
|
||
|
})),
|
||
|
a.__hidden__.length > 0 &&
|
||
|
(a.$details
|
||
|
.insertAfter(a.$el)
|
||
|
.children("td")
|
||
|
.first()
|
||
|
.attr("colspan", a.ft.columns.visibleColspan),
|
||
|
b.arr.each(a.__hidden__, function (a) {
|
||
|
a.collapse();
|
||
|
})),
|
||
|
a.$el.attr("data-expanded", !0),
|
||
|
a.$toggle.removeClass("fa-plus").addClass("fa-minus"),
|
||
|
(a.expanded = !0),
|
||
|
a.ft.raise("expanded.ft.row", [a]);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
collapse: function (a) {
|
||
|
if (this.created) {
|
||
|
var c = this;
|
||
|
c.ft.raise("collapse.ft.row", [c]).then(function () {
|
||
|
b.arr.each(c.__hidden__, function (a) {
|
||
|
a.restore();
|
||
|
}),
|
||
|
c.$details.detach(),
|
||
|
c.$el.removeAttr("data-expanded"),
|
||
|
c.$toggle.removeClass("fa-minus").addClass("fa-plus"),
|
||
|
(b.is["boolean"](a) ? a : !0) && (c.expanded = !1),
|
||
|
c.ft.raise("collapsed.ft.row", [c]);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
predraw: function (a) {
|
||
|
this.created &&
|
||
|
(this.expanded && this.collapse(!1),
|
||
|
this.$toggle.detach(),
|
||
|
(a = b.is["boolean"](a) ? a : !0),
|
||
|
a && this.$el.detach());
|
||
|
},
|
||
|
draw: function (a) {
|
||
|
this.created || this.$create(), b.is.jq(a) && a.append(this.$el);
|
||
|
var c = this;
|
||
|
b.arr.each(c.cells, function (a) {
|
||
|
a.$el.css(
|
||
|
"display",
|
||
|
a.column.hidden || !a.column.visible ? "none" : "table-cell"
|
||
|
),
|
||
|
c.ft.rows.showToggle &&
|
||
|
c.ft.columns.hasHidden &&
|
||
|
(("first" == c.ft.rows.toggleColumn &&
|
||
|
a.column.index == c.ft.columns.firstVisibleIndex) ||
|
||
|
("last" == c.ft.rows.toggleColumn &&
|
||
|
a.column.index == c.ft.columns.lastVisibleIndex)) &&
|
||
|
a.$el.prepend(c.$toggle),
|
||
|
a.$el
|
||
|
.add(a.column.$el)
|
||
|
.removeClass("footable-first-visible footable-last-visible"),
|
||
|
a.column.index == c.ft.columns.firstVisibleIndex &&
|
||
|
a.$el.add(a.column.$el).addClass("footable-first-visible"),
|
||
|
a.column.index == c.ft.columns.lastVisibleIndex &&
|
||
|
a.$el.add(a.column.$el).addClass("footable-last-visible");
|
||
|
}),
|
||
|
this.expanded && this.expand();
|
||
|
},
|
||
|
toggle: function () {
|
||
|
this.created &&
|
||
|
this.ft.columns.hasHidden &&
|
||
|
(this.expanded ? this.collapse() : this.expand());
|
||
|
},
|
||
|
_onToggle: function (b) {
|
||
|
var c = b.data.self;
|
||
|
a(b.target).is(c.ft.rows.toggleSelector) && c.toggle();
|
||
|
},
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.instances = []),
|
||
|
(b.Table = b.Class.extend({
|
||
|
construct: function (c, d, e) {
|
||
|
(this._resizeTimeout = null),
|
||
|
(this.id = b.instances.push(this)),
|
||
|
(this.initialized = !1),
|
||
|
(this.$el = (b.is.jq(c) ? c : a(c)).first()),
|
||
|
(this.$loader = a("<div/>", { class: "footable-loader" }).append(
|
||
|
a("<span/>", { class: "fas fa-sync-alt" })
|
||
|
)),
|
||
|
(this.o = a.extend(!0, {}, b.defaults, d)),
|
||
|
(this.data = this.$el.data() || {}),
|
||
|
(this.classes = []),
|
||
|
(this.components = b.components.load(
|
||
|
b.is.hash(this.data.components)
|
||
|
? this.data.components
|
||
|
: this.o.components,
|
||
|
this
|
||
|
)),
|
||
|
(this.breakpoints = this.use(FooTable.Breakpoints)),
|
||
|
(this.columns = this.use(FooTable.Columns)),
|
||
|
(this.rows = this.use(FooTable.Rows)),
|
||
|
this._construct(e);
|
||
|
},
|
||
|
_construct: function (a) {
|
||
|
var c = this;
|
||
|
return this._preinit()
|
||
|
.then(function () {
|
||
|
return c._init().then(function () {
|
||
|
return c.raise("ready.ft.table").then(function () {
|
||
|
b.is.fn(a) && a.call(c, c);
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
.always(function (a) {
|
||
|
c.$el.show(),
|
||
|
b.is.error(a) &&
|
||
|
console.error(
|
||
|
"FooTable: unhandled error thrown during initialization.",
|
||
|
a
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
_preinit: function () {
|
||
|
var a = this;
|
||
|
return this.raise("preinit.ft.table", [a.data]).then(function () {
|
||
|
var c = (a.$el.attr("class") || "").match(/\S+/g) || [];
|
||
|
(a.o.ajax = b.checkFnValue(a, a.data.ajax, a.o.ajax)),
|
||
|
(a.o.stopPropagation = b.is["boolean"](a.data.stopPropagation)
|
||
|
? a.data.stopPropagation
|
||
|
: a.o.stopPropagation);
|
||
|
for (var d = 0, e = c.length; e > d; d++)
|
||
|
b.str.startsWith(c[d], "footable") || a.classes.push(c[d]);
|
||
|
return (
|
||
|
a.$el.hide().after(a.$loader),
|
||
|
a.execute(!1, !1, "preinit", a.data)
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
_init: function () {
|
||
|
var c = this;
|
||
|
return c.raise("init.ft.table").then(function () {
|
||
|
var d = c.$el.children("thead"),
|
||
|
e = c.$el.children("tbody"),
|
||
|
f = c.$el.children("tfoot");
|
||
|
return (
|
||
|
c.$el.addClass("footable footable-" + c.id),
|
||
|
b.is.hash(c.o.on) && c.$el.on(c.o.on),
|
||
|
0 == f.length && c.$el.append((f = a("<tfoot/>"))),
|
||
|
0 == e.length && c.$el.append("<tbody/>"),
|
||
|
0 == d.length && c.$el.prepend((d = a("<thead/>"))),
|
||
|
c.execute(!1, !0, "init").then(function () {
|
||
|
return (
|
||
|
c.$el.data("__FooTable__", c),
|
||
|
0 == f.children("tr").length && f.remove(),
|
||
|
0 == d.children("tr").length && d.remove(),
|
||
|
c
|
||
|
.raise("postinit.ft.table")
|
||
|
.then(function () {
|
||
|
return c.draw();
|
||
|
})
|
||
|
.always(function () {
|
||
|
a(window)
|
||
|
.off("resize.ft" + c.id, c._onWindowResize)
|
||
|
.on("resize.ft" + c.id, { self: c }, c._onWindowResize),
|
||
|
(c.initialized = !0);
|
||
|
})
|
||
|
);
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var c = this;
|
||
|
return c
|
||
|
.raise("destroy.ft.table")
|
||
|
.then(function () {
|
||
|
return c.execute(!0, !0, "destroy").then(function () {
|
||
|
c.$el
|
||
|
.removeData("__FooTable__")
|
||
|
.removeClass("footable-" + c.id),
|
||
|
b.is.hash(c.o.on) && c.$el.off(c.o.on),
|
||
|
a(window).off("resize.ft" + c.id, c._onWindowResize),
|
||
|
(c.initialized = !1),
|
||
|
(b.instances[c.id] = null);
|
||
|
});
|
||
|
})
|
||
|
.fail(function (a) {
|
||
|
b.is.error(a) &&
|
||
|
console.error(
|
||
|
"FooTable: unhandled error thrown while destroying the plugin.",
|
||
|
a
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
raise: function (c, d) {
|
||
|
var e = this,
|
||
|
f =
|
||
|
b.__debug__ &&
|
||
|
(b.is.emptyArray(b.__debug_options__.events) ||
|
||
|
b.arr.any(b.__debug_options__.events, function (a) {
|
||
|
return b.str.contains(c, a);
|
||
|
}));
|
||
|
return (
|
||
|
(d = d || []),
|
||
|
d.unshift(this),
|
||
|
a.Deferred(function (b) {
|
||
|
var g = a.Event(c);
|
||
|
1 == e.o.stopPropagation &&
|
||
|
e.$el.one(c, function (a) {
|
||
|
a.stopPropagation();
|
||
|
}),
|
||
|
f && console.log("FooTable:" + c + ": ", d),
|
||
|
e.$el.trigger(g, d),
|
||
|
g.isDefaultPrevented()
|
||
|
? (f &&
|
||
|
console.log(
|
||
|
'FooTable: default prevented for the "' + c + '" event.'
|
||
|
),
|
||
|
b.reject(g))
|
||
|
: b.resolve(g);
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
use: function (a) {
|
||
|
for (var b = 0, c = this.components.length; c > b; b++)
|
||
|
if (this.components[b] instanceof a) return this.components[b];
|
||
|
return null;
|
||
|
},
|
||
|
draw: function () {
|
||
|
var a = this,
|
||
|
c = a.$el.clone().insertBefore(a.$el);
|
||
|
return (
|
||
|
a.$el.detach(),
|
||
|
a
|
||
|
.execute(!1, !0, "predraw")
|
||
|
.then(function () {
|
||
|
return a.raise("predraw.ft.table").then(function () {
|
||
|
return a.execute(!1, !0, "draw").then(function () {
|
||
|
return a.raise("draw.ft.table").then(function () {
|
||
|
return a.execute(!1, !0, "postdraw").then(function () {
|
||
|
return a.raise("postdraw.ft.table");
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
.fail(function (a) {
|
||
|
b.is.error(a) &&
|
||
|
console.error(
|
||
|
"FooTable: unhandled error thrown during a draw operation.",
|
||
|
a
|
||
|
);
|
||
|
})
|
||
|
.always(function () {
|
||
|
c.replaceWith(a.$el), a.$loader.remove();
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
execute: function (a, c, d, e, f) {
|
||
|
var g = this,
|
||
|
h = Array.prototype.slice.call(arguments);
|
||
|
(a = h.shift()), (c = h.shift());
|
||
|
var i = c
|
||
|
? b.arr.get(g.components, function (a) {
|
||
|
return a.enabled;
|
||
|
})
|
||
|
: g.components.slice(0);
|
||
|
return h.unshift(a ? i.reverse() : i), g._execute.apply(g, h);
|
||
|
},
|
||
|
_execute: function (c, d, e, f) {
|
||
|
if (!c || !c.length) return a.when();
|
||
|
var g,
|
||
|
h = this,
|
||
|
i = Array.prototype.slice.call(arguments);
|
||
|
return (
|
||
|
(c = i.shift()),
|
||
|
(d = i.shift()),
|
||
|
(g = c.shift()),
|
||
|
b.is.fn(g[d])
|
||
|
? a
|
||
|
.Deferred(function (a) {
|
||
|
try {
|
||
|
var c = g[d].apply(g, i);
|
||
|
if (b.is.promise(c)) return c.then(a.resolve, a.reject);
|
||
|
a.resolve(c);
|
||
|
} catch (e) {
|
||
|
a.reject(e);
|
||
|
}
|
||
|
})
|
||
|
.then(function () {
|
||
|
return h._execute.apply(h, [c, d].concat(i));
|
||
|
})
|
||
|
: h._execute.apply(h, [c, d].concat(i))
|
||
|
);
|
||
|
},
|
||
|
_onWindowResize: function (a) {
|
||
|
var b = a.data.self;
|
||
|
null != b._resizeTimeout && clearTimeout(b._resizeTimeout),
|
||
|
(b._resizeTimeout = setTimeout(function () {
|
||
|
(b._resizeTimeout = null),
|
||
|
b.raise("resize.ft.table").then(function () {
|
||
|
b.breakpoints.check();
|
||
|
});
|
||
|
}, 300));
|
||
|
},
|
||
|
}));
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.ArrayColumn = b.Column.extend({
|
||
|
construct: function (a, b) {
|
||
|
this._super(a, b, "array");
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c),
|
||
|
e = d.data("value");
|
||
|
if (b.is.array(e)) return e;
|
||
|
e = d.html();
|
||
|
try {
|
||
|
e = JSON.parse(e);
|
||
|
} catch (f) {
|
||
|
e = null;
|
||
|
}
|
||
|
return b.is.array(e) ? e : null;
|
||
|
}
|
||
|
return b.is.array(c) ? c : null;
|
||
|
},
|
||
|
formatter: function (a, c, d) {
|
||
|
return b.is.array(a) ? JSON.stringify(a) : "";
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("array", b.ArrayColumn);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.is.undef(window.moment) ||
|
||
|
((b.DateColumn = b.Column.extend({
|
||
|
construct: function (a, c) {
|
||
|
this._super(a, c, "date"),
|
||
|
(this.formatString = b.is.string(c.formatString)
|
||
|
? c.formatString
|
||
|
: "MM-DD-YYYY");
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("value");
|
||
|
(c = b.is.defined(d) ? d : a(c).text()),
|
||
|
b.is.string(c) && (c = isNaN(c) ? c : +c);
|
||
|
}
|
||
|
if (b.is.date(c)) return moment(c);
|
||
|
if (b.is.object(c) && b.is["boolean"](c._isAMomentObject)) return c;
|
||
|
if (b.is.string(c)) {
|
||
|
if (isNaN(c)) return moment(c, this.formatString);
|
||
|
c = +c;
|
||
|
}
|
||
|
return b.is.number(c) ? moment(c) : null;
|
||
|
},
|
||
|
formatter: function (a, c, d) {
|
||
|
return b.is.object(a) &&
|
||
|
b.is["boolean"](a._isAMomentObject) &&
|
||
|
a.isValid()
|
||
|
? a.format(this.formatString)
|
||
|
: "";
|
||
|
},
|
||
|
filterValue: function (c) {
|
||
|
if (
|
||
|
((b.is.element(c) || b.is.jq(c)) &&
|
||
|
(c = a(c).data("filterValue") || a(c).text()),
|
||
|
b.is.hash(c) &&
|
||
|
b.is.hash(c.options) &&
|
||
|
(b.is.string(c.options.filterValue) &&
|
||
|
(c = c.options.filterValue),
|
||
|
b.is.defined(c.value) && (c = c.value)),
|
||
|
b.is.object(c) && b.is["boolean"](c._isAMomentObject))
|
||
|
)
|
||
|
return c.format(this.formatString);
|
||
|
if (b.is.string(c)) {
|
||
|
if (isNaN(c)) return c;
|
||
|
c = +c;
|
||
|
}
|
||
|
return b.is.number(c) || b.is.date(c)
|
||
|
? moment(c).format(this.formatString)
|
||
|
: b.is.defined(c) && null != c
|
||
|
? c + ""
|
||
|
: "";
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("date", b.DateColumn));
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.HTMLColumn = b.Column.extend({
|
||
|
construct: function (a, b) {
|
||
|
this._super(a, b, "html");
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (
|
||
|
(b.is.string(c) && (c = a(a.trim(c))),
|
||
|
b.is.element(c) && (c = a(c)),
|
||
|
b.is.jq(c))
|
||
|
) {
|
||
|
var d = c.prop("tagName").toLowerCase();
|
||
|
if ("td" == d || "th" == d) {
|
||
|
var e = c.data("value");
|
||
|
return b.is.defined(e) ? e : c.contents();
|
||
|
}
|
||
|
return c;
|
||
|
}
|
||
|
return null;
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("html", b.HTMLColumn);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.NumberColumn = b.Column.extend({
|
||
|
construct: function (a, c) {
|
||
|
this._super(a, c, "number"),
|
||
|
(this.decimalSeparator = b.is.string(c.decimalSeparator)
|
||
|
? c.decimalSeparator
|
||
|
: "."),
|
||
|
(this.thousandSeparator = b.is.string(c.thousandSeparator)
|
||
|
? c.thousandSeparator
|
||
|
: ","),
|
||
|
(this.decimalSeparatorRegex = new RegExp(
|
||
|
b.str.escapeRegExp(this.decimalSeparator),
|
||
|
"g"
|
||
|
)),
|
||
|
(this.thousandSeparatorRegex = new RegExp(
|
||
|
b.str.escapeRegExp(this.thousandSeparator),
|
||
|
"g"
|
||
|
)),
|
||
|
(this.cleanRegex = new RegExp(
|
||
|
"[^-0-9" + b.str.escapeRegExp(this.decimalSeparator) + "]",
|
||
|
"g"
|
||
|
));
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("value");
|
||
|
c = b.is.defined(d) ? d : a(c).text().replace(this.cleanRegex, "");
|
||
|
}
|
||
|
return (
|
||
|
b.is.string(c) &&
|
||
|
((c = c
|
||
|
.replace(this.thousandSeparatorRegex, "")
|
||
|
.replace(this.decimalSeparatorRegex, ".")),
|
||
|
(c = parseFloat(c))),
|
||
|
b.is.number(c) ? c : null
|
||
|
);
|
||
|
},
|
||
|
formatter: function (a, b, c) {
|
||
|
if (null == a) return "";
|
||
|
var d = (a + "").split(".");
|
||
|
return (
|
||
|
2 == d.length &&
|
||
|
d[0].length > 3 &&
|
||
|
(d[0] = d[0].replace(
|
||
|
/\B(?=(?:\d{3})+(?!\d))/g,
|
||
|
this.thousandSeparator
|
||
|
)),
|
||
|
d.join(this.decimalSeparator)
|
||
|
);
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("number", b.NumberColumn);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.ObjectColumn = b.Column.extend({
|
||
|
construct: function (a, b) {
|
||
|
this._super(a, b, "object");
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c),
|
||
|
e = d.data("value");
|
||
|
if (b.is.object(e)) return e;
|
||
|
e = d.html();
|
||
|
try {
|
||
|
e = JSON.parse(e);
|
||
|
} catch (f) {
|
||
|
e = null;
|
||
|
}
|
||
|
return b.is.object(e) ? e : null;
|
||
|
}
|
||
|
return b.is.object(c) ? c : null;
|
||
|
},
|
||
|
formatter: function (a, c, d) {
|
||
|
return b.is.object(a) ? JSON.stringify(a) : "";
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("object", b.ObjectColumn);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Breakpoint = b.Class.extend({
|
||
|
construct: function (a, b) {
|
||
|
(this.name = a), (this.width = b);
|
||
|
},
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Breakpoints = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, !0),
|
||
|
(this.o = a.o),
|
||
|
(this.current = null),
|
||
|
(this.array = []),
|
||
|
(this.cascade = this.o.cascade),
|
||
|
(this.useParentWidth = this.o.useParentWidth),
|
||
|
(this.hidden = null),
|
||
|
(this._classNames = ""),
|
||
|
(this.getWidth = b.checkFnValue(
|
||
|
this,
|
||
|
this.o.getWidth,
|
||
|
this.getWidth
|
||
|
));
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
return this.ft.raise("preinit.ft.breakpoints", [a]).then(function () {
|
||
|
(c.cascade = b.is["boolean"](a.cascade) ? a.cascade : c.cascade),
|
||
|
(c.o.breakpoints = b.is.hash(a.breakpoints)
|
||
|
? a.breakpoints
|
||
|
: c.o.breakpoints),
|
||
|
(c.getWidth = b.checkFnValue(c, a.getWidth, c.getWidth)),
|
||
|
null == c.o.breakpoints &&
|
||
|
(c.o.breakpoints = { xs: 480, sm: 768, md: 992, lg: 1200 });
|
||
|
for (var d in c.o.breakpoints)
|
||
|
c.o.breakpoints.hasOwnProperty(d) &&
|
||
|
(c.array.push(new b.Breakpoint(d, c.o.breakpoints[d])),
|
||
|
(c._classNames += "breakpoint-" + d + " "));
|
||
|
c.array.sort(function (a, b) {
|
||
|
return b.width - a.width;
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
return this.ft.raise("init.ft.breakpoints").then(function () {
|
||
|
a.current = a.get();
|
||
|
});
|
||
|
},
|
||
|
draw: function () {
|
||
|
this.ft.$el
|
||
|
.removeClass(this._classNames)
|
||
|
.addClass("breakpoint-" + this.current.name);
|
||
|
},
|
||
|
calculate: function () {
|
||
|
for (
|
||
|
var a,
|
||
|
c = this,
|
||
|
d = null,
|
||
|
e = [],
|
||
|
f = null,
|
||
|
g = c.getWidth(),
|
||
|
h = 0,
|
||
|
i = c.array.length;
|
||
|
i > h;
|
||
|
h++
|
||
|
)
|
||
|
(a = c.array[h]),
|
||
|
((!d && h == i - 1) ||
|
||
|
(g >= a.width &&
|
||
|
(f instanceof b.Breakpoint ? g < f.width : !0))) &&
|
||
|
(d = a),
|
||
|
d || e.push(a.name),
|
||
|
(f = a);
|
||
|
return e.push(d.name), (c.hidden = e.join(" ")), d;
|
||
|
},
|
||
|
visible: function (a) {
|
||
|
if (b.is.emptyString(a)) return !0;
|
||
|
if ("all" === a) return !1;
|
||
|
for (var c = a.split(" "), d = 0, e = c.length; e > d; d++)
|
||
|
if (
|
||
|
this.cascade
|
||
|
? b.str.containsWord(this.hidden, c[d])
|
||
|
: c[d] == this.current.name
|
||
|
)
|
||
|
return !1;
|
||
|
return !0;
|
||
|
},
|
||
|
check: function () {
|
||
|
var a = this,
|
||
|
c = a.get();
|
||
|
c instanceof b.Breakpoint &&
|
||
|
c != a.current &&
|
||
|
a.ft.raise("before.ft.breakpoints", [a.current, c]).then(function () {
|
||
|
var b = a.current;
|
||
|
return (
|
||
|
(a.current = c),
|
||
|
a.ft.draw().then(function () {
|
||
|
a.ft.raise("after.ft.breakpoints", [a.current, b]);
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
get: function (a) {
|
||
|
return b.is.undef(a)
|
||
|
? this.calculate()
|
||
|
: a instanceof b.Breakpoint
|
||
|
? a
|
||
|
: b.is.string(a)
|
||
|
? b.arr.first(this.array, function (b) {
|
||
|
return b.name == a;
|
||
|
})
|
||
|
: b.is.number(a) && a >= 0 && a < this.array.length
|
||
|
? this.array[a]
|
||
|
: null;
|
||
|
},
|
||
|
getWidth: function () {
|
||
|
return b.is.fn(this.o.getWidth)
|
||
|
? this.o.getWidth(this.ft)
|
||
|
: 1 == this.useParentWidth
|
||
|
? this.getParentWidth()
|
||
|
: this.getViewportWidth();
|
||
|
},
|
||
|
getParentWidth: function () {
|
||
|
return this.ft.$el.parent().width();
|
||
|
},
|
||
|
getViewportWidth: function () {
|
||
|
return Math.max(
|
||
|
document.documentElement.clientWidth,
|
||
|
window.innerWidth,
|
||
|
0
|
||
|
);
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("breakpoints", b.Breakpoints, 1e3);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Column.prototype.breakpoints = null),
|
||
|
(a.Column.prototype.__breakpoints_define__ = function (b) {
|
||
|
this.breakpoints = a.is.emptyString(b.breakpoints)
|
||
|
? null
|
||
|
: b.breakpoints;
|
||
|
}),
|
||
|
a.Column.extend("define", function (a) {
|
||
|
this._super(a), this.__breakpoints_define__(a);
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.Defaults.prototype.breakpoints = null),
|
||
|
(a.Defaults.prototype.cascade = !1),
|
||
|
(a.Defaults.prototype.useParentWidth = !1),
|
||
|
(a.Defaults.prototype.getWidth = null);
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Columns = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, !0),
|
||
|
(this.o = a.o),
|
||
|
(this.array = []),
|
||
|
(this.$header = null),
|
||
|
(this.showHeader = a.o.showHeader),
|
||
|
(this._fromHTML =
|
||
|
b.is.emptyArray(a.o.columns) && !b.is.promise(a.o.columns));
|
||
|
},
|
||
|
parse: function (c) {
|
||
|
var d = this;
|
||
|
return a.Deferred(function (c) {
|
||
|
function e(c, d) {
|
||
|
var e = [];
|
||
|
if (0 == c.length || 0 == d.length) e = c.concat(d);
|
||
|
else {
|
||
|
var f = 0;
|
||
|
b.arr.each(c.concat(d), function (a) {
|
||
|
a.index > f && (f = a.index);
|
||
|
}),
|
||
|
f++;
|
||
|
for (var g, h, i = 0; f > i; i++)
|
||
|
(g = {}),
|
||
|
b.arr.each(c, function (a) {
|
||
|
return a.index == i ? ((g = a), !1) : void 0;
|
||
|
}),
|
||
|
(h = {}),
|
||
|
b.arr.each(d, function (a) {
|
||
|
return a.index == i ? ((h = a), !1) : void 0;
|
||
|
}),
|
||
|
e.push(a.extend(!0, {}, g, h));
|
||
|
}
|
||
|
return e;
|
||
|
}
|
||
|
var f,
|
||
|
g,
|
||
|
h = [],
|
||
|
i = [],
|
||
|
j = d.ft.$el
|
||
|
.find(
|
||
|
"tr.footable-header, thead > tr:last:has([data-breakpoints]), tbody > tr:first:has([data-breakpoints]), thead > tr:last, tbody > tr:first"
|
||
|
)
|
||
|
.first();
|
||
|
if (j.length > 0) {
|
||
|
var k =
|
||
|
j.parent().is("tbody") &&
|
||
|
j.children().length == j.children("td").length;
|
||
|
k || (d.$header = j.addClass("footable-header")),
|
||
|
j.children("td,th").each(function (b, c) {
|
||
|
(f = a(c)),
|
||
|
(g = f.data()),
|
||
|
(g.index = b),
|
||
|
(g.$el = f),
|
||
|
(g.virtual = k),
|
||
|
i.push(g);
|
||
|
}),
|
||
|
k && (d.showHeader = !1);
|
||
|
}
|
||
|
b.is.array(d.o.columns) && !b.is.emptyArray(d.o.columns)
|
||
|
? (b.arr.each(d.o.columns, function (a, b) {
|
||
|
(a.index = b), h.push(a);
|
||
|
}),
|
||
|
d.parseFinalize(c, e(h, i)))
|
||
|
: b.is.promise(d.o.columns)
|
||
|
? d.o.columns.then(
|
||
|
function (a) {
|
||
|
b.arr.each(a, function (a, b) {
|
||
|
(a.index = b), h.push(a);
|
||
|
}),
|
||
|
d.parseFinalize(c, e(h, i));
|
||
|
},
|
||
|
function (a) {
|
||
|
c.reject(
|
||
|
Error(
|
||
|
"Columns ajax request error: " +
|
||
|
a.status +
|
||
|
" (" +
|
||
|
a.statusText +
|
||
|
")"
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
)
|
||
|
: d.parseFinalize(c, e(h, i));
|
||
|
});
|
||
|
},
|
||
|
parseFinalize: function (a, c) {
|
||
|
var d,
|
||
|
e = this,
|
||
|
f = [];
|
||
|
b.arr.each(c, function (a) {
|
||
|
(d = b.columns.contains(a.type)
|
||
|
? b.columns.make(a.type, e.ft, a)
|
||
|
: new b.Column(e.ft, a)) && f.push(d);
|
||
|
}),
|
||
|
b.is.emptyArray(f)
|
||
|
? a.reject(Error("No columns supplied."))
|
||
|
: (f.sort(function (a, b) {
|
||
|
return a.index - b.index;
|
||
|
}),
|
||
|
a.resolve(f));
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
return c.ft.raise("preinit.ft.columns", [a]).then(function () {
|
||
|
return c.parse(a).then(function (d) {
|
||
|
(c.array = d),
|
||
|
(c.showHeader = b.is["boolean"](a.showHeader)
|
||
|
? a.showHeader
|
||
|
: c.showHeader);
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
return this.ft.raise("init.ft.columns", [a.array]).then(function () {
|
||
|
a.$create();
|
||
|
});
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("destroy.ft.columns").then(function () {
|
||
|
a._fromHTML || a.$header.remove();
|
||
|
});
|
||
|
},
|
||
|
predraw: function () {
|
||
|
var a = this,
|
||
|
c = !0;
|
||
|
(a.visibleColspan = 0),
|
||
|
(a.firstVisibleIndex = 0),
|
||
|
(a.lastVisibleIndex = 0),
|
||
|
(a.hasHidden = !1),
|
||
|
b.arr.each(a.array, function (b) {
|
||
|
(b.hidden = !a.ft.breakpoints.visible(b.breakpoints)),
|
||
|
!b.hidden &&
|
||
|
b.visible &&
|
||
|
(c && ((a.firstVisibleIndex = b.index), (c = !1)),
|
||
|
(a.lastVisibleIndex = b.index),
|
||
|
a.visibleColspan++),
|
||
|
b.hidden && (a.hasHidden = !0);
|
||
|
}),
|
||
|
a.ft.$el.toggleClass("breakpoint", a.hasHidden);
|
||
|
},
|
||
|
draw: function () {
|
||
|
b.arr.each(this.array, function (a) {
|
||
|
a.$el.css("display", a.hidden || !a.visible ? "none" : "table-cell");
|
||
|
}),
|
||
|
!this.showHeader &&
|
||
|
b.is.jq(this.$header.parent()) &&
|
||
|
this.$header.detach();
|
||
|
},
|
||
|
$create: function () {
|
||
|
var c = this;
|
||
|
(c.$header = b.is.jq(c.$header)
|
||
|
? c.$header
|
||
|
: a("<tr/>", { class: "footable-header" })),
|
||
|
c.$header.children("th,td").detach(),
|
||
|
b.arr.each(c.array, function (a) {
|
||
|
c.$header.append(a.$el);
|
||
|
}),
|
||
|
c.showHeader &&
|
||
|
!b.is.jq(c.$header.parent()) &&
|
||
|
c.ft.$el.children("thead").append(c.$header);
|
||
|
},
|
||
|
get: function (a) {
|
||
|
return a instanceof b.Column
|
||
|
? a
|
||
|
: b.is.string(a)
|
||
|
? b.arr.first(this.array, function (b) {
|
||
|
return b.name == a;
|
||
|
})
|
||
|
: b.is.number(a)
|
||
|
? b.arr.first(this.array, function (b) {
|
||
|
return b.index == a;
|
||
|
})
|
||
|
: b.is.fn(a)
|
||
|
? b.arr.get(this.array, a)
|
||
|
: null;
|
||
|
},
|
||
|
ensure: function (a) {
|
||
|
var c = this,
|
||
|
d = [];
|
||
|
return b.is.array(a)
|
||
|
? (b.arr.each(a, function (a) {
|
||
|
d.push(c.get(a));
|
||
|
}),
|
||
|
d)
|
||
|
: d;
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("columns", b.Columns, 900);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Defaults.prototype.columns = []), (a.Defaults.prototype.showHeader = !0);
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Rows = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, !0),
|
||
|
(this.o = a.o),
|
||
|
(this.array = []),
|
||
|
(this.all = []),
|
||
|
(this.showToggle = a.o.showToggle),
|
||
|
(this.toggleSelector = a.o.toggleSelector),
|
||
|
(this.toggleColumn = a.o.toggleColumn),
|
||
|
(this.emptyString = a.o.empty),
|
||
|
(this.expandFirst = a.o.expandFirst),
|
||
|
(this.expandAll = a.o.expandAll),
|
||
|
(this.$empty = null),
|
||
|
(this._fromHTML =
|
||
|
b.is.emptyArray(a.o.rows) && !b.is.promise(a.o.rows));
|
||
|
},
|
||
|
parse: function () {
|
||
|
var c = this;
|
||
|
return a.Deferred(function (a) {
|
||
|
var d = c.ft.$el.children("tbody").children("tr");
|
||
|
b.is.array(c.o.rows) && c.o.rows.length > 0
|
||
|
? c.parseFinalize(a, c.o.rows)
|
||
|
: b.is.promise(c.o.rows)
|
||
|
? c.o.rows.then(
|
||
|
function (b) {
|
||
|
c.parseFinalize(a, b);
|
||
|
},
|
||
|
function (b) {
|
||
|
a.reject(
|
||
|
Error(
|
||
|
"Rows ajax request error: " +
|
||
|
b.status +
|
||
|
" (" +
|
||
|
b.statusText +
|
||
|
")"
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
)
|
||
|
: b.is.jq(d)
|
||
|
? (c.parseFinalize(a, d), d.detach())
|
||
|
: c.parseFinalize(a, []);
|
||
|
});
|
||
|
},
|
||
|
parseFinalize: function (c, d) {
|
||
|
var e = this,
|
||
|
f = a.map(d, function (a) {
|
||
|
return new b.Row(e.ft, e.ft.columns.array, a);
|
||
|
});
|
||
|
c.resolve(f);
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
return c.ft.raise("preinit.ft.rows", [a]).then(function () {
|
||
|
return c.parse().then(function (d) {
|
||
|
(c.all = d),
|
||
|
(c.array = c.all.slice(0)),
|
||
|
(c.showToggle = b.is["boolean"](a.showToggle)
|
||
|
? a.showToggle
|
||
|
: c.showToggle),
|
||
|
(c.toggleSelector = b.is.string(a.toggleSelector)
|
||
|
? a.toggleSelector
|
||
|
: c.toggleSelector),
|
||
|
(c.toggleColumn = b.is.string(a.toggleColumn)
|
||
|
? a.toggleColumn
|
||
|
: c.toggleColumn),
|
||
|
"first" != c.toggleColumn &&
|
||
|
"last" != c.toggleColumn &&
|
||
|
(c.toggleColumn = "first"),
|
||
|
(c.emptyString = b.is.string(a.empty) ? a.empty : c.emptyString),
|
||
|
(c.expandFirst = b.is["boolean"](a.expandFirst)
|
||
|
? a.expandFirst
|
||
|
: c.expandFirst),
|
||
|
(c.expandAll = b.is["boolean"](a.expandAll)
|
||
|
? a.expandAll
|
||
|
: c.expandAll);
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
return a.ft.raise("init.ft.rows", [a.all]).then(function () {
|
||
|
a.$create();
|
||
|
});
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("destroy.ft.rows").then(function () {
|
||
|
b.arr.each(a.array, function (b) {
|
||
|
b.predraw(!a._fromHTML);
|
||
|
}),
|
||
|
(a.all = a.array = []);
|
||
|
});
|
||
|
},
|
||
|
predraw: function () {
|
||
|
b.arr.each(this.array, function (a) {
|
||
|
a.predraw();
|
||
|
}),
|
||
|
(this.array = this.all.slice(0));
|
||
|
},
|
||
|
$create: function () {
|
||
|
this.$empty = a("<tr/>", { class: "footable-empty" }).append(
|
||
|
a("<td/>").text(this.emptyString)
|
||
|
);
|
||
|
},
|
||
|
draw: function () {
|
||
|
var a = this,
|
||
|
c = a.ft.$el.children("tbody"),
|
||
|
d = !0;
|
||
|
a.array.length > 0
|
||
|
? (a.$empty.detach(),
|
||
|
b.arr.each(a.array, function (b) {
|
||
|
((a.expandFirst && d) || a.expandAll) &&
|
||
|
((b.expanded = !0), (d = !1)),
|
||
|
b.draw(c);
|
||
|
}))
|
||
|
: (a.$empty
|
||
|
.children("td")
|
||
|
.attr("colspan", a.ft.columns.visibleColspan),
|
||
|
c.append(a.$empty));
|
||
|
},
|
||
|
load: function (c, d) {
|
||
|
var e = this,
|
||
|
f = a.map(c, function (a) {
|
||
|
return new b.Row(e.ft, e.ft.columns.array, a);
|
||
|
});
|
||
|
b.arr.each(this.array, function (a) {
|
||
|
a.predraw();
|
||
|
}),
|
||
|
(this.all = (b.is["boolean"](d) ? d : !1) ? this.all.concat(f) : f),
|
||
|
(this.array = this.all.slice(0)),
|
||
|
this.ft.draw();
|
||
|
},
|
||
|
expand: function () {
|
||
|
b.arr.each(this.array, function (a) {
|
||
|
a.expand();
|
||
|
});
|
||
|
},
|
||
|
collapse: function () {
|
||
|
b.arr.each(this.array, function (a) {
|
||
|
a.collapse();
|
||
|
});
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("rows", b.Rows, 800);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Defaults.prototype.rows = []),
|
||
|
(a.Defaults.prototype.empty = "No results"),
|
||
|
(a.Defaults.prototype.showToggle = !0),
|
||
|
(a.Defaults.prototype.toggleSelector = "tr,td,.footable-toggle"),
|
||
|
(a.Defaults.prototype.toggleColumn = "first"),
|
||
|
(a.Defaults.prototype.expandFirst = !1),
|
||
|
(a.Defaults.prototype.expandAll = !1);
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Table.prototype.loadRows = function (a, b) {
|
||
|
this.rows.load(a, b);
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Filter = a.Class.extend({
|
||
|
construct: function (b, c, d, e, f, g, h) {
|
||
|
(this.name = b),
|
||
|
(this.space =
|
||
|
!a.is.string(e) || ("OR" != e && "AND" != e) ? "AND" : e),
|
||
|
(this.connectors = a.is["boolean"](f) ? f : !0),
|
||
|
(this.ignoreCase = a.is["boolean"](g) ? g : !0),
|
||
|
(this.hidden = a.is["boolean"](h) ? h : !1),
|
||
|
(this.query =
|
||
|
c instanceof a.Query
|
||
|
? c
|
||
|
: new a.Query(c, this.space, this.connectors, this.ignoreCase)),
|
||
|
(this.columns = d);
|
||
|
},
|
||
|
match: function (b) {
|
||
|
return a.is.string(b)
|
||
|
? (a.is.string(this.query) &&
|
||
|
(this.query = new a.Query(
|
||
|
this.query,
|
||
|
this.space,
|
||
|
this.connectors,
|
||
|
this.ignoreCase
|
||
|
)),
|
||
|
this.query instanceof a.Query ? this.query.match(b) : !1)
|
||
|
: !1;
|
||
|
},
|
||
|
matchRow: function (b) {
|
||
|
var c = this,
|
||
|
d = a.arr
|
||
|
.map(b.cells, function (b) {
|
||
|
return a.arr.contains(c.columns, b.column) ? b.filterValue : null;
|
||
|
})
|
||
|
.join(" ");
|
||
|
return c.match(d);
|
||
|
},
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Filtering = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, a.o.filtering.enabled),
|
||
|
(this.filters = a.o.filtering.filters),
|
||
|
(this.delay = a.o.filtering.delay),
|
||
|
(this.min = a.o.filtering.min),
|
||
|
(this.space = a.o.filtering.space),
|
||
|
(this.connectors = a.o.filtering.connectors),
|
||
|
(this.ignoreCase = a.o.filtering.ignoreCase),
|
||
|
(this.exactMatch = a.o.filtering.exactMatch),
|
||
|
(this.placeholder = a.o.filtering.placeholder),
|
||
|
(this.dropdownTitle = a.o.filtering.dropdownTitle),
|
||
|
(this.position = a.o.filtering.position),
|
||
|
(this.focus = a.o.filtering.focus),
|
||
|
(this.container = a.o.filtering.container),
|
||
|
(this.$container = null),
|
||
|
(this.$row = null),
|
||
|
(this.$cell = null),
|
||
|
(this.$form = null),
|
||
|
(this.$dropdown = null),
|
||
|
(this.$input = null),
|
||
|
(this.$button = null),
|
||
|
(this._filterTimeout = null),
|
||
|
(this._exactRegExp = /^"(.*?)"$/);
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
return c.ft.raise("preinit.ft.filtering").then(
|
||
|
function () {
|
||
|
c.ft.$el.hasClass("footable-filtering") && (c.enabled = !0),
|
||
|
(c.enabled = b.is["boolean"](a.filtering)
|
||
|
? a.filtering
|
||
|
: c.enabled),
|
||
|
c.enabled &&
|
||
|
((c.space = b.is.string(a.filterSpace)
|
||
|
? a.filterSpace
|
||
|
: c.space),
|
||
|
(c.min = b.is.number(a.filterMin) ? a.filterMin : c.min),
|
||
|
(c.connectors = b.is["boolean"](a.filterConnectors)
|
||
|
? a.filterConnectors
|
||
|
: c.connectors),
|
||
|
(c.ignoreCase = b.is["boolean"](a.filterIgnoreCase)
|
||
|
? a.filterIgnoreCase
|
||
|
: c.ignoreCase),
|
||
|
(c.exactMatch = b.is["boolean"](a.filterExactMatch)
|
||
|
? a.filterExactMatch
|
||
|
: c.exactMatch),
|
||
|
(c.focus = b.is["boolean"](a.filterFocus)
|
||
|
? a.filterFocus
|
||
|
: c.focus),
|
||
|
(c.delay = b.is.number(a.filterDelay)
|
||
|
? a.filterDelay
|
||
|
: c.delay),
|
||
|
(c.placeholder = b.is.string(a.filterPlaceholder)
|
||
|
? a.filterPlaceholder
|
||
|
: c.placeholder),
|
||
|
(c.dropdownTitle = b.is.string(a.filterDropdownTitle)
|
||
|
? a.filterDropdownTitle
|
||
|
: c.dropdownTitle),
|
||
|
(c.container = b.is.string(a.filterContainer)
|
||
|
? a.filterContainer
|
||
|
: c.container),
|
||
|
(c.filters = b.is.array(a.filterFilters)
|
||
|
? c.ensure(a.filterFilters)
|
||
|
: c.ensure(c.filters)),
|
||
|
c.ft.$el.hasClass("footable-filtering-left") &&
|
||
|
(c.position = "left"),
|
||
|
c.ft.$el.hasClass("footable-filtering-center") &&
|
||
|
(c.position = "center"),
|
||
|
c.ft.$el.hasClass("footable-filtering-right") &&
|
||
|
(c.position = "right"),
|
||
|
(c.position = b.is.string(a.filterPosition)
|
||
|
? a.filterPosition
|
||
|
: c.position));
|
||
|
},
|
||
|
function () {
|
||
|
c.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
return a.ft.raise("init.ft.filtering").then(
|
||
|
function () {
|
||
|
a.$create();
|
||
|
},
|
||
|
function () {
|
||
|
a.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
return a.ft.raise("destroy.ft.filtering").then(function () {
|
||
|
a.ft.$el
|
||
|
.removeClass("footable-filtering")
|
||
|
.find("thead > tr.footable-filtering")
|
||
|
.remove();
|
||
|
});
|
||
|
},
|
||
|
$create: function () {
|
||
|
var c,
|
||
|
d = this,
|
||
|
e = a("<div/>", {
|
||
|
class: "input-group footable-filtering-search",
|
||
|
}).append(a("<label/>", { class: "sr-only", text: "Search" })),
|
||
|
f = a("<div/>", { class: "input-group" }).appendTo(e),
|
||
|
g = a("<div/>", { class: "input-group-append" }),
|
||
|
h = a("<button/>", {
|
||
|
type: "button",
|
||
|
class: "btn btn-default dropdown-toggle",
|
||
|
})
|
||
|
.on("click", { self: d }, d._onDropdownToggleClicked)
|
||
|
.append(a("<span/>", { class: "caret" }));
|
||
|
switch (d.position) {
|
||
|
case "left":
|
||
|
c = "footable-filtering-left";
|
||
|
break;
|
||
|
case "center":
|
||
|
c = "footable-filtering-center";
|
||
|
break;
|
||
|
default:
|
||
|
c = "footable-filtering-right";
|
||
|
}
|
||
|
d.ft.$el.addClass("footable-filtering").addClass(c),
|
||
|
(d.$container = null === d.container ? a() : a(d.container).first()),
|
||
|
d.$container.length
|
||
|
? d.$container.addClass("footable-filtering-external").addClass(c)
|
||
|
: ((d.$row = a("<tr/>", { class: "footable-filtering" }).prependTo(
|
||
|
d.ft.$el.children("thead")
|
||
|
)),
|
||
|
(d.$cell = a("<th/>")
|
||
|
.attr("colspan", d.ft.columns.visibleColspan)
|
||
|
.appendTo(d.$row)),
|
||
|
(d.$container = d.$cell)),
|
||
|
(d.$form = a("<form/>").append(e).appendTo(d.$container)),
|
||
|
(d.$input = a("<input/>", {
|
||
|
type: "text",
|
||
|
class: "form-control",
|
||
|
placeholder: d.placeholder,
|
||
|
})),
|
||
|
(d.$button = a("<button/>", {
|
||
|
type: "button",
|
||
|
class: "btn btn-default",
|
||
|
})
|
||
|
.on("click", { self: d }, d._onSearchButtonClicked)
|
||
|
.append(a("<span/>", { class: "fas fa-search" }))),
|
||
|
(d.$dropdown = a("<ul/>", {
|
||
|
class: "dropdown-menu dropdown-menu-right",
|
||
|
})),
|
||
|
b.is.emptyString(d.dropdownTitle) ||
|
||
|
d.$dropdown.append(
|
||
|
a("<li/>", { class: "dropdown-item", text: d.dropdownTitle })
|
||
|
),
|
||
|
d.$dropdown.append(
|
||
|
b.arr.map(d.ft.columns.array, function (b) {
|
||
|
return b.filterable
|
||
|
? a("<li/>", { class: "dropdown-item" }).append(
|
||
|
a("<a/>", { class: "checkbox" }).append(
|
||
|
a("<label/>", { html: b.title }).prepend(
|
||
|
a("<input/>", { type: "checkbox", checked: !0 }).data(
|
||
|
"__FooTableColumn__",
|
||
|
b
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
: null;
|
||
|
})
|
||
|
),
|
||
|
d.delay > 0 &&
|
||
|
(d.$input.on(
|
||
|
"keypress keyup paste",
|
||
|
{ self: d },
|
||
|
d._onSearchInputChanged
|
||
|
),
|
||
|
d.$dropdown.on(
|
||
|
"click",
|
||
|
'input[type="checkbox"]',
|
||
|
{ self: d },
|
||
|
d._onSearchColumnClicked
|
||
|
)),
|
||
|
g.append(d.$button, h, d.$dropdown),
|
||
|
f.append(d.$input, g);
|
||
|
},
|
||
|
predraw: function () {
|
||
|
if (!b.is.emptyArray(this.filters)) {
|
||
|
var c = this;
|
||
|
c.ft.rows.array = a.grep(c.ft.rows.array, function (a) {
|
||
|
return a.filtered(c.filters);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
draw: function () {
|
||
|
b.is.jq(this.$cell) &&
|
||
|
this.$cell.attr("colspan", this.ft.columns.visibleColspan);
|
||
|
var a = this.find("search");
|
||
|
if (a instanceof b.Filter) {
|
||
|
var c = a.query.val();
|
||
|
this.exactMatch &&
|
||
|
this._exactRegExp.test(c) &&
|
||
|
(c = c.replace(this._exactRegExp, "$1")),
|
||
|
this.$input.val(c);
|
||
|
} else this.$input.val(null);
|
||
|
this.setButton(
|
||
|
!b.arr.any(this.filters, function (a) {
|
||
|
return !a.hidden;
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
addFilter: function (a, c, d, e, f, g, h) {
|
||
|
var i = this.createFilter(a, c, d, e, f, g, h);
|
||
|
i instanceof b.Filter &&
|
||
|
(this.removeFilter(i.name), this.filters.push(i));
|
||
|
},
|
||
|
removeFilter: function (a) {
|
||
|
b.arr.remove(this.filters, function (b) {
|
||
|
return b.name == a;
|
||
|
});
|
||
|
},
|
||
|
filter: function (a) {
|
||
|
var b = this;
|
||
|
return (
|
||
|
(b.filters = b.ensure(b.filters)),
|
||
|
b.ft.raise("before.ft.filtering", [b.filters]).then(function () {
|
||
|
if (((b.filters = b.ensure(b.filters)), a))
|
||
|
var c = b.$input.prop("selectionStart"),
|
||
|
d = b.$input.prop("selectionEnd");
|
||
|
return b.ft.draw().then(function () {
|
||
|
a &&
|
||
|
b.$input.focus().prop({ selectionStart: c, selectionEnd: d }),
|
||
|
b.ft.raise("after.ft.filtering", [b.filters]);
|
||
|
});
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
clear: function () {
|
||
|
return (
|
||
|
(this.filters = b.arr.get(this.filters, function (a) {
|
||
|
return a.hidden;
|
||
|
})),
|
||
|
this.filter(this.focus)
|
||
|
);
|
||
|
},
|
||
|
setButton: function (a) {
|
||
|
a
|
||
|
? this.$button
|
||
|
.children(".fas")
|
||
|
.removeClass("fa-times")
|
||
|
.addClass("fa-search")
|
||
|
: this.$button
|
||
|
.children(".fas")
|
||
|
.removeClass("fa-search")
|
||
|
.addClass("fa-times");
|
||
|
},
|
||
|
find: function (a) {
|
||
|
return b.arr.first(this.filters, function (b) {
|
||
|
return b.name == a;
|
||
|
});
|
||
|
},
|
||
|
columns: function () {
|
||
|
return b.is.jq(this.$dropdown)
|
||
|
? this.$dropdown
|
||
|
.find("input:checked")
|
||
|
.map(function () {
|
||
|
return a(this).data("__FooTableColumn__");
|
||
|
})
|
||
|
.get()
|
||
|
: this.ft.columns.get(function (a) {
|
||
|
return a.filterable;
|
||
|
});
|
||
|
},
|
||
|
ensure: function (a) {
|
||
|
var c = this,
|
||
|
d = [],
|
||
|
e = c.columns();
|
||
|
return (
|
||
|
b.is.emptyArray(a) ||
|
||
|
b.arr.each(a, function (a) {
|
||
|
(a = c._ensure(a, e)), a instanceof b.Filter && d.push(a);
|
||
|
}),
|
||
|
d
|
||
|
);
|
||
|
},
|
||
|
createFilter: function (a, c, d, e, f, g, h) {
|
||
|
return (
|
||
|
b.is.string(a) &&
|
||
|
(a = {
|
||
|
name: a,
|
||
|
query: c,
|
||
|
columns: d,
|
||
|
ignoreCase: e,
|
||
|
connectors: f,
|
||
|
space: g,
|
||
|
hidden: h,
|
||
|
}),
|
||
|
this._ensure(a, this.columns())
|
||
|
);
|
||
|
},
|
||
|
_ensure: function (a, c) {
|
||
|
return (b.is.hash(a) || a instanceof b.Filter) &&
|
||
|
!b.is.emptyString(a.name) &&
|
||
|
(!b.is.emptyString(a.query) || a.query instanceof b.Query)
|
||
|
? ((a.columns = b.is.emptyArray(a.columns)
|
||
|
? c
|
||
|
: this.ft.columns.ensure(a.columns)),
|
||
|
(a.ignoreCase = b.is["boolean"](a.ignoreCase)
|
||
|
? a.ignoreCase
|
||
|
: this.ignoreCase),
|
||
|
(a.connectors = b.is["boolean"](a.connectors)
|
||
|
? a.connectors
|
||
|
: this.connectors),
|
||
|
(a.hidden = b.is["boolean"](a.hidden) ? a.hidden : !1),
|
||
|
(a.space =
|
||
|
!b.is.string(a.space) || ("AND" !== a.space && "OR" !== a.space)
|
||
|
? this.space
|
||
|
: a.space),
|
||
|
(a.query = b.is.string(a.query)
|
||
|
? new b.Query(a.query, a.space, a.connectors, a.ignoreCase)
|
||
|
: a.query),
|
||
|
a instanceof b.Filter
|
||
|
? a
|
||
|
: new b.Filter(
|
||
|
a.name,
|
||
|
a.query,
|
||
|
a.columns,
|
||
|
a.space,
|
||
|
a.connectors,
|
||
|
a.ignoreCase,
|
||
|
a.hidden
|
||
|
))
|
||
|
: null;
|
||
|
},
|
||
|
_onSearchInputChanged: function (a) {
|
||
|
var c = a.data.self,
|
||
|
d =
|
||
|
"keypress" == a.type &&
|
||
|
!b.is.emptyString(String.fromCharCode(a.charCode)),
|
||
|
e = "keyup" == a.type && (8 == a.which || 46 == a.which),
|
||
|
f = "paste" == a.type;
|
||
|
(d || e || f) &&
|
||
|
(13 == a.which && a.preventDefault(),
|
||
|
null != c._filterTimeout && clearTimeout(c._filterTimeout),
|
||
|
(c._filterTimeout = setTimeout(function () {
|
||
|
c._filterTimeout = null;
|
||
|
var a = c.$input.val();
|
||
|
a.length >= c.min
|
||
|
? (c.exactMatch && !c._exactRegExp.test(a) && (a = '"' + a + '"'),
|
||
|
c.addFilter("search", a),
|
||
|
c.filter(c.focus))
|
||
|
: b.is.emptyString(a) && c.clear();
|
||
|
}, c.delay)));
|
||
|
},
|
||
|
_onSearchButtonClicked: function (a) {
|
||
|
a.preventDefault();
|
||
|
var b = a.data.self;
|
||
|
null != b._filterTimeout && clearTimeout(b._filterTimeout);
|
||
|
var c = b.$button.children(".fas");
|
||
|
if (c.hasClass("fa-times")) b.clear();
|
||
|
else {
|
||
|
var d = b.$input.val();
|
||
|
d.length >= b.min &&
|
||
|
(b.exactMatch && !b._exactRegExp.test(d) && (d = '"' + d + '"'),
|
||
|
b.addFilter("search", d),
|
||
|
b.filter(b.focus));
|
||
|
}
|
||
|
},
|
||
|
_onSearchColumnClicked: function (a) {
|
||
|
var b = a.data.self;
|
||
|
null != b._filterTimeout && clearTimeout(b._filterTimeout),
|
||
|
(b._filterTimeout = setTimeout(function () {
|
||
|
b._filterTimeout = null;
|
||
|
var a = b.$button.children(".fas");
|
||
|
a.hasClass("fa-times") &&
|
||
|
(a.removeClass("fa-times").addClass("fa-search"),
|
||
|
b.addFilter("search", b.$input.val()),
|
||
|
b.filter());
|
||
|
}, b.delay));
|
||
|
},
|
||
|
_onDropdownToggleClicked: function (b) {
|
||
|
b.preventDefault(), b.stopPropagation();
|
||
|
var c = b.data.self;
|
||
|
c.$dropdown.parent().toggleClass("open"),
|
||
|
c.$dropdown.parent().hasClass("open")
|
||
|
? a(document).on(
|
||
|
"click.footable",
|
||
|
{ self: c },
|
||
|
c._onDocumentClicked
|
||
|
)
|
||
|
: a(document).off("click.footable", c._onDocumentClicked);
|
||
|
},
|
||
|
_onDocumentClicked: function (b) {
|
||
|
if (0 == a(b.target).closest(".dropdown-menu").length) {
|
||
|
b.preventDefault();
|
||
|
var c = b.data.self;
|
||
|
c.$dropdown.parent().removeClass("open"),
|
||
|
a(document).off("click.footable", c._onDocumentClicked);
|
||
|
}
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("filtering", b.Filtering, 500);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
a.Query = a.Class.extend({
|
||
|
construct: function (b, c, d, e) {
|
||
|
(this._original = null),
|
||
|
(this._value = null),
|
||
|
(this.space =
|
||
|
!a.is.string(c) || ("OR" != c && "AND" != c) ? "AND" : c),
|
||
|
(this.connectors = a.is["boolean"](d) ? d : !0),
|
||
|
(this.ignoreCase = a.is["boolean"](e) ? e : !0),
|
||
|
(this.left = null),
|
||
|
(this.right = null),
|
||
|
(this.parts = []),
|
||
|
(this.operator = null),
|
||
|
this.val(b);
|
||
|
},
|
||
|
val: function (b) {
|
||
|
if (a.is.emptyString(b)) return this._value;
|
||
|
if (a.is.emptyString(this._original)) this._original = b;
|
||
|
else if (this._original == b) return;
|
||
|
(this._value = b), this._parse();
|
||
|
},
|
||
|
match: function (b) {
|
||
|
return a.is.emptyString(this.operator) || "OR" === this.operator
|
||
|
? this._left(b, !1) || this._match(b, !1) || this._right(b, !1)
|
||
|
: "AND" === this.operator
|
||
|
? this._left(b, !0) && this._match(b, !0) && this._right(b, !0)
|
||
|
: void 0;
|
||
|
},
|
||
|
_match: function (b, c) {
|
||
|
var d = this,
|
||
|
e = !1,
|
||
|
f = a.is.emptyString(b);
|
||
|
return a.is.emptyArray(d.parts) && d.left instanceof a.Query
|
||
|
? c
|
||
|
: a.is.emptyArray(d.parts)
|
||
|
? e
|
||
|
: ("OR" === d.space
|
||
|
? a.arr.each(d.parts, function (c) {
|
||
|
if (c.empty && f) {
|
||
|
if (((e = !0), c.negate)) return (e = !1);
|
||
|
} else {
|
||
|
var g = (c.exact ? a.str.containsExact : a.str.contains)(
|
||
|
b,
|
||
|
c.query,
|
||
|
d.ignoreCase
|
||
|
);
|
||
|
if ((g && !c.negate && (e = !0), g && c.negate))
|
||
|
return (e = !1);
|
||
|
}
|
||
|
})
|
||
|
: ((e = !0),
|
||
|
a.arr.each(d.parts, function (c) {
|
||
|
if (c.empty)
|
||
|
return (
|
||
|
((!f && !c.negate) || (f && c.negate)) && (e = !1), e
|
||
|
);
|
||
|
var g = (c.exact ? a.str.containsExact : a.str.contains)(
|
||
|
b,
|
||
|
c.query,
|
||
|
d.ignoreCase
|
||
|
);
|
||
|
return ((!g && !c.negate) || (g && c.negate)) && (e = !1), e;
|
||
|
})),
|
||
|
e);
|
||
|
},
|
||
|
_left: function (b, c) {
|
||
|
return this.left instanceof a.Query ? this.left.match(b) : c;
|
||
|
},
|
||
|
_right: function (b, c) {
|
||
|
return this.right instanceof a.Query ? this.right.match(b) : c;
|
||
|
},
|
||
|
_parse: function () {
|
||
|
if (!a.is.emptyString(this._value))
|
||
|
if (/\sOR\s/.test(this._value)) {
|
||
|
this.operator = "OR";
|
||
|
var b = this._value.split(/(?:\sOR\s)(.*)?/);
|
||
|
(this.left = new a.Query(
|
||
|
b[0],
|
||
|
this.space,
|
||
|
this.connectors,
|
||
|
this.ignoreCase
|
||
|
)),
|
||
|
(this.right = new a.Query(
|
||
|
b[1],
|
||
|
this.space,
|
||
|
this.connectors,
|
||
|
this.ignoreCase
|
||
|
));
|
||
|
} else if (/\sAND\s/.test(this._value)) {
|
||
|
this.operator = "AND";
|
||
|
var c = this._value.split(/(?:\sAND\s)(.*)?/);
|
||
|
(this.left = new a.Query(
|
||
|
c[0],
|
||
|
this.space,
|
||
|
this.connectors,
|
||
|
this.ignoreCase
|
||
|
)),
|
||
|
(this.right = new a.Query(
|
||
|
c[1],
|
||
|
this.space,
|
||
|
this.connectors,
|
||
|
this.ignoreCase
|
||
|
));
|
||
|
} else {
|
||
|
var d = this;
|
||
|
this.parts = a.arr.map(
|
||
|
this._value.match(/(?:[^\s"]+|"[^"]*")+/g),
|
||
|
function (a) {
|
||
|
return d._part(a);
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
},
|
||
|
_part: function (b) {
|
||
|
var c = { query: b, negate: !1, phrase: !1, exact: !1, empty: !1 };
|
||
|
return (
|
||
|
a.str.startsWith(c.query, "-") &&
|
||
|
((c.query = a.str.from(c.query, "-")), (c.negate = !0)),
|
||
|
/^"(.*?)"$/.test(c.query)
|
||
|
? ((c.query = c.query.replace(/^"(.*?)"$/, "$1")),
|
||
|
(c.phrase = !0),
|
||
|
(c.exact = !0))
|
||
|
: this.connectors &&
|
||
|
/(?:\w)+?([-_\+\.])(?:\w)+?/.test(c.query) &&
|
||
|
((c.query = c.query.replace(
|
||
|
/(?:\w)+?([-_\+\.])(?:\w)+?/g,
|
||
|
function (a, b) {
|
||
|
return a.replace(b, " ");
|
||
|
}
|
||
|
)),
|
||
|
(c.phrase = !0)),
|
||
|
(c.empty = c.phrase && a.is.emptyString(c.query)),
|
||
|
c
|
||
|
);
|
||
|
},
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.Cell.prototype.filterValue = null),
|
||
|
(a.Cell.prototype.__filtering_define__ = function (a) {
|
||
|
this.filterValue = this.column.filterValue.call(this.column, a);
|
||
|
}),
|
||
|
(a.Cell.prototype.__filtering_val__ = function (b) {
|
||
|
a.is.defined(b) &&
|
||
|
(this.filterValue = this.column.filterValue.call(this.column, b));
|
||
|
}),
|
||
|
a.Cell.extend("define", function (a) {
|
||
|
this._super(a), this.__filtering_define__(a);
|
||
|
}),
|
||
|
a.Cell.extend("val", function (a, b, c) {
|
||
|
var d = this._super(a, b, c);
|
||
|
return this.__filtering_val__(a), d;
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Column.prototype.filterable = !0),
|
||
|
(b.Column.prototype.filterValue = function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("filterValue");
|
||
|
return b.is.defined(d) ? "" + d : a(c).text();
|
||
|
}
|
||
|
if (b.is.hash(c) && b.is.hash(c.options)) {
|
||
|
if (b.is.string(c.options.filterValue)) return c.options.filterValue;
|
||
|
b.is.defined(c.value) && (c = c.value);
|
||
|
}
|
||
|
return b.is.defined(c) && null != c ? c + "" : "";
|
||
|
}),
|
||
|
(b.Column.prototype.__filtering_define__ = function (a) {
|
||
|
(this.filterable = b.is["boolean"](a.filterable)
|
||
|
? a.filterable
|
||
|
: this.filterable),
|
||
|
(this.filterValue = b.checkFnValue(
|
||
|
this,
|
||
|
a.filterValue,
|
||
|
this.filterValue
|
||
|
));
|
||
|
}),
|
||
|
b.Column.extend("define", function (a) {
|
||
|
this._super(a), this.__filtering_define__(a);
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
a.Defaults.prototype.filtering = {
|
||
|
enabled: !1,
|
||
|
filters: [],
|
||
|
delay: 1200,
|
||
|
min: 1,
|
||
|
space: "AND",
|
||
|
placeholder: "Search",
|
||
|
dropdownTitle: null,
|
||
|
position: "right",
|
||
|
connectors: !0,
|
||
|
ignoreCase: !0,
|
||
|
exactMatch: !1,
|
||
|
focus: !0,
|
||
|
container: null,
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Row.prototype.filtered = function (b) {
|
||
|
var c = !0,
|
||
|
d = this;
|
||
|
return (
|
||
|
a.arr.each(b, function (a) {
|
||
|
return 0 == (c = a.matchRow(d)) ? !1 : void 0;
|
||
|
}),
|
||
|
c
|
||
|
);
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Sorter = b.Class.extend({
|
||
|
construct: function (a, b) {
|
||
|
(this.column = a), (this.direction = b);
|
||
|
},
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Sorting = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, a.o.sorting.enabled),
|
||
|
(this.o = a.o.sorting),
|
||
|
(this.column = null),
|
||
|
(this.allowed = !0),
|
||
|
(this.initial = null);
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
this.ft.raise("preinit.ft.sorting", [a]).then(
|
||
|
function () {
|
||
|
c.ft.$el.hasClass("footable-sorting") && (c.enabled = !0),
|
||
|
(c.enabled = b.is["boolean"](a.sorting) ? a.sorting : c.enabled),
|
||
|
c.enabled &&
|
||
|
(c.column = b.arr.first(c.ft.columns.array, function (a) {
|
||
|
return a.sorted;
|
||
|
}));
|
||
|
},
|
||
|
function () {
|
||
|
c.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
init: function () {
|
||
|
var c = this;
|
||
|
this.ft.raise("init.ft.sorting").then(
|
||
|
function () {
|
||
|
if (!c.initial) {
|
||
|
var d = !!c.column;
|
||
|
c.initial = {
|
||
|
isset: d,
|
||
|
rows: c.ft.rows.all.slice(0),
|
||
|
column: d ? c.column.name : null,
|
||
|
direction: d ? c.column.direction : null,
|
||
|
};
|
||
|
}
|
||
|
b.arr.each(c.ft.columns.array, function (b) {
|
||
|
b.sortable &&
|
||
|
b.$el
|
||
|
.addClass("footable-sortable")
|
||
|
.append(a("<span/>", { class: "fas fa-sort" }));
|
||
|
}),
|
||
|
c.ft.$el.on(
|
||
|
"click.footable",
|
||
|
".footable-sortable",
|
||
|
{ self: c },
|
||
|
c._onSortClicked
|
||
|
);
|
||
|
},
|
||
|
function () {
|
||
|
c.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("destroy.ft.paging").then(function () {
|
||
|
a.ft.$el.off(
|
||
|
"click.footable",
|
||
|
".footable-sortable",
|
||
|
a._onSortClicked
|
||
|
),
|
||
|
a.ft.$el
|
||
|
.children("thead")
|
||
|
.children("tr.footable-header")
|
||
|
.children(".footable-sortable")
|
||
|
.removeClass("footable-sortable footable-asc footable-desc")
|
||
|
.find("span.fas")
|
||
|
.remove();
|
||
|
});
|
||
|
},
|
||
|
predraw: function () {
|
||
|
if (this.column) {
|
||
|
var a = this,
|
||
|
b = a.column;
|
||
|
a.ft.rows.array.sort(function (a, c) {
|
||
|
return "DESC" == b.direction
|
||
|
? b.sorter(c.cells[b.index].sortValue, a.cells[b.index].sortValue)
|
||
|
: b.sorter(
|
||
|
a.cells[b.index].sortValue,
|
||
|
c.cells[b.index].sortValue
|
||
|
);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
draw: function () {
|
||
|
if (this.column) {
|
||
|
var a = this,
|
||
|
b = a.ft.$el.find("thead > tr > .footable-sortable"),
|
||
|
c = a.column.$el;
|
||
|
b
|
||
|
.removeClass("footable-asc footable-desc")
|
||
|
.children(".fas")
|
||
|
.removeClass("fa-sort fa-sort-up fa-sort-down"),
|
||
|
b.not(c).children(".fas").addClass("fa-sort"),
|
||
|
c
|
||
|
.addClass(
|
||
|
"DESC" == a.column.direction ? "footable-desc" : "footable-asc"
|
||
|
)
|
||
|
.children(".fas")
|
||
|
.addClass(
|
||
|
"DESC" == a.column.direction ? "fa-sort-down" : "fa-sort-up"
|
||
|
);
|
||
|
}
|
||
|
},
|
||
|
sort: function (a, b) {
|
||
|
return this._sort(a, b);
|
||
|
},
|
||
|
toggleAllowed: function (a) {
|
||
|
(a = b.is["boolean"](a) ? a : !this.allowed),
|
||
|
(this.allowed = a),
|
||
|
this.ft.$el.toggleClass("footable-sorting-disabled", !this.allowed);
|
||
|
},
|
||
|
hasChanged: function () {
|
||
|
return !(
|
||
|
!this.initial ||
|
||
|
!this.column ||
|
||
|
(this.column.name === this.initial.column &&
|
||
|
(this.column.direction === this.initial.direction ||
|
||
|
(null === this.initial.direction &&
|
||
|
"ASC" === this.column.direction)))
|
||
|
);
|
||
|
},
|
||
|
reset: function () {
|
||
|
this.initial &&
|
||
|
(this.initial.isset
|
||
|
? this.sort(this.initial.column, this.initial.direction)
|
||
|
: (this.column &&
|
||
|
(this.column.$el.removeClass("footable-asc footable-desc"),
|
||
|
(this.column = null)),
|
||
|
(this.ft.rows.all = this.initial.rows),
|
||
|
this.ft.draw()));
|
||
|
},
|
||
|
_sort: function (c, d) {
|
||
|
if (!this.allowed) return a.Deferred().reject("sorting disabled");
|
||
|
var e = this,
|
||
|
f = new b.Sorter(e.ft.columns.get(c), b.Sorting.dir(d));
|
||
|
return e.ft.raise("before.ft.sorting", [f]).then(function () {
|
||
|
return (
|
||
|
b.arr.each(e.ft.columns.array, function (a) {
|
||
|
a != e.column && (a.direction = null);
|
||
|
}),
|
||
|
(e.column = e.ft.columns.get(f.column)),
|
||
|
e.column && (e.column.direction = b.Sorting.dir(f.direction)),
|
||
|
e.ft.draw().then(function () {
|
||
|
e.ft.raise("after.ft.sorting", [f]);
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
_onSortClicked: function (b) {
|
||
|
var c = b.data.self,
|
||
|
d = a(this).closest("th,td"),
|
||
|
e = d.is(".footable-asc, .footable-desc")
|
||
|
? d.hasClass("footable-desc")
|
||
|
? "ASC"
|
||
|
: "DESC"
|
||
|
: "ASC";
|
||
|
c._sort(d.index(), e);
|
||
|
},
|
||
|
})),
|
||
|
(b.Sorting.dir = function (a) {
|
||
|
return !b.is.string(a) || ("ASC" != a && "DESC" != a) ? "ASC" : a;
|
||
|
}),
|
||
|
b.components.register("sorting", b.Sorting, 600);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Cell.prototype.sortValue = null),
|
||
|
(a.Cell.prototype.__sorting_define__ = function (a) {
|
||
|
this.sortValue = this.column.sortValue.call(this.column, a);
|
||
|
}),
|
||
|
(a.Cell.prototype.__sorting_val__ = function (b) {
|
||
|
a.is.defined(b) &&
|
||
|
(this.sortValue = this.column.sortValue.call(this.column, b));
|
||
|
}),
|
||
|
a.Cell.extend("define", function (a) {
|
||
|
this._super(a), this.__sorting_define__(a);
|
||
|
}),
|
||
|
a.Cell.extend("val", function (a, b, c) {
|
||
|
var d = this._super(a, b, c);
|
||
|
return this.__sorting_val__(a), d;
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Column.prototype.direction = null),
|
||
|
(b.Column.prototype.sortable = !0),
|
||
|
(b.Column.prototype.sorted = !1),
|
||
|
(b.Column.prototype.sorter = function (a, b) {
|
||
|
return (
|
||
|
"string" == typeof a && (a = a.toLowerCase()),
|
||
|
"string" == typeof b && (b = b.toLowerCase()),
|
||
|
a === b ? 0 : b > a ? -1 : 1
|
||
|
);
|
||
|
}),
|
||
|
(b.Column.prototype.sortValue = function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("sortValue");
|
||
|
return b.is.defined(d) ? d : this.parser(c);
|
||
|
}
|
||
|
if (b.is.hash(c) && b.is.hash(c.options)) {
|
||
|
if (b.is.string(c.options.sortValue)) return c.options.sortValue;
|
||
|
b.is.defined(c.value) && (c = c.value);
|
||
|
}
|
||
|
return b.is.defined(c) && null != c ? c : null;
|
||
|
}),
|
||
|
(b.Column.prototype.__sorting_define__ = function (a) {
|
||
|
(this.sorter = b.checkFnValue(this, a.sorter, this.sorter)),
|
||
|
(this.direction = b.is.type(a.direction, "string")
|
||
|
? b.Sorting.dir(a.direction)
|
||
|
: null),
|
||
|
(this.sortable = b.is["boolean"](a.sortable) ? a.sortable : !0),
|
||
|
(this.sorted = b.is["boolean"](a.sorted) ? a.sorted : !1),
|
||
|
(this.sortValue = b.checkFnValue(this, a.sortValue, this.sortValue));
|
||
|
}),
|
||
|
b.Column.extend("define", function (a) {
|
||
|
this._super(a), this.__sorting_define__(a);
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
a.Defaults.prototype.sorting = { enabled: !1 };
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
b.HTMLColumn.extend("__sorting_define__", function (c) {
|
||
|
this._super(c),
|
||
|
(this.sortUse =
|
||
|
b.is.string(c.sortUse) &&
|
||
|
-1 !== a.inArray(c.sortUse, ["html", "text"])
|
||
|
? c.sortUse
|
||
|
: "html");
|
||
|
}),
|
||
|
(b.HTMLColumn.prototype.sortValue = function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("sortValue");
|
||
|
return b.is.defined(d) ? d : this.parser(c);
|
||
|
}
|
||
|
if (b.is.hash(c) && b.is.hash(c.options)) {
|
||
|
if (b.is.string(c.options.sortValue)) return c.options.sortValue;
|
||
|
b.is.defined(c.value) && (c = c.value);
|
||
|
}
|
||
|
return b.is.defined(c) && null != c ? c : null;
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.NumberColumn.prototype.sortValue = function (c) {
|
||
|
if (b.is.element(c) || b.is.jq(c)) {
|
||
|
var d = a(c).data("sortValue");
|
||
|
return b.is.number(d) ? d : this.parser(c);
|
||
|
}
|
||
|
if (b.is.hash(c) && b.is.hash(c.options)) {
|
||
|
if (b.is.string(c.options.sortValue)) return this.parser(c);
|
||
|
if (b.is.number(c.options.sortValue)) return c.options.sortValue;
|
||
|
if (b.is.number(c.value)) return c.value;
|
||
|
}
|
||
|
return b.is.string(c) ? this.parser(c) : b.is.number(c) ? c : null;
|
||
|
};
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
a.Table.prototype.sort = function (b, c) {
|
||
|
return this.use(a.Sorting).sort(b, c);
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Pager = b.Class.extend({
|
||
|
construct: function (a, b, c, d, e) {
|
||
|
(this.total = a),
|
||
|
(this.current = b),
|
||
|
(this.size = c),
|
||
|
(this.page = d),
|
||
|
(this.forward = e);
|
||
|
},
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Paging = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, a.o.paging.enabled),
|
||
|
(this.strings = a.o.paging.strings),
|
||
|
(this.current = a.o.paging.current),
|
||
|
(this.size = a.o.paging.size),
|
||
|
(this.limit = a.o.paging.limit),
|
||
|
(this.position = a.o.paging.position),
|
||
|
(this.countFormat = a.o.paging.countFormat),
|
||
|
(this.container = a.o.paging.container),
|
||
|
(this.total = -1),
|
||
|
(this.totalRows = 0),
|
||
|
(this.previous = -1),
|
||
|
(this.formattedCount = null),
|
||
|
(this.$container = null),
|
||
|
(this.$wrapper = null),
|
||
|
(this.$row = null),
|
||
|
(this.$cell = null),
|
||
|
(this.$pagination = null),
|
||
|
(this.$count = null),
|
||
|
(this.detached = !0),
|
||
|
(this._createdLinks = 0);
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
this.ft.raise("preinit.ft.paging", [a]).then(
|
||
|
function () {
|
||
|
c.ft.$el.hasClass("footable-paging") && (c.enabled = !0),
|
||
|
(c.enabled = b.is["boolean"](a.paging) ? a.paging : c.enabled),
|
||
|
c.enabled &&
|
||
|
((c.size = b.is.number(a.pagingSize) ? a.pagingSize : c.size),
|
||
|
(c.current = b.is.number(a.pagingCurrent)
|
||
|
? a.pagingCurrent
|
||
|
: c.current),
|
||
|
(c.limit = b.is.number(a.pagingLimit)
|
||
|
? a.pagingLimit
|
||
|
: c.limit),
|
||
|
c.ft.$el.hasClass("footable-paging-left") &&
|
||
|
(c.position = "left"),
|
||
|
c.ft.$el.hasClass("footable-paging-center") &&
|
||
|
(c.position = "center"),
|
||
|
c.ft.$el.hasClass("footable-paging-right") &&
|
||
|
(c.position = "right"),
|
||
|
(c.position = b.is.string(a.pagingPosition)
|
||
|
? a.pagingPosition
|
||
|
: c.position),
|
||
|
(c.countFormat = b.is.string(a.pagingCountFormat)
|
||
|
? a.pagingCountFormat
|
||
|
: c.countFormat),
|
||
|
(c.container = b.is.string(a.pagingContainer)
|
||
|
? a.pagingContainer
|
||
|
: c.container),
|
||
|
(c.total = Math.ceil(c.ft.rows.all.length / c.size)));
|
||
|
},
|
||
|
function () {
|
||
|
c.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("init.ft.paging").then(
|
||
|
function () {
|
||
|
a.$create();
|
||
|
},
|
||
|
function () {
|
||
|
a.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("destroy.ft.paging").then(function () {
|
||
|
a.ft.$el
|
||
|
.removeClass("footable-paging")
|
||
|
.find("tfoot > tr.footable-paging")
|
||
|
.remove(),
|
||
|
(a.detached = !0),
|
||
|
(a._createdLinks = 0);
|
||
|
});
|
||
|
},
|
||
|
predraw: function () {
|
||
|
(this.total = Math.ceil(this.ft.rows.array.length / this.size)),
|
||
|
(this.current =
|
||
|
this.current > this.total
|
||
|
? this.total
|
||
|
: this.current < 1
|
||
|
? 1
|
||
|
: this.current),
|
||
|
(this.totalRows = this.ft.rows.array.length),
|
||
|
this.totalRows > this.size &&
|
||
|
(this.ft.rows.array = this.ft.rows.array.splice(
|
||
|
(this.current - 1) * this.size,
|
||
|
this.size
|
||
|
)),
|
||
|
(this.formattedCount = this.format(this.countFormat));
|
||
|
},
|
||
|
draw: function () {
|
||
|
if (this.total <= 1)
|
||
|
this.detached ||
|
||
|
(this.$row ? this.$row.detach() : this.$wrapper.detach(),
|
||
|
(this.detached = !0));
|
||
|
else {
|
||
|
if (this.detached) {
|
||
|
if (this.$row) {
|
||
|
var c = this.ft.$el.children("tfoot");
|
||
|
0 == c.length && ((c = a("<tfoot/>")), this.ft.$el.append(c)),
|
||
|
this.$row.appendTo(c);
|
||
|
} else this.$wrapper.appendTo(this.$container);
|
||
|
this.detached = !1;
|
||
|
}
|
||
|
b.is.jq(this.$cell) &&
|
||
|
this.$cell.attr("colspan", this.ft.columns.visibleColspan),
|
||
|
this._createLinks(),
|
||
|
this._setVisible(this.current, this.current > this.previous),
|
||
|
this._setNavigation(!0),
|
||
|
this.$count.text(this.formattedCount);
|
||
|
}
|
||
|
},
|
||
|
$create: function () {
|
||
|
this._createdLinks = 0;
|
||
|
var c = "footable-paging-center";
|
||
|
switch (this.position) {
|
||
|
case "left":
|
||
|
c = "footable-paging-left";
|
||
|
break;
|
||
|
case "right":
|
||
|
c = "footable-paging-right";
|
||
|
}
|
||
|
if (
|
||
|
(this.ft.$el.addClass("footable-paging").addClass(c),
|
||
|
(this.$container =
|
||
|
null === this.container ? null : a(this.container).first()),
|
||
|
b.is.jq(this.$container))
|
||
|
)
|
||
|
this.$container.addClass("footable-paging-external").addClass(c);
|
||
|
else {
|
||
|
var d = this.ft.$el.children("tfoot");
|
||
|
0 == d.length && ((d = a("<tfoot/>")), this.ft.$el.append(d)),
|
||
|
(this.$row = a("<tr/>", { class: "footable-paging" }).prependTo(d)),
|
||
|
(this.$container = this.$cell =
|
||
|
a("<td/>")
|
||
|
.attr("colspan", this.ft.columns.visibleColspan)
|
||
|
.appendTo(this.$row));
|
||
|
}
|
||
|
(this.$wrapper = a("<div/>", {
|
||
|
class: "footable-pagination-wrapper",
|
||
|
}).appendTo(this.$container)),
|
||
|
(this.$pagination = a("<ul/>", {
|
||
|
class: "pagination justify-content-center",
|
||
|
}).on(
|
||
|
"click.footable",
|
||
|
"a.footable-page-link",
|
||
|
{ self: this },
|
||
|
this._onPageClicked
|
||
|
)),
|
||
|
(this.$count = a("<span/>", { class: "label label-primary" })),
|
||
|
this.$wrapper.append(
|
||
|
this.$pagination,
|
||
|
a("<div/>", { class: "divider" }),
|
||
|
this.$count
|
||
|
),
|
||
|
(this.detached = !1);
|
||
|
},
|
||
|
format: function (a) {
|
||
|
var b = this.size * (this.current - 1) + 1,
|
||
|
c = this.size * this.current;
|
||
|
return (
|
||
|
0 == this.ft.rows.array.length
|
||
|
? ((b = 0), (c = 0))
|
||
|
: (c = c > this.totalRows ? this.totalRows : c),
|
||
|
a
|
||
|
.replace(/\{CP}/g, this.current)
|
||
|
.replace(/\{TP}/g, this.total)
|
||
|
.replace(/\{PF}/g, b)
|
||
|
.replace(/\{PL}/g, c)
|
||
|
.replace(/\{TR}/g, this.totalRows)
|
||
|
);
|
||
|
},
|
||
|
first: function () {
|
||
|
return this._set(1);
|
||
|
},
|
||
|
prev: function () {
|
||
|
return this._set(this.current - 1 > 0 ? this.current - 1 : 1);
|
||
|
},
|
||
|
next: function () {
|
||
|
return this._set(
|
||
|
this.current + 1 < this.total ? this.current + 1 : this.total
|
||
|
);
|
||
|
},
|
||
|
last: function () {
|
||
|
return this._set(this.total);
|
||
|
},
|
||
|
goto: function (a) {
|
||
|
return this._set(a > this.total ? this.total : 1 > a ? 1 : a);
|
||
|
},
|
||
|
prevPages: function () {
|
||
|
var a =
|
||
|
this.$pagination
|
||
|
.children("li.footable-page.visible:first")
|
||
|
.data("page") - 1;
|
||
|
this._setVisible(a, !0), this._setNavigation(!1);
|
||
|
},
|
||
|
nextPages: function () {
|
||
|
var a =
|
||
|
this.$pagination
|
||
|
.children("li.footable-page.visible:last")
|
||
|
.data("page") + 1;
|
||
|
this._setVisible(a, !1), this._setNavigation(!1);
|
||
|
},
|
||
|
pageSize: function (a) {
|
||
|
return (
|
||
|
(a = parseInt(a)),
|
||
|
isNaN(a)
|
||
|
? this.size
|
||
|
: ((this.size = a),
|
||
|
(this.total = Math.ceil(this.ft.rows.all.length / this.size)),
|
||
|
b.is.jq(this.$wrapper) &&
|
||
|
(this.$container.is("td")
|
||
|
? this.$row.remove()
|
||
|
: this.$wrapper.remove()),
|
||
|
this.$create(),
|
||
|
void this.ft.draw())
|
||
|
);
|
||
|
},
|
||
|
_set: function (c) {
|
||
|
var d = this,
|
||
|
e = new b.Pager(d.total, d.current, d.size, c, c > d.current);
|
||
|
return d.ft.raise("before.ft.paging", [e]).then(function () {
|
||
|
return (
|
||
|
(e.page = e.page > e.total ? e.total : e.page),
|
||
|
(e.page = e.page < 1 ? 1 : e.page),
|
||
|
d.current == c
|
||
|
? a.when()
|
||
|
: ((d.previous = d.current),
|
||
|
(d.current = e.page),
|
||
|
d.ft.draw().then(function () {
|
||
|
d.ft.raise("after.ft.paging", [e]);
|
||
|
}))
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
_createLinks: function () {
|
||
|
if (this._createdLinks !== this.total) {
|
||
|
var b = this,
|
||
|
c = b.total > 1,
|
||
|
d = function (b, c, d) {
|
||
|
return a("<li/>", { class: d })
|
||
|
.attr("data-page", b)
|
||
|
.append(
|
||
|
a("<a/>", { class: "footable-page-link", href: "#" })
|
||
|
.data("page", b)
|
||
|
.html(c)
|
||
|
);
|
||
|
};
|
||
|
b.$pagination.empty(),
|
||
|
c &&
|
||
|
(b.$pagination.append(
|
||
|
d("first", b.strings.first, "footable-page-nav")
|
||
|
),
|
||
|
b.$pagination.append(
|
||
|
d("prev", b.strings.prev, "footable-page-nav")
|
||
|
),
|
||
|
b.limit > 0 &&
|
||
|
b.limit < b.total &&
|
||
|
b.$pagination.append(
|
||
|
d("prev-limit", b.strings.prevPages, "footable-page-nav")
|
||
|
));
|
||
|
for (var e, f = 0; f < b.total; f++)
|
||
|
(e = d(f + 1, f + 1, "footable-page")), b.$pagination.append(e);
|
||
|
c &&
|
||
|
(b.limit > 0 &&
|
||
|
b.limit < b.total &&
|
||
|
b.$pagination.append(
|
||
|
d("next-limit", b.strings.nextPages, "footable-page-nav")
|
||
|
),
|
||
|
b.$pagination.append(
|
||
|
d("next", b.strings.next, "footable-page-nav")
|
||
|
),
|
||
|
b.$pagination.append(
|
||
|
d("last", b.strings.last, "footable-page-nav")
|
||
|
)),
|
||
|
(b._createdLinks = b.total);
|
||
|
}
|
||
|
},
|
||
|
_setNavigation: function (a) {
|
||
|
1 == this.current
|
||
|
? this.$pagination
|
||
|
.children('li[data-page="first"],li[data-page="prev"]')
|
||
|
.addClass("disabled")
|
||
|
: this.$pagination
|
||
|
.children('li[data-page="first"],li[data-page="prev"]')
|
||
|
.removeClass("disabled"),
|
||
|
this.current == this.total
|
||
|
? this.$pagination
|
||
|
.children('li[data-page="next"],li[data-page="last"]')
|
||
|
.addClass("disabled")
|
||
|
: this.$pagination
|
||
|
.children('li[data-page="next"],li[data-page="last"]')
|
||
|
.removeClass("disabled"),
|
||
|
1 ==
|
||
|
(this.$pagination
|
||
|
.children("li.footable-page.visible:first")
|
||
|
.data("page") || 1)
|
||
|
? this.$pagination
|
||
|
.children('li[data-page="prev-limit"]')
|
||
|
.addClass("disabled")
|
||
|
: this.$pagination
|
||
|
.children('li[data-page="prev-limit"]')
|
||
|
.removeClass("disabled"),
|
||
|
(this.$pagination
|
||
|
.children("li.footable-page.visible:last")
|
||
|
.data("page") || this.limit) == this.total
|
||
|
? this.$pagination
|
||
|
.children('li[data-page="next-limit"]')
|
||
|
.addClass("disabled")
|
||
|
: this.$pagination
|
||
|
.children('li[data-page="next-limit"]')
|
||
|
.removeClass("disabled"),
|
||
|
this.limit > 0 && this.total < this.limit
|
||
|
? this.$pagination
|
||
|
.children(
|
||
|
'li[data-page="prev-limit"],li[data-page="next-limit"]'
|
||
|
)
|
||
|
.css("display", "none")
|
||
|
: this.$pagination
|
||
|
.children(
|
||
|
'li[data-page="prev-limit"],li[data-page="next-limit"]'
|
||
|
)
|
||
|
.css("display", ""),
|
||
|
a &&
|
||
|
this.$pagination
|
||
|
.children("li.footable-page")
|
||
|
.removeClass("active")
|
||
|
.filter('li[data-page="' + this.current + '"]')
|
||
|
.addClass("active");
|
||
|
},
|
||
|
_setVisible: function (a, b) {
|
||
|
if (this.limit > 0 && this.total > this.limit) {
|
||
|
if (
|
||
|
!this.$pagination
|
||
|
.children('li.footable-page[data-page="' + a + '"]')
|
||
|
.hasClass("visible")
|
||
|
) {
|
||
|
var c = 0,
|
||
|
d = 0;
|
||
|
1 == b
|
||
|
? ((d = a > this.total ? this.total : a), (c = d - this.limit))
|
||
|
: ((c = 1 > a ? 0 : a - 1), (d = c + this.limit)),
|
||
|
0 > c &&
|
||
|
((c = 0),
|
||
|
(d = this.limit > this.total ? this.total : this.limit)),
|
||
|
d > this.total &&
|
||
|
((d = this.total),
|
||
|
(c =
|
||
|
this.total - this.limit < 0 ? 0 : this.total - this.limit)),
|
||
|
this.$pagination
|
||
|
.children("li.footable-page")
|
||
|
.removeClass("visible")
|
||
|
.slice(c, d)
|
||
|
.addClass("visible");
|
||
|
}
|
||
|
} else
|
||
|
this.$pagination
|
||
|
.children("li.footable-page")
|
||
|
.removeClass("visible")
|
||
|
.slice(0, this.total)
|
||
|
.addClass("visible");
|
||
|
},
|
||
|
_onPageClicked: function (b) {
|
||
|
if (
|
||
|
(b.preventDefault(),
|
||
|
!a(b.target).closest("li").is(".active,.disabled"))
|
||
|
) {
|
||
|
var c = b.data.self,
|
||
|
d = a(this).data("page");
|
||
|
switch (d) {
|
||
|
case "first":
|
||
|
return void c.first();
|
||
|
case "prev":
|
||
|
return void c.prev();
|
||
|
case "next":
|
||
|
return void c.next();
|
||
|
case "last":
|
||
|
return void c.last();
|
||
|
case "prev-limit":
|
||
|
return void c.prevPages();
|
||
|
case "next-limit":
|
||
|
return void c.nextPages();
|
||
|
default:
|
||
|
return void c._set(d);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("paging", b.Paging, 400);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
a.Defaults.prototype.paging = {
|
||
|
enabled: !1,
|
||
|
countFormat: "{CP} of {TP}",
|
||
|
current: 1,
|
||
|
limit: 5,
|
||
|
position: "center",
|
||
|
size: 10,
|
||
|
container: null,
|
||
|
strings: {
|
||
|
first: "«",
|
||
|
prev: "‹",
|
||
|
next: "›",
|
||
|
last: "»",
|
||
|
prevPages: "...",
|
||
|
nextPages: "...",
|
||
|
},
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.Table.prototype.gotoPage = function (b) {
|
||
|
return this.use(a.Paging)["goto"](b);
|
||
|
}),
|
||
|
(a.Table.prototype.nextPage = function () {
|
||
|
return this.use(a.Paging).next();
|
||
|
}),
|
||
|
(a.Table.prototype.prevPage = function () {
|
||
|
return this.use(a.Paging).prev();
|
||
|
}),
|
||
|
(a.Table.prototype.firstPage = function () {
|
||
|
return this.use(a.Paging).first();
|
||
|
}),
|
||
|
(a.Table.prototype.lastPage = function () {
|
||
|
return this.use(a.Paging).last();
|
||
|
}),
|
||
|
(a.Table.prototype.nextPages = function () {
|
||
|
return this.use(a.Paging).nextPages();
|
||
|
}),
|
||
|
(a.Table.prototype.prevPages = function () {
|
||
|
return this.use(a.Paging).prevPages();
|
||
|
}),
|
||
|
(a.Table.prototype.pageSize = function (b) {
|
||
|
return this.use(a.Paging).pageSize(b);
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Editing = b.Component.extend({
|
||
|
construct: function (c) {
|
||
|
this._super(c, c.o.editing.enabled),
|
||
|
(this.pageToNew = c.o.editing.pageToNew),
|
||
|
(this.alwaysShow = c.o.editing.alwaysShow),
|
||
|
(this.column = a.extend(!0, {}, c.o.editing.column, {
|
||
|
visible: this.alwaysShow,
|
||
|
})),
|
||
|
(this.position = c.o.editing.position),
|
||
|
(this.showText = c.o.editing.showText),
|
||
|
(this.hideText = c.o.editing.hideText),
|
||
|
(this.addText = c.o.editing.addText),
|
||
|
(this.editText = c.o.editing.editText),
|
||
|
(this.deleteText = c.o.editing.deleteText),
|
||
|
(this.viewText = c.o.editing.viewText),
|
||
|
(this.allowAdd = c.o.editing.allowAdd),
|
||
|
(this.allowEdit = c.o.editing.allowEdit),
|
||
|
(this.allowDelete = c.o.editing.allowDelete),
|
||
|
(this.allowView = c.o.editing.allowView),
|
||
|
(this._$buttons = null),
|
||
|
(this.callbacks = {
|
||
|
addRow: b.checkFnValue(this, c.o.editing.addRow),
|
||
|
editRow: b.checkFnValue(this, c.o.editing.editRow),
|
||
|
deleteRow: b.checkFnValue(this, c.o.editing.deleteRow),
|
||
|
viewRow: b.checkFnValue(this, c.o.editing.viewRow),
|
||
|
});
|
||
|
},
|
||
|
preinit: function (c) {
|
||
|
var d = this;
|
||
|
this.ft.raise("preinit.ft.editing", [c]).then(
|
||
|
function () {
|
||
|
if (
|
||
|
(d.ft.$el.hasClass("footable-editing") && (d.enabled = !0),
|
||
|
(d.enabled = b.is["boolean"](c.editing) ? c.editing : d.enabled),
|
||
|
d.enabled)
|
||
|
) {
|
||
|
if (
|
||
|
((d.pageToNew = b.is["boolean"](c.editingPageToNew)
|
||
|
? c.editingPageToNew
|
||
|
: d.pageToNew),
|
||
|
(d.alwaysShow = b.is["boolean"](c.editingAlwaysShow)
|
||
|
? c.editingAlwaysShow
|
||
|
: d.alwaysShow),
|
||
|
(d.position = b.is.string(c.editingPosition)
|
||
|
? c.editingPosition
|
||
|
: d.position),
|
||
|
(d.showText = b.is.string(c.editingShowText)
|
||
|
? c.editingShowText
|
||
|
: d.showText),
|
||
|
(d.hideText = b.is.string(c.editingHideText)
|
||
|
? c.editingHideText
|
||
|
: d.hideText),
|
||
|
(d.addText = b.is.string(c.editingAddText)
|
||
|
? c.editingAddText
|
||
|
: d.addText),
|
||
|
(d.editText = b.is.string(c.editingEditText)
|
||
|
? c.editingEditText
|
||
|
: d.editText),
|
||
|
(d.deleteText = b.is.string(c.editingDeleteText)
|
||
|
? c.editingDeleteText
|
||
|
: d.deleteText),
|
||
|
(d.viewText = b.is.string(c.editingViewText)
|
||
|
? c.editingViewText
|
||
|
: d.viewText),
|
||
|
(d.allowAdd = b.is["boolean"](c.editingAllowAdd)
|
||
|
? c.editingAllowAdd
|
||
|
: d.allowAdd),
|
||
|
(d.allowEdit = b.is["boolean"](c.editingAllowEdit)
|
||
|
? c.editingAllowEdit
|
||
|
: d.allowEdit),
|
||
|
(d.allowDelete = b.is["boolean"](c.editingAllowDelete)
|
||
|
? c.editingAllowDelete
|
||
|
: d.allowDelete),
|
||
|
(d.allowView = b.is["boolean"](c.editingAllowView)
|
||
|
? c.editingAllowView
|
||
|
: d.allowView),
|
||
|
(d.column = new b.EditingColumn(
|
||
|
d.ft,
|
||
|
d,
|
||
|
a.extend(!0, {}, d.column, c.editingColumn, {
|
||
|
visible: d.alwaysShow,
|
||
|
})
|
||
|
)),
|
||
|
d.ft.$el.hasClass("footable-editing-left") &&
|
||
|
(d.position = "left"),
|
||
|
d.ft.$el.hasClass("footable-editing-right") &&
|
||
|
(d.position = "right"),
|
||
|
"right" === d.position)
|
||
|
)
|
||
|
d.column.index = d.ft.columns.array.length;
|
||
|
else {
|
||
|
d.column.index = 0;
|
||
|
for (var e = 0, f = d.ft.columns.array.length; f > e; e++)
|
||
|
d.ft.columns.array[e].index += 1;
|
||
|
}
|
||
|
d.ft.columns.array.push(d.column),
|
||
|
d.ft.columns.array.sort(function (a, b) {
|
||
|
return a.index - b.index;
|
||
|
}),
|
||
|
(d.callbacks.addRow = b.checkFnValue(
|
||
|
d,
|
||
|
c.editingAddRow,
|
||
|
d.callbacks.addRow
|
||
|
)),
|
||
|
(d.callbacks.editRow = b.checkFnValue(
|
||
|
d,
|
||
|
c.editingEditRow,
|
||
|
d.callbacks.editRow
|
||
|
)),
|
||
|
(d.callbacks.deleteRow = b.checkFnValue(
|
||
|
d,
|
||
|
c.editingDeleteRow,
|
||
|
d.callbacks.deleteRow
|
||
|
)),
|
||
|
(d.callbacks.viewRow = b.checkFnValue(
|
||
|
d,
|
||
|
c.editingViewRow,
|
||
|
d.callbacks.viewRow
|
||
|
));
|
||
|
}
|
||
|
},
|
||
|
function () {
|
||
|
d.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
init: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("init.ft.editing").then(
|
||
|
function () {
|
||
|
a.$create();
|
||
|
},
|
||
|
function () {
|
||
|
a.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
destroy: function () {
|
||
|
var a = this;
|
||
|
this.ft.raise("destroy.ft.editing").then(function () {
|
||
|
a.ft.$el
|
||
|
.removeClass(
|
||
|
"footable-editing footable-editing-always-show footable-editing-no-add footable-editing-no-edit footable-editing-no-delete footable-editing-no-view"
|
||
|
)
|
||
|
.off("click.ft.editing")
|
||
|
.find("tfoot > tr.footable-editing")
|
||
|
.remove();
|
||
|
});
|
||
|
},
|
||
|
$create: function () {
|
||
|
var b = this,
|
||
|
c =
|
||
|
"right" === b.position
|
||
|
? "footable-editing-right"
|
||
|
: "footable-editing-left";
|
||
|
b.ft.$el
|
||
|
.addClass("footable-editing")
|
||
|
.addClass(c)
|
||
|
.on("click.ft.editing", ".footable-show", { self: b }, b._onShowClick)
|
||
|
.on("click.ft.editing", ".footable-hide", { self: b }, b._onHideClick)
|
||
|
.on("click.ft.editing", ".footable-edit", { self: b }, b._onEditClick)
|
||
|
.on(
|
||
|
"click.ft.editing",
|
||
|
".footable-delete",
|
||
|
{ self: b },
|
||
|
b._onDeleteClick
|
||
|
)
|
||
|
.on("click.ft.editing", ".footable-view", { self: b }, b._onViewClick)
|
||
|
.on("click.ft.editing", ".footable-add", { self: b }, b._onAddClick),
|
||
|
(b.$cell = a("<td/>")
|
||
|
.attr("colspan", b.ft.columns.visibleColspan)
|
||
|
.append(b.$buttonShow())),
|
||
|
b.allowAdd && b.$cell.append(b.$buttonAdd()),
|
||
|
b.$cell.append(b.$buttonHide()),
|
||
|
b.alwaysShow && b.ft.$el.addClass("footable-editing-always-show"),
|
||
|
b.allowAdd || b.ft.$el.addClass("footable-editing-no-add"),
|
||
|
b.allowEdit || b.ft.$el.addClass("footable-editing-no-edit"),
|
||
|
b.allowDelete || b.ft.$el.addClass("footable-editing-no-delete"),
|
||
|
b.allowView || b.ft.$el.addClass("footable-editing-no-view");
|
||
|
var d = b.ft.$el.children("tfoot");
|
||
|
0 == d.length && ((d = a("<tfoot/>")), b.ft.$el.append(d)),
|
||
|
(b.$row = a("<tr/>", { class: "footable-editing" })
|
||
|
.append(b.$cell)
|
||
|
.appendTo(d));
|
||
|
},
|
||
|
$buttonShow: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-primary footable-show">' +
|
||
|
this.showText +
|
||
|
"</button>"
|
||
|
);
|
||
|
},
|
||
|
$buttonHide: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-default footable-hide">' +
|
||
|
this.hideText +
|
||
|
"</button>"
|
||
|
);
|
||
|
},
|
||
|
$buttonAdd: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-primary footable-add">' +
|
||
|
this.addText +
|
||
|
"</button> "
|
||
|
);
|
||
|
},
|
||
|
$buttonEdit: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-secondary footable-edit">' +
|
||
|
this.editText +
|
||
|
"</button> "
|
||
|
);
|
||
|
},
|
||
|
$buttonDelete: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-secondary footable-delete">' +
|
||
|
this.deleteText +
|
||
|
"</button>"
|
||
|
);
|
||
|
},
|
||
|
$buttonView: function () {
|
||
|
return (
|
||
|
'<button type="button" class="btn btn-default footable-view">' +
|
||
|
this.viewText +
|
||
|
"</button> "
|
||
|
);
|
||
|
},
|
||
|
$rowButtons: function () {
|
||
|
return b.is.jq(this._$buttons)
|
||
|
? this._$buttons.clone()
|
||
|
: ((this._$buttons = a(
|
||
|
'<div class="btn-group btn-group-xs" role="group"></div>'
|
||
|
)),
|
||
|
this.allowView && this._$buttons.append(this.$buttonView()),
|
||
|
this.allowEdit && this._$buttons.append(this.$buttonEdit()),
|
||
|
this.allowDelete && this._$buttons.append(this.$buttonDelete()),
|
||
|
this._$buttons);
|
||
|
},
|
||
|
draw: function () {
|
||
|
this.$cell.attr("colspan", this.ft.columns.visibleColspan);
|
||
|
},
|
||
|
_onEditClick: function (c) {
|
||
|
c.preventDefault();
|
||
|
var d = c.data.self,
|
||
|
e = a(this).closest("tr").data("__FooTableRow__");
|
||
|
e instanceof b.Row &&
|
||
|
d.ft.raise("edit.ft.editing", [e]).then(function () {
|
||
|
d.callbacks.editRow.call(d.ft, e);
|
||
|
});
|
||
|
},
|
||
|
_onDeleteClick: function (c) {
|
||
|
c.preventDefault();
|
||
|
var d = c.data.self,
|
||
|
e = a(this).closest("tr").data("__FooTableRow__");
|
||
|
e instanceof b.Row &&
|
||
|
d.ft.raise("delete.ft.editing", [e]).then(function () {
|
||
|
d.callbacks.deleteRow.call(d.ft, e);
|
||
|
});
|
||
|
},
|
||
|
_onViewClick: function (c) {
|
||
|
c.preventDefault();
|
||
|
var d = c.data.self,
|
||
|
e = a(this).closest("tr").data("__FooTableRow__");
|
||
|
e instanceof b.Row &&
|
||
|
d.ft.raise("view.ft.editing", [e]).then(function () {
|
||
|
d.callbacks.viewRow.call(d.ft, e);
|
||
|
});
|
||
|
},
|
||
|
_onAddClick: function (a) {
|
||
|
a.preventDefault();
|
||
|
var b = a.data.self;
|
||
|
b.ft.raise("add.ft.editing").then(function () {
|
||
|
b.callbacks.addRow.call(b.ft);
|
||
|
});
|
||
|
},
|
||
|
_onShowClick: function (a) {
|
||
|
a.preventDefault();
|
||
|
var b = a.data.self;
|
||
|
b.ft.raise("show.ft.editing").then(function () {
|
||
|
b.ft.$el.addClass("footable-editing-show"),
|
||
|
(b.column.visible = !0),
|
||
|
b.ft.draw();
|
||
|
});
|
||
|
},
|
||
|
_onHideClick: function (a) {
|
||
|
a.preventDefault();
|
||
|
var b = a.data.self;
|
||
|
b.ft.raise("hide.ft.editing").then(function () {
|
||
|
b.ft.$el.removeClass("footable-editing-show"),
|
||
|
(b.column.visible = !1),
|
||
|
b.ft.draw();
|
||
|
});
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("editing", b.Editing, 850);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.EditingColumn = b.Column.extend({
|
||
|
construct: function (a, b, c) {
|
||
|
this._super(a, c, "editing"), (this.editing = b), (this.internal = !0);
|
||
|
},
|
||
|
$create: function () {
|
||
|
(this.$el =
|
||
|
!this.virtual && b.is.jq(this.$el)
|
||
|
? this.$el
|
||
|
: a("<th/>", { class: "footable-editing" })).html(this.title);
|
||
|
},
|
||
|
parser: function (c) {
|
||
|
if (
|
||
|
(b.is.string(c) && (c = a(a.trim(c))),
|
||
|
b.is.element(c) && (c = a(c)),
|
||
|
b.is.jq(c))
|
||
|
) {
|
||
|
var d = c.prop("tagName").toLowerCase();
|
||
|
return "td" == d || "th" == d ? c.data("value") || c.contents() : c;
|
||
|
}
|
||
|
return null;
|
||
|
},
|
||
|
createCell: function (c) {
|
||
|
var d = this.editing.$rowButtons(),
|
||
|
e = a("<td/>").append(d);
|
||
|
return (
|
||
|
b.is.jq(c.$el) &&
|
||
|
(0 === this.index
|
||
|
? e.prependTo(c.$el)
|
||
|
: e.insertAfter(c.$el.children().eq(this.index - 1))),
|
||
|
new b.Cell(this.ft, c, this, e || e.html())
|
||
|
);
|
||
|
},
|
||
|
})),
|
||
|
b.columns.register("editing", b.EditingColumn);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.Defaults.prototype.editing = {
|
||
|
enabled: !1,
|
||
|
pageToNew: !0,
|
||
|
position: "right",
|
||
|
alwaysShow: !1,
|
||
|
addRow: function () {},
|
||
|
editRow: function (a) {},
|
||
|
deleteRow: function (a) {},
|
||
|
viewRow: function (a) {},
|
||
|
showText:
|
||
|
'<span class="fas fa-pencil-alt" aria-hidden="true"></span> Edit rows',
|
||
|
hideText: "Cancel",
|
||
|
addText: "New row",
|
||
|
editText: '<span class="fas fa-pencil-alt" aria-hidden="true"></span>',
|
||
|
deleteText: '<span class="fas fa-trash-alt" aria-hidden="true"></span>',
|
||
|
viewText: '<span class="fas fa-chart-bar" aria-hidden="true"></span>',
|
||
|
allowAdd: !0,
|
||
|
allowEdit: !0,
|
||
|
allowDelete: !0,
|
||
|
allowView: !1,
|
||
|
column: {
|
||
|
classes: "footable-editing",
|
||
|
name: "editing",
|
||
|
title: "",
|
||
|
filterable: !1,
|
||
|
sortable: !1,
|
||
|
},
|
||
|
};
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
b.is.defined(b.Paging) &&
|
||
|
((b.Paging.prototype.unpaged = []),
|
||
|
b.Paging.extend("predraw", function () {
|
||
|
(this.unpaged = this.ft.rows.array.slice(0)), this._super();
|
||
|
}));
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Row.prototype.add = function (c) {
|
||
|
c = b.is["boolean"](c) ? c : !0;
|
||
|
var d = this;
|
||
|
return a.Deferred(function (a) {
|
||
|
var b = d.ft.rows.all.push(d) - 1;
|
||
|
return c
|
||
|
? d.ft.draw().then(function () {
|
||
|
a.resolve(b);
|
||
|
})
|
||
|
: void a.resolve(b);
|
||
|
});
|
||
|
}),
|
||
|
(b.Row.prototype["delete"] = function (c) {
|
||
|
c = b.is["boolean"](c) ? c : !0;
|
||
|
var d = this;
|
||
|
return a.Deferred(function (a) {
|
||
|
var e = d.ft.rows.all.indexOf(d);
|
||
|
return b.is.number(e) &&
|
||
|
e >= 0 &&
|
||
|
e < d.ft.rows.all.length &&
|
||
|
(d.ft.rows.all.splice(e, 1), c)
|
||
|
? d.ft.draw().then(function () {
|
||
|
a.resolve(d);
|
||
|
})
|
||
|
: void a.resolve(d);
|
||
|
});
|
||
|
}),
|
||
|
b.is.defined(b.Paging) &&
|
||
|
b.Row.extend("add", function (a) {
|
||
|
a = b.is["boolean"](a) ? a : !0;
|
||
|
var c,
|
||
|
d = this,
|
||
|
e = this._super(a),
|
||
|
f = d.ft.use(b.Editing);
|
||
|
return f && f.pageToNew && (c = d.ft.use(b.Paging)) && a
|
||
|
? e.then(function () {
|
||
|
var a = c.unpaged.indexOf(d),
|
||
|
b = Math.ceil((a + 1) / c.size);
|
||
|
return c.current !== b ? c["goto"](b) : void 0;
|
||
|
})
|
||
|
: e;
|
||
|
}),
|
||
|
b.is.defined(b.Sorting) &&
|
||
|
b.Row.extend("val", function (a, c) {
|
||
|
c = b.is["boolean"](c) ? c : !0;
|
||
|
var d = this._super(a);
|
||
|
if (!b.is.hash(a)) return d;
|
||
|
var e = this;
|
||
|
return (
|
||
|
c &&
|
||
|
e.ft.draw().then(function () {
|
||
|
var a,
|
||
|
c = e.ft.use(b.Editing);
|
||
|
if (
|
||
|
b.is.defined(b.Paging) &&
|
||
|
c &&
|
||
|
c.pageToNew &&
|
||
|
(a = e.ft.use(b.Paging))
|
||
|
) {
|
||
|
var d = a.unpaged.indexOf(e),
|
||
|
f = Math.ceil((d + 1) / a.size);
|
||
|
if (a.current !== f) return a["goto"](f);
|
||
|
}
|
||
|
}),
|
||
|
d
|
||
|
);
|
||
|
});
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Rows.prototype.add = function (b, c) {
|
||
|
var d = b;
|
||
|
a.is.hash(b) && (d = new FooTable.Row(this.ft, this.ft.columns.array, b)),
|
||
|
d instanceof FooTable.Row && d.add(c);
|
||
|
}),
|
||
|
(a.Rows.prototype.update = function (b, c, d) {
|
||
|
var e = this.ft.rows.all.length,
|
||
|
f = b;
|
||
|
a.is.number(b) && b >= 0 && e > b && (f = this.ft.rows.all[b]),
|
||
|
f instanceof FooTable.Row && a.is.hash(c) && f.val(c, d);
|
||
|
}),
|
||
|
(a.Rows.prototype["delete"] = function (b, c) {
|
||
|
var d = this.ft.rows.all.length,
|
||
|
e = b;
|
||
|
a.is.number(b) && b >= 0 && d > b && (e = this.ft.rows.all[b]),
|
||
|
e instanceof FooTable.Row && e["delete"](c);
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
var c = 0,
|
||
|
d = (function (a) {
|
||
|
var b,
|
||
|
c,
|
||
|
d = 2166136261;
|
||
|
for (b = 0, c = a.length; c > b; b++)
|
||
|
(d ^= a.charCodeAt(b)),
|
||
|
(d += (d << 1) + (d << 4) + (d << 7) + (d << 8) + (d << 24));
|
||
|
return d >>> 0;
|
||
|
})(location.origin + location.pathname);
|
||
|
(b.State = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, a.o.state.enabled),
|
||
|
(this._key = "1"),
|
||
|
(this.key =
|
||
|
this._key +
|
||
|
(b.is.string(a.o.state.key) ? a.o.state.key : this._uid())),
|
||
|
(this.filtering = b.is["boolean"](a.o.state.filtering)
|
||
|
? a.o.state.filtering
|
||
|
: !0),
|
||
|
(this.paging = b.is["boolean"](a.o.state.paging)
|
||
|
? a.o.state.paging
|
||
|
: !0),
|
||
|
(this.sorting = b.is["boolean"](a.o.state.sorting)
|
||
|
? a.o.state.sorting
|
||
|
: !0);
|
||
|
},
|
||
|
preinit: function (a) {
|
||
|
var c = this;
|
||
|
this.ft.raise("preinit.ft.state", [a]).then(
|
||
|
function () {
|
||
|
(c.enabled = b.is["boolean"](a.state) ? a.state : c.enabled),
|
||
|
c.enabled &&
|
||
|
((c.key =
|
||
|
c._key + (b.is.string(a.stateKey) ? a.stateKey : c.key)),
|
||
|
(c.filtering = b.is["boolean"](a.stateFiltering)
|
||
|
? a.stateFiltering
|
||
|
: c.filtering),
|
||
|
(c.paging = b.is["boolean"](a.statePaging)
|
||
|
? a.statePaging
|
||
|
: c.paging),
|
||
|
(c.sorting = b.is["boolean"](a.stateSorting)
|
||
|
? a.stateSorting
|
||
|
: c.sorting));
|
||
|
},
|
||
|
function () {
|
||
|
c.enabled = !1;
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
get: function (a) {
|
||
|
return JSON.parse(localStorage.getItem(this.key + ":" + a));
|
||
|
},
|
||
|
set: function (a, b) {
|
||
|
localStorage.setItem(this.key + ":" + a, JSON.stringify(b));
|
||
|
},
|
||
|
remove: function (a) {
|
||
|
localStorage.removeItem(this.key + ":" + a);
|
||
|
},
|
||
|
read: function () {
|
||
|
this.ft.execute(!1, !0, "readState");
|
||
|
},
|
||
|
write: function () {
|
||
|
this.ft.execute(!1, !0, "writeState");
|
||
|
},
|
||
|
clear: function () {
|
||
|
this.ft.execute(!1, !0, "clearState");
|
||
|
},
|
||
|
_uid: function () {
|
||
|
var a = this.ft.$el.attr("id");
|
||
|
return d + "_" + (b.is.string(a) ? a : ++c);
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("state", b.State, 700);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Component.prototype.readState = function () {}),
|
||
|
(a.Component.prototype.writeState = function () {}),
|
||
|
(a.Component.prototype.clearState = function () {});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Defaults.prototype.state = {
|
||
|
enabled: !1,
|
||
|
filtering: !0,
|
||
|
paging: !0,
|
||
|
sorting: !0,
|
||
|
key: null,
|
||
|
};
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Filtering &&
|
||
|
((a.Filtering.prototype.readState = function () {
|
||
|
if (this.ft.state.filtering) {
|
||
|
var b = this.ft.state.get("filtering");
|
||
|
a.is.hash(b) &&
|
||
|
!a.is.emptyArray(b.filters) &&
|
||
|
(this.filters = this.ensure(b.filters));
|
||
|
}
|
||
|
}),
|
||
|
(a.Filtering.prototype.writeState = function () {
|
||
|
if (this.ft.state.filtering) {
|
||
|
var b = a.arr.map(this.filters, function (b) {
|
||
|
return {
|
||
|
name: b.name,
|
||
|
query: b.query instanceof a.Query ? b.query.val() : b.query,
|
||
|
columns: a.arr.map(b.columns, function (a) {
|
||
|
return a.name;
|
||
|
}),
|
||
|
hidden: b.hidden,
|
||
|
space: b.space,
|
||
|
connectors: b.connectors,
|
||
|
ignoreCase: b.ignoreCase,
|
||
|
};
|
||
|
});
|
||
|
this.ft.state.set("filtering", { filters: b });
|
||
|
}
|
||
|
}),
|
||
|
(a.Filtering.prototype.clearState = function () {
|
||
|
this.ft.state.filtering && this.ft.state.remove("filtering");
|
||
|
}));
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Paging &&
|
||
|
((a.Paging.prototype.readState = function () {
|
||
|
if (this.ft.state.paging) {
|
||
|
var b = this.ft.state.get("paging");
|
||
|
a.is.hash(b) && ((this.current = b.current), (this.size = b.size));
|
||
|
}
|
||
|
}),
|
||
|
(a.Paging.prototype.writeState = function () {
|
||
|
this.ft.state.paging &&
|
||
|
this.ft.state.set("paging", {
|
||
|
current: this.current,
|
||
|
size: this.size,
|
||
|
});
|
||
|
}),
|
||
|
(a.Paging.prototype.clearState = function () {
|
||
|
this.ft.state.paging && this.ft.state.remove("paging");
|
||
|
}));
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Sorting &&
|
||
|
((a.Sorting.prototype.readState = function () {
|
||
|
if (this.ft.state.sorting) {
|
||
|
var b = this.ft.state.get("sorting");
|
||
|
if (a.is.hash(b)) {
|
||
|
var c = this.ft.columns.get(b.column);
|
||
|
c instanceof a.Column &&
|
||
|
((this.column = c), (this.column.direction = b.direction));
|
||
|
}
|
||
|
}
|
||
|
}),
|
||
|
(a.Sorting.prototype.writeState = function () {
|
||
|
this.ft.state.sorting &&
|
||
|
this.column instanceof a.Column &&
|
||
|
this.ft.state.set("sorting", {
|
||
|
column: this.column.name,
|
||
|
direction: this.column.direction,
|
||
|
});
|
||
|
}),
|
||
|
(a.Sorting.prototype.clearState = function () {
|
||
|
this.ft.state.sorting && this.ft.state.remove("sorting");
|
||
|
}));
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
a.Table.extend("_construct", function (a) {
|
||
|
return (this.state = this.use(FooTable.State)), this._super(a);
|
||
|
}),
|
||
|
a.Table.extend("_preinit", function () {
|
||
|
var a = this;
|
||
|
return a._super().then(function () {
|
||
|
a.state.enabled && a.state.read();
|
||
|
});
|
||
|
}),
|
||
|
a.Table.extend("draw", function () {
|
||
|
var a = this;
|
||
|
return a._super().then(function () {
|
||
|
a.state.enabled && a.state.write();
|
||
|
});
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a, b) {
|
||
|
(b.Export = b.Component.extend({
|
||
|
construct: function (a) {
|
||
|
this._super(a, !0), (this.snapshot = []);
|
||
|
},
|
||
|
predraw: function () {
|
||
|
this.snapshot = this.ft.rows.array.slice(0);
|
||
|
},
|
||
|
columns: function () {
|
||
|
var a = [];
|
||
|
return (
|
||
|
b.arr.each(this.ft.columns.array, function (b) {
|
||
|
b.internal ||
|
||
|
a.push({
|
||
|
type: b.type,
|
||
|
name: b.name,
|
||
|
title: b.title,
|
||
|
visible: b.visible,
|
||
|
hidden: b.hidden,
|
||
|
classes: b.classes,
|
||
|
style: b.style,
|
||
|
});
|
||
|
}),
|
||
|
a
|
||
|
);
|
||
|
},
|
||
|
rows: function (a) {
|
||
|
a = b.is["boolean"](a) ? a : !1;
|
||
|
var c = a ? this.ft.rows.all : this.snapshot,
|
||
|
d = [];
|
||
|
return (
|
||
|
b.arr.each(c, function (a) {
|
||
|
d.push(a.val());
|
||
|
}),
|
||
|
d
|
||
|
);
|
||
|
},
|
||
|
json: function (a) {
|
||
|
return JSON.parse(
|
||
|
JSON.stringify({ columns: this.columns(), rows: this.rows(a) })
|
||
|
);
|
||
|
},
|
||
|
csv: function (a) {
|
||
|
var c,
|
||
|
d,
|
||
|
e = "",
|
||
|
f = this.columns();
|
||
|
b.arr.each(f, function (a, b) {
|
||
|
(d = '"' + a.title.replace(/"/g, '""') + '"'),
|
||
|
(e += 0 === b ? d : "," + d);
|
||
|
}),
|
||
|
(e += "\n");
|
||
|
var g = a ? this.ft.rows.all : this.snapshot;
|
||
|
return (
|
||
|
b.arr.each(g, function (a) {
|
||
|
b.arr.each(a.cells, function (a, b) {
|
||
|
a.column.internal ||
|
||
|
((c = a.column.stringify.call(
|
||
|
a.column,
|
||
|
a.value,
|
||
|
a.ft.o,
|
||
|
a.row.value
|
||
|
)),
|
||
|
(d = '"' + c.replace(/"/g, '""') + '"'),
|
||
|
(e += 0 === b ? d : "," + d));
|
||
|
}),
|
||
|
(e += "\n");
|
||
|
}),
|
||
|
e
|
||
|
);
|
||
|
},
|
||
|
})),
|
||
|
b.components.register("export", b.Export, 490);
|
||
|
})(jQuery, FooTable),
|
||
|
(function (a) {
|
||
|
(a.Column.prototype.__export_define__ = function (b) {
|
||
|
this.stringify = a.checkFnValue(this, b.stringify, this.stringify);
|
||
|
}),
|
||
|
a.Column.extend("define", function (a) {
|
||
|
this._super(a), this.__export_define__(a);
|
||
|
}),
|
||
|
(a.Column.prototype.stringify = function (a, b, c) {
|
||
|
return a + "";
|
||
|
}),
|
||
|
(a.DateColumn.prototype.stringify = function (b, c, d) {
|
||
|
return a.is.object(b) &&
|
||
|
a.is["boolean"](b._isAMomentObject) &&
|
||
|
b.isValid()
|
||
|
? b.format(this.formatString)
|
||
|
: "";
|
||
|
}),
|
||
|
(a.ObjectColumn.prototype.stringify = function (b, c, d) {
|
||
|
return a.is.object(b) ? JSON.stringify(b) : "";
|
||
|
}),
|
||
|
(a.ArrayColumn.prototype.stringify = function (b, c, d) {
|
||
|
return a.is.array(b) ? JSON.stringify(b) : "";
|
||
|
});
|
||
|
})(FooTable),
|
||
|
(function (a) {
|
||
|
(a.Table.prototype.toJSON = function (b) {
|
||
|
return this.use(a.Export).json(b);
|
||
|
}),
|
||
|
(a.Table.prototype.toCSV = function (b) {
|
||
|
return this.use(a.Export).csv(b);
|
||
|
});
|
||
|
})(FooTable);
|