meshviewer/lib/sorttable.js
Xaver Maierhofer c0726461fb [TASK] Add semicolon
Most code is writen with semicolon and IDE shows errors in nearly every line
2016-05-22 16:01:15 +02:00

58 lines
1.4 KiB
JavaScript

define(["virtual-dom"], function (V) {
return function(headings, sortIndex, renderRow) {
var data;
var sortReverse = false;
var el = document.createElement("table");
var elLast = V.h("table");
function sortTable(i) {
sortReverse = i === sortIndex ? !sortReverse : false;
sortIndex = i;
updateView();
}
function sortTableHandler(i) {
return function () { sortTable(i); };
}
function updateView() {
var children = [];
if (data.length !== 0) {
var th = headings.map(function (d, i) {
var properties = { onclick: sortTableHandler(i),
className: "sort-header"
};
if (sortIndex === i)
properties.className += sortReverse ? " sort-up" : " sort-down";
return V.h("th", properties, d.name);
});
var links = data.slice(0).sort(headings[sortIndex].sort);
if (headings[sortIndex].reverse ? !sortReverse : sortReverse)
links = links.reverse();
children.push(V.h("thead", V.h("tr", th)));
children.push(V.h("tbody", links.map(renderRow)));
}
var elNew = V.h("table", children);
el = V.patch(el, V.diff(elLast, elNew));
elLast = elNew;
}
this.setData = function (d) {
data = d;
updateView();
};
this.el = el;
return this;
};
});