diff options
author | Jo-Philipp Wich <jo@mein.io> | 2023-02-06 10:20:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-06 10:20:54 +0100 |
commit | ddc5f5fd893f37092f7e29c8beaa4f8b923ad5a9 (patch) | |
tree | 241e26784b04eee85696e826d142ee629580041b | |
parent | 56a737ec53323052be9d2178fc655b2c1442601d (diff) | |
parent | 3ed20aac9d086be6cec6291d0e33f19ef2d58355 (diff) |
Merge pull request #6223 from janh/luci-mod-dsl-pilot-tones
luci-mod-dsl: add pilot tones
-rw-r--r-- | modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js | 82 |
1 files changed, 57 insertions, 25 deletions
diff --git a/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js b/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js index ba0d590c18..218b67938a 100644 --- a/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js +++ b/modules/luci-mod-dsl/htdocs/luci-static/resources/view/status/dsl/graph.js @@ -89,6 +89,7 @@ const usQLNData = new DataSet(window.json['qln']['upstream'], myQLNFunction); const dsQLNData = new DataSet(window.json['qln']['downstream'], myQLNFunction); const usHLOGData = new DataSet(window.json['hlog']['upstream'], myHLOGFunction); const dsHLOGData = new DataSet(window.json['hlog']['downstream'], myHLOGFunction); +const pilotTonesData = window.json['pilot_tones'] || []; const marginX = 50; const marginY = 80; @@ -120,6 +121,12 @@ let bitsChart = { "data" : dsBitsData.data, "color": "navy", "title": _("Downstream bits allocation") + }, + { + "lines": true, + "data": pilotTonesData, + "color": "red", + "title": _("Pilot tones") } ] }; @@ -220,14 +227,39 @@ function drawChart (info) { drawLegend(info.config, info.dataSet); - drawData(info.config, info.dataSet[0].data, info.dataSet[0].color); - drawData(info.config, info.dataSet[1].data, info.dataSet[1].color); + for (let item of info.dataSet) { + if (item.lines === true) { + drawLines(info.config, item.data, item.color); + } else { + drawData(info.config, item.data, item.color); + } + } } function drawBlocks(config, dataPoints, color, borders) { borders.map(drawBlock, {config, dataPoints, color, borders}); } +function drawLines(config, dataPoints, color) { + let ctx = config.ctx; + let len = dataPoints.length; + let minX = config.minX; + let maxX = config.maxX; + let minY = config.minY; + let maxY = config.maxY; + + ctx.strokeStyle = color; + ctx.beginPath(); + + for (let item of dataPoints) { + let relX = (item - minX) / (maxX - minX); + ctx.moveTo(relX * config.graphWidth + marginX, marginY); + ctx.lineTo(relX * config.graphWidth + marginX, marginY + config.graphHeight); + } + + ctx.stroke(); +} + function drawData(config, dataPoints, color) { let ctx = config.ctx; let len = dataPoints.length; @@ -263,35 +295,35 @@ function drawLegend(config, dataSet){ let graphHeight = config.graphHeight; ctx.font = "12px Arial"; - ctx.fillStyle = dataSet[0].color; - ctx.fillRect(0.5 * graphWidth + marginX - ctx.measureText(dataSet[0].title).width - 50, config.canvas.height - marginY*1/4 - 8, 30, 10); - ctx.strokeStyle = "#C0C0C0"; - ctx.strokeRect(0.5 * graphWidth + marginX - ctx.measureText(dataSet[0].title).width - 50, config.canvas.height - marginY*1/4 - 8, 30, 10); - if (darkMode == "true") { - ctx.strokeStyle = "#505050"; - ctx.fillStyle = "#A0A0A0"; - } else { - ctx.strokeStyle = "#303030"; - ctx.fillStyle = "#303030"; + let legendWidth = -10; + for (let item of dataSet) { + legendWidth += 50 + ctx.measureText(item.title).width; } - ctx.textAlign = "right" - ctx.fillText(dataSet[0].title, 0.5 * graphWidth + marginX - 10, config.canvas.height - marginY*1/4); + var x = 0.5 * (graphWidth - legendWidth) + marginX; + var y = config.canvas.height - marginY*1/4; - ctx.fillStyle = dataSet[1].color; - ctx.fillRect(0.5 * graphWidth + marginX, config.canvas.height - marginY*1/4 - 8, 30, 10); - ctx.strokeStyle = "#C0C0C0"; - ctx.strokeRect(0.5 * graphWidth + marginX, config.canvas.height - marginY*1/4 - 8, 30, 10); + for (let item of dataSet) { + ctx.fillStyle = item.color; + ctx.fillRect(x, y - 8, 30, 10); + ctx.strokeStyle = "#C0C0C0"; + ctx.strokeRect(x, y - 8, 30, 10); - if (darkMode == "true") { - ctx.fillStyle = "#A0A0A0"; - } else { - ctx.fillStyle = "#303030"; - } + if (darkMode == "true") { + ctx.fillStyle = "#A0A0A0"; + } else { + ctx.fillStyle = "#303030"; + } - ctx.textAlign = "left" - ctx.fillText(dataSet[1].title, 0.5 * graphWidth + marginX + 40, config.canvas.height - marginY*1/4); + x += 40; + + ctx.textAlign = "left" + ctx.fillText(item.title, x, y); + + x += ctx.measureText(item.title).width; + x += 10; + } } function drawAxisX(config, minValue, maxValue, step, title) { |