Use backbone to display taskmanager front end

This commit is contained in:
Nicolas Le Goff
2014-02-11 08:46:20 +01:00
parent fa98c42ff3
commit 7025e756bc
31 changed files with 1002 additions and 521 deletions

View File

@@ -1,6 +1,3 @@
{# include js templates #}
{% include 'admin/fields/templates.html.twig' %}
<div id="admin-field-app" class="container-fluid">
{# sbas_id is saved in the dom and used to fetch right models and collections #}
<input type="hidden" name="current_sbas_id" value="{{ sbas_id }}">
@@ -20,5 +17,8 @@
</div>
</div>
{# include js templates #}
{% include 'admin/fields/templates.html.twig' %}
{# bootstrap admin field backbone application #}
<script type="text/javascript" src="{{ path('minifier', { 'f' : 'assets/requirejs/require.js,/scripts/apps/admin/fields/main.js' }) }}"></script>

View File

@@ -107,24 +107,27 @@
}
function enableLink(link) {
$(link).bind('click',function(event){
var dest = link.attr('href');
var method = link.attr("method");
if(dest && dest.indexOf('#') !== 0) {
loadRightAjax(dest);
loadRightAjax(dest, method || "GET");
return false;
}
});
}
function loadRightAjax(url)
function loadRightAjax(url, method)
{
$('#right-ajax').empty().addClass('loading').parent().show();
$.get(url, function(data) {
enableFormsCallback(data);
$.ajax({
type: method,
url: url,
success: function(data) {
enableFormsCallback(data);
}
});
}

View File

@@ -0,0 +1,129 @@
<div class="page-header">
<h1>{{ 'Task Scheduler' | trans }}
<small style="font-size:16px;">
{% set updateTime %}
<span id="pingTime">{{ "now"|date(constant("DateTime::ISO8601")) }}</span>
{% endset %}
{% trans with {'%updateTime%' : updateTime} %}Last update on %updateTime%{% endtrans %}
</small>
</h1>
</div>
<div id="task-manager-app">
<table class="admintable">
<thead>
<tr>
<th></th>
<th>ID</th>
<th>PID</th>
<th>!</th>
<th>{{ "actual status" | trans | upper }}</th>
<th>{{ "scheduled status" | trans | upper }}</th>
<th>{{ "name" | trans | upper }}</th>
</tr>
</thead>
<tbody id="scheduler-view">
<tr>
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a method="POST" href="{{ path('admin_tasks_scheduler_start') }}">
{{ 'Start' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_scheduler_stop') }}">
{{ 'Stop' | trans }}
</a>
</li>
<li>
<a href="{{ path('admin_tasks_scheduler_log') }}">
{{ 'Logs' | trans }}
</a>
</li>
</ul>
</div>
</td>
<td></td>
<td>{{ scheduler["process-id"] }}</td>
<td></td>
<td>{{ scheduler["actual"] }}</td>
<td>{{ scheduler["configuration"] }}</td>
<td>{{ scheduler["name"] }}</td>
</tr>
</tbody>
<tbody id="tasks-list-view">
{% for task in tasks %}
<tr>
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="{{ path('admin_tasks_task_show', {"task" : task["id"] }) }}">
{{ 'Edit' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_start', {"task" : task["id"] }) }}">
{{ 'Start' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_stop', {"task" : task["id"] }) }}">
{{ 'Stop' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_delete', {"task" : task["id"] }) }}">
{{ 'Delete' | trans }}
</a>
</li>
<li>
<a href="{{ path('admin_tasks_task_log', {"task" : task["id"] }) }}">
{{ 'Logs' | trans }}
</a>
</li>
</ul>
</div>
</td>
<td>{% if task["id"] != "taskmanager" %}{{ task["id"] }}{% endif %}</td>
<td>{{ task["process-id"] }}</td>
<td></td>
<td>{{ task["actual"] }}</td>
<td>{{ task["configuration"] }}</td>
<td>{{ task["name"] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<form id="form-create-task" method="post" name="form-create-task" action="{{ path('admin_tasks_task_create') }}">
<select name="job-name">
<option value="">
{{ 'New task' | trans }}
</option>
{% for job in available_jobs %}
<option value="{{ job.getJobId() }}">{{ job.getName() }}</option>
{% endfor %}
</select>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("form[name='form-create-task'] select").bind("change", function() {
$(this).closest('form').submit();
});
});
</script>
{# include js templates #}
{% include 'admin/task-manager/templates.html.twig' %}
<script type="text/javascript" src="{{ path('minifier', { 'f' : 'assets/requirejs/require.js,/scripts/apps/admin/tasks-manager/main.js' }) }}"></script>

View File

@@ -1,140 +0,0 @@
<style type="text/css">
#task-manager td,
#task-manager th {
text-align: center;
}
#task-manager td.menu {
width:40px;
}
#task-manager td.id {
width:40px;
}
#task-manager td.information {
width:30px;
}
#task-manager td.status {
width:80px;
}
#task-manager td.process-id {
width:60px;
}
#task-manager td.taskname {
text-align: left;
width:auto;
}
#task-manager td.id {
font-weight: bold;
}
</style>
<div class="page-header">
<h1>{{ 'admin::tasks: planificateur de taches' | trans }}
<small style="font-size:16px;">
{% set updateTime %}
<span id="pingTime"></span>
{% endset %}
{% trans with {'%updateTime%' : updateTime} %}Last update on %updateTime%{% endtrans %}
</small>
</h1>
</div>
<table id="task-manager" class="admintable table table-striped" cellpadding="0" cellSpacing="0">
<thead>
<tr>
<th class="menu"></th>
<th class="id">ID</th>
<th class="information">{{ 'Informations' | trans }}</th>
<th class="status">{{ 'admin::tasks: statut de la tache' | trans }}</th>
<th class="process-id">{{ 'admin::tasks: process_id de la tache' | trans }}</th>
<th class="taskname">{{ 'admin::tasks: nom de la tache' | trans }}</th>
</tr>
</thead>
<tbody>
<tr id="task_manager_status" class="even">
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a method="POST" href="{{ path ('admin_tasks_scheduler_start') }}">{{ 'Start' | trans }}</a>
</li>
<li>
<a method="POST" href="{{ path ('admin_tasks_scheduler_stop') }}">{{ 'Stop' | trans }}</a>
</li>
<li>
<a href="{{ path ('admin_tasks_scheduler_log') }}">{{ 'Logs' | trans }}</a>
</li>
</ul>
</div>
</td>
<td class="id"></td>
<td class="information"></td>
<td class="status"></td>
<td class="process-id"></td>
<td class="taskname" style="font-weight:bold;">{{ 'admin::tasks: planificateur de taches' | trans }}</td>
</tr>
{% for task in tasks %}
<tr id="task_{{ task.getId() }}" class="{% if loop.index is odd %}odd{% else %}even{% endif %}">
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="{{ path('admin_tasks_task_show', { 'task' : task.getId() }) }}">
{{ 'Edit' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_start', { 'task' : task.getId() }) }}">
{{ 'Start' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_stop', { 'task' : task.getId() }) }}">
{{ 'Stop' | trans }}
</a>
</li>
<li>
<a method="POST" href="{{ path('admin_tasks_task_delete', { 'task' : task.getId() }) }}">
{{ 'Delete' | trans }}
</a>
</li>
<li>
<a href="{{ path('admin_tasks_task_log', { 'task' : task.getId() }) }}">
{{ 'Logs' | trans }}
</a>
</li>
</ul>
</div>
</td>
<td class="id">{{ task.getID() }}</td>
<td class="information"></td>
<td class="status">{{ task.getStatus() }}</td>
<td class="process-id"></td>
<td class="taskname">{{ task.getName() }} [{{ task.getName() }}]</td>
</tr>
{% endfor %}
</tbody>
</table>
<form id="form-create-task" method="post" name="form-create-task" action="{{ path('admin_tasks_task_create') }}">
<select name="job-name">
<option value="">
{{ 'admin::tasks: Nouvelle tache' | trans }}
</option>
{% for job in available_jobs %}
<option value="{{ job.getJobId() }}">{{ job.getName() }}</option>
{% endfor %}
</select>
</form>
<script type="text/javascript">
$(document).ready(function(){
$("form[name='form-create-task'] select").bind("change", function() {
$(this).closest('form').submit();
});
});
</script>

View File

@@ -0,0 +1,75 @@
<script type="text/template" id="task_template">
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="<%- task['urls']['show'] %>">
{{ 'Edit' | trans }}
</a>
</li>
<li>
<a method="POST" href="<%- task['urls']['start'] %>">
{{ 'Start' | trans }}
</a>
</li>
<li>
<a method="POST" href="<%- task['urls']['stop'] %>">
{{ 'Stop' | trans }}
</a>
</li>
<li>
<a method="POST" href="<%- task['urls']['delete'] %>">
{{ 'Delete' | trans }}
</a>
</li>
<li>
<a href="<%- task['urls']['log'] %>">
{{ 'Logs' | trans }}
</a>
</li>
</ul>
</div>
</td>
<td class="idTask"><%- task.id %></td>
<td class="pidTask"><%- task['process-id'] %></td>
<td></td>
<td class="actualTask"><%- task.actual %></td>
<td class="confTask"><%- task.configuration %></td>
<td class="nameTask"><%- task.name %></td>
</script>
<script type="text/template" id="scheduler_template">
<td class="menu">
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a method="POST" href="<%- scheduler['urls']['start'] %>">
{{ 'Start' | trans }}
</a>
</li>
<li>
<a method="POST" href="<%- scheduler['urls']['stop'] %>">
{{ 'Stop' | trans }}
</a>
</li>
<li>
<a href="<%- scheduler['urls']['log'] %>">
{{ 'Logs' | trans }}
</a>
</li>
</ul>
</div>
</td>
<td></td>
<td class="pidScheduler"><%- scheduler['process-id'] %></td>
<td></td>
<td class="actualScheduler"><%- scheduler.actual %></td>
<td class="confScheduler"><%- scheduler.configuration %></td>
<td class="nameScheduler"><%- scheduler.name %></td>
</script>