-
Emanuele Laface authoredEmanuele Laface authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
dashboard.json 11.64 KiB
{
"version": 1,
"header_image": "",
"allow_edit": false,
"plugins": [],
"panes": [
{
"width": 1,
"row": {
"1": 1,
"2": 1,
"3": 1,
"4": 1
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1
},
"col_width": 4,
"widgets": [
{
"type": "html",
"settings": {
"html": "datasources[\"Clock\"][\"numeric_value\"]; // trick to trigger the update\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\ndocument.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"\";\nif (cols == 4){\n text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 56px; color:#ffffff !important; position: relative; bottom: 35px; left: 200px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Beam Instrumentation</div></img></div>\";\n}\nif (cols == 3){\n text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 46px; color:#ffffff !important; position: relative; bottom: 45px; left: 100px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Beam Instrumentation</div></img></div>\";\n}\n\nif (cols == 2){\n text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Beam Instrumentation</div></img></div>\";\n}\nif (cols == 1){\n text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"></div></img></div>\";\n document.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"Beam Instrumentation\";\n}\n\nreturn text",
"height": 2
}
}
]
},
{
"title": "Beam Current Monitors and Faraday Cups",
"width": 1,
"row": {
"4": 7,
"5": 7,
"7": 7
},
"col": {
"4": 1,
"5": 3,
"7": 3
},
"col_width": 4,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 6,
"value": "isxdata = datasources[\"Current\"][\"ISrc-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1]\"][\"value\"];\nisydata = datasources[\"Current\"][\"ISrc-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1]\"][\"value\"];\nisdata = [];\n\nrfqxdata = datasources[\"Current\"][\"RFQ-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1]\"][\"value\"];\nrfqydata = datasources[\"Current\"][\"RFQ-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1]\"][\"value\"];\nrfqdata = [];\n\nlebtxdata = datasources[\"Current\"][\"LEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1]\"][\"value\"];\nlebtydata = datasources[\"Current\"][\"LEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1]\"][\"value\"];\nlebtdata = [];\n\nmebt1xdata = datasources[\"Current\"][\"MEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1]\"][\"value\"];\nmebt1ydata = datasources[\"Current\"][\"MEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1]\"][\"value\"];\nmebt1data = [];\n\nmebt2xdata = datasources[\"Current\"][\"MEBT-010:PBI-BCM-002:PRC-TR1-ArrayTimeUs.[0:800:-1]\"][\"value\"];\nmebt2ydata = datasources[\"Current\"][\"MEBT-010:PBI-BCM-002:PRC-TR1-ArrayData.[0:800:-1]\"][\"value\"];\nmebt2data = [];\n\nlebtfcydata = datasources[\"Current\"][\"LEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1]\"][\"value\"];\nlebtfcdata = [];\n\nmebtfcydata = datasources[\"Current\"][\"MEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1]\"][\"value\"];\nmebtfcdata = [];\n\nfor (i=0; i < isxdata.length; i++) {\n\tisdata.push([isxdata[i]/1000, isydata[i]]);\n}\nfor (i=0; i < rfqxdata.length; i++) {\n rfqdata.push([rfqxdata[i]/1000, rfqydata[i]]);\n}\nfor (i=0; i < lebtxdata.length; i++) {\n lebtdata.push([lebtxdata[i]/1000, lebtydata[i]]);\n}\nfor (i=0; i < mebt1xdata.length; i++) {\n mebt1data.push([mebt1xdata[i]/1000, mebt1ydata[i]]);\n}\nfor (i=0; i < mebt2xdata.length; i++) {\n mebt2data.push([mebt2xdata[i]/1000, mebt2ydata[i]]);\n}\nfor (i=0; i < lebtfcydata.length; i++) {\n lebtfcdata.push([i*120/1000, lebtfcydata[i]]);\n}\nfor (i=0; i < mebtfcydata.length; i++) {\n mebtfcdata.push([i*120/1000, mebtfcydata[i]]);\n}\n\nbcmdata = [{label: 'ISrc BCM', data: isdata, color: \"lightblue\"},\n {label: 'RFQ BCM', data: rfqdata, color: \"green\"},\n {label: 'LEBT BCM', data: lebtdata, color: \"red\"},\n {label: 'MEBT 1 BCM', data: mebt1data, color: \"pink\"},\n {label: 'MEBT 2 BCM', data: mebt2data, color: \"black\"},\n {label: 'LEBT FC', data: lebtfcdata, color: \"lime\"},\n {label: 'MEBT FC', data: mebtfcdata, color: \"yellow\"}];\n\nreturn bcmdata;",
"xticks": "",
"yticks": "",
"points": false,
"zoom": "xy"
}
}
]
},
{
"title": "MEBT BPMS",
"width": 1,
"row": {
"4": 21,
"8": 19,
"9": 19
},
"col": {
"4": 1,
"8": 1,
"9": 1
},
"col_width": 4,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 6,
"value": "datasources[\"Clock\"][\"numeric_value\"];\n\nxbpm = [];\nybpm = [];\n\nbpmpositions = [0.400, 0.762, 2.224, 2.424, 2.624, 3.436, 3.636, 3.836];\n\nfor (i=1; i < 9; i++) {\n xpv = \"MEBT-010:PBI-BPM-00\"+String(i)+\":XP-AvgValue\";\n xvalue = datasources[\"BPM\"][xpv][\"value\"]/1000;\n if (xvalue == null) {\n xvalue = 0.0;\n }\n xbpm.push([bpmpositions[i-1], xvalue]);\n ypv = \"MEBT-010:PBI-BPM-00\"+String(i)+\":YP-AvgValue\";\n yvalue = datasources[\"BPM\"][ypv][\"value\"]/1000;\n if (yvalue == null) {\n yvalue = 0.0;\n }\n ybpm.push([bpmpositions[i-1], yvalue]);\n}\n\ndata = [{label: 'Horizontal', data: xbpm, color: \"lime\"},\n {label: 'Vertical', data: ybpm, color: \"yellow\"}];\n\nreturn data;",
"xticks": "datasources[\"Clock\"][\"numeric_value\"];\n\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\n\ndigits = 3;\nbpmxlabel = \"<br>BPM Position from MEBT start [m]\";\n\nif (cols == 2) {\n bpmxlabel = \"<br>BPM pos. [m]\";\n digits = 1;\n}\nif (cols == 1) {\n bpmxlabel = \"<br>BPM pos. [m]\";\n digits = 0;\n}\n\n\nbpmxtick = [];\n\nbpmpositions = [0.400, 0.762, 2.224, 2.424, 2.624, 3.436, 3.636, 3.836];\n\nfor (i = 0; i < 8; i += 1) {\n\tbpmxtick.push([bpmpositions[i], String(bpmpositions[i].toFixed(digits))]);\n}\nbpmxtick[2][1] += bpmxlabel;\n\nreturn bpmxtick;",
"yticks": "datasources[\"Clock\"][\"numeric_value\"];\n\nytick = [];\n\nfor (i = -4; i < 4; i += 1) {\n\tytick.push([i, String(i)]);\n}\n\nytick.push([4, \"∆X,∆Y [mm]\"]);\n\nreturn ytick;",
"points": true,
"zoom": "xy"
}
}
]
},
{
"title": "MEBT Wire Scanner 2",
"width": 1,
"row": {
"4": 35
},
"col": {
"4": 1
},
"col_width": 2,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 6,
"value": "ws2hx = datasources[\"WS\"][\"MEBT-010:PBI-WS-002:Positions_H\"][\"value\"];\nws2hy = datasources[\"WS\"][\"MEBT-010:PBI-WS-002:BeamProfile_H\"][\"value\"];\nws2h = [];\n\nws2vx = datasources[\"WS\"][\"MEBT-010:PBI-WS-002:Positions_V\"][\"value\"];\nws2vy = datasources[\"WS\"][\"MEBT-010:PBI-WS-002:BeamProfile_V\"][\"value\"];\nws2v = [];\n\nfor (i=0; i < ws2hx.length; i++) {\n\tws2h.push([ws2hx[i], ws2hy[i]]);\n}\nfor (i=0; i < ws2vx.length; i++) {\n\tws2v.push([ws2vx[i], ws2vy[i]]);\n}\n\nws2data = [{label: 'Horizontal', data: ws2h, color: \"red\"},\n {label: 'Vertical', data: ws2v, color: \"yellow\"}];\n\nreturn ws2data;",
"zoom": "xy"
}
}
]
},
{
"title": "MEBT Wire Scanner 3",
"width": 1,
"row": {
"4": 35
},
"col": {
"4": 3
},
"col_width": 2,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 6,
"value": "ws3hx = datasources[\"WS\"][\"MEBT-010:PBI-WS-003:Positions_H\"][\"value\"];\nws3hy = datasources[\"WS\"][\"MEBT-010:PBI-WS-003:BeamProfile_H\"][\"value\"];\nws3h = [];\n\nws3vx = datasources[\"WS\"][\"MEBT-010:PBI-WS-003:Positions_V\"][\"value\"];\nws3vy = datasources[\"WS\"][\"MEBT-010:PBI-WS-003:BeamProfile_V\"][\"value\"];\nws3v = [];\n\nfor (i=0; i < ws3hx.length; i++) {\n\tws3h.push([ws3hx[i], ws3hy[i]]);\n}\nfor (i=0; i < ws3vx.length; i++) {\n\tws3v.push([ws3vx[i], ws3vy[i]]);\n}\n\nws3data = [{label: 'Horizontal', data: ws3h, color: \"red\"},\n {label: 'Vertical', data: ws3v, color: \"yellow\"}];\n\nreturn ws3data;",
"zoom": "xy"
}
}
]
}
],
"datasources": [
{
"name": "Current",
"type": "JSON",
"settings": {
"url": "/data/api/v2/pvget/ISrc-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1],ISrc-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1],RFQ-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1],RFQ-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1],LEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1],LEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1],MEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:800:-1],MEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:800:-1],MEBT-010:PBI-BCM-002:PRC-TR1-ArrayData.[0:800:-1],MEBT-010:PBI-BCM-002:PRC-TR1-ArrayTimeUs.[0:800:-1],LEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1],MEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1],LEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1],MEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:120:-1]",
"use_thingproxy": false,
"refresh": 10,
"method": "GET",
"name": "Current"
}
},
{
"name": "Clock",
"type": "clock",
"settings": {
"refresh": 1
}
},
{
"name": "BPM",
"type": "JSON",
"settings": {
"url": "/data/api/v2/pvget/MEBT-010:PBI-BPM-001:XP-AvgValue,MEBT-010:PBI-BPM-002:XP-AvgValue,MEBT-010:PBI-BPM-003:XP-AvgValue,MEBT-010:PBI-BPM-004:XP-AvgValue,MEBT-010:PBI-BPM-005:XP-AvgValue,MEBT-010:PBI-BPM-006:XP-AvgValue,MEBT-010:PBI-BPM-007:XP-AvgValue,MEBT-010:PBI-BPM-008:XP-AvgValue,MEBT-010:PBI-BPM-001:YP-AvgValue,MEBT-010:PBI-BPM-002:YP-AvgValue,MEBT-010:PBI-BPM-003:YP-AvgValue,MEBT-010:PBI-BPM-004:YP-AvgValue,MEBT-010:PBI-BPM-005:YP-AvgValue,MEBT-010:PBI-BPM-006:YP-AvgValue,MEBT-010:PBI-BPM-007:YP-AvgValue,MEBT-010:PBI-BPM-008:YP-AvgValue",
"use_thingproxy": true,
"refresh": 10,
"method": "GET"
}
},
{
"name": "WS",
"type": "JSON",
"settings": {
"url": "/data/api/v2/pvget/MEBT-010:PBI-WS-002:PositionsFastScan_H,MEBT-010:PBI-WS-002:BeamProfileFastScan_H,MEBT-010:PBI-WS-002:PositionsFastScan_V,MEBT-010:PBI-WS-002:BeamProfileFastScan_V,MEBT-010:PBI-WS-003:PositionsFastScan_H,MEBT-010:PBI-WS-003:BeamProfileFastScan_H,MEBT-010:PBI-WS-003:PositionsFastScan_V,MEBT-010:PBI-WS-003:BeamProfileFastScan_V",
"use_thingproxy": true,
"refresh": 10,
"method": "GET"
}
}
],
"columns": 4
}