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.
 
 
 
 
 

437 lines
18 KiB

/*!
Responsive 2.0.0
2014-2015 SpryMedia Ltd - datatables.net/license
*/
(function (c) {
"function" === typeof define && define.amd ? define(["jquery", "datatables.net"], function (l) {
return c(l, window, document)
}) : "object" === typeof exports ? module.exports = function (l, k) {
l || (l = window);
if (!k || !k.fn.dataTable) k = require("datatables.net")(l, k).$;
return c(k, l, l.document)
} : c(jQuery, window, document)
})(function (c, l, k, p) {
var n = c.fn.dataTable,
j = function (a, b) {
if (!n.versionCheck || !n.versionCheck("1.10.3")) throw "DataTables Responsive requires DataTables 1.10.3 or newer";
this.s = {
dt: new n.Api(a),
columns: [],
current: []
};
this.s.dt.settings()[0].responsive || (b && "string" === typeof b.details && (b.details = {
type: b.details
}), this.c = c.extend(!0, {}, j.defaults, n.defaults.responsive, b), a.responsive = this, this._constructor())
};
c.extend(j.prototype, {
_constructor: function () {
var a = this,
b = this.s.dt,
d = b.settings()[0];
b.settings()[0]._responsive = this;
c(l).on("resize.dtr orientationchange.dtr", n.util.throttle(function () {
a._resize()
}));
d.oApi._fnCallbackReg(d, "aoRowCreatedCallback", function (e) {
-1 !== c.inArray(!1, a.s.current) &&
c("td, th", e).each(function (e) {
e = b.column.index("toData", e);
!1 === a.s.current[e] && c(this).css("display", "none")
})
});
b.on("destroy.dtr", function () {
b.off(".dtr");
c(b.table().body()).off(".dtr");
c(l).off("resize.dtr orientationchange.dtr");
c.each(a.s.current, function (e, b) {
!1 === b && a._setColumnVis(e, !0)
})
});
this.c.breakpoints.sort(function (a, b) {
return a.width < b.width ? 1 : a.width > b.width ? -1 : 0
});
this._classLogic();
this._resizeAuto();
d = this.c.details;
!1 !== d.type && (a._detailsInit(), b.on("column-visibility.dtr",
function () {
a._classLogic();
a._resizeAuto();
a._resize()
}), b.on("draw.dtr", function () {
a._redrawChildren()
}), c(b.table().node()).addClass("dtr-" + d.type));
b.on("column-reorder.dtr", function (b, d, c) {
if (c.drop) {
a._classLogic();
a._resizeAuto();
a._resize()
}
});
this._resize()
},
_columnsVisiblity: function (a) {
var b = this.s.dt,
d = this.s.columns,
e, f, h = d.map(function (a, b) {
return {
columnIdx: b,
priority: a.priority
}
}).sort(function (a, b) {
return a.priority !== b.priority ? a.priority - b.priority : a.columnIdx - b.columnIdx
}),
g = c.map(d,
function (b) {
return b.auto && null === b.minWidth ? !1 : !0 === b.auto ? "-" : -1 !== c.inArray(a, b.includeIn)
}),
m = 0;
e = 0;
for (f = g.length; e < f; e++) !0 === g[e] && (m += d[e].minWidth);
e = b.settings()[0].oScroll;
e = e.sY || e.sX ? e.iBarWidth : 0;
b = b.table().container().offsetWidth - e - m;
e = 0;
for (f = g.length; e < f; e++) d[e].control && (b -= d[e].minWidth);
m = !1;
e = 0;
for (f = h.length; e < f; e++) {
var i = h[e].columnIdx;
"-" === g[i] && (!d[i].control && d[i].minWidth) && (m || 0 > b - d[i].minWidth ? (m = !0, g[i] = !1) : g[i] = !0, b -= d[i].minWidth)
}
h = !1;
e = 0;
for (f = d.length; e < f; e++)
if (!d[e].control &&
!d[e].never && !g[e]) {
h = !0;
break
}
e = 0;
for (f = d.length; e < f; e++) d[e].control && (g[e] = h); - 1 === c.inArray(!0, g) && (g[0] = !0);
return g
},
_classLogic: function () {
var a = this,
b = this.c.breakpoints,
d = this.s.dt,
e = d.columns().eq(0).map(function (a) {
var b = this.column(a),
e = b.header().className,
a = d.settings()[0].aoColumns[a].responsivePriority;
a === p && (a = c(b.header).data("priority") !== p ? 1 * c(b.header).data("priority") : 1E4);
return {
className: e,
includeIn: [],
auto: !1,
control: !1,
never: e.match(/\bnever\b/) ? !0 : !1,
priority: a
}
}),
f = function (a,
b) {
var d = e[a].includeIn; - 1 === c.inArray(b, d) && d.push(b)
},
h = function (d, c, i, h) {
if (i)
if ("max-" === i) {
h = a._find(c).width;
c = 0;
for (i = b.length; c < i; c++) b[c].width <= h && f(d, b[c].name)
} else if ("min-" === i) {
h = a._find(c).width;
c = 0;
for (i = b.length; c < i; c++) b[c].width >= h && f(d, b[c].name)
} else {
if ("not-" === i) {
c = 0;
for (i = b.length; c < i; c++) - 1 === b[c].name.indexOf(h) && f(d, b[c].name)
}
} else e[d].includeIn.push(c)
};
e.each(function (a, e) {
for (var d = a.className.split(" "), f = !1, j = 0, l = d.length; j < l; j++) {
var k = c.trim(d[j]);
if ("all" === k) {
f = !0;
a.includeIn = c.map(b, function (a) {
return a.name
});
return
}
if ("none" === k || a.never) {
f = !0;
return
}
if ("control" === k) {
f = !0;
a.control = !0;
return
}
c.each(b, function (a, b) {
var c = b.name.split("-"),
d = k.match(RegExp("(min\\-|max\\-|not\\-)?(" + c[0] + ")(\\-[_a-zA-Z0-9])?"));
d && (f = !0, d[2] === c[0] && d[3] === "-" + c[1] ? h(e, b.name, d[1], d[2] + d[3]) : d[2] === c[0] && !d[3] && h(e, b.name, d[1], d[2]))
})
}
f || (a.auto = !0)
});
this.s.columns = e
},
_detailsDisplay: function (a, b) {
var d = this,
e = this.s.dt,
f = this.c.details.display(a, b, function () {
return d.c.details.renderer(e,
a[0], d._detailsObj(a[0]))
});
(!0 === f || !1 === f) && c(e.table().node()).triggerHandler("responsive-display.dt", [e, a, f, b])
},
_detailsInit: function () {
var a = this,
b = this.s.dt,
d = this.c.details;
"inline" === d.type && (d.target = "td:first-child");
b.on("draw.dtr", function () {
a._tabIndexes()
});
a._tabIndexes();
c(b.table().body()).on("keyup.dtr", "td", function (a) {
a.keyCode === 13 && c(this).data("dtr-keyboard") && c(this).click()
});
var e = d.target,
d = "string" === typeof e ? e : "td";
c(b.table().body()).on("mousedown.dtr", d, function (a) {
a.preventDefault()
}).on("click.dtr",
d,
function () {
if (c(b.table().node()).hasClass("collapsed") && b.row(c(this).closest("tr")).length) {
if (typeof e === "number") {
var d = e < 0 ? b.columns().eq(0).length + e : e;
if (b.cell(this).index().column !== d) return
}
d = b.row(c(this).closest("tr"));
a._detailsDisplay(d, false)
}
})
},
_detailsObj: function (a) {
var b = this,
d = this.s.dt;
return c.map(this.s.columns, function (c, f) {
if (!c.never) return {
title: d.settings()[0].aoColumns[f].sTitle,
data: d.cell(a, f).render(b.c.orthogonal),
hidden: d.column(f).visible() && !b.s.current[f]
}
})
},
_find: function (a) {
for (var b = this.c.breakpoints, d = 0, c = b.length; d < c; d++)
if (b[d].name === a) return b[d]
},
_redrawChildren: function () {
var a = this,
b = this.s.dt;
b.rows({
page: "current"
}).iterator("row", function (c, e) {
b.row(e);
a._detailsDisplay(b.row(e), !0)
})
},
_resize: function () {
var a = this,
b = this.s.dt,
d = c(l).width(),
e = this.c.breakpoints,
f = e[0].name,
h = this.s.columns,
g, m = this.s.current.slice();
for (g = e.length - 1; 0 <= g; g--)
if (d <= e[g].width) {
f = e[g].name;
break
}
var i = this._columnsVisiblity(f);
this.s.current = i;
e = !1;
g = 0;
for (d = h.length; g < d; g++)
if (!1 === i[g] && !h[g].never) {
e = !0;
break
}
c(b.table().node()).toggleClass("collapsed", e);
var j = !1;
b.columns().eq(0).each(function (b, c) {
i[c] !== m[c] && (j = !0, a._setColumnVis(b, i[c]))
});
j && this._redrawChildren()
},
_resizeAuto: function () {
var a = this.s.dt,
b = this.s.columns;
if (this.c.auto && -1 !== c.inArray(!0, c.map(b, function (a) {
return a.auto
}))) {
a.table().node();
var d = a.table().node().cloneNode(!1),
e = c(a.table().header().cloneNode(!1)).appendTo(d),
f = c(a.table().body().cloneNode(!1)).appendTo(d),
h = a.columns().header().filter(function (b) {
return a.column(b).visible()
}).to$().clone(!1).css("display", "table-cell");
c(f).append(c(a.rows({
page: "current"
}).nodes()).clone(!1)).find("th, td").css("display", "");
if (f = a.table().footer()) {
var f = c(f.cloneNode(!1)).appendTo(d),
g = a.columns().header().filter(function (b) {
return a.column(b).visible()
}).to$().clone(!1).css("display", "table-cell");
c("<tr/>").append(g).appendTo(f)
}
c("<tr/>").append(h).appendTo(e);
"inline" === this.c.details.type && c(d).addClass("dtr-inline collapsed");
d = c("<div/>").css({
width: 1,
height: 1,
overflow: "hidden"
}).append(d);
d.insertBefore(a.table().node());
h.each(function (c) {
c = a.column.index("fromVisible", c);
b[c].minWidth = this.offsetWidth || 0
});
d.remove()
}
},
_setColumnVis: function (a, b) {
var d = this.s.dt,
e = b ? "" : "none";
c(d.column(a).header()).css("display", e);
c(d.column(a).footer()).css("display", e);
d.column(a).nodes().to$().css("display", e)
},
_tabIndexes: function () {
var a = this.s.dt,
b = a.cells({
page: "current"
}).nodes().to$(),
d = a.settings()[0],
e = this.c.details.target;
b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");
c("number" === typeof e ? ":eq(" + e + ")" : e, a.rows({
page: "current"
}).nodes()).attr("tabIndex", d.iTabIndex).data("dtr-keyboard", 1)
}
});
j.breakpoints = [{
name: "desktop",
width: Infinity
}, {
name: "tablet-l",
width: 1024
}, {
name: "tablet-p",
width: 768
}, {
name: "mobile-l",
width: 480
}, {
name: "mobile-p",
width: 320
}];
j.display = {
childRow: function (a, b, d) {
if (b) {
if (c(a.node()).hasClass("parent")) return a.child(d(), "child").show(), !0
} else {
if (a.child.isShown()) return a.child(!1),
c(a.node()).removeClass("parent"), !1;
a.child(d(), "child").show();
c(a.node()).addClass("parent");
return !0
}
},
childRowImmediate: function (a, b, d) {
if (!b && a.child.isShown() || !a.responsive.hasHidden()) return a.child(!1), c(a.node()).removeClass("parent"), !1;
a.child(d(), "child").show();
c(a.node()).addClass("parent");
return !0
},
modal: function (a) {
return function (b, d, e) {
if (d) c("div.dtr-modal-content").empty().append(e());
else {
var f = function () {
h.remove();
c(k).off("keypress.dtr")
},
h = c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">&times;</div>').click(function () {
f()
}))).append(c('<div class="dtr-modal-background"/>').click(function () {
f()
})).appendTo("body");
a && a.header && h.find("div.dtr-modal-content").prepend("<h2>" + a.header(b) + "</h2>");
c(k).on("keyup.dtr", function (a) {
27 === a.keyCode && (a.stopPropagation(), f())
})
}
}
}
};
j.defaults = {
breakpoints: j.breakpoints,
auto: !0,
details: {
display: j.display.childRow,
renderer: function (a, b, d) {
return (a = c.map(d, function (a, b) {
return a.hidden ? '<li data-dtr-index="' + b + '"><span class="dtr-title">' + a.title + '</span> <span class="dtr-data">' + a.data + "</span></li>" : ""
}).join("")) ? c('<ul data-dtr-index="' + b + '"/>').append(a) : !1
},
target: 0,
type: "inline"
},
orthogonal: "display"
};
var o = c.fn.dataTable.Api;
o.register("responsive()", function () {
return this
});
o.register("responsive.index()", function (a) {
a = c(a);
return {
column: a.data("dtr-index"),
row: a.parent().data("dtr-index")
}
});
o.register("responsive.rebuild()", function () {
return this.iterator("table", function (a) {
a._responsive && a._responsive._classLogic()
})
});
o.register("responsive.recalc()", function () {
return this.iterator("table", function (a) {
a._responsive && (a._responsive._resizeAuto(), a._responsive._resize())
})
});
o.register("responsive.hasHidden()", function () {
var a = this.context[0];
return a._responsive ? -1 !== c.inArray(!1, a._responsive.s.current) : !1
});
j.version = "2.0.0";
c.fn.dataTable.Responsive = j;
c.fn.DataTable.Responsive = j;
c(k).on("init.dt.dtr", function (a, b) {
if ("dt" === a.namespace && (c(b.nTable).hasClass("responsive") || c(b.nTable).hasClass("dt-responsive") || b.oInit.responsive || n.defaults.responsive)) {
var d = b.oInit.responsive;
!1 !== d && new j(b, c.isPlainObject(d) ? d : {})
}
});
return j
});