{% extends "base.html.twig" %} {% block head_style %} {{ encore_entry_link_tags('app') }} {{ encore_entry_link_tags('fullcalendar') }} {% endblock head_style %} {% block localstyle %} .fc-header-toolbar h2 { text-transform: uppercase; } .fc-day-grid-event { padding:0px; border-radius:0px; border: none; } .fc-content { height: 40px; } .fc-title { font-weight: bolder; font-size: 12px; } .eventAvatar { width: 20px; margin: 0px 5px 0px 0px; float: left; } .eventInfo{ margin: -5px 5px 0px 0px; clear: both; } .eventUser{ clear: both; } .eventEstimate { margin: -3px 10px; } .select2-results__group { font-size:12px !important; } .select2-results__option{ font-size: 14px; padding-left:15px } {% endblock %} {% block body %}
{{ encore_entry_script_tags('fullcalendar') }} {% endblock %} {% block localjavascript %} $(document).ready(function() { $("#modalsubmit #user").select2({ theme: 'bootstrap4', language: "fr" }); $("#modalsubmit #task").select2({ placeholder: "Selectionnez un projet", allowClear: true, theme: 'bootstrap4', language: "fr" }); $("#modalupdate #user").select2({ theme: 'bootstrap4', language: "fr" }); $("#modalupdate #task").select2({ placeholder: "Selectionnez un projet", theme: 'bootstrap4', language: "fr" }); }); // Rendu d'un évenement function eventRender(info) { console.log(info.event.extendedProps); // Récupération des divers élements du rendu event var content=$(info.el).children('.fc-content'); var title=$(content).children('.fc-title'); // Ajouter l'avatar content.prepend(""); content.append(""+info.event.extendedProps.username+""); var eventInfo=$(content).children('.eventUser'); // Ajout container content.append(""); var eventInfo=$(content).children('.eventInfo'); // Ajouter le verrou si event non editable if(info.event.extendedProps.locked) { eventInfo.append(""); } if(info.event.extendedProps.externaltrip) { eventInfo.append(""); } if(info.event.extendedProps.holiday) { eventInfo.append(""); } // Ajout estimation eventInfo.append(""+info.event.extendedProps.estimate+""); // Description content.attr("title",info.event.extendedProps.fulldescription); } // Formulaire Création d'un événement var allDay; function eventSelect(selectionInfo) { var start=moment(selectionInfo.start); var end=moment(selectionInfo.end); var end=end.subtract(1, 'd'); allDay=(start.format("DD/MM/YYYY") != end.format("DD/MM/YYYY")); // Controle if(start.month()!=end.month()) { alert("Une tâche ne peut être sur deux mois différents"); return false; } if(start.week()!=end.week()) { alert("Une tâche ne peut être sur deux semaines différentes"); return false; } // Valeur par défaut {% if (is_granted('ROLE_ADMIN') or is_granted('ROLE_VALIDATOR') or is_granted('ROLE_MASTER')) and app.session.get('iduser')!="all" %} $('#usersubmit').val({{app.session.get('iduser')}}).trigger("change"); {% else %} $('#usersubmit').val({{app.user.id}}).trigger("change"); {% endif %} // Si jour de fin un samedi ou un dimanche : on est forcement en astreinte if(moment(end).day()==0||moment(end).day()==6) { $("#modalsubmit #astreinte").prop("checked",true); $("#modalsubmit #astreinte").attr("disabled",true); allDay=true; } else { $("#modalsubmit #astreinte").prop('checked', false); $("#modalsubmit #astreinte").attr('disabled', false); } $('#modalsubmit #amsubmit').prop("checked",true); $('#modalsubmit #apsubmit').prop("checked",true); $('#modalsubmit #amsubmit').attr("disabled",allDay); $('#modalsubmit #apsubmit').attr("disabled",allDay); $('#modalsubmit #start').val(start.format("YYYY-MM-DD")); $('#modalsubmit #end').val(end.format("YYYY-MM-DD")); $('#modalsubmit #description').val(""); $('#modalsubmit #externaltrip').prop("checked",false); $("#modalsubmit .alert").remove(); // Formulaire de création d'un évènement $('#modalsubmit').modal(); } // Formulaire Modification d'un événement function eventClick(info) { if(info.event.extendedProps.editable) { console.log(info.event); var id=info.event.id; var description=info.event.extendedProps.description; var userid=info.event.extendedProps.userid; var taskid=info.event.extendedProps.taskid; var fgastreinte=info.event.extendedProps.astreinte; var eventallday = info.event.allDay; var eventstart = info.event.start; var eventend = info.event.end; var externaltrip = info.event.extendedProps.externaltrip; var holiday = info.event.extendedProps.holiday; $('#userupdate').val(userid).trigger("change"); $('#taskupdate').val(taskid).trigger("change"); $('#modalupdate #idevent').val(id); $('#modalupdate #fgastreinte').val(fgastreinte); $('#modalupdate #description').val(description); if (holiday) { $('#modalupdate #externaltripupdate').prop("checked",false); $('#modalupdate #externaltripupdate').prop("disabled",true); }else{ $('#modalupdate #externaltripupdate').prop("disabled",false); $('#modalupdate #externaltripupdate').prop("checked",externaltrip); } $("#modalupdate .alert").remove(); eDayStart=eventstart.toString().split(" ")[2] eDayEnd=eventend.toString().split(" ")[2] if ((eDayEnd - eDayStart) >1) { $('#modalupdate #amupdate').prop("checked",true); $('#modalupdate #apupdate').prop("checked",true); $('#modalupdate #amupdate').prop("disabled",true); $('#modalupdate #apupdate').prop("disabled",true); }else{ $('#modalupdate #amupdate').prop("disabled",false); $('#modalupdate #apupdate').prop("disabled",false); if (!eventallday){ eStart = eventstart.toString().split(" ")[4].split(":")[0] //eEnd = eventend.toString().split(" ")[4].split(":")[0] //AM if (eStart == 09){ $('#modalupdate #amupdate').prop("checked",true); $('#modalupdate #apupdate').prop("checked",false); } //AP if (eStart == 13){ $('#modalupdate #amupdate').prop("checked",false); $('#modalupdate #apupdate').prop("checked",true); } }else{ $('#modalupdate #amupdate').prop("checked",true); $('#modalupdate #apupdate').prop("checked",true); } } // Formulaire de création d'un évènement $('#modalupdate').modal(); } } // Création de l'évènement function eventSubmit() { $("#modalsubmit .alert").remove(); var error=false; // Tache obligatoire if($("#modalsubmit #task").val()=="") { error=true; $("#modalsubmit .modal-body").append("
Tâche obligatoire
"); } // AM ou PM obligatoire if(!$("#modalsubmit #amsubmit").prop("checked")&&!$("#modalsubmit #apsubmit").prop("checked")) { error=true; $("#modalsubmit .modal-body").append("
Vous devez choisir un moment de la journée
"); } if(!error) { $.ajax({ type: "POST", data: { iduser: $("#usersubmit").val(), idtask: $("#tasksubmit").val(), start: $("#modalsubmit #start").val(), end: $("#modalsubmit #end").val(), am: $("#modalsubmit #amsubmit").prop("checked"), ap: $("#modalsubmit #apsubmit").prop("checked"), astreinte: $("#modalsubmit #astreinte").prop("checked"), externaltrip: $("#modalsubmit #externaltrip").prop("checked"), description: $("#modalsubmit #description").val() }, url: "{{ path('app_event_submit') }}", success: function (response) { response=JSON.parse(response); if(response.return=="KO") { $("#modalsubmit .modal-body").append("
"+response.error+"
"); } else { calendar.addEvent(response); calendar.render; $('#modalsubmit').modal('hide'); } } }); } } // Modification de l'évènement function eventUpdate() { $("#modalupdate .alert").remove(); $.ajax({ type: "POST", data: { idevent: $("#modalupdate #idevent").val(), iduser: $("#userupdate").val(), idtask: $("#taskupdate").val(), am: $("#modalupdate #amupdate").prop("checked"), ap: $("#modalupdate #apupdate").prop("checked"), fgastreinte: $("#modalupdate #fgastreinte").val(), externaltrip: $("#modalupdate #externaltripupdate").prop("checked"), description: $("#modalupdate #description").val() }, url: "{{ path('app_event_update') }}", success: function (response) { response=JSON.parse(response); if(response.return=="KO") { $("#modalupdate .modal-body").append("
"+response.error+"
"); } else { var event = calendar.getEventById($("#modalupdate #idevent").val()); event.remove(); calendar.addEvent(response); calendar.render; $('#modalupdate').modal('hide'); } } }); } // Suppression de l'évènement function eventDelete() { $("#modalupdate .alert").remove(); $.ajax({ type: "POST", data: { idevent: $("#modalupdate #idevent").val(), fgastreinte: $("#modalupdate #fgastreinte").val() }, url: "{{ path('app_event_delete') }}", success: function (response) { response=JSON.parse(response); if(response.return=="KO") { $("#modalupdate .modal-body").append("
"+response.error+"
"); } else { var event = calendar.getEventById($("#modalupdate #idevent").val()); event.remove(); $('#modalupdate').modal('hide'); } } }); } // On change astreinte $("#astreinte").change(function() { if(this.checked) { $("#amsubmit").prop("disabled",true); $("#apsubmit").prop("disabled",true); $('#modalsubmit #amsubmit').prop("checked",true); $('#modalsubmit #apsubmit').prop("checked",true); } else { $("#amsubmit").prop("disabled",allDay); $("#apsubmit").prop("disabled",allDay); $('#modalsubmit #amsubmit').prop("checked",true); $('#modalsubmit #apsubmit').prop("checked",true); } }); {% endblock %}