{ "version": 1, "header_image": "", "allow_edit": true, "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", "width": 1, "row": { "1": 31, "2": 19, "3": 7, "4": 7, "5": 7, "7": 7 }, "col": { "1": 1, "2": 1, "3": 2, "4": 3, "5": 3, "7": 3 }, "col_width": 2, "widgets": [ { "type": "indicator", "settings": { "value": "timelength = datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000;\npwxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-XAxis.[0:100:-1]\"][\"value\"];\npwydata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-Cmp0.[0:100:-1]\"][\"value\"];\n\npower = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI2-SMonAvg-Mag\"][\"value\"]-datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI3-SMonAvg-Mag\"][\"value\"]+datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI4-SMonAvg-Mag\"][\"value\"]-datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI5-SMonAvg-Mag\"][\"value\"];\n\npwdata = 0;\ncounts = 0;\n\nfor (i=0; i < pwxdata.length; i++) {\n if (pwxdata[i] > timelength) {\n break;\n }\n\tpwdata += pwydata[i];\n counts += 1;\n}\n\nif (counts == 0) {\n return 0;\n}\n\nif (pwdata/counts < 10) {\n return 0;\n}\n\nreturn 1;", "on_text": "RFQ On", "off_text": "RFQ Off" } }, { "type": "text_widget", "settings": { "title": "Average Power", "size": "regular", "value": "power = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI2-SMonAvg-Mag\"][\"value\"]-datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI3-SMonAvg-Mag\"][\"value\"]+datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI4-SMonAvg-Mag\"][\"value\"]-datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:AI5-SMonAvg-Mag\"][\"value\"];\nreturn power.toFixed(3);", "animate": true, "units": "kW" } }, { "type": "flot_extended_plugin", "settings": { "plot_type": "area", "legend": true, "height": 4, "value": "datasources[\"Clock\"][\"numeric_value\"];\n\ntimelength = datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000*2;\n\npwxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-XAxis.[0:100:-1]\"][\"value\"];\npwydata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-Cmp0.[0:100:-1]\"][\"value\"];\n\npwdata = [];\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\ndata = [{label: 'Power applied [kW]', data: pwdata, color: \"green\"}];\n\nreturn data;", "xticks": "datasources[\"Clock\"][\"numeric_value\"];\n\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\n\ntimelength = datasources[\"POS\"][\"RFQ-010:RFS-EVR-101:RFSyncWdt-SP\"][\"value\"]/1000*2;\nxdata = datasources[\"POS\"][\"RFQ-010:RFS-DIG-101:Dwn6-XAxis.[0:100:-1]\"][\"value\"];\n\nif (timelength > xdata[xdata.length-1]) {\n timelength = xdata[xdata.length-1];\n}\n\nxtick = [];\nsize = 10;\nif (cols == 1) {\n size = 4;\n}\n\nfor (i = 0; i < (size+1); i += 1) {\n xtick.push([timelength*i/size, (timelength*i/size).toFixed(3).toString()]);\n}\nxtick[size/2][1] = xtick[size/2][1]+\"<br>t [ms]\";\n\nreturn xtick;\n\n", "yticks": "", "zoom": "xy" } } ] }, { "title": "Ion Source", "width": 1, "row": { "1": 13, "2": 7, "3": 13, "4": 7, "7": 7, "8": 7 }, "col": { "1": 1, "2": 2, "3": 1, "4": 2, "7": 1, "8": 1 }, "col_width": 1, "widgets": [ { "type": "indicator", "settings": { "value": "datasources[\"POS\"][\"ISrc-CS:ISS-Magtr-01:MwRdy\"][\"value\"]", "on_text": "Magnetron On", "off_text": "Magnetron Off" } }, { "type": "horizontal-linear-gauge", "settings": { "title": "Average Power", "value": "String(datasources[\"POS\"][\"ISrc-CS:ISS-Magtr-01:ForwdPwr-R\"][\"value\"])", "units": "kW", "min_value": 0, "max_value": "600" } }, { "type": "indicator", "settings": { "title": "High Voltage Platform", "value": "datasources[\"POS\"][\"ISrc-CS:ISS-HVPS-01:Pwr-R\"][\"value\"]", "on_text": "String(datasources[\"POS\"][\"ISrc-CS:ISS-HVPS-01:Pwr-R\"][\"value\"])+\" kV\"", "off_text": "String(datasources[\"POS\"][\"ISrc-CS:ISS-HVPS-01:Pwr-R\"][\"value\"])+\" kV\"" } } ] }, { "title": "Permit table", "width": 1, "row": { "1": 7, "2": 7, "3": 7, "4": 7, "7": 11, "8": 11 }, "col": { "1": 1, "2": 1, "3": 1, "4": 1, "7": 2, "8": 2 }, "col_width": 1, "widgets": [ { "type": "indicator", "settings": { "title": "", "value": "datasources[\"POS\"][\"FBIS::beam_permit_ok\"][\"value\"]", "on_text": "FBIS Global Permit", "off_text": "FBIS Global Permit" } }, { "type": "text_widget", "settings": { "title": "PSS1 Mode of Operation", "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": true } } ] }, { "title": "Control Room", "width": 1, "row": { "1": 25, "2": 33, "3": 21, "4": 19, "5": 7, "6": 7, "7": 7, "8": 7, "9": 7, "10": 7, "11": 7, "12": 7, "13": 7, "14": 7, "15": 7 }, "col": { "1": 1, "2": 1, "3": 2, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1 }, "col_width": 2, "widgets": [ { "type": "text_widget", "settings": { "title": "Shift ID", "size": "regular", "value": "datasources[\"POS\"][\"NSO:Ops:SID\"][\"value\"]", "animate": false } }, { "type": "text_widget", "settings": { "title": "Message", "size": "regular", "value": "datasources[\"POS\"][\"NSO:Ops:Msg\"][\"value\"]", "animate": true } } ] }, { "title": "Beam Current [mA]", "width": 1, "row": { "1": 45, "2": 39, "3": 27, "4": 25, "8": 25, "9": 25 }, "col": { "1": 1, "2": 1, "3": 1, "4": 1, "8": 1, "9": 1 }, "col_width": 4, "widgets": [ { "type": "flot_extended_plugin", "settings": { "plot_type": "line", "legend": true, "height": 5, "value": "datasources[\"Clock\"][\"numeric_value\"];\n\nisrcxdata = datasources[\"POS\"][\"ISrc-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\nisrcydata = datasources[\"POS\"][\"ISrc-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1]\"][\"value\"];\nlebtxdata = datasources[\"POS\"][\"LEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\nlebtydata = datasources[\"POS\"][\"LEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1]\"][\"value\"];\nrfqxdata = datasources[\"POS\"][\"RFQ-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\nrfqydata = datasources[\"POS\"][\"RFQ-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1]\"][\"value\"];\nmebt1xdata = datasources[\"POS\"][\"MEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\nmebt1ydata = datasources[\"POS\"][\"MEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1]\"][\"value\"];\nmebt2xdata = datasources[\"POS\"][\"MEBT-010:PBI-BCM-002:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\nmebt2ydata = datasources[\"POS\"][\"MEBT-010:PBI-BCM-002:PRC-TR1-ArrayData.[0:400:-1]\"][\"value\"];\n\nfclebtydata = datasources[\"POS\"][\"LEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:20:-1]\"][\"value\"];\nfcmebtydata = datasources[\"POS\"][\"MEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:20:-1]\"][\"value\"];\n\nisrcdata = [];\nlebtdata = [];\nrfqdata = [];\nmebt1data = [];\nmebt2data = [];\nfclebtdata = [];\nfcmebtdata = [];\n\nfor (i=0; i < isrcxdata.length; i++) {\n\tisrcdata.push([isrcxdata[i], isrcydata[i]]);\n}\nfor (i=0; i < lebtxdata.length; i++) {\n\tlebtdata.push([lebtxdata[i], lebtydata[i]]);\n}\nfor (i=0; i < rfqxdata.length; i++) {\n\trfqdata.push([rfqxdata[i], rfqydata[i]]);\n}\nfor (i=0; i < mebt1xdata.length; i++) {\n\tmebt1data.push([mebt1xdata[i], mebt1ydata[i]]);\n}\nfor (i=0; i < mebt2xdata.length; i++) {\n\tmebt2data.push([mebt2xdata[i], mebt2ydata[i]]);\n}\nfor (i=0; i < fclebtydata.length; i++) { \n\tfclebtdata.push([i*20, fclebtydata[i]]);\n}\nfor (i=0; i < fcmebtydata.length; i++) { \n\tfcmebtdata.push([i*20, fcmebtydata[i]]);\n}\n\ndata = [{label: 'BCM ISrc', data: isrcdata, color: \"blue\"},\n {label: 'BCM LEBT', data: lebtdata, color: \"red\"},\n {label: 'BCM RFQ', data: rfqdata, color: \"green\"},\n {label: 'BCM MEBT 1', data: mebt1data, color: \"pink\"},\n {label: 'BCM MEBT 2', data: mebt2data, color: \"black\"},\n {label: 'FC LEBT', data: fclebtdata, color: \"lime\"},\n {label: 'FC MEBT', data: fcmebtdata, color: \"yellow\"}];\n\nreturn data;", "xticks": "datasources[\"Clock\"][\"numeric_value\"];\n\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\n\ncurrxdata = datasources[\"POS\"][\"ISrc-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1]\"][\"value\"];\ncurrtimelength = currxdata[currxdata.length-1];\n\ncurrxtick = [];\nsize = 10;\nif (cols == 1) {\n size = 4;\n}\n\nfor (i = 0; i < (size+1); i += 1) {\n\tcurrxtick.push([currtimelength*i/size, (currtimelength*i/size/1000).toFixed(3).toString()]);\n}\n\ncurrxtick[size/2][1] = currxtick[size/2][1]+\"<br>t [ms]\";\nreturn currxtick;", "yticks": "", "zoom": "xy" } } ] }, { "title": "Beam Position Monitors [mm]", "width": 1, "row": { "1": 57, "2": 51, "3": 39, "4": 37, "11": 37 }, "col": { "1": 1, "2": 1, "3": 1, "4": 1, "11": 1 }, "col_width": 4, "widgets": [ { "type": "flot_extended_plugin", "settings": { "plot_type": "line", "legend": true, "height": 4, "value": "datasources[\"Clock\"][\"numeric_value\"];\n\nxbpm = [];\nybpm = [];\nfor (i=1; i < 8; i++) {\n xpv = \"MEBT-010:PBI-BPM-00\"+String(i)+\":XP-AvgValue\";\n xvalue = datasources[\"POS\"][xpv][\"value\"];\n if (xvalue == null) {\n xvalue = 0.0;\n }\n xbpm.push([i, xvalue]);\n ypv = \"MEBT-010:PBI-BPM-00\"+String(i)+\":YP-AvgValue\";\n yvalue = datasources[\"POS\"][ypv][\"value\"];\n if (yvalue == null) {\n yvalue = 0.0;\n }\n ybpm.push([i, 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\ncurrxtick = [];\nfor (i = 1; i < 8; i += 1) {\n\tcurrxtick.push([i, String(i)]);\n}\n\ncurrxtick[3][1] = currxtick[3][1]+\"<br>BPM Number\";\nreturn currxtick;", "yticks": "", "zoom": "xy" } } ] } ], "datasources": [ { "name": "POS", "type": "JSON", "settings": { "url": "/data/api/v1/caget/ISrc-CS:ISS-Magtr-01:MwRdy,ISrc-CS:ISS-Magtr-01:ForwdPwr-R,ISrc-CS:ISS-HVPS-01:Pwr-R,RFQ-010:RFS-DIG-101:AI2-SMonAvg-Mag,RFQ-010:RFS-DIG-101:AI3-SMonAvg-Mag,RFQ-010:RFS-DIG-101:AI4-SMonAvg-Mag,RFQ-010:RFS-DIG-101:AI5-SMonAvg-Mag,RFQ-010:RFS-DIG-101:Dwn6-XAxis.[0:100:-1],RFQ-010:RFS-DIG-101:Dwn6-Cmp0.[0:100:-1],ISrc-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1],ISrc-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1],LEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1],LEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1],RFQ-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1],RFQ-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1],MEBT-010:PBI-BCM-001:PRC-TR1-ArrayTimeUs.[0:400:-1],MEBT-010:PBI-BCM-001:PRC-TR1-ArrayData.[0:400:-1],MEBT-010:PBI-BCM-002:PRC-TR1-ArrayTimeUs.[0:400:-1],MEBT-010:PBI-BCM-002:PRC-TR1-ArrayData.[0:400:-1],LEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:20:-1],MEBT-010:PBI-FC-001:TRC2-ArrayData-Comp.[0:20:-1],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,AccPSS:PSS-Area-1:PSSMode,NSO:Ops:SID,NSO:Ops:Msg,RFQ-010:RFS-EVR-101:RFSyncWdt-SP,FBIS::beam_permit_ok, Beam State Status", "use_thingproxy": false, "refresh": 10, "method": "GET", "name": "POS" } }, { "name": "Clock", "type": "clock", "settings": { "refresh": 1, "name": "Clock" } } ], "columns": 4 }