Passed
Push — develop ( bfb111...4fd4e2 )
by Xaver
01:12
created

lib/infobox/main.js (1 issue)

Labels
Severity
1
define(['infobox/link', 'infobox/node', 'infobox/location'], function (Link, Node, location) {
2
  'use strict';
3
4
  return function (sidebar, linkScale) {
5
    var self = this;
6
    var el;
7
    var node;
8
    var link;
9
10
    function destroy() {
11
      if (el && el.parentNode) {
0 ignored issues
show
The variable el is changed as part of the for-each loop for example by el on line 11. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
12
        el.parentNode.removeChild(el);
13
        el = undefined;
14
        sidebar.reveal();
15
      }
16
    }
17
18
    function create() {
19
      destroy();
20
      sidebar.ensureVisible();
21
      sidebar.hide();
22
23
      el = document.createElement('div');
24
      sidebar.container.children[1].appendChild(el);
25
26
      el.scrollIntoView(false);
27
      el.classList.add('infobox');
28
      el.destroy = destroy;
29
30
      var closeButton = document.createElement('button');
31
      closeButton.classList.add('close');
32
      closeButton.classList.add('ion-close');
33
      closeButton.setAttribute('aria-label', _.t('close'));
34
      closeButton.onclick = function () {
35
        router.fullUrl();
36
      };
37
      el.appendChild(closeButton);
38
    }
39
40
    self.resetView = destroy;
41
42
    self.gotoNode = function gotoNode(d, nodeDict) {
43
      create();
44
      node = new Node(el, d, linkScale, nodeDict);
45
      node.render();
46
    };
47
48
    self.gotoLink = function gotoLink(d) {
49
      create();
50
      link = new Link(el, d, linkScale);
51
      link.render();
52
    };
53
54
    self.gotoLocation = function gotoLocation(d) {
55
      create();
56
      location(el, d);
57
    };
58
59
    self.setData = function setData(d) {
60
      if (typeof node === 'object') {
61
        node.setData(d);
62
      }
63
      if (typeof link === 'object') {
64
        link.setData(d);
65
      }
66
    };
67
68
    return self;
69
  };
70
});
71