diff --git a/Ivette/src/renderer/Application.js b/Ivette/src/renderer/Application.js index 8129a62e076ad4affd2af6b508112668c9ada69e..5106290f11ac14491add16ca7e7bb7d3ab2bbab6 100644 --- a/Ivette/src/renderer/Application.js +++ b/Ivette/src/renderer/Application.js @@ -14,6 +14,7 @@ import './style.css' ; import 'dome/misc/exports' ; import { LabView, View, Group, Component } from 'frama-c/labviews' ; +import ServerControl from './ServerControl' ; // -------------------------------------------------------------------------- // --- Main View @@ -55,6 +56,9 @@ export default (function() { </Group> </LabView> </Splitter> + <Toolbar.ToolBar> + <ServerControl/> + </Toolbar.ToolBar> </Vfill> ); diff --git a/Ivette/src/renderer/ServerControl.js b/Ivette/src/renderer/ServerControl.js new file mode 100644 index 0000000000000000000000000000000000000000..166217e1f8b3e01bdef6e32352fe107b08f93411 --- /dev/null +++ b/Ivette/src/renderer/ServerControl.js @@ -0,0 +1,49 @@ +// -------------------------------------------------------------------------- +// --- Console +// -------------------------------------------------------------------------- + +import React from 'react' ; +import Dome from 'dome' ; +import Server from 'frama-c/server' ; + +import { Filler, Button } from 'dome/layout/toolbars' ; +import { LED } from 'dome/controls/buttons' ; +import { Label, Code } from 'dome/controls/labels' ; + +export default (function(props) { + Dome.useUpdate( Server.SERVER ); + let status = Server.getStatus(); + let led, blink, error ; + switch(status) { + case Server.RUNNING: + led = Server.isPending() ? 'positive' : 'active' ; + break; + case Server.IDLE: + led = 'inactive' ; + break; + case Server.STARTED: + led = 'active' ; + blink = true ; + break; + case Server.KILLING: + led = 'negative' ; + blink = true ; + break; + case Server.RESTART: + led = 'warning' ; + blink = true ; + break; + case Server.FAILED: + led = 'negative' ; + blink = false ; + error = Server.getError(); + } + return ( + <React.Fragment> + <LED status={status} blink={blink} /> + { error && <Label icon='WARNING' label={error}/> } + <Filler/> + <Code>{Server.getPending()} rq.</Code> + </React.Fragment> + ); +});