Difference between revisions of "Widget:GraphInteractivity"
m (first attempt at space state update) |
m (wait, milisecond interval makes no sense -> second) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
<nowiki>{{#widget:</nowiki>{{PAGENAME}}<nowiki>}}</nowiki> | <nowiki>{{#widget:</nowiki>{{PAGENAME}}<nowiki>}}</nowiki> | ||
+ | (supported field for SpaceAPI is <code>interval</code> | ||
This will add javascript logic that enables 'interactivity' to graphs.<br/> | This will add javascript logic that enables 'interactivity' to graphs.<br/> | ||
Line 22: | Line 23: | ||
var g_coloredNodes; | var g_coloredNodes; | ||
− | window.addEventListener( "load", function() | + | var g_interval = <!--{$interval|validate:int|default:0}-->; |
+ | window.addEventListener( "load", function(){g_graphs = document.querySelectorAll( "svg > g.graph" ); | ||
g_coloredNodes = [];//[ [ g_graphs[0].querySelector( "g#h4" ), "green" ] ]; | g_coloredNodes = [];//[ [ g_graphs[0].querySelector( "g#h4" ), "green" ] ]; | ||
Line 37: | Line 39: | ||
} ); | } ); | ||
− | + | if ( g_interval ) | |
− | + | { | |
+ | setInterval( fetchState, g_interval * 1000 ); | ||
+ | fetchState( ); | ||
+ | } | ||
} ); | } ); | ||
Line 57: | Line 62: | ||
_graph.querySelectorAll( "g[id] > *" ).forEach( function( _gNode ) | _graph.querySelectorAll( "g[id] > *" ).forEach( function( _gNode ) | ||
{ | { | ||
− | if ( !_arrNodeColors.some( function( _nodeColor )
| + | if ( !_arrNodeColors.some( function( _nodeColor )
|
+ | { | ||
if ( _nodeColor[0] && _nodeColor[0].getAttribute( "class" ) !== "graph" && _gNode.parentNode.id === _nodeColor[0].id ) | if ( _nodeColor[0] && _nodeColor[0].getAttribute( "class" ) !== "graph" && _gNode.parentNode.id === _nodeColor[0].id ) | ||
− | return _gNode.style.stroke = _nodeColor[1]; | + | return ( _gNode.style.stroke = _nodeColor[1] ); |
return false; | return false; | ||
} ) ) | } ) ) | ||
Line 84: | Line 90: | ||
return; | return; | ||
if ( _event.target.status === 200 ) | if ( _event.target.status === 200 ) | ||
− | _xhr_onload | + | _xhr_onload( _event ); |
//else | //else | ||
− | //_xhr_onerror | + | //_xhr_onerror( _event ); |
− | } | + | }; |
} | } | ||
else | else | ||
{ | { | ||
// Modern xhr | // Modern xhr | ||
− | xhr.onload = _xhr_onload | + | xhr.onload = _xhr_onload( ); |
− | //xhr.onerror = _xhr_onerror | + | //xhr.onerror = _xhr_onerror( ); |
} | } | ||
xhr.open( "GET", "//ackspace.nl/spaceAPI/", true ); | xhr.open( "GET", "//ackspace.nl/spaceAPI/", true ); | ||
Line 103: | Line 109: | ||
// No data needs to be sent along with the request. | // No data needs to be sent along with the request. | ||
xhr.send( null ); | xhr.send( null ); | ||
− | } | + | } |
function _xhr_onload( _event ) | function _xhr_onload( _event ) | ||
Line 124: | Line 130: | ||
var powerstrip = document.querySelector( "g#" + _powerConsumption.name + ">polygon+text" ); | var powerstrip = document.querySelector( "g#" + _powerConsumption.name + ">polygon+text" ); | ||
if ( powerstrip ) | if ( powerstrip ) | ||
− | powerstrip.textContent = "strip " + | + | powerstrip.textContent = "strip " + _powerConsumption.value + _powerConsumption.unit; |
+ | |||
+ | var color; | ||
+ | if ( _powerConsumption.value < 5 ) | ||
+ | color = "lightgray"; | ||
+ | else if ( _powerConsumption.value < 10 ) | ||
+ | color = "green"; | ||
+ | else if ( _powerConsumption.value < 100 ) | ||
+ | color = "lightgreen"; | ||
+ | else if ( _powerConsumption.value < 200 ) | ||
+ | color = "yellow"; | ||
+ | else if ( _powerConsumption.value < 1000 ) | ||
+ | color = "orange"; | ||
+ | else | ||
+ | color = "red"; | ||
− | + | g_coloredNodes.push( [ document.querySelector( "g#" + _powerConsumption.name ), color ] ); | |
− | g_coloredNodes.push( document.querySelector( "g#" + _powerConsumption.name ), color ] ); | ||
} ); | } ); | ||
− | decorateNodes( g_coloredNodes.concat( [ [g_selectedNode, "lightskyblue | + | decorateNodes( g_coloredNodes.concat( [ [g_selectedNode, "lightskyblue" ] ].reverse() ).reverse() ); |
} | } | ||
} | } |
Latest revision as of 17:13, 4 February 2019
This widget allows you to display the Space API data (provided as JSON)
Created by Xopr
Using this widget
To insert this widget, use the following code:
{{#widget:GraphInteractivity}}
(supported field for SpaceAPI is interval
This will add javascript logic that enables 'interactivity' to graphs.
Copy to your site
To use this widget on your site, just install MediaWiki Widgets extension and copy full source code of this page to your wiki as Widget:GraphInteractivity article.