kreta/KretaWeb/Scripts/KendoHelper/KretaOsztalybaSorolasHelper.js
2024-03-13 00:33:46 +01:00

742 lines
23 KiB
JavaScript

var KretaOsztalybaSorolasHelper = (function () {
var kretaOsztalybaSorolasHelper = function () {};
//Selectedre állítja egy select összes option-jét
kretaOsztalybaSorolasHelper.selectAllOptions = function (selStr) {
var selObj = document.getElementById(selStr);
for (var i = 0; i < selObj.options.length; i++) {
selObj.options[i].selected = true;
}
};
//Leszedi a selectedet egy select összes option-jéről
kretaOsztalybaSorolasHelper.deSelectAllOptions = function (selStr) {
var selObj = document.getElementById(selStr);
for (var i = 0; i < selObj.options.length; i++) {
selObj.options[i].selected = false;
}
$('#sortNameFromElement').click();
$('#sortNameToElement').click();
};
//A jobb oldali tanuló listát frissíti
kretaOsztalybaSorolasHelper.replaceToTanuloList = function (data) {
$('#multiselect_to').find('option').remove().end();
$('#ToElementsCount').text('0');
if (data.length) {
$.each(data, function (key, value) {
var $option = $('<option disabled></option>')
.attr('value', data[key].Value)
.attr('fromId', $('#FromDDL').val())
.attr('szulDatum', data[key].SzulDatum)
.attr('neme', data[key].Neme)
.attr('nevElotagNelkul', data[key].NevElotagNelkul)
.attr('jogviszonyCount', data[key].JogviszonyCount)
.attr('jogviszonyId', '0')
.text(data[key].Text);
var oldText;
var date;
if (!data[key].Aktiv) {
$option.css({ background: '#C5D3E2', color: '#828EB2' });
if (data[key].KisorolasDatum != null) {
oldText = $option.text();
date = new Date(data[key].KisorolasDatum);
$option.text(
oldText + ' Kisorolva: ' + date.toLocaleDateString('hu-HU')
);
}
} else {
if (data[key].BesorolasDatum != null) {
oldText = $option.text();
date = new Date(data[key].BesorolasDatum);
$option.text(
oldText + ' Besorolva: ' + date.toLocaleDateString('hu-HU')
);
}
}
$('#multiselect_to').append($option);
});
$('#multiselect_to').unbind();
$('#multiselect_to option').unbind();
//KretaOsztalybaSorolasHelper.setMultiClickOption("SorolasForm");
$('#ToElementsCountIn').text($('#multiselect_to option').length);
setTimeout(function () {
$('#multiselect_to').click(function () {
$('#ToElementsCount').text($('#multiselect_to :selected').length);
});
}, 1);
if (KretaOsztalybaSorolasHelper.msieversion()) {
$('#multiselect_to option')
.mousedown(function (e) {
e.preventDefault();
var select = this;
var scroll = select.scrollTop;
e.target.selected = !e.target.selected;
setTimeout(function () {
select.scrollTop = scroll;
}, 0);
$('#multiselect_to').focus();
})
.mousemove(function (e) {
e.preventDefault();
});
} else {
$('#multiselect_to')
.mousedown(function (e) {
e.preventDefault();
var select = this;
var scroll = select.scrollTop;
e.target.selected = !e.target.selected;
setTimeout(function () {
select.scrollTop = scroll;
}, 0);
$('#multiselect_to').focus();
})
.mousemove(function (e) {
e.preventDefault();
});
}
}
kretaOsztalybaSorolasHelper.multiselectWithShiftFrom();
kretaOsztalybaSorolasHelper.multiselectWithShiftTo();
};
//A bal oldali tanuló listát frissíti
kretaOsztalybaSorolasHelper.replaceFromTanuloList = function (data) {
let selectedOptions = $('#multiselect')
.find('option:selected')
.toArray()
.map((i) => i.value);
$('#multiselect').find('option').remove().end();
$('#FromElementsCount').text('0');
if (data.length) {
$.each(data, function (key, value) {
var $option = $('<option></option>')
.attr('value', data[key].Value)
.attr('fromId', $('#FromDDL').val())
.attr('szulDatum', data[key].SzulDatum)
.attr('neme', data[key].Neme)
.attr('nevElotagNelkul', data[key].NevElotagNelkul)
.attr('jogviszonyCount', data[key].JogviszonyCount)
.attr('jogviszonyId', '0')
.text(data[key].Text);
var oldText;
var date;
if (!data[key].Aktiv) {
$option.attr('disabled', 'disabled');
$option.css({ background: '#C5D3E2', color: '#828EB2' });
if (data[key].KisorolasDatum != null) {
oldText = $option.text();
date = new Date(data[key].KisorolasDatum);
$option.text(
oldText + ' Kisorolva: ' + date.toLocaleDateString('hu-HU')
);
}
} else {
if (data[key].KisorolasDatum != null) {
oldText = $option.text();
date = new Date(data[key].KisorolasDatum);
$option.text(
oldText + ' Kisorolva: ' + date.toLocaleDateString('hu-HU')
);
}
if (data[key].BesorolasDatum != null) {
oldText = $option.text();
date = new Date(data[key].BesorolasDatum);
$option.text(
oldText + ' Besorolva: ' + date.toLocaleDateString('hu-HU')
);
}
if (typeof getNincsRogzitettAtiratkozasiZaradek === 'function') {
$option.attr(
'class',
data[key].Vegzaradek != null ? 'green' : 'red'
);
$option.attr(
'data-fa-icon',
data[key].Vegzaradek != null ? '\uf00c' : '\uf00d'
);
$option.attr(
'title',
data[key].Vegzaradek != null
? data[key].Vegzaradek
: KretaOsztalybaSorolasHelper.NincsRogzitettAtiratkozasiZaradek()
);
}
}
$('#multiselect').append($option);
});
$('#multiselect').unbind();
$('#multiselect option').unbind();
KretaOsztalybaSorolasHelper.setMultiClickOption('SorolasForm');
$('#FromElementsCountIn').text($('#multiselect option').length);
setTimeout(function () {
$('#multiselect').click(function () {
$('#FromElementsCount').text($('#multiselect :selected').length);
});
}, 1);
if (KretaOsztalybaSorolasHelper.msieversion()) {
$('#multiselect option')
.mousedown(function (e) {
e.preventDefault();
var select = this;
var scroll = select.scrollTop;
e.target.selected = !e.target.selected;
setTimeout(function () {
select.scrollTop = scroll;
}, 0);
$('#multiselect').focus();
})
.mousemove(function (e) {
e.preventDefault();
});
} else {
$('#multiselect')
.mousedown(function (e) {
e.preventDefault();
var select = this;
var scroll = select.scrollTop;
e.target.selected = !e.target.selected;
setTimeout(function () {
select.scrollTop = scroll;
}, 0);
$('#multiselect').focus();
})
.mousemove(function (e) {
e.preventDefault();
});
}
}
kretaOsztalybaSorolasHelper.multiselectWithShiftFrom();
kretaOsztalybaSorolasHelper.multiselectWithShiftTo();
$('#multiselect')
.find('option')
.toArray()
.filter((i) => selectedOptions.includes(i.value))
.forEach((i) => (i.selected = true));
};
kretaOsztalybaSorolasHelper.multiselectWithShiftFrom = function () {
var fromOptionSelector = '#multiselect option';
var lastOptionFrom = null;
// Többes kiválasztás
$(fromOptionSelector).on('click', function (e) {
if (!lastOptionFrom) {
lastOptionFrom = this;
return;
}
if (e.shiftKey) {
var from = $(fromOptionSelector).index(this);
var to = $(fromOptionSelector).index(lastOptionFrom);
var start = Math.min(from, to);
var end = Math.max(from, to) + 1;
$(fromOptionSelector)
.slice(start, end)
.filter(':not(:disabled)')
.prop('selected', lastOptionFrom.selected);
}
lastOptionFrom = this;
});
};
kretaOsztalybaSorolasHelper.multiselectWithShiftTo = function () {
var toOptionSelector = '#multiselect_to option';
var lastOptionTo = null;
// Többes kiválasztás
$(toOptionSelector).on('click', function (e) {
if (!lastOptionTo) {
lastOptionTo = this;
return;
}
if (e.shiftKey) {
var from = $(toOptionSelector).index(this);
var to = $(toOptionSelector).index(lastOptionTo);
var start = Math.min(from, to);
var end = Math.max(from, to) + 1;
$(toOptionSelector)
.slice(start, end)
.filter(':not(:disabled)')
.prop('selected', lastOptionTo.selected);
}
lastOptionTo = this;
});
};
kretaOsztalybaSorolasHelper.setMultiClickOption = function (formName) {
if (KretaOsztalybaSorolasHelper.msieversion()) {
window.selectedIEOptions = {};
$('#multiselect').click(function (e) {
var $this = $(this),
options = this.options,
option,
value,
n;
value = $this.val();
for (n = 0; n < options.length; ++n) {
option = options[n];
if (option.value == value) {
window.selectedIEOptions[value] = !window.selectedIEOptions[value];
}
option.selected = !!window.selectedIEOptions[option.value];
}
return false;
});
window.selectedToIEOptions = {};
$('#multiselect_to').click(function (e) {
var $this = $(this),
options = this.options,
option,
value,
n;
value = $this.val();
for (n = 0; n < options.length; ++n) {
option = options[n];
if (option.value == value) {
window.selectedToIEOptions[value] =
!window.selectedToIEOptions[value];
}
option.selected = !!window.selectedToIEOptions[option.value];
}
return false;
});
}
};
kretaOsztalybaSorolasHelper.msieversion = function () {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
return true;
}
return false;
};
kretaOsztalybaSorolasHelper.sizeListSelect = function ($selectObject) {
if (!(typeof $selectObject[0].options === 'undefined')) {
var opts = $selectObject[0].options.length;
opts = opts > 18 ? opts : 18;
$selectObject[0].size = opts;
$selectObject.parent('.selectBoxDiv').height($selectObject.height());
$selectObject.parent('.selectBoxDiv').height(400);
}
};
//Engedélyezi vagy letiltja a multiselect button-öket
kretaOsztalybaSorolasHelper.setMultiselectButton = function (dropdownName) {
$('#' + dropdownName).change(function () {
if (
$('#' + dropdownName)
.data('kendoComboBox')
.value() != ''
) {
$('#multiselect_rightAll').prop('disabled', false);
$('#multiselect_rightSelected').prop('disabled', false);
$('#multiselect_leftAll').prop('disabled', false);
$('#multiselect_leftSelected').prop('disabled', false);
} else {
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
}
});
};
//Beállítja az aktuális napot
kretaOsztalybaSorolasHelper.today = function () {
var todayDate = kendo.toString(kendo.parseDate(new Date()));
var minDate = $('#Datum').data('kendoDatePicker').min();
var maxDate = $('#Datum').data('kendoDatePicker').max();
if (
!KretaOsztalybaSorolasHelper.dateCheck(
new Date(minDate),
new Date(maxDate),
new Date()
)
) {
KretaWindowHelper.warningWindow(
Globalization.Figyelem,
'A mai dátum nem esik bele az aktuális tanév kezdő és záró dátuma közé!',
undefined,
'todayWarrning'
);
}
$('#Datum').data('kendoDatePicker').value(todayDate);
$('#Datum').focus().focusout();
$('#Datum').data('kendoDatePicker').trigger('change');
};
kretaOsztalybaSorolasHelper.dateCheck = function (from, to, check) {
var fDate, lDate, cDate;
fDate = Date.parse(from);
lDate = Date.parse(to);
cDate = Date.parse(check);
if (cDate <= lDate && cDate >= fDate) {
return true;
}
return false;
};
//Törli egy select összes option-jét
kretaOsztalybaSorolasHelper.removeOptions = function (selectName) {
$('#' + selectName)
.find('option')
.remove()
.end();
};
//Ellenőrzés, hogy lehet -e engedélyezni a multiselect button-öket
kretaOsztalybaSorolasHelper.checkData = function (
fromDDL,
toDDL,
isKovTanev
) {
var fromValue = $('#' + fromDDL)
.data('kendoComboBox')
.value();
var toValue = $('#' + toDDL)
.data('kendoComboBox')
.value();
var toDatasource = $('#' + toDDL).data('kendoComboBox').dataSource;
var FilterId = 0;
//Összes osztályra vonatkozó feltétel
if (fromValue == -1) {
$.each(toDatasource.data(), function (i, v) {
if (v.Value == toValue) {
FilterId = v.FilterId;
}
});
if (FilterId != null) {
$('#multiSelectErrorMsg').text(
'Az összes osztály listából osztálybontott csoportba nem lehet sorolni!'
);
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
} else {
$('#multiSelectErrorMsg').text('');
$('#multiselect_rightAll').prop('disabled', false);
$('#multiselect_rightSelected').prop('disabled', false);
$('#multiselect_leftAll').prop('disabled', false);
$('#multiselect_leftSelected').prop('disabled', false);
}
} else {
$.each(toDatasource.data(), function (i, v) {
if (v.Value == toValue) {
FilterId = v.FilterId;
}
});
if (
fromValue != FilterId &&
FilterId != null &&
(CommonUtils.isNullOrUndefined(isKovTanev) || isKovTanev == false)
) {
$('#multiSelectErrorMsg').text(
Globalization.OsztalybontottCsoportOsztalyNemEgyezik
);
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
} else {
$('#multiSelectErrorMsg').text('');
$('#multiselect_rightAll').prop('disabled', false);
$('#multiselect_rightSelected').prop('disabled', false);
$('#multiselect_leftAll').prop('disabled', false);
$('#multiselect_leftSelected').prop('disabled', false);
}
}
if (fromValue == '' || toValue == '') {
$('#multiSelectErrorMsg').text('');
}
};
//Ellenőrzés, hogy lehet -e engedélyezni a multiselect button-öket csoportok esetében
kretaOsztalybaSorolasHelper.checkCsoportData = function (fromDDL, toDDL) {
var fromValue = $('#' + fromDDL)
.data('kendoComboBox')
.value();
var toValue = $('#' + toDDL)
.data('kendoComboBox')
.value();
var fromDatasource = $('#' + fromDDL).data('kendoComboBox').dataSource;
var toDatasource = $('#' + toDDL).data('kendoComboBox').dataSource;
var FromFilterId = 0;
var ToFilterId = 0;
$.each(fromDatasource.data(), function (i, v) {
if (v.Value == fromValue) {
FromFilterId = v.FilterId;
}
});
$.each(toDatasource.data(), function (i, v) {
if (v.Value == toValue) {
ToFilterId = v.FilterId;
}
});
if (ToFilterId != null && FromFilterId != ToFilterId) {
$('#multiSelectErrorMsg').text(
Globalization.OsztalybontottCsoportOsztalyNemEgyezik
);
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
} else {
$('#multiSelectErrorMsg').text('');
$('#multiselect_rightAll').prop('disabled', false);
$('#multiselect_rightSelected').prop('disabled', false);
$('#multiselect_leftAll').prop('disabled', false);
$('#multiselect_leftSelected').prop('disabled', false);
}
if (fromValue == '' || toValue == '') {
$('#multiSelectErrorMsg').text('');
}
};
//Összeállítja az elküldendő json object-et
kretaOsztalybaSorolasHelper.createJson = function (formName) {
var array = new Array();
$.each($('#multiselect_to option'), function (key, value) {
if (!$(this).attr('disabled')) {
array.push({
Id: value.value,
fromid: $(value).attr('fromid'),
jogviszonycount: $(value).attr('jogviszonycount'),
jogviszonyids: $(value).attr('jogviszonyid'),
isVanMentettVegzaradek: !CommonUtils.isNullOrUndefined(
$(value).attr('class')
)
? $(value).attr('class').indexOf('green') !== -1
: 'false'
});
}
});
var json = $('#' + formName).toObject();
json.ToElements = array;
if (!CommonUtils.isNullOrUndefined($('#SorolasZaradek').html())) {
var zaradekData = $('#SorolasZaradek').toObject();
if (!CommonUtils.isNullOrUndefined($('#TanuloCsoportId').val())) {
zaradekData.TanuloCsoportId = $('#TanuloCsoportId').val();
}
zaradekData.ZaradekSzovegList = getZaradekSzovegList();
json.Zaradek = zaradekData;
} else {
json.Zaradek = null;
}
return json;
};
//Újratölti egy combobox értékkészletét
kretaOsztalybaSorolasHelper.reloadDDL = function (DDL_Name) {
$('#' + DDL_Name)
.data('kendoComboBox')
.trigger('change');
};
kretaOsztalybaSorolasHelper.checkPrePost = function (inputName) {
var val = $('#' + inputName)
.data('kendoComboBox')
.value();
var txt = $('#' + inputName)
.data('kendoComboBox')
.text();
if ($.isNumeric(val) && val != txt) {
$('#FromDDL, #ToDDL').change();
return true;
} else {
$('#' + inputName)
.data('kendoComboBox')
.value('');
$('#' + inputName)
.data('kendoComboBox')
.trigger('change');
return false;
}
};
kretaOsztalybaSorolasHelper.afterSaveReloadDDL = function () {
$('#multiselect > option').remove().end();
$('#multiselect_to > option').remove().end();
var toDDL = $('#ToDDL').data('kendoComboBox');
toDDL.value('');
var fromDDl = $('#FromDDL').data('kendoComboBox');
fromDDl.value('');
$('#ToElementsCount').text(0);
$('#ToElementsCountIn').text(0);
$('#FromElementsCount').text(0);
$('#FromElementsCountIn').text($('#multiselect > option').length);
window.oldComboBoxValue = '';
if (
!CommonUtils.isNullOrUndefined($('#JogvMegszuneseJogcimTipusId')) &&
!CommonUtils.isNullOrUndefined(
$('#JogvMegszuneseJogcimTipusId').data('kendoComboBox')
)
) {
var JogvMegszuneseJogcimTipusIdDDl = $(
'#JogvMegszuneseJogcimTipusId'
).data('kendoComboBox');
JogvMegszuneseJogcimTipusIdDDl.value('');
}
if (
!CommonUtils.isNullOrUndefined($('#JogviszonyVege')) &&
!CommonUtils.isNullOrUndefined(
$('#JogviszonyVege').data('kendoDatePicker')
)
) {
$('#JogviszonyVege').data('kendoDatePicker').value('');
}
if (!CommonUtils.isNullOrUndefined($('.SorolasTbJogviszonyPartial'))) {
$('.SorolasTbJogviszonyPartial').empty();
}
};
kretaOsztalybaSorolasHelper.afterErrorReloadDDL = function () {
var fromDDl = $('#FromDDL').data('kendoComboBox');
fromDDl.trigger('change');
var toDDL = $('#ToDDL').data('kendoComboBox');
toDDL.trigger('change');
$('#FromElementsCountIn').text($('#multiselect > option').length);
window.oldComboBoxValue = '';
};
kretaOsztalybaSorolasHelper.resetForm = function (fromDDL, toDDL) {
// bal oldal
$('#' + fromDDL)
.data('kendoComboBox')
.value('');
$('#multiselect > option').remove().end();
$('#FromElementsCount').text('0');
//jobb oldal
$('#' + toDDL)
.data('kendoComboBox')
.value('');
$('#multiselect_to > option').remove().end();
$('#ToElementsCount').text('0');
//záradék
if (
!CommonUtils.isNullOrUndefined(
$('#ZaradekAdatszotar').data('kendoComboBox')
)
) {
$('#ZaradekAdatszotar').data('kendoComboBox').value('');
}
$('[id^=ZaradekSzovegTextArea_]').val('');
$('#IsBizonyitvanybanMegjelenik').prop('checked', false);
$('#IsTorzslaponMegjelenik').prop('checked', false);
$('#IsOsztalynaplobanMegjelenik').prop('checked', false);
};
kretaOsztalybaSorolasHelper.NincsRogzitettAtiratkozasiZaradek = function () {
return getNincsRogzitettAtiratkozasiZaradek();
};
kretaOsztalybaSorolasHelper.LoadJogviszonyGrid = function () {
$.each($('#multiselect_to option'), function (key, value) {
if (!$(this).attr('disabled')) {
$(value).attr('jogviszonyid', '0');
}
});
if (typeof loadJogviszonyPartialGrid === 'function') {
loadJogviszonyPartialGrid();
}
};
kretaOsztalybaSorolasHelper.disableMultiselectButtons = function () {
$('#multiselect_rightAll').prop('disabled', true);
$('#multiselect_rightSelected').prop('disabled', true);
$('#multiselect_leftAll').prop('disabled', true);
$('#multiselect_leftSelected').prop('disabled', true);
};
function getZaradekSzovegList() {
var zaradekSzovegList = [];
var zaradekSzovegQuery = $("textarea[name^='ZaradekSzovegTextArea_']");
zaradekSzovegQuery.each(function (index, value) {
var zaradekSzovegTextArea = $(value);
var szoveg = zaradekSzovegTextArea.val();
var nyelvId = zaradekSzovegTextArea.data('nyelv-id');
zaradekSzovegList[index] = {
NyelvId: nyelvId,
Szoveg: szoveg
};
});
return zaradekSzovegList;
}
return kretaOsztalybaSorolasHelper;
})();