linklist.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. define(["tablesort", "virtual-dom", "tablesort.numeric"],
  2. function (Tablesort, V) {
  3. return function(linkScale, router) {
  4. var self = this
  5. var el, tbody, sort
  6. self.render = function (d) {
  7. el = document.createElement("div")
  8. d.appendChild(el)
  9. }
  10. self.setData = function (data) {
  11. if (data.graph.links.length === 0)
  12. return
  13. if (!tbody) {
  14. var h2 = document.createElement("h2")
  15. h2.textContent = "Verbindungen"
  16. el.appendChild(h2)
  17. var table = document.createElement("table")
  18. el.appendChild(table)
  19. var thead = document.createElement("thead")
  20. var tr = document.createElement("tr")
  21. var th1 = document.createElement("th")
  22. th1.textContent = "Knoten"
  23. tr.appendChild(th1)
  24. var th2 = document.createElement("th")
  25. th2.textContent = "TQ"
  26. tr.appendChild(th2)
  27. var th3 = document.createElement("th")
  28. th3.textContent = "Entfernung"
  29. th3.classList.add("sort-default")
  30. tr.appendChild(th3)
  31. thead.appendChild(tr)
  32. table.appendChild(thead)
  33. tbody = document.createElement("tbody")
  34. tbody.last = V.h("tbody")
  35. table.appendChild(tbody)
  36. sort = new Tablesort(table)
  37. }
  38. var items = data.graph.links.map( function (d) {
  39. var name = d.source.node.nodeinfo.hostname + " – " + d.target.node.nodeinfo.hostname
  40. var td1Content = [V.h("a", {href: "#", onclick: router.link(d)}, name)]
  41. if (d.vpn)
  42. td1Content.push(" (VPN)")
  43. var td1 = V.h("td", td1Content)
  44. var td2 = V.h("td", {style: {color: linkScale(d.tq)}}, showTq(d))
  45. var td3 = V.h("td", {attributes: {
  46. "data-sort": d.distance !== undefined ? -d.distance : 1
  47. }}, showDistance(d))
  48. return V.h("tr", [td1, td2, td3])
  49. })
  50. var tbodyNew = V.h("tbody", items)
  51. tbody = V.patch(tbody, V.diff(tbody.last, tbodyNew))
  52. tbody.last = tbodyNew
  53. sort.refresh()
  54. }
  55. }
  56. })