Completed
Pull Request — develop (#224)
by
unknown
51s
created

link.js ➔ ... ➔ data.links.filter   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 3
rs 10
nop 1
1
define(['helper', 'snabbdom'], function (helper, V) {
2
  'use strict';
3
  V = V.default;
4
5
  function showStatImg(children, d, time) {
6
    var subst = {
7
      '{SOURCE_ID}': d.source.node_id,
8
      '{SOURCE_NAME}': d.source.hostname.replace(/[^a-z0-9\-]/ig, '_'),
9
      '{SOURCE_MAC}': d.source_mac,
10
      '{TARGET_ID}': d.target.node_id,
11
      '{TARGET_NAME}': d.target.hostname.replace(/[^a-z0-9\-]/ig, '_'),
12
      '{TARGET_MAC}': d.target_mac,
13
      '{TIME}': time,
14
      '{LOCALE}': _.locale()
15
    };
16
17
    return function (linkInfo) {
18
      children.push(V.h('tr', V.h('th', { props: { rowspan: '2' } },
19
        linkInfo.name
20
      )));
21
      children.push(V.h('tr', V.h('th', { props: { rowspan: '2' } },
22
        helper.showStat(V, linkInfo, subst)
23
      )));
24
    };
25
  }
26
27
  return function (el, d, linkScale) {
28
    var self = this;
29
    var header = document.createElement('div');
30
    var table = document.createElement('table');
31
    el.appendChild(header);
32
    el.appendChild(table);
33
34
    self.render = function render() {
35
      var children = [];
36
      var linkImg = [];
37
      var globalImg = [];
38
      var time = d[0].target.lastseen.format('DDMMYYYYHmmss');
39
40
      if (config.linkInfos) {
41
        config.linkInfos.forEach(function (linkInfo) {
42
          if (linkInfo.image.indexOf('{SOURCE_MAC}') === -1) {
43
            globalImg.push(linkInfo);
44
          } else {
45
            linkImg.push(linkInfo);
46
          }
47
        });
48
      }
49
50
      header = V.patch(header, V.h('div', V.h('h2', [
51
        V.h('a', {
52
          props: { href: router.generateLink({ node: d[0].source.node_id }) }
53
        }, d[0].source.hostname),
54
        V.h('span', ' - '),
55
        V.h('a', {
56
          props: { href: router.generateLink({ node: d[0].target.node_id }) }
57
        }, d[0].target.hostname)
58
      ])));
59
60
      helper.attributeEntry(V, children, 'node.hardware', (d[0].source.model ? d[0].source.model + ' – ' : '') +
61
        (d[0].target.model ? d[0].target.model : ''));
62
      helper.attributeEntry(V, children, 'node.distance', helper.showDistance(d[0]));
63
64
      d.forEach(function (link) {
65
        children.push(V.h('tr', { props: { className: 'header' } }, [
66
          V.h('th', _.t('node.connectionType')),
67
          V.h('th', link.type)
68
        ]));
69
        helper.attributeEntry(V, children, 'node.tq', V.h('span',
70
          { style: { color: linkScale((link.source_tq + link.target_tq) / 2) } },
71
          helper.showTq(link.source_tq) + ' - ' + helper.showTq(link.target_tq))
72
        );
73
74
        linkImg.forEach(showStatImg(children, link, time));
75
      });
76
77
      globalImg.forEach(showStatImg(children, d[0], time));
78
79
      var elNew = V.h('table', children);
80
      table = V.patch(table, elNew);
81
      table.elm.classList.add('attributes');
82
    };
83
84
    self.setData = function setData(data) {
85
      d = data.links.filter(function (a) {
86
        return a.id === d[0].id;
87
      });
88
      self.render();
89
    };
90
    return self;
91
  };
92
});
93