Added provider breaks in the table view.

This commit is contained in:
Alex Tselegidis 2016-07-23 16:07:20 +02:00
parent ee64fdbc8f
commit d828befb32
2 changed files with 62 additions and 2 deletions

View file

@ -466,7 +466,7 @@ body .form-horizontal .controls {
border-radius: 3px; border-radius: 3px;
padding: 2px 3px; padding: 2px 3px;
cursor: pointer; cursor: pointer;
margin-bottom: 2px; margin: 1px 15px 1px 1px;
} }
#calendar .calendar-view .date-column .provider-column .event.appointment { #calendar .calendar-view .date-column .provider-column .event.appointment {

View file

@ -89,6 +89,10 @@ window.BackendCalendarTableView = window.BackendCalendarTableView || {};
$calendar.on('click', '.event', function(event) { $calendar.on('click', '.event', function(event) {
event.stopPropagation(); event.stopPropagation();
if ($(this).hasClass('break')) {
return; // Do nothing with break events.
}
$('.popover').remove(); // Close all open popovers. $('.popover').remove(); // Close all open popovers.
var html; var html;
@ -490,6 +494,14 @@ window.BackendCalendarTableView = window.BackendCalendarTableView || {};
// Add the unavailabilities to the column. // Add the unavailabilities to the column.
_createUnavailabilities($providerColumn, events.unavailabilities); _createUnavailabilities($providerColumn, events.unavailabilities);
// Add the provider breaks to the column.
var workingPlan = JSON.parse(provider.settings.working_plan);
var day = date.toString('dddd').toLowerCase();
if (workingPlan[day]) {
var breaks = workingPlan[day].breaks;
_createBreaks($providerColumn, breaks);
}
} }
/** /**
@ -636,9 +648,12 @@ window.BackendCalendarTableView = window.BackendCalendarTableView || {};
} }
var eventDate = Date.parse(unavailability.start_datetime); var eventDate = Date.parse(unavailability.start_datetime);
var endDate = Date.parse(unavailability.end_datetime);
var eventDuration = Math.round((endDate - eventDate) / 60000);
var $event = $('<div class="event unavailability" />'); var $event = $('<div class="event unavailability" />');
$event.html(unavailability.notes || EALang['unavailable']); $event.html((unavailability.notes || EALang['unavailable']) + ' ' + eventDate.toString('HH:mm')
+ ' (' + eventDuration + '\')');
$event.data(unavailability); $event.data(unavailability);
@ -658,6 +673,51 @@ window.BackendCalendarTableView = window.BackendCalendarTableView || {};
} }
} }
/**
* Create break events in the table view.
*
* @param {jQuery} $providerColumn The provider column container.
* @param {Object[]} breaks Contains the break events data.
*/
function _createBreaks($providerColumn, breaks) {
if (breaks.length === 0) {
return;
}
var currentDate = new Date($providerColumn.parents('.date-column').data('date'));
var $tbody = $providerColumn.find('table tbody');
for (var index in breaks) {
var entry = breaks[index];
var startHour = entry.start.split(':');
var eventDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), startHour[0], startHour[1]);
var endHour = entry.end.split(':');
var endDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), endHour[0], endHour[1]);
var eventDuration = Math.round((endDate - eventDate) / 60000);
var $event = $('<div class="event unavailability break" />');
$event.html(EALang['break'] + ' ' + eventDate.toString('HH:mm') + ' (' + eventDuration + '\')');
$event.data(entry);
$tbody.find('tr').each(function(index, tr) {
var $td = $(tr).find('td:first');
var cellDate = new Date(currentDate.getTime()).set({
hour: parseInt($td.text().split(':')[0]),
minute: parseInt($td.text().split(':')[1])
});
if (eventDate < cellDate) {
$(tr).prev().find('td:gt(0)').each(function(index, td) {
$event.clone().appendTo($(td));
});
return false;
}
});
}
}
/** /**
* Set Table Calendar View * Set Table Calendar View
* *