This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/modules/calendar/calendar_multiday/calendar_overlap.js

80 lines
2.5 KiB
JavaScript

/*
* Create the splitter, set the viewport size, and set the position of the scrollbar to the first item.
*/
Drupal.behaviors.calendarSetScroll = function (context) {
// Make multi-day resizable - stolen/borrowed from textarea.js
$('.header-body-divider:not(.header-body-divider-processed)').each(function() {
var divider = $(this).addClass('header-body-divider-processed');
var start_y = divider.offset().top;
// Add the grippie icon
$(this).prepend('<div class="grippie"></div>').mousedown(startDrag);
function startDrag(e) {
start_y = divider.offset().top;
$(document).mousemove(performDrag).mouseup(endDrag);
return false;
}
function performDrag(e) {
var offset = e.pageY - start_y;
var mwc = $('#multi-day-container');
mwc.height(Math.max(0,mwc.height() + offset));
start_y = divider.offset().top;
return false;
}
function endDrag(e) {
$(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
}
});
$('.single-day-footer:not(.single-day-footer-processed)').each(function() {
var divider = $(this).addClass('single-day-footer-processed');
var start_y = divider.offset().top;
// Add the grippie icon
$(this).prepend('<div class="grippie"></div>').mousedown(startDrag);
function startDrag(e) {
start_y = divider.offset().top;
$(document).mousemove(performDrag).mouseup(endDrag);
return false;
}
function performDrag(e) {
var offset = e.pageY - start_y;
var sdc = $('#single-day-container');
sdc.height(Math.max(0,sdc.height() + offset));
start_y = divider.offset().top;
return false;
}
function endDrag(e) {
$(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
}
});
// Size the window
calendar_resizeViewport();
}
// Scroll the viewport to the first item
function calendar_scrollToFirst() {
if ($('div.first_item').size() > 0 ) {
var y = $('div.first_item').offset().top - $('#single-day-container').offset().top ;
$('#single-day-container').scrollTop(y);
}
}
// Size the single day view
function calendar_resizeViewport() {
// Size of the browser window
var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();
var top = $('#single-day-container').offset().top;
$('#multi-day-container').height(75);
// Give it a 20 pixel margin at the bottom
$('#single-day-container').height(Math.max(400,viewportHeight - top - 20));
}