web/data/cubicweb.timeline-ext.js
author Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
Thu, 12 Nov 2009 18:27:59 +0100
branchstable
changeset 3834 e3e64352063d
parent 1156 4b920f836567
child 5658 7b9553a9db65
child 5767 1d811df051c2
permissions -rw-r--r--
[javascript] fid form / onfailure behaviour If onfailure is specified, it should be done _before_ any default / standard CW action is done. The callback signature should be the same as the onsuccess one. If the onfailure callback returns true, the default actions will still take place afterwards, otherwise (i.e. return false), the processing stops directly after the callback.

/*
 *  :organization: Logilab
 *  :copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
 *  :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
 *
 */


/* provide our own custom date parser since the default
 * one only understands iso8601 and gregorian dates
 */
SimileAjax.NativeDateUnit.getParser = Timeline.NativeDateUnit.getParser = function(format) {
    if (typeof format == "string") {
	if (format.indexOf('%') != -1) {
	    return function(datestring) {
		if (datestring) {
		    return strptime(datestring, format);
		}
		return null;
	    };
	}
        format = format.toLowerCase();
    }
    if (format == "iso8601" || format == "iso 8601") {
	return Timeline.DateTime.parseIso8601DateTime;
    }
    return Timeline.DateTime.parseGregorianDateTime;
};

/*** CUBICWEB EVENT PAINTER *****************************************************/
Timeline.CubicWebEventPainter = function(params) {
//  Timeline.OriginalEventPainter.apply(this, arguments);
   this._params = params;
   this._onSelectListeners = [];

   this._filterMatcher = null;
   this._highlightMatcher = null;
   this._frc = null;

   this._eventIdToElmt = {};
};

Timeline.CubicWebEventPainter.prototype = new Timeline.OriginalEventPainter();

Timeline.CubicWebEventPainter.prototype._paintEventLabel = function(
  evt, text, left, top, width, height, theme) {
    var doc = this._timeline.getDocument();

    var labelDiv = doc.createElement("div");
    labelDiv.className = 'timeline-event-label';

    labelDiv.style.left = left + "px";
    labelDiv.style.width = width + "px";
    labelDiv.style.top = top + "px";

    if (evt._obj.onclick) {
	labelDiv.appendChild(A({'href': evt._obj.onclick}, text));
    } else if (evt._obj.image) {
      labelDiv.appendChild(IMG({src: evt._obj.image, width: '30px', height: '30px'}));
    } else {
      labelDiv.innerHTML = text;
    }

    if(evt._title != null)
        labelDiv.title = evt._title;

    var color = evt.getTextColor();
    if (color == null) {
        color = evt.getColor();
    }
    if (color != null) {
        labelDiv.style.color = color;
    }
    var classname = evt.getClassName();
    if(classname) labelDiv.className +=' ' + classname;

    this._eventLayer.appendChild(labelDiv);

    return {
        left:   left,
        top:    top,
        width:  width,
        height: height,
        elmt:   labelDiv
    };
};


Timeline.CubicWebEventPainter.prototype._showBubble = function(x, y, evt) {
  var div = DIV({id: 'xxx'});
  var width = this._params.theme.event.bubble.width;
  if (!evt._obj.bubbleUrl) {
    evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
  }
  SimileAjax.WindowManager.cancelPopups();
  SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y, width);
  if (evt._obj.bubbleUrl) {
    jQuery('#xxx').loadxhtml(evt._obj.bubbleUrl, null, 'post', 'replace');
  }
};