#1009 neighbour map depth and/or until end of lldp chains

* sidebar and style changes

* switch server code to new params and values

* working algo for cloud and neighbor depth

* store map positions for lldp cloud with depth

* color the root node uniquely

* restrict all devices, depth, cloud map to < 1000 devices
This commit is contained in:
Oliver Gorwits
2023-11-09 19:54:34 +00:00
committed by GitHub
parent b893d71e66
commit e52f789b45
9 changed files with 83 additions and 17 deletions

View File

@@ -159,7 +159,9 @@ sidebar_defaults:
device_netmap:
showips: { default: null }
showspeed: { default: null }
mapshow: { default: neighbors }
mapshow: { default: depth }
depth: { default: 1 }
too_many_devices: { default: 1000 }
colorby: { default: speed }
dynamicsize: { default: checked }
report_moduleinventory:

View File

@@ -494,8 +494,13 @@ td > form.nd_inline-form {
vertical-align: text-bottom;
}
#nd_vlan-entry {
margin-top: 7px;
width: 45px;
}
#nd_mapshow-hops {
width: 30px;
margin-bottom: 0px;
}
/* netmap maximise icon */
#nd2_netmap-fullscreen {

View File

@@ -0,0 +1,7 @@
BEGIN;
ALTER TABLE netmap_positions ADD COLUMN "depth" integer DEFAULT 0 NOT NULL;
UPDATE netmap_positions SET depth = 0 WHERE device IS NOT NULL;
COMMIT;

View File

@@ -216,7 +216,7 @@ function saveMapPositions() {
graph.inspect().main.nodes.each(function(n) { n.fixed = true });
$.post(
'[% uri_for('/ajax/data/device/netmappositions') | none %]'
,$("#nd_vlan-entry, #nd_hgroup-select, #nd_lgroup-select, #nq, input[name='mapshow']").serialize()
,$("#nd_vlan-entry, #nd_mapshow-hops, #nd_hgroup-select, #nd_lgroup-select, #nq, input[name='mapshow']").serialize()
+ '&positions=' + JSON.stringify(graph.positions())
);
// toastr.success('Saved map positions.');

View File

@@ -60,26 +60,37 @@
<hr class="nd_sidebar-hr"/>
[% IF device_count < (vars.sidebar_defaults.device_netmap.too_many_devices || 1000) %]
<div class="radio radio-success">
<input type="radio" name="mapshow" id="nd_mapshow-all"
[% 'checked' IF vars.sidebar_defaults.device_netmap.mapshow == 'all' %] value="all">
<label for="nd_mapshow-all">All Devices</label>
</div>
<div class="radio radio-success">
<input type="radio" name="mapshow" id="nd_mapshow-neighbors"
[% 'checked' IF vars.sidebar_defaults.device_netmap.mapshow == 'neighbors' %] value="neighbors">
<label for="nd_mapshow-neighbors">Only Neighbors</label>
<input type="radio" name="mapshow" id="nd_mapshow-cloud"
[% 'checked' IF vars.sidebar_defaults.device_netmap.mapshow == 'cloud' %] value="cloud">
<label for="nd_mapshow-cloud">Neighbor Cloud</label>
</div>
<div class="radio radio-success">
<input type="radio" name="mapshow" id="nd_mapshow-depth"
[% 'checked' IF vars.sidebar_defaults.device_netmap.mapshow == 'depth' %] value="depth">
<label for="nd_mapshow-depth">Neighbor Hops:
<input name="depth" id="nd_mapshow-hops" class="input-mini" type="number" placeholder="1"
value="[% params.depth || vars.sidebar_defaults.device_netmap.hops || 1 | html_entity %]"/>
</label>
</div>
[% END %]
<label><span id="nd_vlan-label-text">Carrying VLAN: </span>
<input name="vlan" id="nd_vlan-entry" class="input-mini" type="number" placeholder="ID"
value="[% params.vlan | html_entity %]" type="text"/>
value="[% params.vlan | html_entity %]"/>
</label>
[% IF hgroup_list.size %]
<em class="muted">Device Groups:</em><br/>
<select class="nd_side-select" size="[% hgroup_list.size > 4 ? 4 : hgroup_list.size %]"
multiple name="hgroup" id="nd_hgroup-select"
rel="tooltip" data-placement="left" data-offset="5" data-title="Host Groups">
rel="tooltip" data-placement="left" data-offset="5" data-title="Device Groups">
[% FOREACH opt IN hgroup_list.pairs %]
<option[% ' selected="selected"' IF hgroup_lkp.exists(opt.key) %]
value="[% opt.key | html_entity %]">[% opt.value | html_entity %]</option>
@@ -87,6 +98,7 @@
</select>
[% END %]
[% IF lgroup_list.size %]
<em class="muted">Device Locations:</em><br/>
<select class="nd_side-select" size="[% lgroup_list.size > 4 ? 4 : lgroup_list.size %]"
multiple name="lgroup" id="nd_lgroup-select"
rel="tooltip" data-placement="left" data-offset="5" data-title="Device Locations">