diff -ur a/modules/map.inc.php b/modules/map.inc.php --- a/modules/map.inc.php 2015-12-31 14:25:59.959914322 +0100 +++ b/modules/map.inc.php 2016-01-20 14:58:07.355500949 +0100 @@ -52,7 +52,7 @@ } if ($device['radiosectors']) $devices[$devidx]['radiosectors'] = $DB->GetAll('SELECT name, azimuth, width, rsrange, - frequency, frequency2, bandwidth FROM netradiosectors WHERE id IN + frequency, frequency2, bandwidth, technology FROM netradiosectors WHERE id IN (' . $device['radiosectors'] . ')'); else unset($devices[$devidx]['radiosectors']); diff -ur a/templates/default/map.js b/templates/default/map.js --- a/templates/default/map.js 2015-11-13 12:27:57.103154111 +0100 +++ b/templates/default/map.js 2016-01-20 14:58:29.979899392 +0100 @@ -16,6 +16,7 @@ {foreach $device.radiosectors as $radiosector} { name: '{$radiosector.name}', + technology: {$radiosector.technology}, azimuth: {$radiosector.azimuth}, width: {$radiosector.width}, rsrange: {$radiosector.rsrange}, diff -ur a/img/OpenLayers/lang/pl.js b/img/OpenLayers/lang/pl.js --- a/img/OpenLayers/lang/pl.js 2015-11-13 12:27:56.717182154 +0100 +++ b/img/OpenLayers/lang/pl.js 2016-01-20 15:16:46.396274794 +0100 @@ -24,6 +24,8 @@ 'Device Links': "Połączenia urządzeń", 'Nodes': "Komputery", 'Node Links': "Połączenia komputerów", - 'Radio sectors - areas': "Sektory radiowe - obszary", - 'Radio sectors - directions': "Sektory radiowe - kierunki" + 'Radio sectors 2.4GHz - areas': "Sektory radiowe 2.4GHz - obszary", + 'Radio sectors 5GHz - areas': "Sektory radiowe 5GHz - obszary", + 'Radio sectors 2.4GHz - directions': "Sektory radiowe 2.4GHz - kierunki", + 'Radio sectors 5GHz - directions': "Sektory radiowe 5GHz - kierunki" }; diff -ur a/lms/img/map.js b/img/map.js --- a/img/map.js 2015-11-13 12:27:56.734180919 +0100 +++ b/img/map.js 2016-01-20 15:20:39.276785489 +0100 @@ -276,11 +276,18 @@ function createMap(deviceArray, devlinkArray, nodeArray, nodelinkArray, selection, startLon, startLat) { - var linkstyles = [ - { strokeColor: '#00ff00', strokeOpacity: 0.5 }, - { strokeColor: '#0000ff', strokeOpacity: 0.5 }, - { strokeColor: '#ff0000', strokeOpacity: 0.5 } - ]; + var linkstyles = []; + // wire + linkstyles[6] = { strokeColor: '#80ff00', strokeOpacity: 0.5 }; // 10 Mb/s Ethernet + linkstyles[7] = { strokeColor: '#00ff00', strokeOpacity: 0.5 }; // 100 Mb/s Fast Ethernet + linkstyles[8] = { strokeColor: '#008000', strokeOpacity: 0.5 }; // 1 Gigabit Ethernet + // wireless + linkstyles[100] = { strokeColor: '#0000ff', strokeOpacity: 0.5 }; // WiFi - 2,4 GHz + linkstyles[101] = { strokeColor: '#0080ff', strokeOpacity: 0.5 }; // WiFi - 5 GHz + // fiber + linkstyles[204] = { strokeColor: '#ff0000', strokeOpacity: 0.5 }; // 100 Mb/s Fast Ethernet + linkstyles[205] = { strokeColor: '#ff8000', strokeOpacity: 0.5 }; // 1 Gigabit Ethernet + var linkweights = []; linkweights[10000] = 1; linkweights[25000] = 1; @@ -291,14 +298,21 @@ linkweights[1000000] = 4; linkweights[10000000] = 6; - var rsareastyle = { + var rsareastyle2 = { fillOpacity: 0.2, graphicOpacity: 1, fillColor: '#0000aa', strokeColor: '#0000bb' } - var rsdirectionstyle = new OpenLayers.Style( + var rsareastyle5 = { + fillOpacity: 0.2, + graphicOpacity: 1, + fillColor: '#0080aa', + strokeColor: '#0080bb' + } + + var rsdirectionstyle2 = new OpenLayers.Style( { graphicOpacity: 1, strokeColor: '#0000bb', @@ -335,12 +349,58 @@ } ); - var rsarealayer = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors - areas"), { - style: rsareastyle, + var rsdirectionstyle5 = new OpenLayers.Style( + { + graphicOpacity: 1, + strokeColor: '#0080bb', + strokeDashstyle: "dashdot", + fontFamily: 'arial, monospace', + //fontWeight: 'bold', + fontColor: '#0080bb', + labelAlign: 'middle', + angle: "${angle}", + label: "${label}" + }, { + context: { + angle: function(feature) { + var attr = feature.attributes; + if (attr === undefined || feature.geometry.CLASS_NAME == 'OpenLayers.Geometry.LineString' + || (map.getZoom() / map.getNumZoomLevels()) < 0.70) + return ''; + else + return attr.azimuth + attr.width / 2 - 90; + }, + label: function(feature) { + var attr = feature.attributes; + if (attr === undefined || feature.geometry.CLASS_NAME == 'OpenLayers.Geometry.LineString' + || (map.getZoom() / map.getNumZoomLevels()) < 0.70) + return ''; + else + return attr.name + (attr.frequency != '' + ? ' / ' + attr.frequency + (attr.frequency2 != '' ? ' / ' + attr.frequency2 : '') + + (attr.bandwidth != '' + ? ' (' + attr.bandwidth + ')' : '') + : ''); + } + } + } + ); + + var rsarealayer2 = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors 2.4GHz - areas"), { + style: rsareastyle2, }); - var rsdirectionlayer = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors - directions"), { - styleMap: new OpenLayers.StyleMap(rsdirectionstyle), + var rsarealayer5 = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors 5GHz - areas"), { + style: rsareastyle5, + }); + + var rsdirectionlayer2 = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors 2.4GHz - directions"), { + styleMap: new OpenLayers.StyleMap(rsdirectionstyle2), + renderers: ['LmsSVG', 'VML', 'Canvas'] + }); + + var rsdirectionlayer5 = new OpenLayers.Layer.Vector(OpenLayers.Lang.translate("Radio sectors 5GHz - directions"), { + styleMap: new OpenLayers.StyleMap(rsdirectionstyle5), renderers: ['LmsSVG', 'VML', 'Canvas'] }); @@ -406,8 +466,10 @@ var area = new OpenLayers.Bounds(); var devices = []; - var areas = []; - var directions = []; + var areas2 = []; + var areas5 = []; + var directions2 = []; + var directions5 = []; if (deviceArray) for (i in deviceArray) { @@ -442,7 +504,11 @@ rsPointList.push(rsPointList[0]); var rsRing = new OpenLayers.Geometry.LinearRing(rsPointList); var rsFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([rsRing])); - areas.push(rsFeature); + if (radiosector.technology == 100) { + areas2.push(rsFeature); + } else { + areas5.push(rsFeature); + } rsPointList = []; rsPoint = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat); @@ -453,16 +519,27 @@ rsPointList.push(rsPoint); var rsCurve = new OpenLayers.Geometry.LineString(rsPointList); rsFeature = new OpenLayers.Feature.Vector(rsCurve, radiosector); - directions.push(rsFeature); + if (radiosector.technology == 100) { + directions2.push(rsFeature); + } else { + directions5.push(rsFeature); + } var rsFeature = new OpenLayers.Feature.Vector( rsCurve.getCentroid(true), radiosector); - directions.push(rsFeature); - directions.push(rsFeature); + if (radiosector.technology == 100) { + directions2.push(rsFeature); + directions2.push(rsFeature); + } else { + directions5.push(rsFeature); + directions5.push(rsFeature); + } } } - rsarealayer.addFeatures(areas); - rsdirectionlayer.addFeatures(directions); + rsarealayer2.addFeatures(areas2); + rsarealayer5.addFeatures(areas5); + rsdirectionlayer2.addFeatures(directions2); + rsdirectionlayer5.addFeatures(directions5); devicesLbl = OpenLayers.Lang.translate("Devices"); var devicelayer = new OpenLayers.Layer.Vector(devicesLbl, { @@ -480,10 +557,10 @@ new OpenLayers.Geometry.Point(devlinkArray[i].dstlon, devlinkArray[i].dstlat) .transform(lmsProjection, map.getProjectionObject()) ); - linkstyles[devlinkArray[i].type].strokeWidth = linkweights[devlinkArray[i].speed]; + linkstyles[devlinkArray[i].technology].strokeWidth = linkweights[devlinkArray[i].speed]; devlinks.push(new OpenLayers.Feature.Vector( new OpenLayers.Geometry.LineString(points), - devlinkArray[i], linkstyles[devlinkArray[i].type])); + devlinkArray[i], linkstyles[devlinkArray[i].technology])); } var devlinkLbl = OpenLayers.Lang.translate("Device Links"); @@ -520,10 +597,10 @@ new OpenLayers.Geometry.Point(nodelinkArray[i].netdevlon, nodelinkArray[i].netdevlat) .transform(lmsProjection, map.getProjectionObject()) ); - linkstyles[nodelinkArray[i].type].strokeWidth = linkweights[nodelinkArray[i].speed]; + linkstyles[nodelinkArray[i].technology].strokeWidth = linkweights[nodelinkArray[i].speed]; nodelinks.push(new OpenLayers.Feature.Vector( new OpenLayers.Geometry.LineString(points), - nodelinkArray[i], linkstyles[nodelinkArray[i].type])); + nodelinkArray[i], linkstyles[nodelinkArray[i].technology])); } var nodelinkLbl = OpenLayers.Lang.translate("Node Links"); @@ -534,8 +611,10 @@ map.addLayer(devlinklayer); map.addLayer(nodelayer); map.addLayer(nodelinklayer); - map.addLayer(rsarealayer); - map.addLayer(rsdirectionlayer); + map.addLayer(rsarealayer2); + map.addLayer(rsdirectionlayer2); + map.addLayer(rsarealayer5); + map.addLayer(rsdirectionlayer5); var highlightlayer = new OpenLayers.Control.SelectFeature([devicelayer, devlinklayer, nodelayer, nodelinklayer], { hover: true,