Use AJAX for generation status

This commit is contained in:
Némunaire 2015-01-18 09:10:42 +01:00 committed by Nemunaire
commit 7031ebc907
7 changed files with 76 additions and 47 deletions

View file

@ -83,25 +83,15 @@ if ($n && $p[0] == SALT_ADMIN)
case "generation": case "generation":
case "generation/": case "generation/":
case "generation/clear": case "generation/clear":
case "generation/clear/":
case "generation/custom": case "generation/custom":
case "generation/custom/":
case "generation/errors": case "generation/errors":
case "generation/errors/":
case "generation/full": case "generation/full":
case "generation/full/":
case "generation/freeze": case "generation/freeze":
case "generation/freeze/":
case "generation/unfreeze": case "generation/unfreeze":
case "generation/unfreeze/":
case "generation/home": case "generation/home":
case "generation/home/":
case "generation/nginx": case "generation/nginx":
case "generation/nginx/":
case "generation/team": case "generation/team":
case "generation/team/":
case "generation/sync": case "generation/sync":
case "generation/sync/":
$page = require("admin/generation.php"); $page = require("admin/generation.php");
break; break;

View file

@ -48,12 +48,17 @@ if (count($p) > 2)
break; break;
} }
} }
elseif (count($p) > 1) {
header("Content-type: application/xml");
if (!empty($ret)) $queue = explode("\n", pipe_backend_scheduler("show"));
{ unset($queue[0], $queue[1]);
$template->assign("return", $ret); $template->assign("queue", array_filter($queue, function($var){ return !empty($var); }));
return "admin/generation";
return "admin/generation_status";
} }
header("Location: /".SALT_ADMIN."/"); header("Content-type: application/xml");
exit();
$template->assign("return", $ret);
return "admin/generation";

View file

@ -36,10 +36,4 @@ if (file_exists($srv_file))
openssl_x509_parse(file_get_contents($srv_file))); openssl_x509_parse(file_get_contents($srv_file)));
} }
/* GENERATION */
$queue = explode("\n", pipe_backend_scheduler("show"));
unset($queue[0], $queue[1]);
$template->assign("queue", array_filter($queue, function($var){ return !empty($var); }));
return "admin/home"; return "admin/home";

View file

@ -1,10 +1,4 @@
{extends file="admin/layout.tpl"} <?xml version="1.0" encoding="UTF-8"?>
{block name=content} <gen>
<h1> <logs>{$return|escape}</logs>
Génération </gen>
</h1>
{if isset($return)}
<h2>Sortie</h2>
<pre>{$return|escape}</pre>
{/if}
{/block}

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<queue>
{foreach from=$queue item=itm}
<item>{$itm}</item>
{/foreach}
</queue>

View file

@ -86,32 +86,29 @@
<th>File d'attente</th> <th>File d'attente</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="genst">
{foreach from=$queue item=itm key=k}
<tr> <tr>
<td{if $k == 2} class="{if $itm == "empty!"}warning{else}success{/if}"{/if}> <td>Pending...</td>
{$itm}
</td>
</tr> </tr>
{/foreach}
</tbody> </tbody>
</table> </table>
</div> </div>
<pre class="col-xs-4" id="logs"></pre>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="/{$SALT_ADMIN}/generation/full" class="btn btn-default">Complet</a> <a href="/{$SALT_ADMIN}/generation/full" onclick="call_gen('full'); return false" class="btn btn-default">Complet</a>
<a href="/{$SALT_ADMIN}/generation/home" class="btn btn-default">Accueil</a> <a href="/{$SALT_ADMIN}/generation/home" onclick="call_gen('home'); return false" class="btn btn-default">Accueil</a>
<a href="/{$SALT_ADMIN}/generation/errors" class="btn btn-danger">Pages d'erreurs</a><br> <a href="/{$SALT_ADMIN}/generation/errors" onclick="call_gen('errors'); return false" class="btn btn-danger">Pages d'erreurs</a><br>
<a href="/{$SALT_ADMIN}/generation/sync" class="btn btn-info">Synchro légère</a> <a href="/{$SALT_ADMIN}/generation/sync" onclick="call_gen('sync'); return false" class="btn btn-info">Synchro légère</a>
<a href="/{$SALT_ADMIN}/generation/clear" class="btn btn-warning">Vider la file d'attente</a><br> <a href="/{$SALT_ADMIN}/generation/clear" onclick="call_gen('clear'); return false" class="btn btn-warning">Vider la file d'attente</a><br>
<a href="/{$SALT_ADMIN}/generation/freeze" class="btn btn-danger">Freeze</a> <a href="/{$SALT_ADMIN}/generation/freeze" onclick="call_gen('freeze'); return false" class="btn btn-danger">Freeze</a>
<a href="/{$SALT_ADMIN}/generation/unfreeze" class="btn btn-success">Unfreeze</a> <a href="/{$SALT_ADMIN}/generation/unfreeze" onclick="call_gen('unfreeze'); return false" class="btn btn-success">Unfreeze</a>
<form method="post" action="/{$SALT_ADMIN}/generation/team" role="form" class="form-inline"> <form method="post" action="/{$SALT_ADMIN}/generation/team" onsubmit="call_gen('team'); return false" role="form" class="form-inline">
<div class="form-group"> <div class="form-group">
<input type="input" class="form-control" id="regenteam" name="team" placeholder="Team to regen"> <input type="input" class="form-control" id="regenteam" name="team" placeholder="Team to regen">
<button type="submit" class="btn btn-primary">Regénérer</button> <button type="submit" class="btn btn-primary">Regénérer</button>
</div> </div>
</form> </form>
<form method="post" action="/{$SALT_ADMIN}/generation/custom" role="form" class="form-inline"> <form method="post" action="/{$SALT_ADMIN}/generation/custom" onsubmit="call_gen('custom'); return false" role="form" class="form-inline">
<div class="form-group"> <div class="form-group">
<input type="input" class="form-control" id="cmds" name="cmds" placeholder="Custom commands, : separated"> <input type="input" class="form-control" id="cmds" name="cmds" placeholder="Custom commands, : separated">
<button type="submit" class="btn btn-warning">Envoyer</button> <button type="submit" class="btn btn-warning">Envoyer</button>
@ -121,3 +118,45 @@
</div> </div>
</div> </div>
{/block} {/block}
{block name=end2}
<script type="text/javascript">
function call_gen(which) {
if (which == "team") datas = { 'team': $('#regenteam').val() }
else if (which == "custom") datas = { 'cmds': $('#cmds').val() }
else datas = { }
$.ajax({
type: 'POST',
data: datas,
url: './generation/' + which,
success: function(data){
$('#logs').html($(data).find('logs').text());
},
error: function() {
$('#logs').html('Oops! an error occurs during command execution');
}
});
}
function refresh_state() {
$.ajax({
type: 'GET',
url: './generation',
success: function(data){
$('#genst').empty();
$(data).find('item').each(function(i){
if (i == 0 && $(this).text() == "empty!")
color = "warning";
else if (i == 0)
color = "success";
else
color = "";
$('#genst').append('<tr><td class="' + color + '">' + $(this).text() + '</td></tr>') })
},
error: function() {
$('#genst').html('<tr><td class="danger">Oops! an error occurs during status refresh</td></tr>');
}
});
};
setInterval(refresh_state, 1000);
</script>
{/block}

View file

@ -16,6 +16,7 @@
{/if} {/if}
update_end(); update_end();
</script> </script>
{block name=end2}{/block}
{/block} {/block}
{block name=body} {block name=body}