Skip to content
Snippets Groups Projects
Select Git revision
  • v2020.1-ffs
  • 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-29
  • experimental-2025-07-29-base
  • experimental-2025-07-28
  • experimental-2025-07-28-base
  • 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
41 results

modules

Blame
  • clientlayer.js 1.76 KiB
    define(['leaflet', 'rbush', 'helper'],
      function (L, rbush, helper) {
        'use strict';
    
        return L.GridLayer.extend({
          mapRTree: function mapRTree(d) {
            return {
              minX: d.location.latitude, minY: d.location.longitude,
              maxX: d.location.latitude, maxY: d.location.longitude,
              node: d
            };
          },
          setData: function (data) {
            var rtreeOnlineAll = rbush(9);
    
            this.data = rtreeOnlineAll.load(data.nodes.all.filter(helper.online).filter(helper.hasLocation).map(this.mapRTree));
    
            // pre-calculate start angles
            this.data.all().forEach(function (n) {
              n.startAngle = (parseInt(n.node.node_id.substr(10, 2), 16) / 255) * 2 * Math.PI;
            });
            this.redraw();
          },
          createTile: function (tilePoint) {
            var tile = L.DomUtil.create('canvas', 'leaflet-tile');
    
            var tileSize = this.options.tileSize;
            tile.width = tileSize;
            tile.height = tileSize;
    
            if (!this.data) {
              return tile;
            }
    
            var ctx = tile.getContext('2d');
            var s = tilePoint.multiplyBy(tileSize);
            var map = this._map;
    
            var margin = 50;
            var bbox = helper.getTileBBox(s, map, tileSize, margin);
    
            var nodes = this.data.search(bbox);
    
            if (nodes.length === 0) {
              return tile;
            }
    
            var startDistance = 10;
    
            nodes.forEach(function (d) {
              var p = map.project([d.node.location.latitude, d.node.location.longitude]);
    
              p.x -= s.x;
              p.y -= s.y;
    
              ctx.beginPath();
              ctx.fillStyle = 'rgba(220, 0, 103, 0.7)';
              helper.positionClients(ctx, p, d.startAngle, d.node, startDistance);
              ctx.fill();
            });
    
    
            return tile;
          }
        });
      });