Skip to content
Snippets Groups Projects
Select Git revision
  • b98956e47e35f8dcaaa4556b4be1a35f81ea02d2
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-07-26
  • experimental-2025-07-26-base
  • experimental-2025-07-24
  • experimental-2025-07-24-base
  • experimental-2025-07-22
  • experimental-2025-07-22-base
  • experimental-2025-07-21
  • experimental-2025-07-21-base
  • experimental-2025-07-20
  • experimental-2025-07-20-base
  • experimental-2025-07-19
  • experimental-2025-07-19-base
  • experimental-2025-07-17
  • experimental-2025-07-17-base
  • experimental-2025-07-12
  • experimental-2025-07-12-base
  • experimental-2025-07-04
  • experimental-2025-07-04-base
  • experimental-2025-07-01
  • experimental-2025-07-01-base
41 results

0009-netifd-update-to-git-HEAD-version.patch

Blame
  • gui.js 3.80 KiB
    define(['chroma-js', 'map', 'sidebar', 'tabs', 'container', 'legend',
      'linklist', 'nodelist', 'simplenodelist', 'infobox/main',
      'proportions', 'forcegraph', 'title', 'about', 'datadistributor',
      'filters/filtergui', 'filters/hostname'],
      function (chroma, Map, Sidebar, Tabs, Container, Legend, Linklist,
                Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph,
                Title, About, DataDistributor, FilterGUI, HostnameFilter) {
        'use strict';
    
        return function (config, router, language) {
          var self = this;
          var content;
          var contentDiv;
    
          var linkScale = chroma.scale(chroma.bezier(['#04C714', '#FF5500', '#F02311'])).domain([1, 5]);
          var sidebar;
    
          var buttons = document.createElement('div');
          buttons.classList.add('buttons');
    
          var fanout = new DataDistributor();
          var fanoutUnfiltered = new DataDistributor();
          fanoutUnfiltered.add(fanout);
    
          function removeContent() {
            if (!content) {
              return;
            }
    
            router.removeTarget(content);
            fanout.remove(content);
    
            content.destroy();
    
            content = null;
          }
    
          function addContent(K) {
            removeContent();
    
            content = new K(config, linkScale, sidebar.getWidth, router, buttons);
            content.render(contentDiv);
    
            fanout.add(content);
            router.addTarget(content);
          }
    
          function mkView(K) {
            return function () {
              addContent(K);
            };
          }
    
          var loader = document.getElementsByClassName('loader')[0];
          loader.classList.add('hide');
    
          contentDiv = document.createElement('div');
          contentDiv.classList.add('content');
          document.body.appendChild(contentDiv);
    
          sidebar = new Sidebar(document.body);
    
          contentDiv.appendChild(buttons);
    
          var buttonToggle = document.createElement('button');
          buttonToggle.classList.add('ion-eye', 'shadow');
          buttonToggle.setAttribute('data-tooltip', _.t('button.switchView'));
          buttonToggle.onclick = function onclick() {
            if (content.constructor === Map) {
              router.view('g');
            } else {
              router.view('m');
            }
          };
    
          buttons.appendChild(buttonToggle);
    
          var title = new Title(config);
    
          var header = new Container('header');
          var infobox = new Infobox(config, sidebar, router);
          var tabs = new Tabs();
          var overview = new Container();
          var legend = new Legend(config, language);
          var newnodeslist = new SimpleNodelist('new', 'firstseen', router, _.t('node.new'));
          var lostnodeslist = new SimpleNodelist('lost', 'lastseen', router, _.t('node.missing'));
          var nodelist = new Nodelist(router);
          var linklist = new Linklist(linkScale, router);
          var statistics = new Proportions(config, fanout);
          var about = new About();
    
          fanoutUnfiltered.add(legend);
          fanoutUnfiltered.add(newnodeslist);
          fanoutUnfiltered.add(lostnodeslist);
          fanout.add(nodelist);
          fanout.add(linklist);
          fanout.add(statistics);
    
          sidebar.add(header);
          header.add(legend);
    
          overview.add(newnodeslist);
          overview.add(lostnodeslist);
    
          var filterGUI = new FilterGUI(fanout);
          fanout.watchFilters(filterGUI);
          header.add(filterGUI);
    
          var hostnameFilter = new HostnameFilter();
          fanout.addFilter(hostnameFilter);
    
          sidebar.add(tabs);
          tabs.add('sidebar.actual', overview);
          tabs.add('node.nodes', nodelist);
          tabs.add('node.links', linklist);
          tabs.add('sidebar.stats', statistics);
          tabs.add('sidebar.about', about);
    
          router.addTarget(title);
          router.addTarget(infobox);
    
          router.addView('m', mkView(Map));
          router.addView('g', mkView(ForceGraph));
    
          router.view('m');
    
          self.setData = fanoutUnfiltered.setData;
    
          return self;
        };
      });