home | career | drupal | java | mac | mysql | perl | php | scala | uml | unix

Drupal example source code file (calendar_overlap.js)

This example Drupal source code file (calendar_overlap.js) is included in the DevDaily.com "Drupal Source Code Warehouse" project. The intent of this project is to help you "Learn Drupal by Example".

PHP - Drupal tags/keywords

calendar_resizeviewport, enddrag, false, function, grippie, mousemove, offset, php, return, single-day-container, start_y, startdrag, top, var

The calendar_overlap.js Drupal example source code

// $Id: calendar_overlap.js,v 1.1.2.1 2010/11/28 23:31:28 karens Exp $
/*
 *  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');
      var sdc = $('#single-day-container');
      var mwc_height = mwc.height();
      var sdc_height = sdc.height();
      var max_height = mwc_height + sdc_height;
	  mwc.height(Math.min(max_height,Math.max(0,mwc_height + offset)));
      sdc.height(Math.min(max_height,Math.max(0,sdc_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;
  
  // Give it a 20 pixel margin at the bottom
  $('#single-day-container').height(viewportHeight - top - 20);
}
  

Other Drupal examples (source code examples)

Here is a short list of links related to this Drupal calendar_overlap.js source code file:

new blog posts

"Drupal" is a registered trademark of Dries Buytaert.

my drupal tutorials and examples  

Copyright 1998-2016 Alvin Alexander, alvinalexander.com
All Rights Reserved.

Beginning in 2016, a portion of the proceeds from pages under the '/drupal-code-examples/' URI will be donated to charity.