-
Emanuele Laface authoredEmanuele Laface authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
dashboard.json 14.88 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: 160px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Public Operations Screen</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.\\\">Public Operations Screen</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.\\\">Public Operations Screen</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 = \"Public Operations Screen\";\n}\n\nreturn text\n\n",
"height": 2
}
}
]
},
{
"title": "RFQ Conditioning",
"width": 1,
"row": {
"1": 7,
"2": 7,
"3": 7,
"4": 7,
"5": 1,
"6": 1,
"7": 1,
"8": 1,
"9": 1,
"11": 1
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"5": 3,
"6": 3,
"7": 3,
"8": 3,
"9": 3,
"11": 3
},
"col_width": 4,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "area",
"legend": true,
"height": 4,
"value": "timelength = datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000*2;\n\npwxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-XAxis\"][\"value\"];\npwydata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-Cmp0\"][\"value\"];\nvxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn0-XAxis\"][\"value\"];\nvydata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn0-Cmp0\"][\"value\"];\nrxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn3-XAxis\"][\"value\"];\nrydata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn3-Cmp0\"][\"value\"];\n\npwdata = [];\nvdata = [];\nrdata = [];\n\nfor (i=0; i < pwxdata.length; i++) {\n if (pwxdata[i] > timelength) {\n break;\n }\n\tpwdata.push([pwxdata[i], pwydata[i]]);\n}\n\nfor (i=0; i < vxdata.length; i++) {\n if (vxdata[i] > timelength) {\n break;\n }\n\tvdata.push([vxdata[i], vydata[i]]);\n}\n\nfor (i=0; i < rxdata.length; i++) {\n if (rxdata[i] > timelength) {\n break;\n }\n\trdata.push([rxdata[i], rydata[i]]);\n}\n\ndata = [{label: 'Power applied', data: pwdata, color: \"green\"},\n {label: 'Voltage measured', data: vdata, color: \"red\", yaxis: 2},\n {label: 'Power reflected', data: rdata, color: \"yellow\"}];\n\nreturn data;",
"xticks": "timelength = datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000*2;\nxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-XAxis\"][\"value\"];\n\nif (timelength > xdata[xdata.length-1]) {\n timelength = xdata[xdata.length-1];\n}\n\nxtick = [];\nfor (i = 0; i < 11; i += 1) {\n\txtick.push([timelength*i/10, (timelength*i/10).toFixed(3).toString()]);\n}\n\nxtick[5][1] = xtick[5][1]+\"<br>t [ms]\";\nreturn xtick;\n\n",
"yticks": "datasources[\"Clock\"][\"numeric_value\"]\n\nif (typeof axes === 'undefined') {\n return;\n}\n\naxes.yaxis.options.position = \"left\";\naxes.yaxis.options.min = 0;\n\nytick = [];\nfor (i = 0; i < axes.yaxis.ticks.length-1; i += 1) {\n\tytick.push([axes.yaxis.ticks[i][\"v\"], axes.yaxis.ticks[i][\"label\"]]);\n}\n\nytick.push([axes.yaxis.ticks[axes.yaxis.ticks.length-1][\"v\"], \"P [kW]\"]);\naxes.yaxis.options.ticks = ytick;\n\naxes.y2axis.options.position = \"right\";\naxes.y2axis.options.min = 0;\n\ny2tick = [];\nfor (i = 0; i < axes.y2axis.ticks.length-1; i += 1) {\n\ty2tick.push([axes.y2axis.ticks[i][\"v\"], axes.y2axis.ticks[i][\"label\"]]);\n}\n\ny2tick.push([axes.y2axis.ticks[axes.y2axis.ticks.length-1][\"v\"], \"V [kV]\"]);\naxes.y2axis.options.ticks = y2tick;\n\nreturn ytick;",
"points": false,
"tooltip": false,
"zoom": "xy"
}
}
]
},
{
"title": "Average power applied to the RFQ",
"width": 1,
"row": {
"1": 17,
"2": 17,
"3": 17,
"4": 17,
"9": 27,
"10": 27,
"11": 27,
"12": 27,
"14": 27
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"9": 1,
"10": 1,
"11": 1,
"12": 1,
"14": 1
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"title": "",
"size": "regular",
"value": "datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI6-SMonAvg-Mag\"][\"value\"].toFixed(3)",
"sparkline": false,
"animate": true,
"units": "kW"
}
}
]
},
{
"title": "Measured Voltage in the RFQ",
"width": 1,
"row": {
"1": 21,
"2": 17,
"3": 17,
"4": 17,
"9": 17,
"10": 17,
"11": 17,
"14": 17
},
"col": {
"1": 1,
"2": 2,
"3": 2,
"4": 2,
"9": 2,
"10": 2,
"11": 2,
"14": 2
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI0-SMonAvg-Mag\"][\"value\"].toFixed(3)",
"animate": true,
"units": "kV"
}
}
]
},
{
"title": "Pulse Width",
"width": 1,
"row": {
"1": 29,
"2": 21,
"3": 17,
"4": 17,
"9": 27,
"10": 27,
"11": 27,
"12": 27,
"14": 27
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 3,
"9": 3,
"10": 3,
"11": 3,
"12": 3,
"14": 3
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "(datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000).toFixed(3)",
"animate": true,
"units": "ms"
}
}
]
},
{
"title": "Repetition Rate",
"width": 1,
"row": {
"1": 25,
"2": 21,
"3": 21,
"4": 17,
"9": 27,
"10": 27,
"11": 27,
"12": 27,
"14": 27
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 4,
"9": 2,
"10": 2,
"11": 2,
"12": 2,
"14": 2
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "Math.round(datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:CycleFreq-RB\"][\"value\"])",
"sparkline": false,
"animate": true,
"units": "Hz"
}
}
]
},
{
"title": "PSS1 MODE OF OPERATION",
"width": 1,
"row": {
"1": 33,
"2": 49,
"3": 21,
"4": 21,
"9": 37,
"10": 37,
"13": 37,
"15": 37
},
"col": {
"1": 1,
"2": 1,
"3": 2,
"4": 1,
"9": 1,
"10": 1,
"13": 1,
"15": 1
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "switch(datasources[\"POS\"][\"AccPSS:PSS-Area-1:PSSMode\"][\"value\"]) {\n case 0:\n return \"Alarm\";\n break;\n case 1:\n return \"Open Access\";\n break;\n case 2:\n return \"Search\";\n break; \n case 3:\n return \"Tunnel Closed\";\n break;\n case 4:\n return \"Beam On\";\n break;\n case 5:\n return \"RM Interlock\";\n break;\n case 6:\n return \"RP Survey\";\n break;\n case 7:\n return \"Restricted Access\";\n break;\n default:\n // code block\n}",
"animate": false
}
}
]
},
{
"title": "Shift ID",
"width": 1,
"row": {
"1": 37,
"2": 53,
"3": 21,
"4": 21,
"5": 7,
"6": 7,
"7": 7,
"9": 7,
"10": 7,
"11": 7,
"12": 7,
"13": 7,
"14": 7,
"15": 7
},
"col": {
"1": 1,
"2": 1,
"3": 3,
"4": 2,
"5": 1,
"6": 1,
"7": 1,
"9": 1,
"10": 1,
"11": 1,
"12": 1,
"13": 1,
"14": 1,
"15": 1
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "datasources[\"POS\"][\"NSO:Ops:SID\"][\"value\"]",
"animate": false
}
}
]
},
{
"title": "Control Room Message",
"width": 1,
"row": {
"1": 41,
"2": 57,
"3": 25,
"4": 21,
"9": 17,
"10": 17,
"11": 17,
"12": 17,
"13": 17,
"14": 17,
"15": 17,
"16": 17
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 3,
"9": 3,
"10": 3,
"11": 3,
"12": 3,
"13": 3,
"14": 3,
"15": 3,
"16": 3
},
"col_width": 2,
"widgets": [
{
"type": "text_widget",
"settings": {
"size": "regular",
"value": "datasources[\"POS\"][\"NSO:Ops:Msg\"][\"value\"]",
"animate": false
}
}
]
},
{
"title": "TS2 - Klystrons",
"width": 1,
"row": {
"1": 45,
"2": 25,
"3": 29,
"4": 25,
"5": 1,
"9": 1,
"10": 1,
"11": 1
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"5": 5,
"9": 5,
"10": 5,
"11": 5
},
"col_width": 4,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 3,
"value": "data = [{label: 'Klystron 1 powering Cavities 3 and 4', data: datasources[\"TS2\"][\"TS2-010:RFS-DIG-101:AI3-SMonAvg-Mag\"], color: \"green\"},\n {label: 'Klystron 2 powering Cavities 1 and 2', data: datasources[\"TS2\"][\"TS2-020:RFS-DIG-101:AI3-SMonAvg-Mag\"], color: \"red\"}];\n\nreturn data;",
"x_timestamp": true,
"zoom": ""
}
}
]
},
{
"title": "TS2 - Pulse length and Duty cycle",
"width": 1,
"row": {
"1": 53,
"2": 33,
"3": 37,
"4": 33,
"5": 1,
"10": 5,
"12": 5,
"13": 5,
"14": 5
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 3,
"5": 5,
"10": 9,
"12": 9,
"13": 9,
"14": 9
},
"col_width": 2,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 3,
"value": "data = [{label: \"Pulse length\", data: datasources[\"TS2\"][\"TS2-010:Ctrl-EVM-101:RFWidth-RB\"], yaxis: 2},\n {label: \"Duty cycle\", data: datasources[\"TS2\"][\"TS2-010:Ctrl-EVM-101:Mxc0-Frequency-RB\"]}];\n\nreturn data;",
"xticks": "",
"x_timestamp": true,
"zoom": ""
}
}
]
},
{
"title": "Current time",
"width": 1,
"row": {
"1": 69,
"2": 53,
"3": 37,
"4": 41,
"5": 19,
"6": 19,
"9": 19,
"10": 19,
"11": 19,
"12": 19,
"13": 19,
"14": 19,
"15": 19,
"16": 19
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 1,
"5": 1,
"6": 1,
"9": 1,
"10": 1,
"11": 1,
"12": 1,
"13": 1,
"14": 1,
"15": 1,
"16": 1
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "<div id=\"uhr\"></div>\n<script type=\"text/javascript\" src=\"./js/bahnhofsuhr.js\"></script>\n<script type=\"text/javascript\">\n var uhr = new Bahnhofsuhr(\"uhr\", {showBorder: true, showShadow: false});\nwindow.onresize = uhr.scale;\n</script>",
"height": 2
}
}
]
},
{
"title": "TS2 - Vacuum",
"width": 1,
"row": {
"1": 61,
"2": 41,
"3": 47,
"4": 33,
"7": 1,
"9": 1,
"12": 1,
"13": 1,
"14": 1,
"15": 1
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"7": 7,
"9": 7,
"12": 7,
"13": 7,
"14": 7,
"15": 7
},
"col_width": 2,
"widgets": [
{
"type": "flot_extended_plugin",
"settings": {
"plot_type": "line",
"legend": true,
"height": 3,
"value": "data = [{label: 'Cavity 1', data: datasources[\"TS2\"][\"TS2-010CRM:Vac-VGC-10000:PrsR\"]},\n {label: 'Cavity 2', data: datasources[\"TS2\"][\"TS2-010CRM:Vac-VGC-20000:PrsR\"]},\n {label: 'Cavity 3', data: datasources[\"TS2\"][\"TS2-010CRM:Vac-VGC-30000:PrsR\"]},\n {label: 'Cavity 4', data: datasources[\"TS2\"][\"TS2-010CRM:Vac-VGC-40000:PrsR\"]}];\n\nreturn data;",
"x_timestamp": true,
"zoom": ""
}
}
]
}
],
"datasources": [
{
"name": "POS",
"type": "JSON",
"settings": {
"url": "/data/api/v1/caget/RFQ-010:RFS-DIG-101:AI0-SMonAvg-Mag,AccPSS:PSS-Area-1:PSSMode,RFQ-010:RFS-DIG-101:AI6-SMonAvg-Mag,RFQ-010:RFS-EVR-101:CycleFreq-RB,RFQ-010:RFS-EVR-101:RFSyncWdt-SP,NSO:Ops:SID,NSO:Ops:Msg,NSO:Ops:SL,RFQ-010:RFS-DIG-101:Dwn6-Cmp0,RFQ-010:RFS-DIG-101:Dwn6-XAxis,RFQ-010:RFS-DIG-101:Dwn0-Cmp0,RFQ-010:RFS-DIG-101:Dwn3-Cmp0,RFQ-010:RFS-DIG-101:Dwn0-XAxis,RFQ-010:RFS-DIG-101:Dwn3-XAxis",
"use_thingproxy": false,
"refresh": 10,
"method": "GET"
}
},
{
"name": "Clock",
"type": "clock",
"settings": {
"refresh": 1,
"name": "Clock"
}
},
{
"name": "TS2",
"type": "JSON",
"settings": {
"url": "/data/api/v1/archiver/TS2-010:Ctrl-EVM-101:RFWidth-RB,TS2-020:RFS-DIG-101:AI3-SMonAvg-Mag,TS2-010:RFS-DIG-101:AI3-SMonAvg-Mag,TS2-010:Ctrl-EVM-101:Mxc0-Frequency-RB,TS2-010CRM:Vac-VGC-10000:PrsR,TS2-010CRM:Vac-VGC-20000:PrsR,TS2-010CRM:Vac-VGC-30000:PrsR,TS2-010CRM:Vac-VGC-40000:PrsR/1620000/100/freeboard",
"use_thingproxy": true,
"refresh": 10,
"method": "GET"
}
}
],
"columns": 4
}