web/data/cubicweb.timeline-ext.js
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Wed, 02 Sep 2015 15:31:18 +0200
changeset 10634 06a43f727601
parent 5774 0d792bceb25d
permissions -rw-r--r--
[web/views] avoid propagation of NoSelectableObject in some case of inlined relations / permissions When selecting an inlined creation form, we should catch the NoSelectable exception that will be raised if the user cannot add entities of the target type (this is not and cannot be verified earlier) or if some other custom selector prevents the form from being selected. Closes #6510921

/**
 *  :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');
    }
};