123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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
- }
- })
|