window.from_date = null; window.to_date = null; window.student_ids = []; window.course_id = 1; window.to_draw = []; window.load_draw_interval = null; window.load_students_interval = null; window.load_date_interval - null; window.in_draw = false; window.students = {}; window.change_color_index = 0; function start_load() { window.load_students_interval = null; load_students(); $('[name=load_button]').fadeOut(function () { $('[name=preloader]').fadeIn(); $('[name=stop_button]').fadeIn(); }); } function stop_load() { clearInterval(window.load_students_interval); clearInterval(window.load_draw_interval); $('[name=stop_button]').fadeOut(); $('[name=preloader]').fadeOut(function () { $('[name=load_button]').fadeIn(); }); } function load_students(){ // Загрузить карту по if (!window.load_students_interval){ start_load(); } function start_load(){ window.student_ids = []; window.load_students_interval = setInterval( function(){load_map();}, 300); } function stop_load_process(){ clearInterval(window.load_students_interval); window.load_students_interval = null; draw_interval() } function load_map(){ if (check_load_finish()){ console.log('Остановка'); stop_load_process(); } else { get_students(); console.log('Получаю'); } } } function draw_interval(){ // Загрузить карту по if (!window.load_draw_interval){ start_load(); } function start_load(){ window.student_ids = []; window.load_draw_interval = setInterval( function(){draw_map();}, 1000); } function stop_load_process(){ clearInterval(window.load_draw_interval); window.load_draw_interval = null; console.log('Остановил'); $('[name=date_block]').fadeIn('slow'); stop_load(); } function draw_map(){ if (window.in_draw){ console.log('Пропускаю событие') } else if (window.to_draw.length == 0){ console.log('Остановка'); stop_load_process(); } else { draw_raw(window.to_draw.pop()); $('[name=preload_status]').html('Отрисовка:' +window.to_draw.length); console.log('Рисую'); } } } function change_date_color(){ // Загрузить карту по if (!window.load_date_interval){ start_load(); } function start_load(){ window.load_date_interval = setInterval( function(){load_map();}, 100); } function stop_load_process(){ clearInterval(window.load_date_interval); window.load_date_interval = null; window.students = {}; } function load_map(){ if (!window.change_color.length <= window.change_color_index){ draw_date(window.change_color[window.change_color_index]); window.change_color_index += 1; } else { stop_load_process() } } } function refactor_exclude() { var result = ''; for (var i in window.student_ids){ result += window.student_ids[i]; result += '_'; } return result } function draw_raw(data) { window.in_draw = true; for (var point in data){ var p = $('[point='+data[point]['point']+']'); p.attr('s_date', data[point]['s_date']).attr('f_date', data[point]['f_date']).attr('tp', data[point]['type']).show(); if (data[point]['type'] == 'H'){ p.css('border-top', '3px solid #999') } else if (data[point]['type'] == 'E'){ p.css('border-top', '3px solid #ff1') } } window.in_draw = false; } function draw_date(data) { var result = false; var ob = $(data); if (window.from_date){ if (!parseInt(ob.attr('s_date'), 10) >= window.from_date){ console.log('Ставлю от'+ parseInt(ob.attr('s_date'), 10)); result = true } else { console.log('Пропускаю от'+ parseInt(ob.attr('s_date'), 10)); } } if (window.to_date){ if (!parseInt(ob.attr('f_date'), 10) <= window.from_date){ console.log('Ставлю до'+ parseInt(ob.attr('f_date'), 10)); result = true } else { console.log('Пропускаю до'+ parseInt(ob.attr('f_date'), 10)); } } if (result){ $(ob).css('background', 'green') } else { $(ob).css('background', '#ccc') } } function get_students(){ var response = ''; $.ajax({ type: 'GET', url: '/management/reports/get_course_students/', data: {'course': window.course_id, 'exc': refactor_exclude()}, success: function(data){ if(data.code == '1'){ window.to_draw.push(data['data']) if (!in_array(data['response'], window.student_ids)){ window.student_ids.push(data['response']) window.students[data['response']] = data['data']; } $('[name=preload_status]').html('Загрузка: ' + (window.student_ids.length*100/parseInt($('[name=course_'+window.course_id+'_length]').html(), 10)).toFixed(2) + '%') } else { response = null; } } }); return response } function check_load_finish() { var response = ''; $.ajax({ type: 'GET', url: '/management/reports/progress_check_result/', data: {'course': window.course_id, 'len': window.student_ids.length}, async: false, success: function(data){ if (data['code'] == '1'){ response = true } else { response = false } } }); return response } function change_progress_color() { window.change_color = $('td[course='+window.course_id+']'); change_date_color(); }