[Update] Manage history order + State `machineDefault/getState`"
[Todo] Test
This commit is contained in:
parent
2aa61260c6
commit
87cf75938e
|
@ -6,6 +6,7 @@
|
||||||
use \error\core\Error;
|
use \error\core\Error;
|
||||||
use \error\core\Err;
|
use \error\core\Err;
|
||||||
use \database\core\Repo;
|
use \database\core\Repo;
|
||||||
|
use \api\core\Request;
|
||||||
|
|
||||||
class machineDefault{
|
class machineDefault{
|
||||||
|
|
||||||
|
@ -315,6 +316,110 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* RETURN MACHINE STATE
|
||||||
|
*
|
||||||
|
* @id_machine<int> UID of the machine
|
||||||
|
*
|
||||||
|
* @return state<string> Machine state
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getState($params){
|
||||||
|
extract($params);
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Get machine info
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Write request */
|
||||||
|
$machine_req = new Request('machineDefault/getById', ['id_machine' => $id_machine]);
|
||||||
|
|
||||||
|
/* (2) Execute request */
|
||||||
|
$machine_res = $machine_req->dispatch();
|
||||||
|
|
||||||
|
/* (3) Manage error */
|
||||||
|
if( $machine_res->error->get() != Err::Success )
|
||||||
|
return [ 'error' => $machine_res->error ];
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Get action id=>name
|
||||||
|
=========================================================*/
|
||||||
|
$action = [];
|
||||||
|
|
||||||
|
/* (1) Write request */
|
||||||
|
$action_req = new Repo('action/getAll', []);
|
||||||
|
|
||||||
|
/* (2) Manage error */
|
||||||
|
if( $action_req->error->get() != Err::Success )
|
||||||
|
return [ 'error' => $action_req->error ];
|
||||||
|
|
||||||
|
/* (3) Create association array */
|
||||||
|
foreach($action_req->answer() as $a)
|
||||||
|
$action[ strtolower($a['name']) ] = $a['id_action'];
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] Get history for the machine
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Write request */
|
||||||
|
$history_req = new Repo('history/getByIdMachine', [$id_machine]);
|
||||||
|
|
||||||
|
/* (2) Manage error */
|
||||||
|
if( $history_req->error->get() != Err::Success )
|
||||||
|
return [ 'error' => $history_req->error ];
|
||||||
|
|
||||||
|
/* (3) Extract history */
|
||||||
|
$history = $history_req->answer();
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] Process state
|
||||||
|
=========================================================*/
|
||||||
|
|
||||||
|
/* (1) LOCKED (last = lock)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
if( count($history) > 0 && $history[0]['id_action'] == $action['lock'] )
|
||||||
|
return [ 'state' => 'locked' ];
|
||||||
|
|
||||||
|
/* (2) STOPPED (last = unlock | stop)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
if( count($history) > 0 && in_array($history[0]['id_action'], [$action['stop'], $action['unlock']]) )
|
||||||
|
return [ 'state' => 'stopped' ];
|
||||||
|
|
||||||
|
/* (3) SIGNALED (start|stop ..... signal)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
if( count($history) > 0 && $history[0]['id_action'] == $action['signal'] )
|
||||||
|
return [ 'state' => 'signaled' ];
|
||||||
|
|
||||||
|
for( $c = 1 ; $c < count($history) ; $c++ ){
|
||||||
|
|
||||||
|
/* (1) If (start|stop), continue to search */
|
||||||
|
if( in_array($history[$c]['id_action'] , [$action['start'], $action['stop']]) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* (2) If (signal) found, therefore it is signaled */
|
||||||
|
else if( $history[$c]['id_action'] == $action['signal'] )
|
||||||
|
return [ 'state' => 'signaled' ];
|
||||||
|
|
||||||
|
/* (4) STARTED (last state)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
else
|
||||||
|
return [ 'state' => 'started' ];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (5) DETACHED (no state)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
return [ 'state' => 'detached' ];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
->join('id_action', $actions)
|
->join('id_action', $actions)
|
||||||
->select('id_history')
|
->select('id_history')
|
||||||
->select('timestamp')
|
->select('timestamp')
|
||||||
->orderby('timestamp', Rows::ORDER_ASC);
|
->orderby('timestamp', Rows::ORDER_DESC);
|
||||||
|
|
||||||
return $history->fetch();
|
return $history->fetch();
|
||||||
}
|
}
|
||||||
|
|
|
@ -299,6 +299,7 @@
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$user = Table::get('user')
|
$user = Table::get('user')
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
|
->orderby('username', Rows::ORDER_ASC)
|
||||||
->select('*');
|
->select('*');
|
||||||
|
|
||||||
return $user->fetch();
|
return $user->fetch();
|
||||||
|
|
|
@ -40,8 +40,16 @@
|
||||||
return $answer->get('machines');
|
return $answer->get('machines');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
$twig->addFunction(new \Twig_Function('f_getstate', function(){
|
$twig->addFunction(new \Twig_Function('f_getstate', function($id_machine){
|
||||||
return 'detached';
|
/* (1) Write / Execute request */
|
||||||
|
$req = new Request('machineDefault/getState', ['id_machine' => $id_machine]);
|
||||||
|
$res = $req->dispatch();
|
||||||
|
|
||||||
|
/* (2) Manage error */
|
||||||
|
if( $res->error->get() != Err::Success )
|
||||||
|
return 'detached';
|
||||||
|
|
||||||
|
return $res->get('state');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
$twig->addFunction(new \Twig_Function('f_clusters', function($id_machine){
|
$twig->addFunction(new \Twig_Function('f_clusters', function($id_machine){
|
||||||
|
|
|
@ -348,6 +348,17 @@
|
||||||
"output": {
|
"output": {
|
||||||
"status": { "description": "Status de la suppression.", "type": "boolean" }
|
"status": { "description": "Status de la suppression.", "type": "boolean" }
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"POST::getState": {
|
||||||
|
"description": "Retourne l'état d'une machine.",
|
||||||
|
"permissions": ["warehouse", "admin"],
|
||||||
|
"parameters": {
|
||||||
|
"id_machine": { "description": "UID de la machine", "type": "id" }
|
||||||
|
},
|
||||||
|
"output": {
|
||||||
|
"state": { "description": "Etat de la machine", "type": "text" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
"search",
|
"search",
|
||||||
|
|
||||||
"getAll",
|
"getAll",
|
||||||
"getByUser",
|
"getByIdUser",
|
||||||
"getByMachine",
|
"getByIdMachine",
|
||||||
"getByCluster"
|
"getByIdAction"
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -123,8 +123,8 @@
|
||||||
|
|
||||||
background-color: #ddd;
|
background-color: #ddd;
|
||||||
|
|
||||||
&[data-state='stop']{ background-color: #ddd; }
|
&[data-state='stopped']{ background-color: #ddd; }
|
||||||
&[data-state='start']{ background-color: #22E07B; }
|
&[data-state='started']{ background-color: #22E07B; }
|
||||||
&[data-state='signaled']{ background-color: #3897D6; }
|
&[data-state='signaled']{ background-color: #3897D6; }
|
||||||
&[data-state='locked']{ background-color: #EA460A; }
|
&[data-state='locked']{ background-color: #EA460A; }
|
||||||
&[data-state='detached']{ background-color: #AB1EE2; }
|
&[data-state='detached']{ background-color: #AB1EE2; }
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue