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' +
headerHTML +
'
\n' +
'
\n'+
periodesHTML +
'\n';
}
function getHeader(level_id,level_name)
{
return ''
}
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' +
' clear\n' +
' \n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
' \n' +
' clear\n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
' \n' +
' clear\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' +
' clear\n' +
' \n' +
'
\n' +
'
\n' +
'
\n' +
'
\n' +
' \n' +
' \n' +
' done\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);
}