-
Emanuele Laface authoredEmanuele Laface authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
dashboard.json 17.47 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: 280px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</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: 200px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</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: 100px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</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 = \"Contacts\";\n}\n\nreturn text",
"height": 2
}
}
]
},
{
"title": "Local Control Room",
"width": 1,
"row": {
"1": 7,
"2": 7,
"3": 7,
"4": 7,
"5": 7,
"6": 7,
"7": 7
},
"col": {
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"5": 1,
"6": 1,
"7": 1
},
"col_width": 1,
"widgets": [
{
"type": "text_widget",
"settings": {
"title": "Shift ID",
"size": "regular",
"value": "datasources[\"Contacts\"][\"NSO:Ops:SID\"][\"value\"]",
"animate": true
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Message</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n <div class=\"tw-value\" style=\"font-size: 20px; max-width: 100%;\">`+datasources[\"Contacts\"][\"NSO:Ops:Msg\"][\"value\"]+`</div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 2
}
},
{
"type": "text_widget",
"settings": {
"title": "Shift Leader",
"size": "regular",
"value": "datasources[\"Contacts\"][\"NSO:Ops:SL\"][\"value\"]",
"animate": true
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Shift Leader Phone</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:Phone\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:Phone\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Shift Leader Mobile</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:SLPhone\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:SLPhone\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Shift Leader Email</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 20px;\"><a href=\"mailto:`+datasources[\"Contacts\"][\"NSO:Ops:SLEmail\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:SLEmail\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
},
{
"type": "text_widget",
"settings": {
"title": "Operator",
"size": "regular",
"value": "datasources[\"Contacts\"][\"NSO:Ops:OP\"][\"value\"]",
"animate": true
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Operator Phone</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OPPhone\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OPPhone\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "Test Stand 2",
"width": 1,
"row": {
"1": 27,
"2": 7,
"3": 7,
"4": 7,
"6": 7,
"7": 7
},
"col": {
"1": 1,
"2": 2,
"3": 2,
"4": 2,
"6": 2,
"7": 2
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Message</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n <div class=\"tw-value\" style=\"font-size: 20px; max-width: 100%;\">`+datasources[\"Contacts\"][\"TS2:Ops:Msg\"][\"value\"]+`</div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 2
}
},
{
"type": "text_widget",
"settings": {
"title": "Shift Leader",
"size": "regular",
"value": "datasources[\"Contacts\"][\"TS2:Ops:SL\"][\"value\"]",
"animate": true
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Phone</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"TS2:Ops:SLPhone\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"TS2:Ops:SLPhone\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Mobile</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"TS2:Ops:SLPhone\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"TS2:Ops:SLPhone\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
},
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n <h2 class=\"section-title tw-title tw-td\">Email</h2>\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 20px;\"><a href=\"mailto:`+datasources[\"Contacts\"][\"TS2:Ops:SLEmail\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"TS2:Ops:SLEmail\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "On-Call Leader",
"width": 1,
"row": {
"1": 41,
"2": 21,
"3": 7,
"4": 7,
"6": 7,
"7": 7
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 3,
"6": 3,
"7": 3
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OC\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OC\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "On-Call Cryogenic Expert",
"width": 1,
"row": {
"1": 45,
"2": 25,
"3": 11,
"4": 11,
"5": 7,
"6": 7,
"7": 7
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 3,
"5": 4,
"6": 4,
"7": 4
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OCC\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OCC\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "On-Call Infrastructure Expert",
"width": 1,
"row": {
"1": 49,
"2": 29,
"3": 15,
"4": 15,
"6": 21,
"7": 21
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 3,
"6": 1,
"7": 1
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OCI\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OCI\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "On-Call Electrical Technician",
"width": 1,
"row": {
"1": 31,
"2": 33,
"3": 19,
"4": 19,
"6": 21,
"7": 21
},
"col": {
"1": 1,
"2": 2,
"3": 3,
"4": 3,
"6": 3,
"7": 3
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OCE\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OCE\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
},
{
"title": "On-Call Radiation Protection",
"width": 1,
"row": {
"3": 23
},
"col": {
"3": 3
},
"col_width": 1,
"widgets": [
{
"type": "html",
"settings": {
"html": "doc=`\n<div class=\"widget\" data-bind=\"widget: true, css:{fillsize:fillSize}\">\n <div class=\"tw-display\">\n <div class=\"tw-tr\">\n </div>\n <div class=\"tw-tr\">\n \t<div class=\"tw-value-wrapper tw-td\">\n\t\t\t\t<div class=\"tw-value\" style=\"position: static; font-size: 30px; margin-top: -5px\"><a href=\"tel:`+datasources[\"Contacts\"][\"NSO:Ops:OCRP\"][\"value\"]+`\">`+datasources[\"Contacts\"][\"NSO:Ops:OCRP\"][\"value\"]+`</a></div>\n <div class=\"tw-unit\" style=\"display: none;\"></div>\n </div>\n </div>\n <div class=\"tw-tr\"><div class=\"tw-sparkline tw-td\" style=\"display: none;\"></div>\n </div>\n</div>\n`\nreturn doc;",
"height": 1
}
}
]
}
],
"datasources": [
{
"name": "Contacts",
"type": "JSON",
"settings": {
"url": "/data/api/v1/caget/NSO:Ops:OCRP,NSO:Ops:SID,NSO:Ops:Msg,NSO:Ops:SL,NSO:Ops:Phone,NSO:Ops:SLPhone,NSO:Ops:SLEmail,NSO:Ops:OP,NSO:Ops:OPPhone,TS2:Ops:Msg,TS2:Ops:SL,TS2:Ops:SLPhone,TS2:Ops:SLPhone,TS2:Ops:SLPhone,TS2:Ops:SLEmail,NSO:Ops:OC,NSO:Ops:OCC,NSO:Ops:OCI,NSO:Ops:OCE",
"use_thingproxy": false,
"refresh": 10,
"method": "GET"
}
},
{
"name": "Clock",
"type": "clock",
"settings": {
"refresh": 1
}
}
],
"columns": 3
}