Introduction
Introduction Statistics Contact Development Disclaimer Help
datatable_lite.js - jscancer - Javascript crap (relatively small)
git clone git://git.codemadness.org/jscancer
Log
Files
Refs
README
LICENSE
---
datatable_lite.js (3986B)
---
1 var datatable_parse_date = Date.parse,
2 datatable_parse_float = parseFloat,
3 datatable_parse_int = parseInt,
4 datatable_parse_string = String;
5
6 function datatable_sort_default(x, y) {
7 return x > y ? 1 : (x == y ? 0 : -1);
8 }
9
10 function datatable_init(el) {
11 var thead = el.tHead;
12 var ths = thead.children[0].children,
13 cols = [];
14 for (var i = 0; i < ths.length; i++)
15 cols.push({
16 parsefn: window["datatable_parse_" + (ths[i].…
17 sortfn: window["datatable_sort_" + (ths[i].g…
18 sortable: ["1", "true"].indexOf(ths[i].getAttr…
19 });
20 var d = {
21 table: el,
22 thead: thead,
23 ths: ths,
24 tbody: el.tBodies[0],
25 cols: cols,
26 sort: [] // sort options: [colidx, order (ASC = 0, DESC…
27 };
28 d.data = datatable_data_parse(d);
29
30 d.display = function(data) {
31 var tbody = document.createElement("tbody");
32 for (var i = 0; i < data.length; i++)
33 tbody.appendChild(data[i].tr);
34 d.table.replaceChild(tbody, d.tbody);
35 tbody.style.display = data.length ? "table-row-group" : …
36 d.tbody = tbody;
37 };
38
39 // setup click event handlers for sorting.
40 for (var i = 0; i < d.ths.length; i++)
41 d.cols[i].sortable && d.ths[i].addEventListener("click",…
42 return function(e) {
43 // shift-click for multi-select modifier.
44 datatable_sort_column_toggle(d, idx, e.s…
45 d.data = datatable_sort(d, d.data);
46 d.display(d.data);
47 };
48 }(i), false);
49 return d;
50 }
51
52 function datatable_sort_column_get(d, idx) {
53 for (var i = 0; i < d.sort.length; i++)
54 if (d.sort[i][0] == idx)
55 return i;
56 return -1;
57 }
58
59 function datatable_sort_column_set(d, idx, order, multi) {
60 var c = datatable_sort_column_get(d, idx);
61 if (multi)
62 if (c != -1)
63 d.sort[c][1] = order;
64 else
65 d.sort.push([ idx, order ]);
66 else
67 d.sort = [ [idx, order] ];
68
69 for (var i = 0; i < d.ths.length; i++) {
70 var c = " " + d.ths[i].className + " ";
71 d.ths[i].className = c.replace(/ sort-(asc|desc) /g, " "…
72 }
73 for (var i = 0; i < d.sort.length; i++)
74 d.ths[d.sort[i][0]].className += " sort-" + (d.sort[i][1…
75 }
76
77 // toggle sort or use default order: ASC.
78 function datatable_sort_column_toggle(d, idx, multi) {
79 var c = datatable_sort_column_get(d, idx);
80 datatable_sort_column_set(d, idx, c == -1 || d.sort[c][1] ? 0 : …
81 }
82
83 function datatable_data_parse(d) {
84 var data = [], trs = d.tbody.children;
85 // NOTE: assumes each tr has only "<td>" childnodes.
86 for (var i = 0; i < trs.length; i++) {
87 var values = [];
88 for (var j = 0, trc = trs[i].children; j < trc.length; j…
89 var td = trc[j], v = td.getAttribute("data-value…
90 // prefer data-value attribute, else use cell co…
91 if (typeof(v) != "undefined" && v !== null)
92 values.push(d.cols[j].parsefn(v));
93 else
94 values.push(d.cols[j].parsefn(td.textCon…
95 }
96 data.push({
97 tr: trs[i],
98 values: values
99 });
100 }
101 return data;
102 }
103
104 function datatable_sort(d, data) {
105 // setup sort functions once (in order for multi-select).
106 var sortfns = d.sort.map(function(s) {
107 return (function(c, o, fn) {
108 if (o)
109 return function(xvals, yvals) {
110 return -fn(xvals[c], yvals[c]);
111 };
112 else
113 return function(xvals, yvals) {
114 return fn(xvals[c], yvals[c]);
115 };
116 })(s[0], s[1], d.cols[s[0]].sortfn);
117 });
118 return data.sort(function(x, y) {
119 for (var i = 0, r; i < sortfns.length; i++)
120 if ((r = sortfns[i](x.values, y.values)) != 0)
121 return r;
122 return r;
123 });
124 }
125
126 function datatable_autoload() {
127 // convert to Array (not changed in-place, mandatory).
128 var ds = [], dl = [], els = document.getElementsByClassName && d…
129 for (var i = 0; i < els.length; i++)
130 dl.push(els[i]);
131 for (var i = 0, d; i < dl.length; i++) {
132 if ((d = datatable_init(dl[i])) === null)
133 continue;
134 ds.push(d);
135 }
136 return ds;
137 }
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.