313 lines
16 KiB
XML
313 lines
16 KiB
XML
<metal:block use-macro="main_template">
|
||
<div metal:fill-slot="content">
|
||
|
||
<div class="alert alert-success" tal:condition="message" tal:content="message" />
|
||
|
||
<form id="frm-planninga_list" action="${url}" method="POST" class="form-horizontal">
|
||
<div class="form-group">
|
||
<div class="col-xs-5">
|
||
<a href="/motos_schd/${type}" class="btn btn-default" role="button">
|
||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||
<button class="btn btn-primary" type="submit" name="form.submitted">
|
||
<span class="glyphicon glyphicon-chevron-right"></span> Suivi groupe</button>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<div class="col-xs-12">
|
||
(Veuillez cocher un ou plusieurs élèves pour effectuer un suivi)
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
<table id="planninga_list" class="table table-condensed table-bordered">
|
||
<thead>
|
||
<tr>
|
||
<th></th>
|
||
<th>Nom, Prénom</th>
|
||
<th>Solde</th>
|
||
<th>ETG</th>
|
||
<th>Cat</th>
|
||
<th>1er plateau</th>
|
||
<th>H. prises</th>
|
||
<th>Examens P - R</th>
|
||
<th>St</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
<br />
|
||
<form id="frm-stageb_list" action="${url}" method="POST" class="form-horizontal">
|
||
<div class="form-group" style="margin-left:10px;">
|
||
<button type="button" data-toggle="modal" data-target="#deleteEleveStage" id="deleted_selected" class="btn btn-danger hide" >Supprimer la sélection</button>
|
||
<a class="btn btn-success" tal:condition="stage.VALIDE != 'O'" href="/motos_edit/${type}/${date}/${grp}/0"><span class="glyphicon glyphicon-user"></span> Ajouter éléve</a>
|
||
<button class="btn btn-primary" type="button" tal:condition="code == 9 and stage.VALIDE != 'O' " data-toggle="modal" data-target="#editPlanning" name="form.seance"><span class="glyphicon glyphicon-pencil"></span> Modifier planning</button>
|
||
<button class="btn btn-primary" type="button" tal:condition="code == 9 and stage.VALIDE != 'O' " data-toggle="modal" data-target="#validatePlanning"><span class="glyphicon glyphicon-check"></span> Valider planning</button>
|
||
</div>
|
||
</form>
|
||
<!--edit stage -->
|
||
<div class="modal fade" id="editPlanning" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg">
|
||
<div class="modal-content ">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h4 class="modal-title">Planning ${type} du ${date}</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<!-- The form is placed inside the body of modal -->
|
||
<form id="edit-planning-moto" class="form-horizontal" action="" method="post"
|
||
data-fv-framework="bootstrap"
|
||
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||
<div class="form-group">
|
||
<label class="control-label col-xs-3">Groupe</label>
|
||
<div class="col-sm-8 col-md-7">
|
||
<select class="form-control" name="GROUPE" id="select-group" disabled>
|
||
<tal:block tal:repeat="key [x for x in groupe.keys()]">
|
||
<option tal:attributes="selected key==stage.GROUPE and 'selected' or None" value="${key}" >${groupe[key]}</option>
|
||
</tal:block>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="form-group" id="form-code">
|
||
<label class="col-sm-3 control-label">Libellé </label>
|
||
<div class="col-sm-8 col-md-7">
|
||
<input type="text" class="form-control"
|
||
data-fv-notempty="true"
|
||
data-fv-notempty-message="Le libellé est obligatoire"
|
||
id="LIBELLE" name="LIBELLE" value="${stage.LIBELLE}" />
|
||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||
</div>
|
||
</div>
|
||
<div class="form-group" id="form-code">
|
||
<label class="col-md-3 col-sm-3 control-label" style="margin-top:8px">Total places Plateau : </label>
|
||
<div class="col-sm-8 col-md-2" style="margin-top:8px">
|
||
<input type="number" class="form-control" id="TOTAL" value="${stage.TOTAL}" name="TOTAL" />
|
||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||
</div>
|
||
<label class="col-sm-3 col-md-2 control-label" style="margin-top:8px" >Total plateau inscrits</label>
|
||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||
<input type="number" class="form-control" id="DISPO" value="${stage.TOTAL-stage.DISPO}" name="DISPO" disabled/>
|
||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||
</div>
|
||
</div>
|
||
<div class="form-group" id="form-code">
|
||
<label class="col-md-3 col-sm-3 control-label" style="margin-top:8px">Total places Route : </label>
|
||
<div class="col-sm-8 col-md-2" style="margin-top:8px">
|
||
<input type="number" class="form-control" id="ROUTE" value="${stage.ROUTE}" name="ROUTE" />
|
||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||
</div>
|
||
<label class="col-sm-3 col-md-2 control-label" style="margin-top:8px" >Total Route inscrits</label>
|
||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||
<input type="number" class="form-control" id="ROUTE_DISPO" value="${stage.ROUTE-stage.ROUTE_DISPO}" name="ROUTE_DISPO" disabled/>
|
||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<div class="col-xs-8 col-xs-offset-3">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||
<button type="button" id="deleteRdv" tal:condition="code == 9" class="btn btn-danger" data-dismiss="modal" data-toggle="modal" data-target="#deletePlanning" style="margin-top:8px">Supprimer</button>
|
||
<button type="submit" id="submitRdv" class="btn btn-primary" name="form.updated" style="margin-top:8px">Enregistrer</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- validate -->
|
||
<div class="modal fade" tal:condition="code == 9" id="validatePlanning" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<form action="" method="post" >
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
<h4 class="modal-title" id="modalLabel">Validation</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Après la validation, aucune modification ne sera possible.
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
|
||
<button type="submit" class="btn btn-danger" name="form.validated" >Confirmer</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<!-- modal -->
|
||
<div class="modal fade" id="deletePlanning" tal:condition="code == 9" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<form action="" method="post" >
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
<h4 class="modal-title" id="modalLabel">Suppression</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Confirmez-vous la supression de ce planning ?
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
|
||
<button type="submit" class="btn btn-danger" name="form.deleted" >Confirmer</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<!-- modal -->
|
||
<div class="modal fade" id="deleteEleveStage" tal:condition="code == 9" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<form action="${url}" method="post" >
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
<h4 class="modal-title" id="modalLabel">Suppression</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
Confirmez-vous la supression de ces eleves dans ce stage?
|
||
</div>
|
||
<div class="modal-footer">
|
||
<input type="hidden" value="" id="deleted_selected_inputs" name="deleted_selected_inputs" />
|
||
<button type="submit" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
|
||
<button type="submit" class="btn btn-danger" name="form.deleted_selected" >Confirmer</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div><!-- content -->
|
||
|
||
<div metal:fill-slot="additional_scripts">
|
||
<script src="//gyrocode.github.io/jquery-datatables-checkboxes/1.2.11/js/dataTables.checkboxes.min.js"></script>
|
||
<script type="text/javascript">
|
||
var dataSet = ${dt_data};
|
||
|
||
$(document).ready(function() {
|
||
$.fn.dataTable.moment('DD/MM/YYYY');
|
||
var table = $('#planninga_list').DataTable({
|
||
data: dataSet,
|
||
pageLength: 100,
|
||
bLengthChange: false,
|
||
bFilter: false,
|
||
language: {
|
||
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
|
||
},
|
||
columnDefs: [
|
||
{ className: "text-center", "targets": [3,4,8] },
|
||
{ className: "text-right", "targets": [2] },
|
||
{ 'targets': 0,
|
||
'checkboxes': {
|
||
'selectRow': true,
|
||
'selectCallback': function(td, cellData, rowData, row, col) {
|
||
getAlldata();
|
||
},
|
||
}
|
||
},
|
||
{ targets: 1,
|
||
"render": function (data, type, full, meta) {
|
||
// ajouter un link vers la fiche élève
|
||
return '<a href="/fiche_eleve/' + data.substr(0, 6) + '">' + data + '</a>';
|
||
},
|
||
},
|
||
{ targets: 9,
|
||
"render": function (data, type, full, meta) {
|
||
// ajouter un link vers le formulaire
|
||
return '<a href="/motos_edit/${type}/${date}/${grp}/' + full[0] +
|
||
'" class="btn btn-primary btn-sm"><span class="glyphicon glyphicon-pencil"></span>' + '</a>';
|
||
},
|
||
},
|
||
],
|
||
select: {
|
||
'style': 'multi'
|
||
},
|
||
order: [[1, 'asc']],
|
||
createdRow: function( row, data, dataIndex ) {
|
||
if ( data[2].slice(-1) == "E" ) {
|
||
$('td', row).eq(2).css('background-color', 'Orange');
|
||
}
|
||
if ( data[7].slice(-2) == "AP" ) {
|
||
$('td', row).eq(7).css('background-color', 'GoldenRod').css('color', 'white');
|
||
}
|
||
if ( data[8] > "1" ) {
|
||
$('td', row).eq(8).css('background-color', 'Crimson').css('color', 'white');
|
||
}
|
||
if ( data[8] == "1" ) {
|
||
$('td', row).eq(8).css('background-color', 'ForestGreen').css('color', 'white');
|
||
}
|
||
},
|
||
});
|
||
|
||
$('#edit-planning-moto').formValidation({
|
||
fields: {
|
||
TOTAL: {
|
||
validators: {
|
||
callback: {
|
||
message: 'Total devrait superieur ou egalé à ce qui est inscrit',
|
||
callback: function(input) {
|
||
var dispo = parseInt(${stage.DISPO})
|
||
return dispo <= parseInt(input)
|
||
}
|
||
}
|
||
}
|
||
},
|
||
ROUTE: {
|
||
validators: {
|
||
callback: {
|
||
message: 'Total route devrait superieur ou egalé à ce qui est inscrit',
|
||
callback: function(input) {
|
||
var dispo = parseInt(${stage.ROUTE_DISPO})
|
||
return dispo <= parseInt(input)
|
||
}
|
||
}
|
||
}
|
||
},
|
||
}
|
||
});
|
||
// Handle form submission event
|
||
$('#frm-planninga_list').on('submit', function(e){
|
||
var form = this;
|
||
var rows_selected = table.column(0).checkboxes.selected();
|
||
|
||
// Iterate over all selected checkboxes
|
||
$.each(rows_selected, function(index, rowId){
|
||
// Create a hidden element
|
||
$(form).append(
|
||
$('<input>')
|
||
.attr('type', 'hidden')
|
||
.attr('name', 'id' + index)
|
||
.val(rowId)
|
||
);
|
||
});
|
||
});
|
||
function getAlldata(data){
|
||
selecteds = table.data().toArray()
|
||
var selectdIds = table.column(0).checkboxes.selected().toArray()
|
||
var filtered = selecteds.filter(function(e){
|
||
console.log(e)
|
||
return e[10] === 'N' && selectdIds.includes(e[0])
|
||
})
|
||
if(selecteds.length === 0 || filtered.length > 0){
|
||
$('#deleted_selected').removeClass('hide');
|
||
}
|
||
else{
|
||
$('#deleted_selected').addClass('hide');
|
||
}
|
||
$('#deleted_selected_inputs').val(selectdIds.join('-'))
|
||
}
|
||
});
|
||
|
||
</script>
|
||
</div>
|
||
|
||
</metal:block>
|
||
|
||
|