web/data/cubicweb.timeline-ext.js
author Julien Cristau <julien.cristau@logilab.fr>
Mon, 28 Apr 2014 11:20:26 +0200
changeset 9708 b36bc18f6ef7
parent 5774 0d792bceb25d
permissions -rw-r--r--
[migration] move 'entities' table changes from 3.19.0 to bootstrap script The 'mtime' and 'source' columns need to go away before we attempt to do anything else with the repo, otherwise any addition of an entity is going to explode.

/**
 *  :organization: Logilab
 *  :copyright: 2008-2010 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');
    }
};