Skip to content
Snippets Groups Projects
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
}