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

1091 lines
36 KiB
JavaScript

var SDAFullCalendar = function () {
var sDAFullCalendar = function () {};
sDAFullCalendar.agendaView = {
initView: {
duration: { weeks: 1 },
type: 'agenda'
},
workWeek: {
type: 'agenda',
duration: { weeks: 1 },
weekends: false
},
workWeekWithSaturday: {
type: 'agenda',
duration: { weeks: 1 },
hiddenDays: [0]
}
};
sDAFullCalendar.basicView = {
initView: {
type: 'basic',
duration: { weeks: 1 }
},
basicWeek: {
type: 'basic',
duration: { weeks: 1 }
}
};
sDAFullCalendar.mounthView = {
initView: {
type: 'month'
}
};
sDAFullCalendar.initialize = function (parameters) {
initializeCalendar(parameters);
};
sDAFullCalendar.getParameters = function () {
return {
isBlind: false,
calendar: '',
calendarStartDate: '',
serviceURL: '',
osztalyCsoportId: -1,
tanarId: -1,
teremId: -1,
kellCsengetesiRendMegjelenites: true,
csakOrarendiOra: false,
tanuloId: -1,
clickEvent: undefined,
selectEvent: undefined,
snapDuration: '00:15:00',
slotDuration: '00:15:00',
slotLabelInterval: '00:30:00',
minTime: '07:00',
maxTime: '16:30',
defaultView: 'workWeek',
isNewEventEnabled: true,
viewModes: 'agendaDay, workWeek, workWeekWithSaturday, agendaWeek',
hetirendek: '',
kellTanoranKivuliFoglalkozasok: false,
kellTevekenysegek: false,
kellTanevRendje: true,
selectHelper: false,
eventType: 2,
szuresTanevRendjeAlapjan: false,
selectOverlapAllowed: false,
naptariHetekUrl: '',
fullScreenBtn: true,
mouseoverEvent: undefined,
mouseoutEvent: undefined,
slotLabelFormat: 'HH:mm',
orarendView: false,
eventLimit: true,
viewSet: sDAFullCalendar.agendaView,
headerLeft: 'prev,next today',
naptariHetekHetirend: '',
validRange: undefined,
showRogzitettOrak: false,
rogzitettOrakUrl: '',
kellOraTemaTooltip: true
};
};
function initializeCalendar(parameters) {
var calendar = $('#' + parameters.calendar);
var defaultView = 'initView';
defaultView = parameters.defaultView;
calendar.addClass('fullCalendar');
calendar.fullCalendar({
header: {
left: parameters.headerLeft,
center: 'title',
right: parameters.viewModes
},
eventMouseover: function (calEvent, jsEvent, view) {
if (parameters.mouseoverEvent) {
parameters.mouseoverEvent(calEvent, $(this));
}
},
eventMouseout: function (calEvent, jsEvent, view) {
if (parameters.mouseoutEvent) {
parameters.mouseoutEvent(calEvent, $(this));
}
},
validRange: parameters.validRange,
titleFormat: 'YYYY. MMMM D.',
columnFormat: { week: 'dddd\nMMMM D.' },
selectable: parameters.isNewEventEnabled,
selectHelper: parameters.selectHelper,
defaultView:
defaultView /*Azért kell inicializáló view, mert az események betöltése után a viewRrender már nem futna le, csak akkor ha nézetet váltunk.*/,
slotDuration: parameters.orarendView
? '00:00:15'
: parameters.slotDuration,
slotLabelInterval: parameters.orarendView
? '00:01:00'
: parameters.slotLabelInterval,
slotLabelFormat: parameters.orarendView
? 'mm'
: parameters.slotLabelFormat,
slotEventOverlap: false,
snapDuration: parameters.snapDuration,
eventClick: function (calEvent, jsEvent, view) {
var calendarParam = {
eventId: calEvent.id,
eventType: calEvent.color === 'transparent' ? 0 : 1,
/* Az orarendViewStart-nak akkor van értéke, ha a dátumok a csengetési rendből jönnek */
start: CommonUtils.isNullOrUndefined(calEvent.orarendViewStart)
? calEvent.start.format()
: moment(new Date(calEvent.orarendViewStart)).format(),
end: '',
allDay: calEvent.allDay,
eventColor: calEvent.color,
eventColorRightLine: calEvent.colorRightLine,
oraType: calEvent.oraType,
helyettesitesId: calEvent.helyettesitesId,
helyettesitoId: calEvent.helyettesitoId,
hanyadikora: calEvent.hanyadikora
};
if (!CommonUtils.isNullOrUndefined(calEvent.end)) {
calendarParam.end = CommonUtils.isNullOrUndefined(
calEvent.orarendViewEnd
)
? calEvent.end.format()
: moment(new Date(calEvent.orarendViewEnd)).format();
}
if (parameters.clickEvent) {
parameters.clickEvent(calendarParam);
}
},
selectOverlap: function (event) {
if (event.oraType == 5) {
// CalendarOraTypeEnum.TanevRendjeEsemeny
return true;
}
return parameters.selectOverlapAllowed;
},
eventRender: function (event, element) {
function htmlEscape(s) {
return (s + '')
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/'/g, '&#039;')
.replace(/"/g, '&quot;')
.replace(CommonUtils.LineBreakRegex, '<br />');
}
if (event.textLineThrough == true) {
element.addClass('fc-textline-through');
}
if (event.color === 'transparent') {
element.addClass('fc-hover');
}
var oraszam = event.oraszam;
var displayTime = event.DisplayTime;
if (displayTime) {
if (oraszam) {
element
.find('.fc-time')
.text(oraszam + ' (' + element.find('.fc-time').text() + ')');
}
} else {
element.find('.fc-time').text('');
}
if (event.text) {
element
.find('.fc-content')
.append(
"<div class='fc-orasorszam'>" + htmlEscape(event.text) + '</div>'
);
}
if (event.colorRightLine && event.colorRightLine != null) {
$(
'<div class="fc-bg2" style="background: ' +
event.colorRightLine +
'" />'
).insertBefore(element.find('.fc-bg'));
if (
event.hasBejelentettSzamonkeres != null &&
event.hasBejelentettSzamonkeres
) {
if (event.color == '#969696') {
$(
'<img class="hasCalendarIcon" src="/Content/content/images/note_text_p.png" width="25" style="float: left; position: relative; width: 20px; height:20px;">'
).insertBefore(element.find('.fc-time'));
} else {
$(
'<img class="hasCalendarIcon" src="/Content/content/images/note_text_f.png" width="25" style="float: left; position: relative; width: 20px; height:20px;">'
).insertBefore(element.find('.fc-time'));
}
}
if (event.hasHaziFeladat != null && event.hasHaziFeladat) {
if (event.color == '#969696') {
var color = '#FF0000';
if (event.IsHaziFeladatKesz) {
color = 'green';
} else if (event.IsHaziFeladatLejart) {
color = 'red';
}
$(
'<i class="fa fa-home fa-2x hasCalendarIcon" width="25" style="float: left; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
} else {
var color = '#000000';
if (event.IsHaziFeladatKesz) {
color = 'green';
} else if (event.IsHaziFeladatLejart) {
color = 'red';
}
$(
'<i class="fa fa-home fa-2x hasCalendarIcon" width="25" style="float: left; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
}
}
if (event.OnlineOra != null && event.OnlineOra) {
var color = '#FFFFFF';
color = 'black';
$(
'<i class="fa fa-wifi fa-2x" width="25" style="float: right; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
}
} else {
if (
event.hasBejelentettSzamonkeres != null &&
event.hasBejelentettSzamonkeres
) {
if (event.color == '#969696') {
$(
'<img class="hasCalendarIcon" src="/Content/content/images/note_text_p.png" width="25" style="float: left; position: relative; width: 30px; height:20px;">'
).insertBefore(element.find('.fc-time'));
} else {
$(
'<img class="hasCalendarIcon" src="/Content/content/images/note_text_f.png" width="25" style="float: left; position: relative; width: 30px; height:20px;">'
).insertBefore(element.find('.fc-time'));
}
}
if (event.hasHaziFeladat != null && event.hasHaziFeladat) {
if (event.color == '#969696') {
var color = '#FF0000';
if (event.IsHaziFeladatKesz) {
color = 'green';
} else if (event.IsHaziFeladatLejart) {
color = 'red';
}
$(
'<i class="fa fa-home fa-2x hasCalendarIcon" width="25" style="float: left; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
} else {
var color = '#000000';
if (event.IsHaziFeladatKesz) {
color = 'green';
} else if (event.IsHaziFeladatLejart) {
color = 'red';
}
$(
'<i class="fa fa-home fa-2x hasCalendarIcon" width="25" style="float: left; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
}
}
if (event.OnlineOra != null && event.OnlineOra) {
var color = '#FFFFFF';
color = 'black';
$(
'<i class="fa fa-wifi fa-2x" width="25" style="float: right; position: relative; width: 30px; height:20px; margin-top: 1px; color:' +
color +
';">'
).insertBefore(element.find('.fc-time'));
}
}
element.css('background-color', '');
element.css('background', event.color);
element.css('border-style', event.borderStyle);
if (
(event.allDay && event.Tema != '') ||
(event.UseCalendarTooltip && event.Tema != '')
) {
var kellOraTemaTooltip = CommonUtils.parseBool(
parameters.kellOraTemaTooltip
);
var contentmsg = kellOraTemaTooltip == true ? event.Tema : '';
if (!CommonUtils.isNullOrWhiteSpace(event.TooltipMsg)) {
contentmsg += event.TooltipMsg;
if (kellOraTemaTooltip == false) {
contentmsg = contentmsg.replace(/<br \/>/, '');
}
}
$(element).kendoTooltip({ content: contentmsg });
}
element.bind('mousedown', function (e) {
if (e.which == 888) {
copyCalendarDataToWindowObject(event);
}
if (e.which == 999) {
var json = {};
json.copyId = event.id;
json.date = event.orarendViewStart;
json.oraszam = event.hanyadikora;
$('#CopyOrarendJson').val(JSON.stringify(json));
pasteCalendarData(event);
}
});
},
minTime: parameters.minTime,
maxTime: parameters.maxTime,
contentHeight: 'auto',
select: function (start, end, allDay) {
var isAllDay = end.diff(start, 'days') > 0; // ha a napok közötti eltérés nagyobb mint 0, akkor egésznapos
var calendarParam = {
eventId: 0,
eventType: parameters.eventType,
start: moment(start).format(),
end: moment(end).format(),
allDay: isAllDay,
eventColor: ''
};
if (parameters.selectEvent) {
parameters.selectEvent(calendarParam);
}
},
editable: false,
defaultDate: parameters.calendarStartDate,
eventLimit: parameters.eventLimit,
events: {
url: parameters.serviceURL,
data: {
tanarId: parameters.tanarId,
osztalyCsoportId: parameters.osztalyCsoportId,
tanuloId: parameters.tanuloId,
teremId: parameters.teremId,
kellCsengetesiRendMegjelenites:
parameters.kellCsengetesiRendMegjelenites,
csakOrarendiOra: parameters.csakOrarendiOra,
kellTanoranKivuliFoglalkozasok:
parameters.kellTanoranKivuliFoglalkozasok,
kellTevekenysegek: parameters.kellTevekenysegek,
kellTanevRendje: parameters.kellTanevRendje,
szuresTanevRendjeAlapjan: parameters.szuresTanevRendjeAlapjan,
kellOraTemaTooltip: parameters.kellOraTemaTooltip
},
complete: function (view, element) {
var view = calendar.fullCalendar('getView');
if (view.name == 'initView') {
calendar.fullCalendar('changeView', parameters.defaultView);
}
}
},
orarendView: parameters.orarendView,
views: parameters.viewSet,
viewRender: function (view, element) {
try {
/*
viewRender:
Triggered when a new date-range is rendered, or when the view type switches.
- view is the View Object for the new view.
- element is a jQuery element for the container of the new view.
This callback will get triggered when the user changes the view, or when any of the date navigation methods are called.
This callback will trigger after the view has been fully rendered, but before events have been rendered (see also: eventAfterAllRender).
*/
$('#' + parameters.calendar).trigger('OnViewRender', [view, element]);
if (parameters.validRange) {
var utcDate = moment.utc(view.intervalStart);
if (view.calendar.options.validRange.start >= utcDate) {
$('.fc-prev-button').addClass('disabledItem');
} else {
$('.fc-prev-button').removeClass('disabledItem');
}
utcDate = moment.utc(view.intervalEnd);
if (view.calendar.options.validRange.end <= utcDate) {
$('.fc-next-button').addClass('disabledItem');
} else {
$('.fc-next-button').removeClass('disabledItem');
}
}
var maioszlop = element.find('.fc-today');
if (maioszlop.length > 0) {
var first = $(maioszlop[0]);
var fejlec = $('.fc-widget-header').find('th').eq(first.index());
fejlec.removeClass('fc-day-header');
fejlec.addClass('fc-day-header-today');
}
$('.fc-workWeek-button').text(Globalization.MunkaHet);
$('.fc-workWeekWithSaturday-button').text(
Globalization.MunkaHetSzombattal
);
setTimeline(view, parameters.calendar);
setHetirendekTitleFormat(
parameters.calendar,
parameters.naptariHetekHetirend
);
if (parameters.naptariHetekUrl != '') {
setNaptariHetek(parameters.calendar, parameters.naptariHetekUrl);
}
if (parameters.orarendView) {
setOrsorszamText(parameters);
}
if (parameters.fullScreenBtn) {
appendFullScreenBtn(parameters.calendar);
}
if (parameters.showRogzitettOrak) {
appendRogzitettOrak(parameters.calendar);
getRogzitettOrak(
parameters.rogzitettOrakUrl,
parameters.tanarId,
view.start
);
}
} catch (err) {
console.error(err);
}
}
});
}
function setOrsorszamText(parameters) {
$.each(
$('#' + parameters.calendar).find('.fc-axis.fc-time.fc-widget-content'),
function (i, e) {
var elem = $(e);
var text = elem.text();
if (text !== '') {
elem.text(parseInt(text) + '. ' + Globalization.Ora);
}
}
);
}
function copyCalendarDataToWindowObject(data) {
if (data.oraType === 6) {
KretaWindowHelper.notification(
'Üres órarendi elem nem másolható!',
'error'
);
} else {
window.calendarCopyData = data;
KretaWindowHelper.notification('Órarendi elem másolva!', 'success');
}
}
function oraUtkozes(event) {
return (
event.start._i === this.orarendViewStart && event.title === this.title
);
}
sDAFullCalendar.pasteNapirendCalendarData = function (data, calendarName) {
var events = $('#' + calendarName).fullCalendar('clientEvents');
if (events.some(oraUtkozes, data)) {
KretaWindowHelper.notification('Napirendi elem ütközés!', 'error');
} else pasteCalendarData(data);
};
function pasteCalendarData(data) {
var isValid = true;
if (window.calendarCopyData === undefined) {
KretaWindowHelper.notification('Nincs kimásolt órarendi elem!', 'error');
return;
}
if (
window.calendarCopyData.OraErvenyessegKezdete ==
window.calendarCopyData.OraErvenyessegVege
) {
let d1 = new Date(
window.calendarCopyData.OraErvenyessegVege.substring(0, 12).replaceAll(
'. ',
'-'
)
);
let d2 = new Date(data.orarendViewEnd.substring(0, 10));
if (d1.getTime() !== d2.getTime()) {
KretaWindowHelper.notification(
'A másolandó egy napos órarendi elem nem másolható eltérő napra!!',
'error'
);
return;
}
} else {
if (
new Date(window.calendarCopyData.OraErvenyessegKezdete) >=
new Date(data.orarendViewEnd) ||
new Date(window.calendarCopyData.OraErvenyessegVege) <=
new Date(data.orarendViewEnd)
) {
KretaWindowHelper.notification(
'A másolandó órarendi elem érvényességi ideje kívül esik a kijelölt időponton!',
'error'
);
isValid = false;
}
}
if (isValid) {
var json = {};
json.copyId = window.calendarCopyData.id;
json.dateFrom = CommonUtils.SetUtcDateTimeFromDatetime(
data.orarendViewStart
);
json.dateTo = CommonUtils.SetUtcDateTimeFromDatetime(data.orarendViewEnd);
json.oraszam = data.hanyadikora;
$('#CopyOrarendJson').val(JSON.stringify(json));
AjaxHelper.DoPost(
window.preValidationUrl,
json,
Orarend.successOnPrevalidation
);
}
}
sDAFullCalendar.successOnPrevalidation = function () {
var json = {};
json.copyId = window.calendarCopyData.id;
json.date = window.calendarCopyData.orarendViewStart;
json.oraszam = window.calendarCopyData.hanyadikora;
AjaxHelper.DoPost(window.copyUrl, json, Orarend.successCopy);
};
function setTimeline(view, clientId) {
var container = '#' + clientId;
var parentDiv = jQuery('.fc-time-grid-container', container);
var timeline = parentDiv.children('.timeline');
var sphere = parentDiv.children('.timelinesphere');
if (timeline.length == 0) {
//if timeline isn't there, add it
timeline = jQuery('<hr>').addClass('timeline');
sphere = jQuery('<div>').addClass('timelinesphere');
parentDiv.prepend(timeline);
parentDiv.prepend(sphere);
}
var curTime = new Date();
var curCalView = jQuery(container).fullCalendar('getView');
var orarendView = curCalView.opt('orarendView');
if (orarendView) {
timeline.hide();
sphere.hide();
return;
}
if (
curCalView.intervalStart < curTime &&
curCalView.intervalEnd > curTime
) {
timeline.show();
sphere.show();
} else {
timeline.hide();
sphere.hide();
return;
}
var kezd = curCalView.opt('minTime').split(':');
var vege = curCalView.opt('maxTime').split(':');
var kezdmasodperc = kezd[0] * 1 * 60 * 60 + kezd[1] * 60;
var vegemasodperc = vege[0] * 1 * 60 * 60 + vege[1] * 60;
var curSeconds =
curTime.getHours() * 60 * 60 +
curTime.getMinutes() * 60 +
curTime.getSeconds() -
kezdmasodperc;
if (curSeconds > vegemasodperc - kezdmasodperc || curSeconds < 0) {
timeline.hide();
sphere.hide();
return;
}
var secondintable = vegemasodperc - kezdmasodperc;
var percentOfDay = curSeconds / secondintable; //86400; //24 * 60 * 60 = 86400, # of seconds in a day
var topLoc = Math.floor(parentDiv.height() * percentOfDay);
timeline.css('top', topLoc - 1 + 'px');
sphere.css('top', topLoc - 1 - 5 + 'px');
if (
curCalView.name == 'agendaWeek' ||
curCalView.name == 'workWeekWithSaturday' ||
curCalView.name == 'workWeek'
) {
//week view, don't want the timeline to go the whole way across
var dayCol = jQuery('.fc-today:visible', container);
if (dayCol.length > 0) {
var left = dayCol.position().left + 1;
var width = dayCol.width() - 2;
timeline.css({
left: left + 'px',
width: width + 'px'
});
sphere.css({
left: left - 7 + 'px'
});
} else {
timeline.hide();
sphere.hide();
}
}
}
function setHetirendekTitleFormat(calendar, naptariHetekHetirend) {
var view = $('#' + calendar).fullCalendar('getView');
if (view.name != 'initView') {
var hetirend = '';
if (CommonUtils.isNullOrEmpty(naptariHetekHetirend)) {
return;
}
var clientEvents = $('#' + calendar).fullCalendar('clientEvents');
var parsedHetirendek = CommonUtils.JSONparse(
naptariHetekHetirend.replace(/\&quot;/g, '"')
);
var isFirstWeek = true;
var curr = new Date(view.start); // get start date
var first = curr.getDate() - curr.getDay() + 1; //megkapjuk a het elso napjat, de +1 mivel nem vasarnap a het elso napja hanem hetfo
var firstday = new Date(curr.setDate(first));
for (index in parsedHetirendek) {
var viewStartDate = firstday.toDateString();
var currentDatum = new Date(
parsedHetirendek[index].Datum
).toDateString();
if (viewStartDate == currentDatum) {
hetirend = parsedHetirendek[index].Hetirend_DNAME;
isFirstWeek = false;
break; // Ha megvan a hetirend, akkor ne keressük tovább.
}
}
var hetirendtitle = '';
if (isFirstWeek) {
hetirend = parsedHetirendek[0].Hetirend_DNAME;
}
hetirendtitle = ' (' + hetirend + ')';
var customTitleFormat = '';
switch (view.name) {
case 'agendaWeek':
case 'workWeekWithSaturday':
case 'workWeek':
case 'agendaDay':
customTitleFormat = hetirendtitle;
break;
}
// The title isn't rendered until after this callback, so we need to use a timeout.
window.setTimeout(function () {
if (
$('#' + calendar).find(
'.fc-toolbar > div > h2:contains("' +
customTitleFormat.replace('&#233;', 'é') +
'")'
).length == 0
) {
if (
$('#' + calendar).find(
'.fc-toolbar > div > h2:contains("("):contains(")")'
).length == 0
) {
$('#' + calendar)
.find('.fc-toolbar > div > h2')
.append(customTitleFormat);
}
}
}, 0);
}
}
function setNaptariHetek(calendar, url) {
if ($('#' + calendar + '_tanevHetek').length == 0) {
$('#' + calendar)
.find('.fc-toolbar > .fc-left')
.append(
"<input id='" +
calendar +
'_tanevHetek' +
"' class='calendarComboBox' />"
);
var script = document.createElement('script');
script.type = 'text/javascript';
script.text += "$('#" + calendar + '_tanevHetek' + "').kendoComboBox({";
script.text += " placeholder: 'Hétválasztó...',";
script.text += " dataTextField: 'Text',";
script.text += " dataValueField: 'Value',";
script.text += ' dataSource: {';
script.text += ' transport: {';
script.text += ' read: {';
script.text += " dataType: 'json',";
script.text += " url: '" + url + "',";
script.text += ' }';
script.text += ' }';
script.text += ' },';
script.text += ' change: function() {';
script.text += ' var value = this.value();';
script.text += ' if(value.length == 10) {';
script.text += ' var timestamp = Date.parse(value);';
script.text += ' if(!isNaN(timestamp)) {';
script.text +=
" $('#" +
calendar +
"').fullCalendar( 'gotoDate', value ) ";
script.text += ' }';
script.text += ' }';
script.text += ' }';
script.text += '});';
script.text += 'function setHetValaszto() {';
script.text +=
" var startDate = new Date($('#" +
calendar +
"').fullCalendar('getView').start);";
script.text +=
" var endDate = new Date($('#" +
calendar +
"').fullCalendar('getView').end);";
script.text +=
" var newDate = startDate.getFullYear() + '-' + ('0' + (startDate.getMonth() + 1)).slice(-2) + '-' + ('0' + startDate.getDate()).slice(-2);";
script.text +=
" var newEndDate = endDate.getFullYear() + '-' + ('0' + (endDate.getMonth() + 1)).slice(-2) + '-' + ('0' + endDate.getDate()).slice(-2);";
script.text +=
" var elements = $('#" +
calendar +
'_tanevHetek' +
"').data('kendoComboBox').dataSource.data();";
script.text += " var weekStartDate = '';";
script.text += ' $.each(elements, function (i, v) {';
script.text +=
' if (v.Value == newDate || (v.Value >= newDate && v.Value < newEndDate)) {';
script.text += ' weekStartDate = v.Value;';
script.text += ' }';
script.text += ' });';
script.text +=
" $('#" +
calendar +
'_tanevHetek' +
"').data('kendoComboBox').value(weekStartDate);";
script.text += '};';
script.text +=
"$('.fc-prev-button, .fc-next-button, .fc-today-button').click(function() {";
script.text += ' setHetValaszto();';
script.text +=
" $('#" + calendar + '_tanevHetek' + "').trigger('change')";
script.text += '});';
script.text += 'setTimeout(function() { setHetValaszto(); },0);';
$('head').append(script);
}
}
function appendFullScreenBtn(calendar) {
if ($('#' + calendar + '_fullScreenBtn').length == 0) {
$('#' + calendar)
.find('.fc-toolbar > .fc-right')
.append(
"<button type='button' title='Teljes képernyős nézet' id='" +
calendar +
'_fullScreenBtn' +
"' class='fc-button fc-state-default fc-corner-left fc-corner-right nfs'><i class='fa fa-arrows-alt'></i></button>"
);
var script = document.createElement('script');
script.type = 'text/javascript';
script.text +=
"$('#" + calendar + '_fullScreenBtn' + "').click(function() {";
script.text += " if($(this).hasClass('nfs')) {";
script.text += " $(this).removeClass('nfs').addClass('fs');";
script.text += " $('.main-header').addClass('displayNone');";
script.text +=
" $('#layout_navigationBar').addClass('displayNone');";
script.text += ' } else {';
script.text += " $(this).removeClass('fs').addClass('nfs');";
script.text += " $('.main-header').removeClass('displayNone');";
script.text +=
" $('#layout_navigationBar').removeClass('displayNone');";
script.text += ' }';
script.text += '});';
$('head').append(script);
}
}
function appendRogzitettOrak(calendarId) {
var rogzitettOrakContainerName = calendarId + '-rogiztett-orak-container';
if ($('#' + rogzitettOrakContainerName).length === 0) {
var tooltipText = $('<span></span>')
.append(
"A munkaidő adminisztrációs segéd megjeleníti a 'Tanórák', a 'Napirend' nézetben és az adminisztrációs rendszerben (első érték); illetve a 'Kötött munkaidő neveléssel-oktatással le nem kötött része' nézetben (második érték) rögzített időelszámolást."
)
.css({
visibility: 'hidden',
'background-color': '#f4f4f4',
color: '#5c6a79',
'text-align': 'center',
'border-radius': '6px',
padding: '5px',
position: 'absolute',
'z-index': '10',
border: '1px solid silver'
});
var tooltipImg = $('<img/>').css({
height: '10px',
padding: '0 10px 0 0',
'background-image':
'url(../Content/content/images/Information_icon.png)',
'background-size': '10px 10px',
'background-repeat': 'no-repeat'
});
var tooltipContainer = $('<div></div>')
.append(tooltipImg)
.append(tooltipText)
.css('padding', '5px 5px 0 0')
.hover(
function () {
$(this).children('span').css('visibility', 'visible');
},
function () {
$(this).children('span').css('visibility', 'hidden');
}
);
var kotottMunkaidoBox = $('<div></div>')
.attr('id', 'kotott-munkaido-box')
.css({
border: '1px solid',
padding: '5px 20px',
'border-radius': '25px 0px 0px 25px'
})
.append('00:00');
var nemKotottMunkaidoBox = $('<div></div>')
.attr('id', 'nem-kotott-munkaido-box')
.css({
border: '1px solid',
padding: '5px 20px',
'border-radius': '0px 25px 25px 0px',
'margin-left': '-1px'
})
.append('00:00');
var rogzitettOrakContainer = $('<div></div>')
.attr('id', rogzitettOrakContainerName)
.css('display', 'flex')
.append(tooltipContainer)
.append(kotottMunkaidoBox)
.append(nemKotottMunkaidoBox);
rogzitettOrakContainer.insertBefore(
$('#' + calendarId)
.find('.fc-toolbar > .fc-right')
.children()
.first()
);
}
}
function getRogzitettOrak(url, tanarId, start) {
if (tanarId > 0) {
var data = {
tanarId: tanarId,
start: start.format('YYYY-MM-DD')
};
AjaxHelper.DoGet(url, data, getRogzitettOrakSuccessCallBack);
}
}
function getRogzitettOrakSuccessCallBack(result) {
$('div[id$=rogiztett-orak-container] > div[id=kotott-munkaido-box]').each(
function (i, e) {
e.innerText = result.KotottMunkaido;
}
);
$(
'div[id$=rogiztett-orak-container] > div[id=nem-kotott-munkaido-box]'
).each(function (i, e) {
e.innerText = result.NemKotottMunkaido;
});
}
sDAFullCalendar.changeHetek = function (value) {
alert(value);
};
return sDAFullCalendar;
};
var CalendarDateTimeChangeHelper = (function () {
var calendarDateTimeChangeHelper = function () {};
calendarDateTimeChangeHelper.dateTimeFormat = 'YYYY-MM-DD HH:mm:ss';
calendarDateTimeChangeHelper.dateFormat = 'YYYY-MM-DD';
calendarDateTimeChangeHelper.dateTimeFormatWithoutSetTimezone =
'YYYY-MM-DDTHH:mm[Z]';
calendarDateTimeChangeHelper.changeCalendarModelOrakezdeteVegeToUtc =
function (calendarModel) {
if (!calendarModel.isDateAlreadyChangedToUtc) {
if (!CommonUtils.isNullOrUndefined(calendarModel.start)) {
calendarModel.start =
calendarDateTimeChangeHelper.getUtcDateTimeFromLocalDateTime(
calendarModel.start
); //utcStart
calendarModel.end =
calendarDateTimeChangeHelper.getUtcDateTimeFromLocalDateTime(
calendarModel.end
); //utcEnd
} else {
calendarModel.Start =
calendarDateTimeChangeHelper.getUtcDateTimeFromLocalDateTime(
calendarModel.Start
); //utcStart
calendarModel.End =
calendarDateTimeChangeHelper.getUtcDateTimeFromLocalDateTime(
calendarModel.End
); //utcEnd
}
calendarModel.isDateAlreadyChangedToUtc = true;
}
return calendarModel;
};
calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime = function (
date,
time
) {
var datum;
if (CommonUtils.isNullOrUndefined(date)) {
datum = moment(new Date()).format(
calendarDateTimeChangeHelper.dateFormat
);
} else {
var parameterDateFormat =
date.indexOf('-') > -1
? calendarDateTimeChangeHelper.dateFormat
: 'YYYY. MM. DD.';
datum = moment(date, parameterDateFormat).format(
calendarDateTimeChangeHelper.dateFormat
);
}
var splittedTime = '';
if (time.length > 8) {
splittedTime = time.substr(time.length - 8);
} else {
splittedTime = moment(time, 'HH:mm:ss').format('LT'); // LT -> AM/PM szerepel a time-nál
}
var idopont = moment(
datum + splittedTime,
calendarDateTimeChangeHelper.dateTimeFormat
);
var utcIdopont = moment(idopont)
.utc()
.format(calendarDateTimeChangeHelper.dateTimeFormat);
var utcTime = moment(utcIdopont).format('HH:mm');
return utcTime;
};
calendarDateTimeChangeHelper.changeDataOrakezDetOraVegToUtc = function (
formName
) {
var form = $('#' + formName);
var data = form.toObject();
if (!CommonUtils.isNullOrUndefined(data.Kezdet)) {
data.Kezdet = calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.Datum,
data.Kezdet
);
data.Veg = calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.Datum,
data.Veg
);
} else if (!CommonUtils.isNullOrUndefined(data.OraKezdete)) {
data.OraKezdete = calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.Datum,
data.OraKezdete
);
data.OraVege = calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.Datum,
data.OraVege
);
} else if (!CommonUtils.isNullOrUndefined(data.FogadoOraKezdete)) {
data.FogadoOraKezdete =
calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.FogadoOraDatuma,
data.FogadoOraKezdete
);
data.FogadoOraVege =
calendarDateTimeChangeHelper.getUtcTimeFromDateAndTime(
data.FogadoOraDatuma,
data.FogadoOraVege
);
}
return data;
};
calendarDateTimeChangeHelper.getUtcDateTimeFromLocalDateTime = function (
dateTime
) {
var localDateTime = moment(
dateTime,
calendarDateTimeChangeHelper.dateTimeFormatWithoutSetTimezone
).format(calendarDateTimeChangeHelper.dateTimeFormat);
var utcDateTime = moment(localDateTime)
.utc()
.format(calendarDateTimeChangeHelper.dateTimeFormat); //utcStart
return utcDateTime;
};
calendarDateTimeChangeHelper.setDatum = function (controlId, datetime) {
$('#' + controlId)
.data('kendoDatePicker')
.value(datetime);
$('#' + controlId)
.focus()
.focusout();
$('#' + controlId)
.data('kendoDatePicker')
.trigger('change');
};
return calendarDateTimeChangeHelper;
})();