Something went wrong on our end
Select Git revision
Forked from
it-lab / grade
Source project has a limited visibility.
-
Антон Шалимов authoredАнтон Шалимов authored
edit.js 31.34 KiB
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 class="addSubModule icon add"></div>\
</div>\
</div>\
<div class="subModules">\
'+GetSubModuleTmp()+'\
</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(
'/~dev_rating/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(
'/~dev_rating/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 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 > 100) {
EventInspector_ShowMsg('Сумма баллов превышает 100', 'error');
thisObj.val(OldMaxRate);
return 0;
}
*/
// Меняем max балл
if (NewMaxRate != OldMaxRate) {
ChangeSubmoduleMaxRate(ID, NewMaxRate);
// Меняем тип
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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/handler/map/ChangeDisciplineGrade',
{
'DisciplineID': DisciplineID,
'GradeID': $('.SelectDisGrade').val()
},
function(data) {
data = $.parseJSON(data);
if(data.success === true)
EventInspector_ShowMsg('Курс изменен', 'success');
else EventInspector_ShowMsg('Ошибка: Изменение курса', 'error');
}
);
});
// Изменение контроля
$('.ExamType').change(function(){
$.post(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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');
parentDIV.insertAfter(parentDIV.next());
var SubmoduleID = parentDIV.attr('id');
var prevSubmoduleID = parentDIV.prev('div').attr('id');
SwapSubmoduleOrder(SubmoduleID, prevSubmoduleID);
return false
});
// Добавить модуль
$('.addModule').click(function(){
$('.moduleList').append(GetModuleTmp());
var OrderNum = $('.moduleGroup', '.moduleList').last().index('.moduleGroup') + 1;
$.post(
'/~dev_rating/handler/map/AddModule',
{
'DisciplineID': DisciplineID,
'OrderNum': OrderNum
},
function(data){
data = $.parseJSON(data);
if(data.success === true) {
// К добавленному модулю добавляем 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(
'/~dev_rating/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', '.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 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(
'/~dev_rating/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)
EventInspector_ShowMsg('Модуль удален', 'success');
else EventInspector_ShowMsg('Ошибка при удаление модуля', 'error');
}
);
$(this).parent('div').parent('div').parent('div').remove();
});
// Удалить мероприятие
$('.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 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() + ']';
//
$.post(
'/~dev_rating/handler/map/DeleteSubmodule',
{
'SubmoduleID': $(this).parent('div').parent('div').attr('id'),
'CurrentSubmoduleOrder': CurrentSubmoduleOrder,
'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID
},
function(data){
data = $.parseJSON(data);
if(data.success === true)
EventInspector_ShowMsg('Мероприятие удалено', 'success');
else EventInspector_ShowMsg('Ошибка при удаление мероприятия', 'error');
}
);
$(this).parent('div').parent('div').remove();
});
// Отмена удаления модулей/мероприятий
$('.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(
'/~dev_rating/handler/map/ChangeModuleName',
{
'ModuleID': ID,
'ModuleName': NewModuleName
},
function(data){
data = $.parseJSON(data);
if(data.success === true)
EventInspector_ShowMsg('Имя модуля изменено', 'success');
else EventInspector_ShowMsg('Ошибка при изменение имени модуля', 'error');
}
);
}
});
// Поменять название мероприятие
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(
'/~dev_rating/handler/map/ChangeSubmoduleName',
{
'SubmoduleID': ID,
'SubmoduleName': NewSubmoduleName
},
function(data){
data = $.parseJSON(data);
if(data.success === true)
EventInspector_ShowMsg('Имя мероприятия изменено', 'success');
else EventInspector_ShowMsg('Ошибка при изменение имени мероприятия', 'error');
}
);
}
});
// При записи в 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(
'/~dev_rating/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(
'/~dev_rating/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 CallSearchStudents() {
var Name = [];
if ($('.InputStudentName ').val() > 0)
Name = ($('.InputStudentName ').val()).split(' ');
$.post(
'/~dev_rating/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(AddStudent(ID, Name, From, GroupID, false));
}
else
$('.SearchResult').html('<p class="notification">Нет результатов... Возможно, студенты, соответствующие критериям поиска, уже прикреплены.</p>');
}
);
}
$('.SelectGrade').change(function(){
$.post(
'/~dev_rating/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');
});
// Прикрепить студента
$('.StudentsList').on('click', '.Action_BindStudent', function(){
var thisObj = $(this);
$(this)
.removeClass('Action_BindStudent')
.addClass('Action_UnbindStudent')
.text('Отсоединить студента');
$(this)
.parent()
.removeClass('StatusUnbind')
.addClass('StatusBind');
var ID = $(this).parent().attr('id');
$.post(
'/~dev_rating/handler/map/BindStudent',
{
'StudentID': ID,
'DisciplineID': DisciplineID
},
function(data){
data = $.parseJSON(data);
if(data.success === true) {
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();
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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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(
'/~dev_rating/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');
}
);
});
});