var nbOfLevel = 0; var nbOfPeriode = 0; var eventType; var editorMode = 'schedule'; function initEditor(event_id = 1, mode = 'schedule') { let editor = $('#editor'); editorMode = mode; eventType = null; let eventTypePromise = $.ajax({ type: 'GET', url: '/api/eventType/'+event_id+'?api_token='+api_token, success: function (template) { eventType = template; }, error: function () { showNotification('error','Impossible d\'initialiser l\'éditeur d\'horaire ...','top', 'center') } }); $.when(eventTypePromise).done(function () { console.log(eventType); nbOfLevel = eventType['schedule_model']['niveaux'].length; nbOfPeriode = eventType['schedule_model']['periodes'].length; updateWidth(); editor.html(getTemplate(eventType['schedule_model'])); if (mode == 'eventType') { let scheduleModel = eventType['schedule_model']; if (scheduleModel['default_value']) { $.each(scheduleModel['niveaux'], function (level_id, level) { $.each(scheduleModel['periodes'], function (periode_id, value) { if (scheduleModel['default_value'][level_id,periode_id]) { updateLevel(periode_id,level_id,scheduleModel['default_value'][periode_id][level_id]); } }); }); } $('.no-mandatory').removeAttr('required') } initAutoComplete("AutoCompleteUser"); initAutoCompleteOCOM('AutoCompleteOCOM'); }); } function updateWidth() { $('#editor').css('width',(23*(nbOfLevel+1))+'rem'); } function getTemplate(scheduleModel) { let headerHTML = ''; $.each(scheduleModel['niveaux'], function (index, value) { headerHTML = headerHTML+getHeader(index,value['name']); }); let periodesHTML = ''; $.each(scheduleModel['periodes'], function (index, value) { periodesHTML = periodesHTML+getPeriode(index,value,scheduleModel['niveaux']); }); return '
\n' + '
\n' + ' \n' + ' Niveau/Periode\n' + ' \n' + '
\n' + headerHTML + '
\n' + ' \n' + ' add\n' + ' \n' + ' \n' + ' remove\n' + ' \n' + '
\n' + '
\n'+ periodesHTML + '
\n' + '
\n' + ' \n' + ' add\n' + ' \n' + ' \n' + ' remove\n' + ' \n' + '
\n' + '
\n'; } function getHeader(level_id,level_name) { return '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + ' \n' + '
\n' + '
' } function getPeriode(id,periode,niveaux) { let temp = ''; $.each(niveaux, function (index, value) { temp = temp+getCourse(index,id); }); return '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + temp + '
\n' + '\n' + '
\n' + '
' } function getCourse(level_id,periode_id) { level_id++; periode_id++; return '
\n' + '\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n'+ '
'; } function updateLevel(p,l,level) { p++; l++; $('#desc_n'+l+'_p'+p).val(level['desc']); $('#ocom_n'+l+'_p'+p).val(level['ocom']); $('#name_n'+l+'_p'+p).val(level['name']); $('#location_n'+l+'_p'+p).val(level['location']); $('#instruc_n'+l+'_p'+p).val(level['instructor']); if (level['use_course'] != 'on') { selectCourseMode('autre',l,p); } } function removePeriode() { $('#row-'+(nbOfPeriode-1)).remove(); eventType['schedule_model']['periodes'].pop(); nbOfPeriode--; } function removeLevel() { $('#levelHeader-'+(nbOfLevel-1)).remove(); for (let i = 0; i < nbOfPeriode; i++) { $('#container-'+(nbOfLevel)+'-'+(i+1)).remove(); } eventType['schedule_model']['niveaux'].pop(); updateWidth(); nbOfLevel--; } function addLevel() { $('#levelHeader-'+(nbOfLevel-1)).after(getHeader(nbOfLevel,'Niveau '+(nbOfLevel+1))); let scheduleModel = eventType['schedule_model']; $.each(scheduleModel['periodes'], function (periode_id, value) { console.log($('#container-'+(nbOfLevel)+'-'+periode_id)); $('#container-'+(nbOfLevel)+'-'+(periode_id+1)).after(getCourse(nbOfLevel,periode_id)); }); eventType['schedule_model']['niveaux'].push({name:'Niveau '+(nbOfLevel+1)}); updateWidth(); nbOfLevel++; initAutoComplete("AutoCompleteUser"); initAutoCompleteOCOM('AutoCompleteOCOM'); if (editorMode == 'eventType') { $('.no-mandatory').removeAttr('required') } } function addPeriode() { $('#row-'+(nbOfPeriode-1)).after(getPeriode(nbOfPeriode,{ "name": "Periode "+nbOfPeriode, "begin_time": "", "end_time": "" },eventType['schedule_model']['niveaux'])); eventType['schedule_model']['periodes'].push({ "name": "Periode "+nbOfPeriode, "begin_time": "", "end_time": "" }); nbOfPeriode++; initAutoComplete("AutoCompleteUser"); initAutoCompleteOCOM('AutoCompleteOCOM'); if (editorMode == 'eventType') { $('.no-mandatory').removeAttr('required') } } function selectCourseMode(mode, niveau, periode) { if(mode == "course") { $('#descContainer'+niveau+'-'+periode).addClass('d-none'); $('#isDoneContainer'+niveau+'-'+periode).removeClass('d-none'); $('#isDoneContainer'+niveau+'-'+periode).addClass('d-flex'); $('#OCOMContainer'+niveau+'-'+periode).removeClass('d-none'); $('#nameContainer'+niveau+'-'+periode).removeClass('d-none'); $('#modeSwitchC'+niveau+'-'+periode).addClass('active'); $('#modeSwitchO'+niveau+'-'+periode).removeClass('active'); $('#use_course_n'+niveau+'_p'+periode).prop("checked", true); } else { $('#descContainer'+niveau+'-'+periode).removeClass('d-none'); $('#isDoneContainer'+niveau+'-'+periode).addClass('d-none'); $('#isDoneContainer'+niveau+'-'+periode).removeClass('d-flex'); $('#OCOMContainer'+niveau+'-'+periode).addClass('d-none'); $('#nameContainer'+niveau+'-'+periode).addClass('d-none'); $('#modeSwitchC'+niveau+'-'+periode).removeClass('active'); $('#modeSwitchO'+niveau+'-'+periode).addClass('active'); $('#use_course_n'+niveau+'_p'+periode).prop("checked", false); } } function selectCourseModePeriode(mode,periode) { for (let i = 0; i < nbOfLevel; i++) { selectCourseMode(mode,i+1,periode+1); } } function selectCourseModeNiveau(mode,niveau) { for (let i = 0; i < nbOfPeriode; i++) { selectCourseMode(mode,niveau+1,i+1); } } function updatePlantext(toggle,id) { if($('#'+toggle).is(":checked")) { $('#'+id).removeClass('text-warning'); $('#'+id).addClass('text-success'); $('#'+id).html('Plan de cours remis') } else { $('#'+id).addClass('text-warning'); $('#'+id).removeClass('text-success'); $('#'+id).html('Plan de cours non remis') } } function updateCourseName(niveau, periode) { setTimeout(function(){ let val = $('#ocom_n'+niveau+'_p'+periode).val(); if(val != "") { $.ajax({ type: 'GET', url: '/api/ocom/'+val+'/name?api_token='+api_token, success: function (data) { if(data != null && data != "") { $('#name_n'+niveau+'_p'+periode).val(data); } }, error: function () { showNotification('error','Erreur impossible de charger l\'objectif de rendement ...','top', 'center') } }) } }, 100); }