1091 lines
36 KiB
JavaScript
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, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/'/g, ''')
|
|
.replace(/"/g, '"')
|
|
.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(/\"/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('é', 'é') +
|
|
'")'
|
|
).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;
|
|
})();
|