diff --git a/~dev_rating/media/js/discipline/edit.js b/~dev_rating/media/js/discipline/edit.js deleted file mode 100644 index 467a11266419030e7c253dc2efd24b37d5d0fd31..0000000000000000000000000000000000000000 --- a/~dev_rating/media/js/discipline/edit.js +++ /dev/null @@ -1,1074 +0,0 @@ -var $ = jQuery; -$(function() { - var URL = (window.location.href).split('/'); - var DisciplineID = URL[URL.length - 1]; - - // Шаблон мероприятия - function GetSubModuleTmp(){ - return '\ - <div class="subModule">\ - <div class="name">\ - <input type="text" class="inputName SubmoduleName" value="" placeholder="Наименование мероприятия">\ - </div>\ - <div class="currentControl"><input type="text" class="inputCredit inputCurrentControl" value="0"></div>\ - <div class="landmarkControl"><input type="text" class="inputCredit inputLandmarkControl" value="0"></div>\ - <div class="actions">\ - <div class="deleteSubModule icon delete"></div>\ - <div class="downSubModule icon down"></div>\ - <div class="upSubModule icon up"></div>\ - </div>\ - </div>\ - '; - } - - // Шаблон модуля - function GetModuleTmp() { - return '\ - <div class="moduleGroup">\ - <div class="moduleHead">\ - <div class="name">\ - <input type="text" class="inputName ModuleName" value="" placeholder="Наименование модуля">\ - </div>\ - <div class="currentControl">0</div>\ - <div class="landmarkControl">0</div>\ - <div class="actions">\ - <div class="deleteModule icon delete"></div>\ - <div class="downModule icon down"></div>\ - <div class="upModule icon up"></div>\ - </div>\ - </div>\ - <div class="subModules">\ - '+GetSubModuleTmp()+'\ - </div>\ - <div class="addSubModule">Добавить мероприятие</div>\ - </div>' - }; - - // Подсчет текущего контроля - function CountCurrentControl(subModulesDiv){ - var maxCredits = 0; - $('.inputCurrentControl', subModulesDiv).each(function(){ - var credit = parseInt($(this).val()); - maxCredits = maxCredits + ((isNum(credit)) ? credit : 0); - }); - subModulesDiv.prev().children('.currentControl').text(maxCredits); - } - // Подсчет рубежного контроля - function CountLandmarkControl(subModulesDiv){ - var maxCredits = 0; - $('.inputLandmarkControl', subModulesDiv).each(function(){ - var credit = parseInt($(this).val()); - maxCredits = maxCredits + ((isNum(credit)) ? credit : 0); - }); - subModulesDiv.prev().children('.landmarkControl').text(maxCredits); - } - - // Рзменение типа подмодуля - function ChangeSubmoduleControlType(ID, ControlType){ - $.post( - URLdir + 'handler/map/ChangeSubmoduleControlType', - { - 'SubmoduleID': ID, - 'ControlType': ControlType - }, - function(data){ - data = $.parseJSON(data); - //if(data.success === true) - // EventInspector_ShowMsg('Форма контроля изменена', 'success'); - //else EventInspector_ShowMsg('Ошибка РїСЂРё изменение формы контроля', 'error'); - } - ); - } - - // Рзменение макс. балла подмодуля - function ChangeSubmoduleMaxRate(ID, NewMaxRate) { - $.post( - URLdir + 'handler/map/ChangeSubmoduleMaxRate', - { - 'SubmoduleID': ID, - 'MaxRate': NewMaxRate - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Max балл мероприятия изменен', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё изменение max балла', 'error'); - } - ); - } - - // Установить новый max балл - function SetNewRateAndControl(thisObj, OldMaxRate) { - // DIV СЃ мероприятиями для данного модуля - var subModulesDiv = thisObj.parent().parent().parent(); - // ID мероприятия - var ID = thisObj.parent('div').parent('div').attr('id'); - var NewMaxRate = 0; - if (thisObj.val() != '') - NewMaxRate = parseInt(thisObj.val()); - - // Ограничение 100 баллов - var MaxSumRate = 100; - if ($('div').is('.ExamModule')) MaxSumRate = 60; - - var currentControl = 0; - $('.moduleHead .currentControl').each(function(){ - currentControl += parseInt($(this).text()); - }); - var landmarkControl = 0; - $('.moduleHead .landmarkControl').each(function(){ - landmarkControl += parseInt($(this).text()); - }); - var subtract = 0; - if (thisObj.parent().attr('class').indexOf('landmarkControl') + 1 > 0) - subtract = parseInt(thisObj.parent().siblings('.currentControl').children().val()); - if (thisObj.parent().attr('class').indexOf('currentControl') + 1 > 0) - subtract = parseInt(thisObj.parent().siblings('.landmarkControl').children().val()); - if (currentControl + landmarkControl + NewMaxRate - subtract - OldMaxRate > MaxSumRate) { - if (NewMaxRate == 0) - thisObj.val('0'); - else { - EventInspector_ShowMsg('РЎСѓРјРјР° баллов превышает максимум', 'error'); - thisObj.val(OldMaxRate); - return 0; - } - } - - // Меняем max балл - if (NewMaxRate != OldMaxRate) { - ChangeSubmoduleMaxRate(ID, NewMaxRate); - - // Счетчик баллов - var RateIndicarot = currentControl + landmarkControl + NewMaxRate - subtract - OldMaxRate; - if ($('div').is('.ExamModule')) RateIndicarot += 40; - $('.RateIndicatorDIV .RateIndicator').html(RateIndicarot); - if ($('div').is('.BonusModule')) - $('.RateIndicatorDIV .RateIndicator').append(' + 10 бонусных баллов'); - - // Меняем тип - ControlType = 'CurrentControl'; // РџРѕ-умолчанию - if ((thisObj.parent().attr('class')).indexOf('landmarkControl') + 1 > 0) - ControlType = 'LandmarkControl'; - if (NewMaxRate > 0) - ChangeSubmoduleControlType(ID, ControlType); - - if (ControlType == 'CurrentControl') - thisObj.parent().parent().find('.landmarkControl').children('.inputLandmarkControl').val('0'); - - if (ControlType == 'LandmarkControl') - thisObj.parent().parent().find('.currentControl').children('.inputCurrentControl').val('0'); - } - - // Подсчет текущего Рё рубежного контроля после изменений - CountCurrentControl(subModulesDiv); - CountLandmarkControl(subModulesDiv); - } - - // Поменять местами РґРІР° модуля - function SwapModuleOrder(ModuleID1, ModuleID2) { - $.post( - URLdir + 'handler/map/SwapModuleOrder', - { - 'ModuleID1': ModuleID1, - 'ModuleID2': ModuleID2 - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Модули поменяли РїРѕСЂСЏРґРѕРє', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё изменение РїРѕСЂСЏРґРєР° модулей', 'error'); - } - ); - } - - // Поменять местами РґРІР° мероприятия - function SwapSubmoduleOrder(SubmoduleID1, SubmoduleID2) { - $.post( - URLdir + 'handler/map/SwapSubmoduleOrder', - { - 'SubmoduleID1': SubmoduleID1, - 'SubmoduleID2': SubmoduleID2 - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Мероприятия поменяли РїРѕСЂСЏРґРѕРє', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё изменение РїРѕСЂСЏРґРєР° мероприятий', 'error'); - } - ); - } - -//------------------------------------------------------------------------------------------------------------------------------------------------- - -// ---- Рзменения базовых параметров дисциплины --- - - // Рзменение предмета - $('.SelectSubject').change(function(){ - $.post( - URLdir + 'handler/map/ChangeDisciplineSubject', - { - 'DisciplineID': DisciplineID, - 'SubjectID': $('.SelectSubject').val() - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Предмет изменен', 'success'); - else EventInspector_ShowMsg('Ошибка: Рзменение предмета', 'error'); - } - ); - }); - - // Рзменение РєСѓСЂСЃР° - $('.SelectDisGrade').change(function(){ // SelectGrade совпадает СЃ РґСЂСѓРіРёРј, поэтому SelectDisGrade - $.post( - URLdir + 'handler/map/ChangeDisciplineGrade', - { - 'DisciplineID': DisciplineID, - 'GradeID': $('.SelectDisGrade').val() - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('РљСѓСЂСЃ изменен', 'success'); - else EventInspector_ShowMsg('Ошибка: Рзменение РєСѓСЂСЃР°', 'error'); - } - ); - }); - - // Бонусные баллы - $('.BonusRate').change(function(){ - $.post( - URLdir + 'handler/map/ChangeStatusBonusModule', - { - 'DisciplineID': DisciplineID, - 'BonusRate': $(".BonusRate").prop("checked") - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) { - if (data.action == 'add') - EventInspector_ShowMsg('Бонусные баллы добавлены', 'success'); - if (data.action == 'delete') - EventInspector_ShowMsg('Бонусные баллы удалены', 'success'); - } - else EventInspector_ShowMsg('Ошибка: Бонусные баллы', 'error'); - } - ); - }); - - // Рзменение контроля - $('.ExamType').change(function(){ - $.post( - URLdir + 'handler/map/ChangeDisciplineControl', - { - 'DisciplineID': DisciplineID, - 'Control': $('input:radio[name=ExamType]:checked').val() - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Форма контроля изменена', 'success'); - else EventInspector_ShowMsg('Ошибка: Рзменение формы контроля', 'error'); - } - ); - }); - - // Рзменение лекционных часов - $('.InputLectionCount').focusout(function(){ - $.post( - URLdir + 'handler/map/ChangeDisciplineHours', - { - 'DisciplineID': DisciplineID, - 'Hours': $('.InputLectionCount').val(), - 'Type': '1' - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Лекционные часы изменен', 'success'); - else EventInspector_ShowMsg('Ошибка: Рзменение лекционных часов', 'error'); - } - ); - }); - - // Рзменение практических часов - $('.InputPracticeCount').focusout(function(){ - $.post( - URLdir + 'handler/map/ChangeDisciplineHours', - { - 'DisciplineID': DisciplineID, - 'Hours': $('.InputPracticeCount').val(), - 'Type': '0' - }, - function(data) { - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Практические часы изменен', 'success'); - else EventInspector_ShowMsg('Ошибка: Рзменение практических часов', 'error'); - } - ); - }); - - /* - $(".ChangeDiscipline").click(function(){ - $.post( - URLdir + '/handler/map/ChangeDiscipline', - { - 'DisciplineID': DisciplineID, - 'Grade': $('.SelectGrade').val(), - 'SubjectID': $('.SelectSubject').val(), - 'ExamType': $('input:radio[name=ExamType]:checked').val(), - 'LectionCount': $('.InputLectionCount').val(), - 'PracticeCount': $('.InputPracticeCount').val(), - 'FacultyID': $('.SelectFaculty').val() - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Базовые настройки РЈРљР” изменены', 'success'); - else EventInspector_ShowMsg('Ошибка: Базовые настройки РЈРљР”', 'error'); - } - ); - return false - }); - */ - - // Переместить вверх МОДУЛЬ - $(".moduleList").on('click', '.upModule', function(){ - var parentDIV = $(this).parent('div').parent('div').parent('div'); - parentDIV.insertBefore(parentDIV.prev('.moduleGroup')); - - var ModuleID = parentDIV.attr('id'); - // Для того, который РЎРўРђР› находится ниже - var nextModuleID = parentDIV.next('div').attr('id'); - SwapModuleOrder(ModuleID, nextModuleID); - - return false - }); - - // Переместить РІРЅРёР· МОДУЛЬ - $(".moduleList").on('click', '.downModule', function(){ - var parentDIV = $(this).parent('div').parent('div').parent('div'); - if ($('div').is(parentDIV.next('.moduleGroup'))) { - parentDIV.insertAfter(parentDIV.next('.moduleGroup')); - - var ModuleID = parentDIV.attr('id'); - // Для того, который РЎРўРђР› находится выше - var prevModuleID = parentDIV.prev('div').attr('id'); - SwapModuleOrder(ModuleID, prevModuleID); - } - - return false - }); - - // Переместить вверх мероприятие - $(".moduleList").on('click', '.upSubModule', function(){ - var parentDIV = $(this).parent('div').parent('div'); - parentDIV.insertBefore(parentDIV.prev()); - - var SubmoduleID = parentDIV.attr('id'); - var nextSubmoduleID = parentDIV.next('div').attr('id'); - SwapSubmoduleOrder(SubmoduleID, nextSubmoduleID); - - return false - }); - - // Переместить РІРЅРёР· мероприятие - $(".moduleList").on('click', '.downSubModule', function(){ - var parentDIV = $(this).parent('div').parent('div'); - if ($('div').is(parentDIV.next('.subModule'))) { - parentDIV.insertAfter(parentDIV.next()); - - var SubmoduleID = parentDIV.attr('id'); - var prevSubmoduleID = parentDIV.prev('div').attr('id'); - SwapSubmoduleOrder(SubmoduleID, prevSubmoduleID); - } - - return false - }); - - // Добавить модуль - $('.addModule').click(function(){ - var OrderNum = $('.moduleGroup', '.moduleList').last().index('.moduleGroup') + 2; - $.post( - URLdir + 'handler/map/AddModule', - { - 'DisciplineID': DisciplineID, - // 'OrderNum': OrderNum - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - if ($('div').is('.ExamModule')) - $('.ExamModule').before(GetModuleTmp()); - else - $('.moduleList').append(GetModuleTmp()); - // Рљ добавленному модулю добавляем ID - var thisModuleDIV = $('.moduleGroup').eq(OrderNum - 1); - thisModuleDIV.attr('id', data.ModuleID); - // Рљ добавленному РІ модуль мероприятию добавляем ID - thisModuleDIV.children('.subModules').children('.subModule').eq(0).attr('id', data.SubmoduleID); - EventInspector_ShowMsg('Модуль добавлен', 'success'); - } else EventInspector_ShowMsg('Ошибка РїСЂРё добавление модуля', 'error'); - } - ); - - if ($('.empty').css('display') == 'block') - $('.empty').css('display', 'none'); - - }); - - /* - // Добавить мероприятие (старая РєРЅРѕРїРєР°) - $('.moduleList').on('click', '.addSubModule', function(){ - $(this).parent().parent().next().append(GetSubModuleTmp()); - var ModuleID = $(this).parent('div').parent('div').parent('div').attr('id'); - var SubmodulesDIV = $(this).parent().parent().next('.subModules'); - var OrderNum = SubmodulesDIV.children('.subModule').last().index() + 1; - $.post( - URLdir + '/handler/map/AddSubmodule', - { - 'ModuleID': ModuleID, - 'OrderNum': OrderNum - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - // Рљ добавленному мероприятию добавляем ID - SubmodulesDIV.children('.subModule').eq(OrderNum - 1).attr('id', data.SubmoduleID); - EventInspector_ShowMsg('Мероприятие добавлено', 'success'); - } else EventInspector_ShowMsg('Ошибка РїСЂРё добавление мероприятия', 'error'); - } - ); - }); - */ - - // Добавить мероприятие - $('.moduleList').on('click', '.addSubModule', function(){ - var ModuleID = $(this).parent('div').attr('id'); - var SubmodulesDIV = $(this).siblings('.subModules'); - var OrderNum = SubmodulesDIV.children('.subModule').last().index() + 2; - $.post( - URLdir + 'handler/map/AddSubmodule', - { - 'ModuleID': ModuleID - //'OrderNum': OrderNum - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - // Рљ добавленному мероприятию добавляем ID - SubmodulesDIV.append(GetSubModuleTmp()); - SubmodulesDIV.children('.subModule').eq(OrderNum - 1).attr('id', data.SubmoduleID); - EventInspector_ShowMsg('Мероприятие добавлено', 'success'); - } else EventInspector_ShowMsg('Ошибка РїСЂРё добавление мероприятия', 'error'); - } - ); - }); - - // Удалить модуль - $('.moduleList').on('click', '.deleteModule', function(){ - $(this).parent().css('display', 'none'); - $(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteModule">Да</span> <span class="cancel">Нет</span></div>'); - }); - - // Подтверждение РїСЂРё удаление модуля - $('.moduleList').on('click', '.confirmDeleteModule', function(){ - var thisObj = $(this); - var subModulesDIV = $(this).parent('div').parent('div').next('.subModules'); - var CurrentModuleOrder = $(this).parent().parent().parent().index() + 1; - // Собираем РІ JSON строку ID мероприятий - var JSONSubmodules = '['; - $('.subModule', subModulesDIV).each(function(){ - JSONSubmodules += $(this).attr('id') + ','; - }); - JSONSubmodules = JSONSubmodules.substr(0, JSONSubmodules.length - 1); - JSONSubmodules += ']'; - // - // Собираем ID модулей, которые ниже для того, чтоб сменить РёС… порадок РЅР° +1 - var AttrID = $(this).parent().parent().parent().nextAll().map(function(indx, element){ - return $(element).attr("id"); - }); - var ChangeOrderModulesID = '[' + AttrID.get() + ']'; - // - $.post( - URLdir + 'handler/map/DeleteModule', - { - 'ModuleID': $(this).parent('div').parent('div').parent('div').attr('id'), - 'SubmodulesID': JSONSubmodules, - 'CurrentModuleOrder': CurrentModuleOrder, - 'ChangeOrderModulesID': ChangeOrderModulesID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - thisObj.parent('div').parent('div').parent('div').remove(); - EventInspector_ShowMsg('Модуль удален', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё удаление модуля', 'error'); - } - ); - }); - - // Удалить мероприятие - $('.moduleList').on('click', '.deleteSubModule ', function(){ - $(this).parent().css('display', 'none'); - $(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteSubModule">Да</span> <span class="cancel">Нет</span></div>'); - }); - - // Подтверждение РїСЂРё удаление мероприятия - $('.moduleList').on('click', '.confirmDeleteSubModule ', function(){ - var thisObj = $(this); - var subModulesDiv = $(this).parent().parent().parent(); - var CurrentSubmoduleOrder = $(this).parent().parent().index() + 1; - CountCurrentControl(subModulesDiv); - CountLandmarkControl(subModulesDiv); - // Собираем ID мероприятий, которые ниже для того, чтоб сменить РёС… порадок РЅР° +1 - var AttrID = $(this).parent().parent().nextAll().map(function(indx, element){ - return $(element).attr("id"); - }); - var ChangeOrderSubmodulesID = '[' + AttrID.get() + ']'; - ChangeSubmoduleMaxRate($(this).parent('div').parent('div').attr('id'), 0); - // - $.post( - URLdir + 'handler/map/DeleteSubmodule', - { - 'SubmoduleID': $(this).parent('div').parent('div').attr('id'), - 'CurrentSubmoduleOrder': CurrentSubmoduleOrder, - 'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - var sub = thisObj.parent('div').parent('div'); - var mod = sub.parent('div').parent('div').find('.moduleHead'); - // get old submodule values - var dif1 = sub.find('.currentControl').find('input').val(); - var dif2 = sub.find('.landmarkControl').find('input').val(); - - // change module header - var old = mod.find('.currentControl').html(); - mod.children('.currentControl').html(old - dif1); - - old = mod.find('.landmarkControl').html(); - mod.children('.landmarkControl').html(old - dif2); - - // change max rate - old = $('.RateIndicator').html(); - $('.RateIndicator').html(old - dif1 - dif2); - thisObj.parent('div').parent('div').remove(); - - EventInspector_ShowMsg('Мероприятие удалено', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё удаление мероприятия', 'error'); - } - ); - }); - - // Отмена удаления модулей/мероприятий - $('.moduleList').on('click', '.cancel ', function(){ - $(this).parent().parent().children('.actions').css('display', 'block'); - $(this).parent().remove(); - }); - - // Поменять название модуля - var ModuleName; - $('.moduleList').on('focusin', '.ModuleName', function(){ - ModuleName = $(this).val(); - }); - $('.moduleList').on('focusout', '.ModuleName', function(){ - var NewModuleName = $(this).val(); - if (NewModuleName != '' && ModuleName != NewModuleName) { - var ID = $(this).parent('div').parent('div').parent('div').attr('id'); - $.post( - URLdir + 'handler/map/ChangeModuleName', - { - 'ModuleID': ID, - 'ModuleName': NewModuleName - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('РРјСЏ модуля изменено', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё изменение имени модуля', 'error'); - } - ); - } - }); - $('.moduleList').on('keydown', '.ModuleName', function(e){ - if(e.keyCode==13){ - $('.ModuleName').trigger('focusout'); - } - }); - - // Поменять название мероприятие - var SubmoduleName; - $('.moduleList').on('focusin', '.SubmoduleName', function(){ - SubmoduleName = $(this).val(); - }); - $('.moduleList').on('focusout', '.SubmoduleName', function(){ - var NewSubmoduleName = $(this).val(); - if (NewSubmoduleName != '' && SubmoduleName != NewSubmoduleName) { - var ID = $(this).parent('div').parent('div').attr('id'); - $.post( - URLdir + 'handler/map/ChangeSubmoduleName', - { - 'SubmoduleID': ID, - 'SubmoduleName': NewSubmoduleName - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('РРјСЏ мероприятия изменено', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё изменение имени мероприятия', 'error'); - } - ); - } - }); - $('.moduleList').on('keydown', '.SubmoduleName', function(e){ - if(e.keyCode==13){ - $('.SubmoduleName').trigger('focusout'); - } - }); - - // РџСЂРё записи РІ input текущий контроль - // РџСЂРё фокусе - var OldMaxRate = 0; - $('.moduleList').on('focusin', '.inputCurrentControl', function(){ - OldMaxRate = $(this).val(); - }); - // РџСЂРё потери фокуса - $('.moduleList').on('focusout', '.inputCurrentControl', function(){ - SetNewRateAndControl($(this), OldMaxRate); - }); - - // РџСЂРё записи РІ input рубежный контроль - // РџСЂРё фокусе - var OldMaxRate = 0; - $('.moduleList').on('focusin', '.inputLandmarkControl', function(){ - OldMaxRate = $(this).val(); - }); - // РџСЂРё потери фокуса - $('.moduleList').on('focusout', '.inputLandmarkControl', function(){ - SetNewRateAndControl($(this), OldMaxRate); - }); - - // Р’ inputCredit (РіРґРµ баллы вводить) разрешаем вводить только цифры - $(".moduleList").on('keydown', '.inputCredit', function(event) { - KeyDownOnlyNumber(event); - }); - -// ------ Прикрипление студентов/РіСЂСѓРїРї/преподавателей -- - -var FacultyID = $('.HiddenInputFacultyID').val(); // Факультет, Рє которой привязана дисциплина -$('.HiddenInputFacultyID').remove(); // РўСѓС‚ даже Шерлок Холмс бессилен - -function BindGroup(id, StudyGroupName){ - return '\ - <div class="AttachedGroup" id="'+ id +'">\ - <div class="StudyGroupInfo">'+ StudyGroupName +'</div>\ - <div class="UnbindGroup">Отсоединить РіСЂСѓРїРїСѓ</div>\ - </div>'; -} - -// Прикрепить РіСЂСѓРїРїСѓ -$('.AttachGroupButton').click(function(){ - var StudyGroupID = $('.SelectStudyGroup').val(); - var StudyGroupName = $(".SelectStudyGroup option:selected").text(); - $.post( - URLdir + 'handler/map/BindGroup', - { - 'StudyGroupID': StudyGroupID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - $('.AttachedGroupsList').append(BindGroup(StudyGroupID, StudyGroupName)); - EventInspector_ShowMsg('Группа добавлена', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё добавление РіСЂСѓРїРїС‹', 'error'); - } - ); -}); - -// Отсоединить РіСЂСѓРїРїСѓ -$('.AttachedGroupsList').on('click', '.UnbindGroup', function(){ - var StudyGroupID = $(this).parent().attr('id'); - var GroupDIV = $(this).parent(); - $.post( - URLdir + 'handler/map/UnbindGroup', - { - 'StudyGroupID': StudyGroupID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - GroupDIV.remove(); - EventInspector_ShowMsg('Группа отсоединена', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё отсоединение РіСЂСѓРїРїС‹', 'error'); - } - ); -}); - -// РџРѕРёСЃРє студентов -function AddStudent(ID, Name, From, GroupID, Bind){ - if (Bind == true) - var Status = 'StatusBind'; - else - var Status = 'StatusUnbind'; - var r = '\ - <div id="'+ ID +'" class="Student '+ Status +' '+ GroupID +'">\ - <span class="Name">'+ Name +'</span> \ - <span class="From">'+ From +'</span>'; - if (Bind == true) - r +='<span class="action Action_UnbindStudent">Отсоединить студента</span>'; - else - r +='<span class="action Action_BindStudent">Прикрепить студента</span>'; - r += - '</div>'; - return r; -} - -function AddStudentInSearchBox(ID, Name, From, GroupID, Bind){ - if (Bind == true) - var Status = 'StatusBind'; - else - var Status = 'StatusUnbind'; - var r = '\ - <div id="'+ ID +'" class="Student '+ Status +' '+ GroupID +'">\ - <span class="Name">'+ Name +'</span> \ - <span class="From">'+ From +'</span>'; - if (Bind == true) - r +='<span class="action Action_UnbindStudent">Отсоединить студента</span>'; - else - r +='<span class="action Action_BindStudentFromSearch">Прикрепить студента</span>'; - r += - '</div>'; - return r; -} - -// РџРѕРёСЃРє студентов -function CallSearchStudents() { - var Name = []; - if ($('.InputStudentName').val().length > 0) - Name = ($('.InputStudentName').val()).split(' '); - $.post( - URLdir + 'handler/map/SearchStudents', - { - 'GradeID': $('.SelectGrade').val(), - 'GroupN': $('.SelectStudyGroup').val(), - 'FacultyID': FacultyID, - 'Last': Name[0], - 'First': Name[1], - 'Second': Name[2], - 'DisciplineID': DisciplineID - }, - function(data){ - SearchResult = $.parseJSON(data); - $('.SearchResult').html(''); - if (parseInt(SearchResult.Count) > 0) - for(var i = 1; i <= parseInt(SearchResult.Count); i++) { - var ID = SearchResult[i].StudentID; - var Name = SearchResult[i].StudentLast +' '+ SearchResult[i].StudentFirst +' '+ SearchResult[i].StudentSecond; - var From = 'РљСѓСЂСЃ ' + SearchResult[i].GroupGrade + ', Группа ' + SearchResult[i].GroupNum; - var GroupID = 'GroupID_'+SearchResult[i].GroupID - $('.SearchResult').append(AddStudentInSearchBox(ID, Name, From, GroupID, false)); - } - else - $('.SearchResult').html('<p class="notification">Нет результатов... Возможно, студенты, соответствующие критериям РїРѕРёСЃРєР°, уже прикреплены.</p>'); - } - ); -} - -$('.SelectGrade').change(function(){ - $.post( - URLdir + 'handler/map/GetStudyGroups', - { - 'FacultyID': FacultyID, - 'GradeID': $('.SelectGrade').val() - }, - function(data){ - data = $.parseJSON(data); - if (data != null && data != undefined) { - $('.SelectStudyGroup').html('<option value="0">Выберите РіСЂСѓРїРїСѓ:</option>'); - for (i = 1; i <= data.count; i++) { - $('.SelectStudyGroup').append('<option value="'+ data[i].GroupID +'">Группа '+ data[i].GroupNum +' - '+ data[i].SpecName +'</option>'); - } - - if (data.count <= 0) - $('.SelectStudyGroup').append('<option value="0">Нет РіСЂСѓРїРї</option>'); - } - CallSearchStudents(); - } - ); -}); -$('.SelectStudyGroup').change(function(){ - CallSearchStudents(); -}); -$('.InputStudentName').focusout(function(){ - CallSearchStudents(); -}); -$('.InputStudentName').keydown(function(e){ - if(e.keyCode==13){ - $('.InputStudentName').focusout('focusout'); - $(this).blur(); - } -}); - -$('.SelectGrade').focusout(function(){ - $('.SelectGrade').trigger('change'); -}); -$('.SelectStudyGroup').focusout(function(){ - $('.SelectStudyGroup').trigger('change'); -}); - -// Если студент РёР· РїРѕРёСЃРєР° -function BindStudentFromSearch(thisObj) { - var reg = /GroupID_\d+/; - var GroupID = ''+reg.exec(thisObj.parent().attr('class')); - var ID = thisObj.parent().attr('id'); - var Name = thisObj.siblings('.Name').text(); - var From = thisObj.siblings('.From').text(); - if ($('div').is('.GroupContainer.'+GroupID) === false) { - $('.AttachedStudentsList').append('\ - <div class="GradeAndGroupTitle ActionShowHideGroupContainer">\ - <span class="info">'+From+'</span>\ - <span class="Action">Открыть СЃРїРёСЃРѕРє в–ј</span>\ - </div>'); - $('.AttachedStudentsList').append('<div class="GroupContainer '+GroupID+'" style="display: block"> </div>'); - } - $('.GroupContainer.'+GroupID).append(AddStudent(ID, Name, From, GroupID, true)); - thisObj.parent().remove(); -} - -// Если студент РёР· РѕСЃРЅРѕРІРЅРѕРіРѕ потока -function BindBackStudent(thisObj) { - thisObj - .removeClass('Action_BindStudent') - .addClass('Action_UnbindStudent') - .text('Отсоединить студента'); - thisObj - .parent() - .removeClass('StatusUnbind') - .addClass('StatusBind'); -} - -// Прикрепить студента -$('.StudentsList').on('click', '.Action_BindStudent', function(){ - var thisObj = $(this); - var ID = $(this).parent().attr('id'); - $.post( - URLdir + 'handler/map/BindStudent', - { - 'StudentID': ID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - BindBackStudent(thisObj); - EventInspector_ShowMsg('Студент добавлен', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё добавление студента', 'error'); - } - ); -}); - -// Прикрепить студента РёР· РїРѕРёСЃРєР° -$('.StudentsList').on('click', '.Action_BindStudentFromSearch', function(){ - var thisObj = $(this); - var ID = $(this).parent().attr('id'); - $.post( - URLdir + 'handler/map/BindStudent', - { - 'StudentID': ID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - BindStudentFromSearch(thisObj); - EventInspector_ShowMsg('Студент добавлен', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё добавление студента', 'error'); - } - ); -}); - -// Отсоединить студента -$('.StudentsList').on('click', '.Action_UnbindStudent', function(){ - $(this) - .removeClass('Action_UnbindStudent') - .addClass('Action_BindStudent') - .text('Прикрепить студента'); - $(this) - .parent() - .removeClass('StatusBind') - .addClass('StatusUnbind'); - var ID = $(this).parent().attr('id'); - $.post( - URLdir + 'handler/map/UnbindStudent', - { - 'StudentID': ID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Студент отсоединен', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё отсоединение студента', 'error'); - } - ); -}); - -$('.StudentsList').on('click', '.ActionShowHideGroupContainer', function(){ - if ($(this).next('.GroupContainer').css('display') == 'none') { - $(this).children('.Action').text('Скрыть СЃРїРёСЃРѕРє в–І'); - $(this).next('.GroupContainer').show(); - } - else { - $(this).children('.Action').text('Открыть СЃРїРёСЃРѕРє в–ј'); - $(this).next('.GroupContainer').hide(); - } -}); - -// Добавить преподавателя -function AddTeacher(ID, Name, Action){ - $r = '\ - <div class="Teacher" id="'+ ID +'">\ - <div class="Name">'+ Name +'</div>'; - if (Action == 'Unbind') - $r += '<div class="Action_UnbindTeacher Action">Отсоединить</div>'; - if (Action == 'Bind') - $r += '<div class="Action_BindTeacher Action">Присоединить</div>'; - $r += '\ - </div>'; - return $r; -} - - -// РџРѕРёСЃРє преподавателей -function CallSearchTeachers(){ - var Name = []; - Name = ($('.InputTeacherName ').val()).split(' '); - $.post( - URLdir + 'handler/map/SearchTeachers', - { - 'FacultyID': $('.SelectFaculty').val(), - 'DepartmentID': $('.SelectDepartment').val(), - 'Last': Name[0], - 'First': Name[1], - 'Second': Name[2], - 'DisciplineID': DisciplineID - }, - function(data){ - SearchResult = $.parseJSON(data); - if (SearchResult != null && SearchResult != undefined) { - $('.SearchResult').html(''); - if (parseInt(SearchResult.Count) > 0) - for(var i = 1; i <= parseInt(SearchResult.Count); i++) { - var Name = SearchResult[i].TeacherLast + ' ' + SearchResult[i].TeacherFirst + ' ' + SearchResult[i].TeacherSecond; - $('.SearchResult').append(AddTeacher(SearchResult[i].TeacherID, Name, 'Bind')); - } - else - $('.SearchResult').html('<p class="notification">Нет результатов... Возможно, преподаватели, соответствующие критериям РїРѕРёСЃРєР°, уже прикреплены.</p>'); - } - } - ); -} - -// Выборка кафедр -$('.SelectFaculty').change(function(){ - $.post( - URLdir + 'handler/map/GetDepartments', - { - 'FacultyID': $('.SelectFaculty').val() - }, - function(data){ - data = $.parseJSON(data); - if (data != null && data != undefined) { - $('.SelectDepartment').html('<option value="0">Выберите кафедру (РЅРµ обязательно)</option>'); - for (i = 1; i <= data.count; i++) { - $('.SelectDepartment').append('<option value="'+ data[i].DepID +'">'+ data[i].DepName +'</option>'); - } - - if (data.count <= 0) - $('.SelectDepartment').append('<option value="0">Нет кафедр</option>'); - } - CallSearchTeachers(); - } - ); -}); - -$('.SelectDepartment ').change(function(){ - CallSearchTeachers(); -}); -$('.InputTeacherName').focusout(function(){ - CallSearchTeachers(); -}); -$('.InputTeacherName').keydown(function(e){ - if(e.keyCode==13){ - $('.InputTeacherName').focusout('focusout'); - $(this).blur(); - } -}); - -$('.SelectFaculty').focusout(function(){ - $('.SelectFaculty').trigger('change'); -}); -$('.SelectDepartment').focusout(function(){ - $('.SelectDepartment').trigger('change'); -}); - -// Конец РїРѕРёСЃРєР° преподавателей - -// Отсоединить преподавателя -$('.TeachersList').on('click', '.Action_UnbindTeacher', function(){ - $(this) - .parent() - .remove(); - var ID = $(this).parent().attr('id'); - $.post( - URLdir + 'handler/map/UnbindTeacher', - { - 'BindingTeacher': ID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) - EventInspector_ShowMsg('Преподаватель отсоединен', 'success'); - else EventInspector_ShowMsg('Ошибка РїСЂРё отсоединение преподавателя', 'error'); - } - ); -}); - -// Присоединить преподавателя -$('.TeachersList').on('click', '.Action_BindTeacher', function(){ - $(this) - .parent() - .remove(); - var ID = $(this).parent().attr('id'); - var Name = $(this).siblings('.Name').text(); - $.post( - URLdir + 'handler/map/BindTeacher', - { - 'BindingTeacher': ID, - 'DisciplineID': DisciplineID - }, - function(data){ - data = $.parseJSON(data); - if(data.success === true) { - $('.BindTeachersList').append(AddTeacher(ID, Name, 'Unbind')); - EventInspector_ShowMsg('Преподаватель прикреплен', 'success'); - } - else EventInspector_ShowMsg('Ошибка РїСЂРё прикрепление преподавателя', 'error'); - } - ); -}); - -});