123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- define(["moment", "virtual-dom"], function (moment, V) {
- return function(config, nodes, field, router, title) {
- var self = this
- var el, tbody
- self.render = function (d) {
- el = document.createElement("div")
- d.appendChild(el)
- }
- self.setData = function (data) {
- var list = data.nodes[nodes]
- if (list.length === 0) {
- while (el.firstChild)
- el.removeChild(el.firstChild)
- tbody = null
- return
- }
- if (!tbody) {
- var h2 = document.createElement("h2")
- h2.textContent = title
- el.appendChild(h2)
- var table = document.createElement("table")
- el.appendChild(table)
- tbody = document.createElement("tbody")
- tbody.last = V.h("tbody")
- table.appendChild(tbody)
- }
- var items = list.map( function (d) {
- var time = moment(d[field]).from(data.now)
- var td1Content = []
- var aClass = ["hostname", d.flags.online ? "online" : "offline"]
- td1Content.push(V.h("a", { className: aClass.join(" "),
- onclick: router.node(d),
- href: "#"
- }, d.nodeinfo.hostname))
- if (has_location(d))
- td1Content.push(V.h("span", {className: "icon ion-location"}))
- if ("owner" in d.nodeinfo && config.showContact)
- td1Content.push(" - " + d.nodeinfo.owner.contact)
- var td1 = V.h("td", td1Content)
- var td2 = V.h("td", time)
- return V.h("tr", [td1, td2])
- })
- var tbodyNew = V.h("tbody", items)
- tbody = V.patch(tbody, V.diff(tbody.last, tbodyNew))
- tbody.last = tbodyNew
- }
- return self
- }
- })
|