initial upload
This commit is contained in:
103
aem_gestion/templates/planning/activ_edit.pt
Normal file
103
aem_gestion/templates/planning/activ_edit.pt
Normal file
@@ -0,0 +1,103 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message" />
|
||||
|
||||
<form id="rdvb_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="rdvb"
|
||||
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">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<p class="text-danger">
|
||||
<b>${rdvb.CD_CLI} - ${rdvb.NOM}</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected i==rdvb.QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Intitulé</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.INTITULE}</p>
|
||||
</div>
|
||||
<label class="control-label col-xs-3">Lieu du rdv</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.LIEU_RDV}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Commentaire</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="COMMENT"
|
||||
value="${rdvb.COMMENT}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Dern. modif le</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.modif_le.strftime('%d-%m-%Y %H:%M')} par ${rdvb.CD_UTI}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<a href="${back}" 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-ok"></span> Enregistrer</button>
|
||||
<button class="btn btn-danger"
|
||||
data-toggle="modal" data-target="#confirmDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span> Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
|
||||
<!-- Modal : Confirmation SUPRESSION -->
|
||||
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Supprimer le rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="confirmForm" method="post" class="form-horizontal">
|
||||
<p>Etes-vous certain(e) de vouloir supprimer ?</p>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" class="btn btn-danger" name="form.deleted">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#rdvb_edit-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
275
aem_gestion/templates/planning/circuit_list.pt
Normal file
275
aem_gestion/templates/planning/circuit_list.pt
Normal file
@@ -0,0 +1,275 @@
|
||||
<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-motos_list" action="${url}" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5">
|
||||
<a href="${url_retour}" 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" tal:condition="len(button_title)">
|
||||
<span class="glyphicon glyphicon-chevron-right"></span> ${button_title}</button>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" id="cd_mon" name="cd_mon">
|
||||
<div tal:repeat="item moniteurs">
|
||||
<option value="${item.CD_MON}" tal:attributes="selected cd_mon == item.CD_MON and 'selected' or None">${item.NOM} - ${item.CD_MON}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<button class="btn btn-primary" type="submit" name="form.circuit">
|
||||
<span class="glyphicon glyphicon-pencil"></span> Mon. CIRCUIT</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-12">
|
||||
(Veuillez cocher un ou plusieurs élèves pour mettre à jour leur moniteur ou effectuer un suivi)
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="motos_list" class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Gr</th>
|
||||
<th>Nv</th>
|
||||
<th>Circ</th>
|
||||
<th>Nom, Prénom</th>
|
||||
<th>Solde</th>
|
||||
<th>ETG</th>
|
||||
<th>Fil.</th>
|
||||
<th>Comment.</th>
|
||||
<th>HCB</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;">
|
||||
<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 />
|
||||
</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 = $('#motos_list').DataTable({
|
||||
data: dataSet,
|
||||
pageLength: 100,
|
||||
bLengthChange: false,
|
||||
language: {
|
||||
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
|
||||
},
|
||||
columnDefs: [
|
||||
{ className: "text-center", "targets": [0,1,2,6,10] },
|
||||
{ className: "text-right", "targets": [5] },
|
||||
{ 'targets': 0,
|
||||
'checkboxes': {
|
||||
'selectRow': true
|
||||
}
|
||||
},
|
||||
{ targets: 4,
|
||||
"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: 11,
|
||||
"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[5].slice(-1) == "E" ) {
|
||||
$('td', row).eq(5).css('background-color', 'Orange');
|
||||
}
|
||||
if ( data[9] == "VAL" ) {
|
||||
$('td', row).eq(9).css('background-color', 'LightGreen');
|
||||
}
|
||||
if ( data[10] > "1" ) {
|
||||
$('td', row).eq(10).css('background-color', 'Crimson').css('color', 'white');
|
||||
}
|
||||
},
|
||||
});
|
||||
// Handle form submission event
|
||||
$('#frm-motos_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)
|
||||
);
|
||||
});
|
||||
});
|
||||
$('#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)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
|
||||
353
aem_gestion/templates/planning/monplanning.pt
Normal file
353
aem_gestion/templates/planning/monplanning.pt
Normal file
@@ -0,0 +1,353 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
<div class="container">
|
||||
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message" />
|
||||
|
||||
<div class="row">
|
||||
<form method="POST" id="frm" action="${url}" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3">Moniteur</label>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="cd_mon" name="cd_mon" onChange="$('#frm').submit()">
|
||||
<tal:block tal:repeat="moniteurC moniteurs">
|
||||
<tal:block tal:repeat="item moniteurC">
|
||||
<option value="${item.CD_MON}" tal:attributes="selected cd_mon==item.CD_MON and 'selected' or None">${item.NOM} - ${item.CD_MON}</option>
|
||||
</tal:block>
|
||||
<option tal:condition="moniteurC" disabled>--------------------------------</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<a href="${request.application_url}/planifier/${cd_mon}/6mois" tal:condition="layout.isAdmin()"
|
||||
class="btn btn-success" role="button" >
|
||||
<span class="glyphicon glyphicon-calendar"></span> Planifier activités de ${cd_mon}</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<br />
|
||||
<div tal:condition="not isSeulB78">
|
||||
<div id="calendar"></div>
|
||||
<br />
|
||||
<p>
|
||||
<span class="label" style="background-color:LightGreen; color:black;">Validée</span>
|
||||
<span class="label" style="background-color:LightBlue; color:black;">Activitée</span>
|
||||
<span class="label" style="background-color:LightPink; color:black;">Réservation</span>
|
||||
<span class="label" style="background-color:LightYellow; color:black;">Heure Conduite B</span>
|
||||
<span class="label" style="background-color:Gold; color:black;">Examen blanc</span>
|
||||
<span class="label" style="background-color:GoldenRod; color:black;">Avant permis</span>
|
||||
<span class="label" style="background-color:Plum; color:black;">RDV préalable</span>
|
||||
<span class="label" style="background-color:YellowGreen; color:black;">RDV pédag 1</span>
|
||||
<span class="label" style="background-color:LimeGreen; color:black;">RDV pédag 2</span>
|
||||
<span class="label" style="background-color:DeepSkyBlue; color:black;">1ères heures</span>
|
||||
<span class="label" style="background-color:DeepPink; color:black;">Absent Retard</span>
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div tal:condition="cd_mon_B78">
|
||||
<h1 tal:condition="not isSeulB78">Planning B78 de ${cd_mon_B78} (agence ${agence}) </h1>
|
||||
<br />
|
||||
<div id="calendarb78"></div>
|
||||
<br />
|
||||
<p>
|
||||
<span class="label" style="background-color:LightGreen; color:black;">Validée</span>
|
||||
<span class="label" style="background-color:LightBlue; color:black;">Activitée</span>
|
||||
<span class="label" style="background-color:LightPink; color:black;">Réservation</span>
|
||||
<span class="label" style="background-color:LightYellow; color:black;">Heure Conduite B78</span>
|
||||
<span class="label" style="background-color:Gold; color:black;">Examen blanc</span>
|
||||
<span class="label" style="background-color:GoldenRod; color:black;">Avant permis</span>
|
||||
<span class="label" style="background-color:Plum; color:black;">RDV préalable</span>
|
||||
<span class="label" style="background-color:YellowGreen; color:black;">RDV pédag 1</span>
|
||||
<span class="label" style="background-color:LimeGreen; color:black;">RDV pédag 2</span>
|
||||
<span class="label" style="background-color:DeepSkyBlue; color:black;">1ères heures</span>
|
||||
<span class="label" style="background-color:DeepPink; color:black;">Absent Retard</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Modal : Confirmation CREATION -->
|
||||
<div class="modal fade" id="confirmCreate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Créer un rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create_rdv-form" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Voulez-vous créer un rendez-vous pour : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<p><b>le <span id=dateheureRDV>date</span> h</b></p>
|
||||
<p>pour un élève ou une activité</p>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-xs-3 control-label">Nom ou Code</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id=dateRDV value="date">
|
||||
<input type="hidden" name="heureRDV" id=heureRDV value="heure">
|
||||
<input type="hidden" name="cd_mon" id="cd_mon" value="${cd_mon}" >
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected str(i)==QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal : Confirmation CREATION -->
|
||||
<div class="modal fade" id="confirmCreateB78" role="dialog" aria-labelledby="confirmCreateB78Label" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Créer un rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create_rdv-form78" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Voulez-vous créer un rendez-vous pour : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<p><b>le <span id=dateheureRDVB78>date</span> h</b></p>
|
||||
<p>pour un élève ou une activité</p>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-xs-3 control-label">Nom ou Code</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="name78" name="name" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id="dateRDVB78" value="date">
|
||||
<input type="hidden" name="heureRDV" id="heureRDVB78" value="heure">
|
||||
<input type="hidden" name="cd_mon_B78" id="cd_mon_B78" value="${cd_mon_B78}" >
|
||||
<input type="hidden" name="cd_mon" id="cd_mon" value="${cd_mon}" >
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected str(i)==QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv78" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
||||
</div><!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- Bootstrap Fullcalendar plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<!-- autocomplete plugin -->
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var datePlan = '${datePlan}';
|
||||
|
||||
$('#calendar').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
header: {
|
||||
left: 'agendaWeek month listWeek',
|
||||
center: 'prev title next',
|
||||
right: 'today'
|
||||
},
|
||||
allDaySlot: true,
|
||||
allDayHtml: "Annulés",
|
||||
defaultView: 'agendaWeek',
|
||||
defaultDate: moment(datePlan),
|
||||
slotDuration: '00:60:00',
|
||||
hiddenDays: [0], // hide sunday
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
displayEventTime: true,
|
||||
events:${calendar_events},
|
||||
eventRender: function(event, element){
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
// alert('Bientôt, la possibilité de créer un rdv pour le ' + date.format());
|
||||
$('#dateheureRDV').html(moment(date).format('dddd DD MMMM à HH'));
|
||||
$('#dateRDV').attr('value', moment(date).format('YYYY-MM-DD'));
|
||||
$('#heureRDV').attr('value', moment(date).format('HH'));
|
||||
$("#confirmCreate").modal("show");
|
||||
}
|
||||
});
|
||||
|
||||
$('#calendarb78').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
header: {
|
||||
left: 'agendaWeek month listWeek',
|
||||
center: 'prev title next',
|
||||
right: 'today'
|
||||
},
|
||||
allDaySlot: true,
|
||||
allDayHtml: "Annulés",
|
||||
defaultView: 'agendaWeek',
|
||||
defaultDate: moment(datePlan),
|
||||
slotDuration: '00:60:00',
|
||||
hiddenDays: [0], // hide sunday
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
displayEventTime: true,
|
||||
events:${calendar_events_b78},
|
||||
eventRender: function(event, element){
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
// alert('Bientôt, la possibilité de créer un rdv pour le ' + date.format());
|
||||
$('#dateheureRDVB78').html(moment(date).format('dddd DD MMMM à HH'));
|
||||
$('#dateRDVB78').attr('value', moment(date).format('YYYY-MM-DD'));
|
||||
$('#heureRDVB78').attr('value', moment(date).format('HH'));
|
||||
$("#confirmCreateB78").modal("show");
|
||||
}
|
||||
});
|
||||
|
||||
$('#create_rdv-form').formValidation({
|
||||
framework: 'bootstrap',
|
||||
excluded: ':disabled',
|
||||
icon: {
|
||||
valid: 'glyphicon glyphicon-ok',
|
||||
invalid: 'glyphicon glyphicon-remove',
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
|
||||
$('#name').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookup',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: 'E' + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
|
||||
$('#name78').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookupb78',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: 'E' + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreateB78"
|
||||
});
|
||||
|
||||
$('#create_rdv-form').submit(function(ev){
|
||||
var actionurl = ev.currentTarget.action;
|
||||
console.log(actionurl)
|
||||
var array_code = $('#name').val().split(' | ');
|
||||
console.log(array_code);
|
||||
if(array_code.length == 2){
|
||||
$('#text-error-message').text('');
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
$('#form-code').addClass('has-feedback has-error');
|
||||
$('#submitRdv').addClass('disabled').attr("disabled", true);
|
||||
$('#text-error-message').text('Code non validé');
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$('#name').on('change input',function(){
|
||||
$('#text-error-message').text('');
|
||||
$('#form-code').removeClass('has-feedback has-error');
|
||||
$('#submitRdv').removeClass('disabled').prop("disabled", false);;
|
||||
});
|
||||
|
||||
$('#create_rdv-form78').submit(function(ev){
|
||||
var actionurl = ev.currentTarget.action;
|
||||
console.log(actionurl)
|
||||
var array_code = $('#name78').val().split(' | ');
|
||||
console.log(array_code);
|
||||
if(array_code.length == 2){
|
||||
$('#text-error-message').text('');
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
$('#form-code').addClass('has-feedback has-error');
|
||||
$('#submitRdv78').addClass('disabled').attr("disabled", true);
|
||||
$('#text-error-message').text('Code non validé');
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$('#name78').on('change input',function(){
|
||||
$('#text-error-message').text('');
|
||||
$('#form-code').removeClass('has-feedback has-error');
|
||||
$('#submitRdv78').removeClass('disabled').prop("disabled", false);;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div><!-- scripts -->
|
||||
</metal:block>
|
||||
|
||||
|
||||
141
aem_gestion/templates/planning/motos_edit.pt
Normal file
141
aem_gestion/templates/planning/motos_edit.pt
Normal file
@@ -0,0 +1,141 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="alert alert-success" tal:condition="message" tal:content="message" />
|
||||
|
||||
<form id="motos_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="rdvb"
|
||||
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">Nom</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="NOM" id="NOM"
|
||||
value="${eleve.NOM} ${eleve.PRENOM} | ${eleve.CD_CLI}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="not rdvb.CD_CLI == 0">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-md-1 col-sm-8">
|
||||
<p class="form-control-static">${rdvb.QTE}</p>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-8 ">
|
||||
<input type="checkbox" name="TR_P_OK" value="1" id="tr_p_OK" tal:attributes="checked eleve.TR_P_OK != None and 'checked' or None" disabled> Route</input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="not rdvb.CD_CLI == 0">
|
||||
<label class="control-label col-xs-3">Référence</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${rdvb.REF}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" >
|
||||
<label class="control-label col-xs-3">Lieu</label>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<select class="form-control static" name="LIEU" >
|
||||
<tal:block tal:repeat="l [x for x in lieux]">
|
||||
<option tal:attributes="selected l.LIEU==rdvb.LIEU and 'selected' or None">${l.LIEU}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Commentaire</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="COMMENT"
|
||||
value="${rdvb.COMMENT}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="eleve.TYPE_ENTREPRISE=='E'">
|
||||
<label class="control-label col-xs-3">Entreprise</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${eleve.NOM_ENTREPRISE}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Statut</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" id="statut" name="STATUT">
|
||||
<div tal:repeat="item statuts">
|
||||
<option value="${item.CODE}" tal:attributes="selected rdvb.STATUT==item.CODE and 'selected' or None">${item.CODE} - ${item.LIBELLE}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">A confirmer avant le :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${fin_reservation}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Ligne de compte :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${rdvb['ligne_cpt']}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Créé le :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${cree_le}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Modifié le : </label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${modif_le} par <b>${cd_uti}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<a href="${url_retour}" class="btn btn-default" role="button">
|
||||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||||
<button class="btn btn-danger" type="submit" name="form.deleted" tal:condition="delete">
|
||||
<span class="glyphicon glyphicon-trash"></span> Supprimer</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="rdvb.VALIDE != 'O'">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
<a class="btn btn-warning" role="button" href="/fiche_eleve/${rdvb.CD_CLI}" tal:condition="rdvb.CD_CLI > 100000">
|
||||
<span class="glyphicon glyphicon-user"></span> Fiche élève</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#motos_edit-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
$('#NOM').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookup',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: "E"+request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
|
||||
});
|
||||
},
|
||||
select :function(el,data){
|
||||
console.log(data.item)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#motos_edit-form"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
311
aem_gestion/templates/planning/motos_list.pt
Normal file
311
aem_gestion/templates/planning/motos_list.pt
Normal file
@@ -0,0 +1,311 @@
|
||||
<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-motos_list" action="${url}" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-1">Infos : </label>
|
||||
<div class="col-xs-6">
|
||||
<p class="form-control-static">${stage.infos}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5">
|
||||
<a href="${url_retour}" 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" tal:condition="len(button_title)">
|
||||
<span class="glyphicon glyphicon-chevron-right"></span> ${button_title}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-12">
|
||||
(Veuillez cocher un ou plusieurs élèves pour mettre à jour leur moniteur ou effectuer un suivi)
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="motos_list" class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Gr</th>
|
||||
<th>Nv</th>
|
||||
<th>Mon.</th>
|
||||
<th>Nom, Prénom</th>
|
||||
<th>Solde</th>
|
||||
<th>ETG</th>
|
||||
<th>Fil.</th>
|
||||
<th>Comment.</th>
|
||||
<th>HCB</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>
|
||||
<!-- 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>
|
||||
<br />
|
||||
</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 = $('#motos_list').DataTable({
|
||||
data: dataSet,
|
||||
pageLength: 100,
|
||||
bLengthChange: false,
|
||||
language: {
|
||||
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
|
||||
},
|
||||
columnDefs: [
|
||||
{ className: "text-center", "targets": [0,1,2,6,10] },
|
||||
{ className: "text-right", "targets": [5] },
|
||||
{ 'targets': 0,
|
||||
'checkboxes': {
|
||||
'selectRow': true,
|
||||
'selectCallback': function(td, cellData, rowData, row, col) {
|
||||
getAlldata();
|
||||
},
|
||||
}
|
||||
},
|
||||
{ targets: 4,
|
||||
"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: 11,
|
||||
"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[5].slice(-1) == "E" ) {
|
||||
$('td', row).eq(5).css('background-color', 'Orange');
|
||||
}
|
||||
if ( data[9] == "VAL" ) {
|
||||
$('td', row).eq(9).css('background-color', 'LightGreen');
|
||||
}
|
||||
if ( data[10] > "1" ) {
|
||||
$('td', row).eq(10).css('background-color', 'Crimson').css('color', 'white');
|
||||
}
|
||||
},
|
||||
});
|
||||
// Handle form submission event
|
||||
$('#frm-motos_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)
|
||||
);
|
||||
});
|
||||
});
|
||||
$('#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)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
function getAlldata(data){
|
||||
selecteds = table.data().toArray()
|
||||
var selectdIds = table.column(0).checkboxes.selected().toArray()
|
||||
var filtered = selecteds.filter(function(e){
|
||||
return e[12] === '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>
|
||||
|
||||
|
||||
266
aem_gestion/templates/planning/motos_schd.pt
Normal file
266
aem_gestion/templates/planning/motos_schd.pt
Normal file
@@ -0,0 +1,266 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
<div class="container">
|
||||
<div class="row" style="margin-left:1em;">
|
||||
<div class="col-sx-12">
|
||||
<button class="btn btn-primary" type="button" data-toggle="modal" data-target="#confirmDuplicate" >
|
||||
<span class="glyphicon glyphicon-plus"></span> Semaine Type</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div id="calendar"></div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<!-- Modal : Creation stage -->
|
||||
<div class="modal fade" id="confirmCreate" 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 A du</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create-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" id="form-code">
|
||||
<label class="col-sm-3 control-label" style="margin-top:8px">Type</label>
|
||||
<div class="col-sm-8 col-md-7" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="type" name="TYPE" placeholder="3 caractères minimum" value="${type}" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Date </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" id="DATE" name="DATE" placeholder="3 caractères minimum" readonly />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<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">
|
||||
<tal:block tal:repeat="key [x for x in groupe.keys()]">
|
||||
<option 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" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code" tal:condition="type != 'A' ">
|
||||
<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-6" style="margin-top:8px">
|
||||
<input type="number" class="form-control" id="TOTAL" value="0" name="TOTAL" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code" tal:condition="type == 'A' ">
|
||||
<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="0" 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 places Route</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="number" class="form-control" id="ROUTE" value="0" name="ROUTE" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.submitted" style="margin-top:8px">Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- duplicate modale -->
|
||||
<div class="modal fade" id="confirmDuplicate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-md">
|
||||
<div class="modal-content ">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Duplication planning</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="duplicate-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" id="form-code">
|
||||
<label class="col-sm-3 control-label" >De la semaine du </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" id="DATE1" name="DATE1" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Vers la semiane du </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" id="DATE2" name="DATE2" placeholder="3 caractères minimum" />
|
||||
<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">Sur</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="number" class="form-control" id="NB" value="3" name="NB" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<label class="col-md-3 col-sm-3 control-label" style="margin-top:8px">Semaines</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.duplicated" style="margin-top:8px">Dupliquer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
</div><!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- Bootstrap Fullcalendar plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#calendar').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
header: {
|
||||
left: 'month listWeek',
|
||||
center: 'prev title next',
|
||||
right: 'today'
|
||||
},
|
||||
allDaySlot: false,
|
||||
defaultView: 'month',
|
||||
hiddenDays: [0], // hide sunday
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
displayEventTime: false,
|
||||
events:${calendar_events},
|
||||
eventRender: function(event, element){
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
var string_date = date.format('DD-MM-YYYY');
|
||||
$('#DATE').val(string_date);
|
||||
$(".modal-title").html('Planning ${type} du '+string_date);
|
||||
$('#confirmCreate').modal("show");
|
||||
}
|
||||
});
|
||||
$('#create-planning-moto').formValidation({
|
||||
fields: {
|
||||
TOTAL: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total devrait une valeur positive',
|
||||
callback: function(input) {
|
||||
var num = Number(input)
|
||||
return num >= 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
ROUTE: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Route devrait une valeur positive',
|
||||
callback: function(input) {
|
||||
return input !== "" && parseInt(input) >= 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#DATE1').datetimepicker({
|
||||
format: 'DD/MM/YYYY'
|
||||
}).on('dp.change', function (ev) {
|
||||
fv.formValidation.revalidateField($('#DATE1'))
|
||||
});
|
||||
$('#DATE2').datetimepicker({
|
||||
format: 'DD/MM/YYYY',
|
||||
}).on('dp.change', function (ev) {
|
||||
fv.formValidation.revalidateField($('#DATE2'))
|
||||
});
|
||||
var fv = $('#duplicate-planning-moto').formValidation({
|
||||
fields: {
|
||||
DATE1: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'La date saisie doit être un lundi !',
|
||||
callback: function(input) {
|
||||
var dt = moment(input,'DD/MM/YYYY')
|
||||
return dt && dt.day() == 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
DATE2: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'La date saisie doit être un lundi !',
|
||||
callback: function(input) {
|
||||
var dt = moment(input,'DD/MM/YYYY')
|
||||
return dt && dt.day() == 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}).data();
|
||||
|
||||
$('#DATE1').on('input change',function(){
|
||||
// fv.formValidation.updateStatus($('#DATE1'),'INVALID').revalidateField($('#DATE1'));
|
||||
fv.formValidation.validateField($('#DATE1'))
|
||||
})
|
||||
$('#DATE2').on('input change',function(){
|
||||
// fv.formValidation.updateStatus($('#DATE2'),'INVALID').revalidateField($('#DATE1'));
|
||||
fv.formValidation.validateField($('#DATE2'))
|
||||
})
|
||||
|
||||
$('#TOTAL1').on('input change',function(){
|
||||
// fv.formValidation.updateStatus($('#TOTAL1'),'INVALID').revalidateField($('#TOTAL1'));
|
||||
fv.formValidation.validateField($('#TOTAL1'))
|
||||
})
|
||||
$('#TOTAL2').on('input change',function(){
|
||||
// fv.formValidation.updateStatus($('#TOTAL2'),'INVALID').revalidateField($('#TOTAL1'));
|
||||
fv.formValidation.validateField($('#TOTAL2'))
|
||||
})
|
||||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
|
||||
171
aem_gestion/templates/planning/planifier.pt
Normal file
171
aem_gestion/templates/planning/planifier.pt
Normal file
@@ -0,0 +1,171 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
<div class="container">
|
||||
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message" />
|
||||
|
||||
<div class="row">
|
||||
<form method="POST" id="frm" action="${url}" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Moniteur</label>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="cd_mon" name="cd_mon" onChange="$('#frm').submit()">
|
||||
<tal:block tal:repeat="moniteurC moniteurs">
|
||||
<tal:block tal:repeat="item moniteurC">
|
||||
<option value="${item.CD_MON}" tal:attributes="selected cd_mon==item.CD_MON and 'selected' or None">${item.NOM} - ${item.CD_MON}</option>
|
||||
</tal:block>
|
||||
<option tal:condition="moniteurC" disabled>--------------------------------</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<div id="calendar"></div>
|
||||
<br />
|
||||
<p>
|
||||
<span class="label" style="background-color:LightGreen; color:black;">Validée</span>
|
||||
<span class="label" style="background-color:LightBlue; color:black;">Activitée</span>
|
||||
<span class="label" style="background-color:LightPink; color:black;">Réservation</span>
|
||||
<span class="label" style="background-color:LightYellow; color:black;">Heure Conduite B</span>
|
||||
<span class="label" style="background-color:Gold; color:black;">Examen blanc</span>
|
||||
<span class="label" style="background-color:GoldenRod; color:black;">Avant permis</span>
|
||||
<span class="label" style="background-color:Plum; color:black;">RDV préalable</span>
|
||||
<span class="label" style="background-color:YellowGreen; color:black;">RDV pédag 1</span>
|
||||
<span class="label" style="background-color:LimeGreen; color:black;">RDV pédag 2</span>
|
||||
<span class="label" style="background-color:DeepSkyBlue; color:black;">1ères heures</span>
|
||||
<span class="label" style="background-color:DeepPink; color:black;">Absent Retard</span>
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<!-- Modal : Confirmation CREATION -->
|
||||
<div class="modal fade" id="confirmCreate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Créer une semaine type ${type_planning}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create_rdv-form" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Voulez-vous créer une semaine type : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<p><b>dans la semaine du <span id=dateheureRDV>date</span></b></p>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-xs-3 control-label">Semaine type</label>
|
||||
<div class="col-xs-8">
|
||||
<select class="form-control" id="semaine" name="semaine">
|
||||
<div tal:repeat="item p_semaines">
|
||||
<option value="${item.CODE_SEM}" tal:attributes="selected semaine == item.CODE_SEM and 'selected' or None">${item.LIBELLE} | ${item.CODE_SEM}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id=dateRDV value="date">
|
||||
<input type="hidden" name="cd_mon" id="cd_mon" value="${cd_mon}" >
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb de semaine</label>
|
||||
<div class="col-xs-8">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,6)]">
|
||||
<option tal:attributes="selected str(i)==QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-7 checkbox">
|
||||
<label><input type="checkbox" name="alterne" value="alterne" id="alterne">alterné (1 semaine sur 2)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
||||
</div><!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- Bootstrap Fullcalendar plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<!-- autocomplete plugin -->
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var datePlan = '${datePlan}';
|
||||
|
||||
$('#calendar').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
header: {
|
||||
left: 'agendaWeek month',
|
||||
center: 'prev title next',
|
||||
right: 'today'
|
||||
},
|
||||
allDaySlot: true,
|
||||
defaultView: 'agendaWeek',
|
||||
defaultDate: moment(datePlan),
|
||||
slotDuration: '00:60:00',
|
||||
hiddenDays: [0], // hide sunday
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
displayEventTime: true,
|
||||
events:${calendar_events},
|
||||
eventRender: function(event, element){
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
// alert('Bientôt, la possibilité de créer un rdv pour le ' + date.format());
|
||||
$('#dateheureRDV').html(moment(date).format('dddd DD MMMM'));
|
||||
$('#dateRDV').attr('value', moment(date).format('DD-MM-YYYY'));
|
||||
$("#confirmCreate").modal("show");
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
$('#create_rdv-form').formValidation({
|
||||
framework: 'bootstrap',
|
||||
excluded: ':disabled',
|
||||
icon: {
|
||||
valid: 'glyphicon glyphicon-ok',
|
||||
invalid: 'glyphicon glyphicon-remove',
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</div><!-- scripts -->
|
||||
</metal:block>
|
||||
|
||||
|
||||
312
aem_gestion/templates/planning/planninga_list.pt
Normal file
312
aem_gestion/templates/planning/planninga_list.pt
Normal file
@@ -0,0 +1,312 @@
|
||||
<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>
|
||||
|
||||
|
||||
471
aem_gestion/templates/planning/planningb.pt
Normal file
471
aem_gestion/templates/planning/planningb.pt
Normal file
@@ -0,0 +1,471 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="container">
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message"></div>
|
||||
<div id="flash" tal:condition="request.session.get('_f_error')" >
|
||||
<tal:block tal:repeat="m request.session.get('_f_error')">
|
||||
<div class="alert alert-warning">${m}</div>
|
||||
</tal:block>
|
||||
<span class="hide">${request.session.popitem()}</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div id="exams_agence-form" >
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-1">Agence</label>
|
||||
<div class="col-xs-11">
|
||||
<a class="btn btn-default" href="${url}?agence=1" >VALMY</a>
|
||||
<a class="btn btn-default" href="${url}?agence=2" >SAXE</a>
|
||||
<a class="btn btn-default" href="${url}?agence=3" >CROIX ROUSSE</a>
|
||||
<a class="btn btn-default" href="${url}?agence=4" >MONPLAISIR</a>
|
||||
<a class="btn btn-default" href="${url}?agence=5" >CHARPENNES</a>
|
||||
<a class="btn btn-default" href="${url}?agence=6" >VAUGNERAY</a>
|
||||
<a class="btn btn-default" href="${url}?agence=7" >GENTIL</a>
|
||||
<a class="btn btn-default" href="${url}?agence=8" >VITTON</a>
|
||||
<a class="btn btn-default" href="${url}?agence=9" >WEB</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<form method="POST" id="change-permis" action="${current_url}" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-1">Type de permis</label>
|
||||
<div class="col-xs-5">
|
||||
<select class="form-control" name="current_planning" onChange="$('#change-permis').submit()">
|
||||
<option value="ALL" tal:attributes="selected current_planning=='ALL' and 'selected' or None">----</option>
|
||||
<tal:block tal:repeat="item type_plannings">
|
||||
<option value="${item}" tal:attributes="selected current_planning==item and 'selected' or None">${item}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="row ml-2">
|
||||
<div class="col-xs-5">
|
||||
<button class="btn btn-primary" type="button" tal:condition="code >= 4 " data-toggle="modal" data-target="#validatePlanning"><span class="glyphicon glyphicon-check"></span> Validation Planning B</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<style>
|
||||
.fc-bgevent {
|
||||
opacity: 0.8 !important;
|
||||
border: 1px dotted #acacac;
|
||||
}
|
||||
</style>
|
||||
<div id="calendar"></div>
|
||||
<br />
|
||||
<p>
|
||||
|
||||
<span class="label" style="background-color:#b57f3e; color:black;">Type de Permis B</span>
|
||||
<span class="label" style="background-color:#c2ac91; color:black;">Type de Permis B78</span>
|
||||
<span class="label" style="background-color:#79b0a0; color:black;">Type de Permis 2R</span>
|
||||
<span class="label" style="background-color:#a08da6; color:black;">Type de Permis GL</span>
|
||||
</p>
|
||||
<br />
|
||||
<p>
|
||||
<span class="label" style="background-color:LightGreen; color:black;">Validée</span>
|
||||
<span class="label" style="background-color:LightBlue; color:black;">Activitée</span>
|
||||
<span class="label" style="background-color:LightPink; color:black;">Réservation</span>
|
||||
<span class="label" style="background-color:LightYellow; color:black;">Heure Conduite B</span>
|
||||
<span class="label" style="background-color:Gold; color:black;">Examen blanc</span>
|
||||
<span class="label" style="background-color:GoldenRod; color:black;">Avant permis</span>
|
||||
<span class="label" style="background-color:Plum; color:black;">RDV préalable</span>
|
||||
<span class="label" style="background-color:YellowGreen; color:black;">RDV pédag 1</span>
|
||||
<span class="label" style="background-color:LimeGreen; color:black;">RDV pédag 2</span>
|
||||
<span class="label" style="background-color:DeepSkyBlue; color:black;">1ères heures</span>
|
||||
<span class="label" style="background-color:DeepPink; color:black;">Absent Retard</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Modal : Confirmation CREATION -->
|
||||
<div class="modal fade" id="confirmCreate" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Créer un rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create_rdv-form" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Voulez-vous créer un rendez-vous pour : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<p><b>le <span id=dateheureRDV>date</span> h</b></p>
|
||||
<p>pour un élève ou une activité</p>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-xs-3 control-label">Nom ou Code</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id=dateRDV value="date">
|
||||
<input type="hidden" name="heureRDV" id=heureRDV value="heure">
|
||||
<input type="hidden" name="agence" id="agence" value="${agence}">
|
||||
<input type="hidden" name="cd_mon" id="cd_mon" value="">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected str(i)==QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal : Confirmation CREATION -->
|
||||
<div class="modal fade" id="confirmCreateB78" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Créer un rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create_rdv-form78" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Voulez-vous créer un rendez-vous pour : <br />
|
||||
</p>
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<p><b>le <span id='dateheureRDVB78'>date</span> h</b></p>
|
||||
<p>pour un élève ou une activité</p>
|
||||
</div>
|
||||
<div class="form-group" id="form-codeB78">
|
||||
<label class="col-xs-3 control-label">Nom ou Code</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="nameB78" name="name" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="dateRDV" id="dateRDVB78" value="date">
|
||||
<input type="hidden" name="heureRDV" id="heureRDVB78" value="heure">
|
||||
<input type="hidden" name="agence" id="agenceB78" value="${agence}">
|
||||
<input type="hidden" name="cd_mon_B78" id="cd_mon_B78" value="">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="QTE">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected str(i)==QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdvB78" class="btn btn-danger" name="form.submitted">Créer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal : validation PLANNING -->
|
||||
<div class="modal fade" id="validatePlanning" role="dialog" aria-labelledby="confirmCreateLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Validation planning B</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="validate-planning" class="form-horizontal" action="${url}" 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">
|
||||
<p>
|
||||
Après la validation, aucune modification ne sera possible. Etes-vous sûr de vouloir valider cette journée ?
|
||||
</p>
|
||||
<div class="form-group" id="form-codeB78">
|
||||
<label class="col-xs-3 control-label">Date</label>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" id="validate_date" name="date" value="${current_date.strftime('%d/%m/%Y')}" placeholder="DD/MM/YYYY" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Agence</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control static" name="agence" tal:attributes="value code != 9 and myagence or agence" tabindex="-1" tal:attributes="disabled code != 9 and 'disabled' or None" tabindex="-1">
|
||||
<tal:block tal:repeat="i [x for x in range(1,10)]" >
|
||||
<option tal:attributes="selected ((code == 9 and i==agence) or (code != 9 and i==myagence )) and 'selected' or None" value="${i}" >${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" class="btn btn-danger" name="form.validated">Valider</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
</div><!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- Bootstrap Fullcalendar plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#calendar').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
defaultView: 'timelineDay',
|
||||
defaultDate:'${current_date.strftime('%Y-%m-%d')}',
|
||||
selectable: false,
|
||||
contentHeight: "auto",
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
header: {
|
||||
left: '',
|
||||
center: 'prev title next',
|
||||
right: 'timelineDay'
|
||||
},
|
||||
resourceAreaWidth: '20%',
|
||||
resourceLabelText: 'Moniteurs',
|
||||
resources: ${calendar_ressources},
|
||||
selectOverlap: function(event) {
|
||||
return event.rendering === 'background';
|
||||
},
|
||||
resourceRender: function(resourceObj, labelTds, bodyTds) {
|
||||
//console.log( bodyTds);
|
||||
if(resourceObj.planning == "2R"){
|
||||
labelTds.css('background', '#79b0a0');
|
||||
}
|
||||
else if(resourceObj.planning == "GL"){
|
||||
labelTds.css('background', '#a08da6');
|
||||
}
|
||||
else if(resourceObj.planning == "B"){
|
||||
labelTds.css('background', '#b57f3e');
|
||||
}
|
||||
else if(resourceObj.planning == "B78"){
|
||||
labelTds.css('background', '#c2ac91');
|
||||
}
|
||||
else{
|
||||
labelTds.css('color', 'black');
|
||||
}
|
||||
|
||||
},
|
||||
events: function(start,end,timezone,callback){
|
||||
var data = ${calendar_events};
|
||||
var fomatedData = [];
|
||||
data.forEach(function(e){
|
||||
if(e.url){
|
||||
var url = e.url.replaceAll('amp;','');
|
||||
e.url = url;
|
||||
fomatedData.push(e)
|
||||
}
|
||||
});
|
||||
callback(data)
|
||||
},
|
||||
dayClick: function(date, jsEvent, view,resource) {
|
||||
if (jsEvent.target.classList.contains('fc-bgevent')) {
|
||||
console.log(date)
|
||||
if(resource.planning === "B78"){
|
||||
$('#dateheureRDVB78').html(moment(date).format('dddd DD MMMM à HH'));
|
||||
$('#dateRDVB78').attr('value', moment(date).format('YYYY-MM-DD'));
|
||||
$('#heureRDVB78').attr('value', moment(date).format('HH'));
|
||||
$('#cd_mon_B78').val(resource.id);
|
||||
$("#confirmCreateB78").modal("show");
|
||||
}
|
||||
else{
|
||||
$('#dateheureRDV').html(moment(date).format('dddd DD MMMM à HH'));
|
||||
$('#dateRDV').attr('value', moment(date).format('YYYY-MM-DD'));
|
||||
$('#heureRDV').attr('value', moment(date).format('HH'));
|
||||
$('#cd_mon').val(resource.id);
|
||||
$("#confirmCreate").modal("show");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
eventClick: function(infso) {
|
||||
console.log(infso)
|
||||
},
|
||||
dayRender: function(date,cell, data) {
|
||||
cell.css("background-color", "#edeff0");
|
||||
cell.css("disabled", 'disabled')
|
||||
cell.Enabled = false;
|
||||
},
|
||||
viewRender: function(view, element) {
|
||||
var start = view.activeStart;
|
||||
var end = view.activeEnd;
|
||||
const paramsString = window.location.search;
|
||||
const searchParams = new URLSearchParams(paramsString);
|
||||
var current_day = moment('${current_date.strftime('%Y-%m-%d')}');
|
||||
var diff = view.start.diff(current_day,'days', false);
|
||||
$('#validate_date').val(view.start.format('DD/MM/YYYY'));
|
||||
if(diff <= -6){
|
||||
disableNavButton();
|
||||
searchParams.set('next', view.start.format('YYYY-MM-DD'));
|
||||
// searchParams.set('next', view.start.subtract(30, "days").format('YYYY-MM-DD'));
|
||||
window.location.replace(window.location.href.replace(location.search, '')+'?'+searchParams.toString())
|
||||
}
|
||||
else if(diff >= 30) {
|
||||
disableNavButton();
|
||||
searchParams.set('next', view.start.format('YYYY-MM-DD'));
|
||||
window.location.replace(window.location.href.replace(location.search, '')+'?'+searchParams.toString())
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
$('#create_rdv-form').formValidation({
|
||||
framework: 'bootstrap',
|
||||
excluded: ':disabled',
|
||||
icon: {
|
||||
valid: 'glyphicon glyphicon-ok',
|
||||
invalid: 'glyphicon glyphicon-remove',
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
$('#name').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookup',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: 'E' + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
$('#create_rdv-form').submit(function(ev){
|
||||
var actionurl = ev.currentTarget.action;
|
||||
var array_code = $('#name').val().split(' | ');
|
||||
var reg = new RegExp('^[A-Z0-9]+-[A-Z0-9]+|[0-9]{6}$');
|
||||
var condition1 = array_code.length == 2 && array_code[0].length >= 3 && array_code[1].length == 6 ;
|
||||
var condition2 = reg.test( $('#name').val().trim())
|
||||
if(condition1 && condition2){
|
||||
$('#text-error-message').text('');
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
$('#form-code').addClass('has-feedback has-error');
|
||||
$('#submitRdv').addClass('disabled').attr("disabled", true);
|
||||
$('#text-error-message').text('Code non validé');
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$('#name').on('change input',function(){
|
||||
console.log('here');
|
||||
$('#text-error-message').text('');
|
||||
$('#form-code').removeClass('has-feedback has-error');
|
||||
$('#submitRdv').removeClass('disabled').attr("disabled", false);
|
||||
|
||||
});
|
||||
|
||||
$('#create_rdv-formB78').formValidation({
|
||||
framework: 'bootstrap',
|
||||
excluded: ':disabled',
|
||||
icon: {
|
||||
valid: 'glyphicon glyphicon-ok',
|
||||
invalid: 'glyphicon glyphicon-remove',
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
|
||||
$('#nameB78').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookupb78',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: 'E' + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
console.log(data)
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreateB78"
|
||||
});
|
||||
|
||||
$('#create_rdv-formB78').submit(function(ev){
|
||||
var actionurl = ev.currentTarget.action;
|
||||
var array_code = $('#name78').val().split(' | ');
|
||||
var reg = new RegExp('^[A-Z0-9]+-[A-Z0-9]+|[0-9]{6}$');
|
||||
var condition1 = array_code.length == 2 && array_code[0].length >= 3 && array_code[1].length == 6 ;
|
||||
var condition2 = reg.test( $('#name78').val().trim())
|
||||
if(condition1 && condition2){
|
||||
$('#text-error-message').text('');
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
$('#form-codeB78').addClass('has-feedback has-error');
|
||||
$('#submitRdvB78').addClass('disabled').attr("disabled", true);
|
||||
$('#text-error-message').text('Code non validé');
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$('#nameB78').on('change input',function(){
|
||||
$('#text-error-message').text('');
|
||||
$('#form-codeB78').removeClass('has-feedback has-error');
|
||||
$('#submitRdvB78').removeClass('disabled').prop("disabled", false);;
|
||||
});
|
||||
|
||||
function disableNavButton(){
|
||||
$(".fc-prev-button").prop('disabled', true);
|
||||
$(".fc-prev-button").addClass('fc-state-disabled');
|
||||
$(".fc-next-button").prop('disabled', true);
|
||||
$(".fc-next-button").addClass('fc-state-disabled');
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
|
||||
70
aem_gestion/templates/planning/plannings.pt
Normal file
70
aem_gestion/templates/planning/plannings.pt
Normal file
@@ -0,0 +1,70 @@
|
||||
<metal:block use-macro="main_template">
|
||||
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="container-fluid text-center">
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/stages_schd/B">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
|
||||
<h4>STAGE B</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/stages_schd/C">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
|
||||
<h4>STAGE PAP</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/stages_schd/M">
|
||||
<span class="glyphicon glyphicon-calendar logo-moto"></span><br />
|
||||
<h4>STAGE A</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/A">
|
||||
<span class="glyphicon glyphicon-calendar logo-moto"></span><br />
|
||||
<h4>PLANNING A</h4></a>
|
||||
</div>
|
||||
</div> <!-- row 2 -->
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/I">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
|
||||
<h4>CIRCUIT FORFAIT</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/R">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span>
|
||||
<h4>RDV PEDAGOGIQUE</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/D">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span>
|
||||
<h4>STAGE CODE</h4></a>
|
||||
</div>
|
||||
</div> <!-- row 3 -->
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/E">
|
||||
<span class="glyphicon glyphicon-calendar logo-small"></span>
|
||||
<h4>EXAMEN BLANC B</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/motos_schd/F">
|
||||
<span class="glyphicon glyphicon-calendar logo-moto"></span>
|
||||
<h4>EXAMEN BLANC A</h4></a>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<a href="${url_listeGL}">
|
||||
<span class="glyphicon glyphicon-copy logo-success"></span>
|
||||
<h4>LISTING GL</h4></a>
|
||||
</div>
|
||||
</div> <!-- row 4 -->
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</metal:block>
|
||||
|
||||
165
aem_gestion/templates/planning/rdvb78_edit.pt
Normal file
165
aem_gestion/templates/planning/rdvb78_edit.pt
Normal file
@@ -0,0 +1,165 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message" />
|
||||
|
||||
<form id="rdvb_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="rdvb78"
|
||||
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">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<p class="text-danger">
|
||||
<b>${rdvb78.CD_CLI} - ${rdvb78.NOM}</b>
|
||||
<a class="btn btn-warning" role="button" href="${btn_url}"
|
||||
tal:condition="btn_url">
|
||||
<span class="glyphicon glyphicon-search"></span> ${btn_name}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nom</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="NOM" id="NOM"
|
||||
value="${rdvb78.NOM} | ${rdvb78.CD_CLI}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" name="QTE" tal:condition="rdvb78.CD_CLI > 100000">
|
||||
<option value="1" tal:attributes="selected rdvb78.QTE == 1 and 'selected' or None">1 heure</option>
|
||||
<option value="2" tal:attributes="selected rdvb78.QTE == 2 and 'selected' or None">2 heures</option>
|
||||
</select>
|
||||
<select class="form-control static" name="QTE" tal:condition="rdvb78.CD_CLI < 100000">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected i==rdvb78.QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Type d'heure</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" name="typeHeure">
|
||||
<div tal:repeat="item heuresSpe">
|
||||
<option value="${item}" tal:attributes="selected str(rdvb78.CIRCUIT)==item[0] and 'selected' or None">${item}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Intitulé</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb78.INTITULE}</p>
|
||||
</div>
|
||||
<label class="control-label col-xs-3">Lieu du rdv</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb78.LIEU_RDV}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Commentaire</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="COMMENT"
|
||||
value="${rdvb78.COMMENT}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="rdvb78.TYPE_ENTREPRISE=='E'">
|
||||
<label class="control-label col-xs-3">Entreprise</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${rdvb78.NOM_ENTREPRISE}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Statut</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" id="statut" name="STATUT">
|
||||
<div tal:repeat="item statuts">
|
||||
<option value="${item.CODE}" tal:attributes="selected rdvb78.STATUT==item.CODE and 'selected' or None">${item.CODE} - ${item.LIBELLE}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Dern. modif le</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb78.modif_le.strftime('%d-%m-%Y %H:%M')} par ${rdvb78.CD_UTI}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<a href="${back}" class="btn btn-default" role="button">
|
||||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||||
|
||||
<button class="btn btn-danger" tal:condition="rdv_valide==False and rdvb78.QTE>0"
|
||||
data-toggle="modal" data-target="#confirmDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span> Supprimer</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.validated" tal:condition="rdv_valide==False and rdvb78.QTE>0 and rdvb78.STATUT > 0 ">
|
||||
<span class="glyphicon glyphicon-ok"></span> Valider</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="rdv_valide==False and rdvb78.QTE>0">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
|
||||
<!-- Modal : Confirmation SUPRESSION -->
|
||||
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Supprimer le rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="confirmForm" method="post" class="form-horizontal">
|
||||
<p>Etes-vous certain(e) de vouloir supprimer ?</p>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" class="btn btn-danger" name="form.deleted">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#rdvb_edit-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
$('#NOM').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookupb78',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: 'E' + request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#rdvb_edit-form"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
169
aem_gestion/templates/planning/rdvb_edit.pt
Normal file
169
aem_gestion/templates/planning/rdvb_edit.pt
Normal file
@@ -0,0 +1,169 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="alert alert-warning" tal:condition="message" tal:content="message" />
|
||||
|
||||
<form id="rdvb_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="rdvb"
|
||||
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">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<p class="text-danger">
|
||||
<b>${rdvb.CD_CLI} - ${rdvb.NOM}</b>
|
||||
<a class="btn btn-warning" role="button" href="${btn_url}"
|
||||
tal:condition="btn_url">
|
||||
<span class="glyphicon glyphicon-search"></span> ${btn_name}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nom</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="NOM" id="NOM"
|
||||
value="${rdvb.NOM} | ${rdvb.CD_CLI}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" name="QTE" tal:condition="rdvb.CD_CLI > 100000">
|
||||
<option value="1" tal:attributes="selected rdvb.QTE == 1 and 'selected' or None">1 heure</option>
|
||||
<option value="2" tal:attributes="selected rdvb.QTE == 2 and 'selected' or None">2 heures</option>
|
||||
</select>
|
||||
<select class="form-control static" name="QTE" tal:condition="rdvb.CD_CLI < 100000">
|
||||
<tal:block tal:repeat="i [x for x in range(1,12)]">
|
||||
<option tal:attributes="selected i==rdvb.QTE and 'selected' or None">${i}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Type d'heure</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" name="typeHeure">
|
||||
<div tal:repeat="item heuresSpe">
|
||||
<option value="${item}" tal:attributes="selected str(rdvb.CIRCUIT)==item[0] and 'selected' or None">${item}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Intitulé</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.INTITULE}</p>
|
||||
</div>
|
||||
<label class="control-label col-xs-3">Lieu du rdv</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.LIEU_RDV}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Commentaire</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="COMMENT"
|
||||
value="${rdvb.COMMENT}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="rdvb.TYPE_ENTREPRISE=='E'">
|
||||
<label class="control-label col-xs-3">Entreprise</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${rdvb.NOM_ENTREPRISE}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Statut</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" id="statut" name="STATUT">
|
||||
<div tal:repeat="item statuts">
|
||||
<option value="${item.CODE}" tal:attributes="selected rdvb.STATUT==item.CODE and 'selected' or None">${item.CODE} - ${item.LIBELLE}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Dern. modif le</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${rdvb.modif_le.strftime('%d-%m-%Y %H:%M')} par ${rdvb.CD_UTI}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<a href="${back}" class="btn btn-default" role="button">
|
||||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||||
<button class="btn btn-danger" tal:condition="rdv_valide==False and rdvb.QTE>0"
|
||||
data-toggle="modal" data-target="#confirmDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span> Supprimer</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.validated" tal:condition="rdv_valide==False and rdvb.QTE>0 and rdvb.STATUT > 0">
|
||||
<span class="glyphicon glyphicon-ok"></span> Valider</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="rdv_valide==False and rdvb.QTE>0">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
|
||||
<!-- Modal : Confirmation SUPRESSION -->
|
||||
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Supprimer le rendez-vous</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="confirmForm" method="post" class="form-horizontal">
|
||||
<p>Etes-vous certain(e) de vouloir supprimer ?</p>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" class="btn btn-danger" name="form.deleted">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#rdvb_edit-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
$('#NOM').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_lookup',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: "E"+request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
|
||||
});
|
||||
},
|
||||
select :function(el,data){
|
||||
console.log(data.item)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#rdvb_edit-form"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
17
aem_gestion/templates/planning/show_iframe.pt
Normal file
17
aem_gestion/templates/planning/show_iframe.pt
Normal file
@@ -0,0 +1,17 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="content text-center">
|
||||
<br />
|
||||
<br />
|
||||
<span class="glyphicon glyphicon-hourglass" style="font-size: 56px"></span>
|
||||
<p class="lead">Chargement de la fiche en cours, merci de patienter quelques instants...</p>
|
||||
<iframe style="position: absolute; top:0px; left:0px; border:none; z-index:10;"
|
||||
src="${iframe_src}" width="100%" height="100%">
|
||||
</iframe>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
390
aem_gestion/templates/planning/stagea_list.pt
Normal file
390
aem_gestion/templates/planning/stagea_list.pt
Normal file
@@ -0,0 +1,390 @@
|
||||
<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-stagea_list" action="${url}" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<div class="col-xs-12">
|
||||
<a href="/stages_schd/M" 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>
|
||||
(Veuillez cocher un ou plusieurs élèves pour effectuer un suivi)
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="stagea_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>Inscrit.</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="/stages_edit/${codeleve}"><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="#editStage" name="form.seance"><span class="glyphicon glyphicon-pencil"></span> Modifier stage</button>
|
||||
<button class="btn btn-primary" type="button" tal:condition="code == 9 and stage.VALIDE != 'O' " data-toggle="modal" data-target="#validateStage"><span class="glyphicon glyphicon-check"></span> Valider stage</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal fade" id="editStage" tal:condition="code == 9" 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">Stage 2R du ${stage.SEMAINE}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="edit-stage" 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-xs-6">
|
||||
<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-md-3 col-sm-3 control-label" style="margin-top:8px">Du</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="debut" value="${stage_debut}" name="debut" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<label class="col-sm-3 col-md-1 control-label text-uppercase" style="margin-top:8px">à</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="starttime" value="${starttime}" name="starttime" placeholder="3 caractères minimum" readonly />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Au </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" value="${stage_fin}" id="fin" name="fin" placeholder="3 caractères minimum" />
|
||||
<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 </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 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-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">Formateur(trice) </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="formateur" value="${stage.formateur}" name="formateur" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_formateur" value="${stage.nom_formateur}" name="nom_formateur" placeholder="Nom" />
|
||||
<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">Psycologue </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="psychologue" value="${stage.psychologue}" name="psychologue" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5 " style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_psy" value="${stage.nom_psy}" name="nom_psy" placeholder="Nom" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="AGENCE" id="agence" value="${stage.AGENCE}" />
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-primary" name="form.updated" style="margin-top:8px">Enregistrer</button>
|
||||
<button type="button" id="deleteRdv" tal:condition="code == 9" class="btn btn-danger" data-dismiss="modal" data-toggle="modal" data-target="#deleteStage" style="margin-top:8px">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<!-- modal -->
|
||||
<div class="modal fade" tal:condition="code == 9" id="validateStage" 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">
|
||||
<h5>
|
||||
Après la validation, aucune modification ne sera possible.
|
||||
</h5>
|
||||
<p>
|
||||
<div class="form-group row" tal:condition="ispassed">
|
||||
<label class="col-sm-3 control-label" >Mot de passe </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="password" class="form-control" name="password" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
</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="deleteStage" 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 stage ?
|
||||
</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>
|
||||
<!-- 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};
|
||||
var selecteds = [];
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
$.fn.dataTable.moment('DD/MM/YYYY');
|
||||
var table = $('#stagea_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": [0,3,4,7,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: 8,
|
||||
"render": function (data, type, full, meta) {
|
||||
// ajouter un link vers le formulaire
|
||||
return '<a href="/stages_edit/' + data +
|
||||
'" 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[6].slice(-2) == "AP" ) {
|
||||
$('td', row).eq(6).css('background-color', 'GoldenRod').css('color', 'white');
|
||||
}
|
||||
if ( data[7] > "1" ) {
|
||||
$('td', row).eq(7).css('background-color', 'Crimson').css('color', 'white');
|
||||
}
|
||||
if ( data[7] == "1" ) {
|
||||
$('td', row).eq(7).css('background-color', 'LightGreen').css('color', 'black');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
// Handle form submission event
|
||||
$('#frm-stagea_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)
|
||||
);
|
||||
});
|
||||
});
|
||||
$('#edit-stage').formValidation({
|
||||
fields: {
|
||||
TOTAL: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total devrait etre superieur ou égal au total inscrit',
|
||||
callback: function(input) {
|
||||
return parseInt(input) >= parseInt($('#DISPO').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
DISPO: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total inscript devrait etre inferieur ou égale au Total',
|
||||
callback: function(input) {
|
||||
return parseInt(input) <= parseInt($('#TOTAL').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
$('#nom_formateur').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (a, row) {
|
||||
$('#formateur').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
$('#nom_psy').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (el, row) {
|
||||
$('#psychologue').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
|
||||
function getAlldata(data){
|
||||
selecteds = table.data().toArray()
|
||||
var selectdIds = table.column(0).checkboxes.selected().toArray()
|
||||
var filtered = selecteds.filter(function(e){
|
||||
return e[9] === '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>
|
||||
|
||||
|
||||
414
aem_gestion/templates/planning/stageb_list.pt
Normal file
414
aem_gestion/templates/planning/stageb_list.pt
Normal file
@@ -0,0 +1,414 @@
|
||||
<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-stageb_list" action="${url}" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<div class="col-xs-12">
|
||||
<a href="${url_retour}" 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 circuit</button>
|
||||
(Veuillez cocher un ou plusieurs élèves pour mettre à jour leur moniteur, la séance ou faire le suivi)
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-3">
|
||||
<select class="form-control" id="cd_mon" name="cd_mon">
|
||||
<div tal:repeat="item moniteurs">
|
||||
<option value="${item.CD_MON}" tal:attributes="selected cd_mon == item.CD_MON and 'selected' or None">${item.NOM} - ${item.CD_MON}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<button class="btn btn-primary" type="submit" name="form.circuit">Mon. CIRCUIT</button>
|
||||
<button class="btn btn-warning" type="submit" name="form.stage">Mon. ROUTE</button>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<select class="form-control" id="seance" name="seance">
|
||||
<option>AM</option>
|
||||
<option>PM</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<button class="btn btn-primary" type="submit" name="form.seance">
|
||||
<span class="glyphicon glyphicon-pencil"></span> Séance</button>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<input type="checkbox" name="cb_all" value="cb_all" id="cb_all"
|
||||
tal:attributes="checked cb_all == 'oui' and 'checked' or None"
|
||||
onChange="$('#frm-stageb_list').submit()">
|
||||
Afficher tous</input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="stageb_list" class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Gr</th>
|
||||
<th>Nv</th>
|
||||
<th>Stg</th>
|
||||
<th>Circ</th>
|
||||
<th>Nom, Prénom</th>
|
||||
<th>Solde</th>
|
||||
<th>ETG</th>
|
||||
<th>Fil.</th>
|
||||
<th>Comment.</th>
|
||||
<th>HCB</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="/stages_edit/${codeleve}" ><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="#editStage" name="form.seance"><span class="glyphicon glyphicon-pencil"></span> Modifier stage</button>
|
||||
<button class="btn btn-primary" type="button" tal:condition="code == 9 and stage.VALIDE != 'O'" data-toggle="modal" data-target="#validateStage"><span class="glyphicon glyphicon-check"></span> Valider stage</button>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
<!-- Modal : Creation stage -->
|
||||
<div class="modal fade" id="editStage" tal:condition="code == 9" 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">Stage B du ${stage.SEMAINE}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="edit-stage" 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-xs-6">
|
||||
<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-md-3 col-sm-3 control-label" style="margin-top:8px">Du</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="debut" value="${stage_debut}" name="debut" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<label class="col-sm-3 col-md-1 control-label text-uppercase" style="margin-top:8px">à</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="starttime" value="${starttime}" name="starttime" placeholder="3 caractères minimum" readonly />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Au </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" value="${stage_fin}" id="fin" name="fin" placeholder="3 caractères minimum" />
|
||||
<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 </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 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-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">Formateur(trice) </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="formateur" value="${stage.formateur}" name="formateur" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_formateur" value="${stage.nom_formateur}" name="nom_formateur" placeholder="Nom" />
|
||||
<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">Psycologue </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="psychologue" value="${stage.psychologue}" name="psychologue" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5 " style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_psy" value="${stage.nom_psy}" name="nom_psy" placeholder="Nom" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="AGENCE" id="agence" value="${stage.AGENCE}" />
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-primary" name="form.updated" style="margin-top:8px">Enregistrer</button>
|
||||
<button type="button" id="deleteRdv" tal:condition="code == 9" class="btn btn-danger" data-dismiss="modal" data-toggle="modal" data-target="#deleteStage" style="margin-top:8px">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- modal -->
|
||||
<div class="modal fade" tal:condition="code == 9" id="validateStage" 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">
|
||||
<h5>
|
||||
Après la validation, aucune modification ne sera possible.
|
||||
</h5>
|
||||
<p>
|
||||
<div class="form-group row" tal:condition="ispassed">
|
||||
<label class="col-sm-3 control-label" >Mot de passe </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="password" class="form-control" name="password" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
</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" tal:condition="code == 9" id="deleteStage" 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 stage ?
|
||||
</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>
|
||||
<!-- 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 = $('#stageb_list').DataTable({
|
||||
data: dataSet,
|
||||
pageLength: 100,
|
||||
bLengthChange: false,
|
||||
language: {
|
||||
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
|
||||
},
|
||||
columnDefs: [
|
||||
{ className: "text-center", "targets": [0,1,2,7,11] },
|
||||
{ className: "text-right", "targets": [6] },
|
||||
{ 'targets': 0,
|
||||
'checkboxes': {
|
||||
'selectRow': true,
|
||||
'selectCallback': function(td, cellData, rowData, row, col) {
|
||||
getAlldata();
|
||||
},
|
||||
}
|
||||
},
|
||||
{ targets: 5,
|
||||
"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: 12,
|
||||
"render": function (data, type, full, meta) {
|
||||
// ajouter un link vers le formulaire
|
||||
return '<a href="/stages_edit/' + data +
|
||||
'" class="btn btn-primary btn-sm"><span class="glyphicon glyphicon-pencil"></span>' + '</a>';
|
||||
},
|
||||
},
|
||||
],
|
||||
select: {
|
||||
'style': 'multi'
|
||||
},
|
||||
order: [[4, 'asc']],
|
||||
createdRow: function( row, data, dataIndex ) {
|
||||
if ( data[6].slice(-1) == "E" ) {
|
||||
$('td', row).eq(6).css('background-color', 'Orange');
|
||||
}
|
||||
if ( data[10] == "VAL" ) {
|
||||
$('td', row).eq(10).css('background-color', 'LightGreen');
|
||||
}
|
||||
if ( data[11] > "1" ) {
|
||||
$('td', row).eq(11).css('background-color', 'Crimson').css('color', 'white');
|
||||
}
|
||||
if ( data[11] == "1" ) {
|
||||
$('td', row).eq(11).css('background-color', 'LightGreen').css('color', 'black');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// Handle form submission event
|
||||
$('#frm-stageb_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)
|
||||
);
|
||||
});
|
||||
});
|
||||
$('#edit-stage').formValidation({
|
||||
fields: {
|
||||
TOTAL: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total devrait etre superieur ou égal au total inscrit',
|
||||
callback: function(input) {
|
||||
return parseInt(input) >= parseInt($('#DISPO').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
DISPO: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total inscript devrait etre inferieur ou égale au Total',
|
||||
callback: function(input) {
|
||||
return parseInt(input) <= parseInt($('#TOTAL').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
$('#nom_formateur').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (a, row) {
|
||||
$('#formateur').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
$('#nom_psy').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (el, row) {
|
||||
$('#psychologue').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
function getAlldata(data){
|
||||
selecteds = table.data().toArray()
|
||||
var selectdIds = table.column(0).checkboxes.selected().toArray()
|
||||
var filtered = selecteds.filter(function(e){
|
||||
return e[13] === '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>
|
||||
|
||||
|
||||
376
aem_gestion/templates/planning/stagec_list.pt
Normal file
376
aem_gestion/templates/planning/stagec_list.pt
Normal file
@@ -0,0 +1,376 @@
|
||||
<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-stagec_list" action="${url}" method="POST" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<div class="col-xs-12">
|
||||
<a href="/stages_schd/C" 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> Emargement</button>
|
||||
(Veuillez cocher un ou plusieurs élèves pour effectuer un suivi)
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="stagec_list" class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Nom, Prénom</th>
|
||||
<th>Solde</th>
|
||||
<th>Cat</th>
|
||||
<th>Inscrit le</th>
|
||||
<th>Comentaire</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="/stages_edit/${codeleve}" ><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="#editStage" name="form.seance"><span class="glyphicon glyphicon-pencil"></span> Modifier stage</button>
|
||||
<button class="btn btn-primary" type="button" tal:condition="code == 9 and stage.VALIDE != 'O'" data-toggle="modal" data-target="#validateStage"><span class="glyphicon glyphicon-check"></span> Valider stage</button>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
<div class="modal fade" id="editStage" tal:condition="code == 9" 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">Stage PAP du ${stage.SEMAINE}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="edit-stage" 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-xs-6">
|
||||
<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-md-3 col-sm-3 control-label" style="margin-top:8px">Du</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="debut" value="${stage_debut}" name="debut" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<label class="col-sm-3 col-md-1 control-label text-uppercase" style="margin-top:8px">à</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="starttime" value="${starttime}" name="starttime" placeholder="3 caractères minimum" readonly />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Au </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" value="${stage_fin}" id="fin" name="fin" placeholder="3 caractères minimum" />
|
||||
<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 </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 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-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">Formateur(trice) </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="formateur" value="${stage.formateur}" name="formateur" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_formateur" value="${stage.nom_formateur}" name="nom_formateur" placeholder="Nom" />
|
||||
<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">Psycologue </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="psychologue" value="${stage.psychologue}" name="psychologue" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5 " style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_psy" value="${stage.nom_psy}" name="nom_psy" placeholder="Nom" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="AGENCE" id="agence" value="${stage.AGENCE}" />
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-primary" name="form.updated" style="margin-top:8px">Enregistrer</button>
|
||||
<button type="button" tal:condition="code == 9" id="deleteRdv" class="btn btn-danger" data-dismiss="modal" data-toggle="modal" data-target="#deleteStage" style="margin-top:8px">Supprimer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- modal -->
|
||||
<div class="modal fade" tal:condition="code == 9" id="validateStage" 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">
|
||||
<h5>
|
||||
Après la validation, aucune modification ne sera possible.
|
||||
</h5>
|
||||
<p>
|
||||
<div class="form-group row" tal:condition="ispassed">
|
||||
<label class="col-sm-3 control-label" >Mot de passe </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="password" class="form-control" name="password" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
</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="deleteStage" 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 stage ?
|
||||
</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>
|
||||
<!-- 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 = $('#stagec_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,6,7] },
|
||||
{ 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: 7,
|
||||
"render": function (data, type, full, meta) {
|
||||
// ajouter un link vers le formulaire
|
||||
return '<a href="/stages_edit/' + data +
|
||||
'" 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[6] == "1" ) {
|
||||
$('td', row).eq(6).css('background-color', 'LightGreen');
|
||||
}
|
||||
if ( data[6] > "1" ) {
|
||||
$('td', row).eq(6).css('background-color', 'Crimson').css('color', 'white');
|
||||
}
|
||||
},
|
||||
});
|
||||
// Handle form submission event
|
||||
$('#frm-stagec_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)
|
||||
);
|
||||
});
|
||||
});
|
||||
$('#edit-stage').formValidation({
|
||||
fields: {
|
||||
TOTAL: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total devrait etre superieur ou égal au total inscrit',
|
||||
callback: function(input) {
|
||||
return parseInt(input) >= parseInt($('#DISPO').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
DISPO: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total inscript devrait etre inferieur ou égale au Total',
|
||||
callback: function(input) {
|
||||
return parseInt(input) <= parseInt($('#TOTAL').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
$('#nom_formateur').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (a, row) {
|
||||
$('#formateur').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
$('#nom_psy').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (el, row) {
|
||||
$('#psychologue').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#editStage"
|
||||
});
|
||||
function getAlldata(data){
|
||||
selecteds = table.data().toArray()
|
||||
var selectdIds = table.column(0).checkboxes.selected().toArray()
|
||||
var filtered = selecteds.filter(function(e){
|
||||
return e[8] === '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>
|
||||
|
||||
|
||||
128
aem_gestion/templates/planning/stages_edit.pt
Normal file
128
aem_gestion/templates/planning/stages_edit.pt
Normal file
@@ -0,0 +1,128 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="alert alert-success" tal:condition="message" tal:content="message" />
|
||||
|
||||
<form id="motos_edit-form" class="form-horizontal" action="${url}" 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">Nom</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="NOM" id="NOM"
|
||||
value="${eleve.NOM} ${eleve.PRENOM} | ${eleve.CD_CLI}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" tal:condition="cd_cli != 0">
|
||||
<label class="control-label col-xs-3">Nb d'heures</label>
|
||||
<div class="col-xs-6">
|
||||
<p>${rdvb.QTE}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" tal:condition="cd_cli != 0">
|
||||
<label class="control-label col-xs-3">Référence</label>
|
||||
<div class="col-xs-6">
|
||||
<p>${rdvb.REF}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Commentaire</label>
|
||||
<div class="col-xs-6">
|
||||
<input class="form-control" type="text" name="LIEU"
|
||||
value="${rdvb.LIEU}"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="50"
|
||||
data-fv-stringlength-message="50 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" tal:condition="eleve.TYPE_ENTREPRISE=='E'">
|
||||
<label class="control-label col-xs-3">Entreprise</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${eleve.NOM_ENTREPRISE}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="statut">Statut</label>
|
||||
<div class="col-xs-6">
|
||||
<select class="form-control" id="statut" name="STATUT">
|
||||
<div tal:repeat="item statuts">
|
||||
<option value="${item.CODE}" tal:attributes="selected rdvb.STATUT==item.CODE and 'selected' or None">${item.CODE} - ${item.LIBELLE}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">A confirmer avant le :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${fin_reservation}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Ligne de compte :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${ligne_cpt}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Créé le :</label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${cree_le}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Modifié le : </label>
|
||||
<div class="col-xs-8">
|
||||
<p class="form-control-static">${modif_le} par <b>${cd_uti}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-8">
|
||||
<a href="${url_retour}" class="btn btn-default" role="button">
|
||||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||||
<button class="btn btn-danger" type="submit" name="form.deleted" tal:condition="delete">
|
||||
<span class="glyphicon glyphicon-ok"></span> Supprimer</button>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="rdvb.VALIDE != 'O'">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
<a class="btn btn-warning" role="button" href="/fiche_eleve/${rdvb.CD_CLI}" tal:condition="rdvb.CD_CLI > 100000">
|
||||
<span class="glyphicon glyphicon-user"></span> Fiche élève</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#motos_edit-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
$('#NOM').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_eleve',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
|
||||
});
|
||||
},
|
||||
select :function(el,data){
|
||||
console.log(data.item)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#motos_edit-form"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
424
aem_gestion/templates/planning/stages_schd.pt
Normal file
424
aem_gestion/templates/planning/stages_schd.pt
Normal file
@@ -0,0 +1,424 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
<div class="container">
|
||||
<br />
|
||||
<div id="calendar"></div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<!-- Modal : Creation stage -->
|
||||
<div class="modal fade" id="confirmCreate" 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">Stage B du</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- The form is placed inside the body of modal -->
|
||||
<form id="create-stage" 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-xs-6">
|
||||
<select class="form-control" name="GROUPE" id="select-group">
|
||||
<tal:block tal:repeat="key [x for x in groupe.keys()]">
|
||||
<option value="${key}" >${groupe[key]}</option>
|
||||
</tal:block>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-md-3 col-sm-3 control-label" style="margin-top:8px">Du</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="debut" name="debut" placeholder="3 caractères minimum" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<label class="col-sm-3 col-md-1 control-label text-uppercase" style="margin-top:8px">à</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="starttime" name="starttime" placeholder="3 caractères minimum" readonly />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="form-code">
|
||||
<label class="col-sm-3 control-label" >Au </label>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<input type="text" class="form-control" id="fin" name="fin" placeholder="3 caractères minimum" />
|
||||
<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 </label>
|
||||
<div class="col-sm-8 col-md-2" style="margin-top:8px">
|
||||
<input type="number" class="form-control" id="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 inscrits</label>
|
||||
<div class="col-sm-8 col-md-3" style="margin-top:8px">
|
||||
<input type="number" class="form-control" id="DISPO" value="0" 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-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" />
|
||||
<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">Formateur(trice) </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="formateur" name="formateur" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_formateur" name="nom_formateur" placeholder="Nom" />
|
||||
<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">Psycologue </label>
|
||||
<div class="col-sm-2 col-md-2" style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="psychologue" name="psychologue" placeholder="Code" readonly/>
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-5 " style="margin-top:8px">
|
||||
<input type="text" class="form-control" id="nom_psy" name="nom_psy" placeholder="Nom" />
|
||||
<span id="text-error-message" style="font-size:11px;color:#D9534F;"></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="SEMAINE" id="semaine" />
|
||||
<input type="hidden" name="AGENCE" id="agence" />
|
||||
<div class="form-group">
|
||||
<div class="col-xs-5 col-xs-offset-3">
|
||||
<button type="submit" id="submitRdv" class="btn btn-danger" name="form.submitted" style="margin-top:8px">Enregistrer</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:8px">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- content -->
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- Bootstrap Fullcalendar plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar-scheduler/1.9.4/scheduler.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/locale/fr.js"></script>
|
||||
<script>
|
||||
var currentday = moment(new Date());
|
||||
var type_stage = "${type_stage}"
|
||||
|
||||
function getEventOfWeek(date) {
|
||||
var allEvents = [];
|
||||
allEvents = $('#calendar').fullCalendar('clientEvents');
|
||||
var event = $.grep(allEvents, function(v) {
|
||||
var conditions = [];
|
||||
for (let i = 1; i <= 6; i++) {
|
||||
var indice = date.day() - i;
|
||||
var copydate = moment(date.format('YYYY-MM-DD'));
|
||||
var newdate = moment(copydate.subtract(indice, "days").format('YYYY-MM-DD'))
|
||||
conditions.push(newdate.format('YYYY-MM-DD') === v.start.format('YYYY-MM-DD'))
|
||||
}
|
||||
return conditions.includes(true);
|
||||
});
|
||||
return event;
|
||||
}
|
||||
|
||||
function getalldaysInSameWeek(date) {
|
||||
var days = [];
|
||||
for (let i = 1; i <= 6; i++) {
|
||||
var indice = date.day() - i;
|
||||
var copydate = moment(date.format('YYYY-MM-DD'));
|
||||
var newdate = moment(copydate.subtract(indice, "days").format('YYYY-MM-DD'))
|
||||
days.push(newdate)
|
||||
}
|
||||
return days;
|
||||
}
|
||||
|
||||
function setInput(libelle = "", starttime = "08:00", debut = "", fin = "", total = 0,agence=6) {
|
||||
resetInput();
|
||||
$('#LIBELLE').val(libelle)
|
||||
$('#starttime').val(starttime);
|
||||
$('#debut').val(debut)
|
||||
$('#fin').val(fin)
|
||||
$('#TOTAL').val(total);
|
||||
$('#agence').val(agence);
|
||||
}
|
||||
|
||||
function resetInput() {
|
||||
$('#LIBELLE').val('')
|
||||
$('#starttime').val('');
|
||||
$('#debut').val('');
|
||||
$('#fin').val('')
|
||||
$('#TOTAL').val(0);
|
||||
}
|
||||
|
||||
function automateSaisiB(group, daysofWeek, date) {
|
||||
switch (group) {
|
||||
case 'A':
|
||||
setInput('STAGE B', '08:00', daysofWeek[0].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
case 'B':
|
||||
setInput('STAGE TRANSFERT', '08:00', daysofWeek[2].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
case 'C':
|
||||
setInput('STAGE BOITE AUTO', '08:00', daysofWeek[0].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
case 'D':
|
||||
setInput('TRANSF BOITE AUTO', '08:00', daysofWeek[2].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
case 'E':
|
||||
setInput('', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
case 'F':
|
||||
setInput('B96', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 3)
|
||||
break;
|
||||
case 'G':
|
||||
setInput('B96', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 3)
|
||||
break;
|
||||
case 'H':
|
||||
setInput('B96', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 3)
|
||||
break;
|
||||
case 'I':
|
||||
setInput('B96', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 3)
|
||||
break;
|
||||
case 'J':
|
||||
setInput('POST PERMIS VAISE', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 12,1)
|
||||
break;
|
||||
case 'K':
|
||||
setInput('POST PERMIS CHARP', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 12,5)
|
||||
break;
|
||||
case 'L':
|
||||
setInput('POST PERMIS GENTIL', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 12,7)
|
||||
break;
|
||||
case 'M':
|
||||
setInput('POST PERMIS VAUGN', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 12)
|
||||
break;
|
||||
case 'N':
|
||||
setInput('', '08:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function automateSaisiM(group, daysofWeek, date) {
|
||||
switch (group) {
|
||||
case 'A':
|
||||
setInput('STAGE 8H', '08:00', daysofWeek[0].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 6,5)
|
||||
break;
|
||||
case 'B':
|
||||
setInput('STAGE 8H', '08:00', daysofWeek[0].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 6,6)
|
||||
break;
|
||||
case 'C':
|
||||
setInput('STAGE 15H', '15:00', daysofWeek[0].format('DD-MM-YYYY'), daysofWeek[4].format('DD-MM-YYYY'), 6)
|
||||
break;
|
||||
default:
|
||||
setInput('', '10:00', date.format('DD-MM-YYYY'), date.format('DD-MM-YYYY'), 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function automateSaisiC(group, daysofWeek, date) {
|
||||
var date2 = moment(date.format('YYYY-MM-DD')).subtract(-1, 'days');
|
||||
switch (group) {
|
||||
case 'A':
|
||||
setInput('CHARPENNES', '08:15', date.format('DD-MM-YYYY'), date2.format('DD-MM-YYYY'), 0);
|
||||
break;
|
||||
case 'B':
|
||||
setInput('VAUGNERAY', '08:15', date.format('DD-MM-YYYY'), date2.format('DD-MM-YYYY'), 0);
|
||||
break;
|
||||
default:
|
||||
setInput('', '08:15', date.format('DD-MM-YYYY'), date2.format('DD-MM-YYYY'), 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#calendar').fullCalendar({
|
||||
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
||||
locale: 'fr',
|
||||
header: {
|
||||
left: 'month listWeek',
|
||||
center: 'prev title next',
|
||||
right: 'today'
|
||||
},
|
||||
allDaySlot: false,
|
||||
defaultView: 'month',
|
||||
hiddenDays: [0], // hide sunday
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
displayEventTime: false,
|
||||
events: ${calendar_events},
|
||||
eventRender: function(event, element) {
|
||||
element.find('.fc-title').html(event.title);
|
||||
},
|
||||
dayClick: function(date, jsEvent, view) {
|
||||
if(parseInt('${code}') == 9 ){
|
||||
var weekevent = getEventOfWeek(date);
|
||||
var daysofWeek = getalldaysInSameWeek(date);
|
||||
var notUsedGroup = $.grep(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'], function(g) {
|
||||
var conditions = [];
|
||||
weekevent.forEach(function(e) {
|
||||
conditions.push(e.title.startsWith(g))
|
||||
});
|
||||
return !conditions.includes(true);
|
||||
});
|
||||
var newgroup = 'A';
|
||||
if (weekevent.length == 0) {
|
||||
$("#select-group").val(newgroup);
|
||||
} else {
|
||||
newgroup = notUsedGroup.length > 0 ? notUsedGroup[0] : 'A';
|
||||
$("#select-group").val(newgroup);
|
||||
}
|
||||
|
||||
//console.log(date.format('YYYY-MM-DD'))
|
||||
var dayclick = date.format('dddd DD MMMM à HH');
|
||||
var week = moment(date).format('YYYYww')
|
||||
$('#semaine').val(week)
|
||||
switch (type_stage) {
|
||||
case 'B':
|
||||
automateSaisiB(newgroup, daysofWeek, date);
|
||||
$('.modal-title').html('Stage B du ' + week);
|
||||
break;
|
||||
case 'M':
|
||||
automateSaisiM(newgroup, daysofWeek, date);
|
||||
$('.modal-title').html('Stage Motos du ' + week);
|
||||
break;
|
||||
case 'C':
|
||||
automateSaisiC(newgroup, daysofWeek, date);
|
||||
$('.modal-title').html('Stage PAP du ' + week);
|
||||
break;
|
||||
}
|
||||
currentday = moment(date.format('YYYY-MM-DD'));
|
||||
$("#confirmCreate").modal("show");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
$('#debut').datetimepicker({
|
||||
format: 'DD-MM-YYYY'
|
||||
});
|
||||
$('#fin').datetimepicker({
|
||||
format: 'DD-MM-YYYY'
|
||||
});
|
||||
$('#starttime').datetimepicker({
|
||||
format: 'LT',
|
||||
defaultDate: moment(new Date()).hours(8).minutes(0).seconds(0).milliseconds(0)
|
||||
});
|
||||
$("#select-group").on('input change', function() {
|
||||
var newgroup = $(this).val();
|
||||
var daysofWeek = getalldaysInSameWeek(currentday);
|
||||
switch (type_stage) {
|
||||
case 'B':
|
||||
automateSaisiB(newgroup, daysofWeek, currentday);
|
||||
break;
|
||||
case 'M':
|
||||
automateSaisiM(newgroup, daysofWeek, currentday);
|
||||
break;
|
||||
case 'C':
|
||||
automateSaisiC(newgroup, daysofWeek, currentday);
|
||||
break;
|
||||
}
|
||||
});
|
||||
$('#create-stage').formValidation({
|
||||
fields: {
|
||||
TOTAL: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total devrait etre superieur ou égal au total inscrit',
|
||||
callback: function(input) {
|
||||
return parseInt(input) >= parseInt($('#DISPO').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
DISPO: {
|
||||
validators: {
|
||||
callback: {
|
||||
message: 'Total inscript devrait etre inferieur ou égale au Total',
|
||||
callback: function(input) {
|
||||
return parseInt(input) <= parseInt($('#TOTAL').val())
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
$('#nom_formateur').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
planning : type_stage,
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (a, row) {
|
||||
$('#formateur').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
$('#nom_psy').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_moniteur',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
planning : type_stage,
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
select: function (el, row) {
|
||||
$('#psychologue').val(row.item.data)
|
||||
},
|
||||
minLength: 3,
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
});
|
||||
if(type_stage === "M"){
|
||||
$('#LIBELLE').autocomplete({
|
||||
source: [
|
||||
{
|
||||
label:"pem",value:"pem",data:"pem"
|
||||
},
|
||||
{
|
||||
label:"pass a2",value:"pass a2",data:"pass a2"
|
||||
},
|
||||
{
|
||||
label:"staby",value:"staby",data:"staby"
|
||||
},
|
||||
{
|
||||
label:"staby ref",value:"staby ref",data:"staby ref"
|
||||
}
|
||||
],
|
||||
appendTo: "#confirmCreate"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</metal:block>
|
||||
Reference in New Issue
Block a user