src/cm/media/js/lib/yui/yui3-3.15.0/build/axis/axis.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('axis', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Provides base functionality for drawing chart axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 * @module charts
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
var CONFIG = Y.config,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
    DOCUMENT = CONFIG.doc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    Y_Lang = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    IS_STRING = Y_Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    Y_DOM = Y.DOM,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    LeftAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    RightAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    BottomAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    TopAxisLayout;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 * Algorithmic strategy for rendering a left axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @class LeftAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
LeftAxisLayout = function() {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
LeftAxisLayout.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
     *  Default margins for text fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
     *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     *  @method _getDefaultMargins
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     *  @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    _getDefaultMargins: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
            top: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
            left: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
            right: 4,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
            bottom: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
     * Sets the length of the tick on either side of the axis line.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
     * @method setTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    setTickOffsets: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
            majorTicks = host.get("styles").majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
            halfTick = tickLength * 0.5,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
            display = majorTicks.display;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
        host.set("topTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        host.set("bottomTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        switch(display)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
            case "inside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
                host.set("rightTickOffset",  tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
                host.set("leftTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            case "outside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
                host.set("rightTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                host.set("leftTickOffset",  tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            case "cross":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                host.set("rightTickOffset", halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                host.set("leftTickOffset",  halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
                host.set("rightTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
                host.set("leftTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
     * Draws a tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
     * @method drawTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
     * @param {Path} path reference to the path `Path` element in which to draw the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
     * @param {Object} pt Point on the axis in which the tick will intersect.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
     * @param {Object} tickStyle Hash of properties to apply to the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
    drawTick: function(path, pt, tickStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            tickLength = tickStyles.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
            start = {x:padding.left, y:pt.y},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            end = {x:tickLength + padding.left, y:pt.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
        host.drawLine(path, start, end);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
     * Calculates the coordinates for the first point on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
     * @method getLineStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
     * @return {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
    getLineStart: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
        var style = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            majorTicks = style.majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
            display = majorTicks.display,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            pt = {x:padding.left, y:0};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
        if(display === "outside")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
            pt.x += tickLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        else if(display === "cross")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            pt.x += tickLength/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        return pt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
     * Calculates the point for a label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
     * @method getLabelPoint
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
     * @param {Object} point Point on the axis in which the tick will intersect.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
     * @return {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    getLabelPoint: function(point)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
        return {x:point.x - this.get("leftTickOffset"), y:point.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
     * Updates the value for the `maxLabelSize` for use in calculating total size.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
     * @method updateMaxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
     * @param {HTMLElement} label to measure
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
    updateMaxLabelSize: function(labelWidth, labelHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
            sinRadians = props.sinRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
            cosRadians = props.cosRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
            max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            max = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
        else if(absRot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
            max = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
            max = (cosRadians * labelWidth) + (sinRadians * labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
        host._maxLabelSize = Math.max(host._maxLabelSize, max);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
     * Determines the available label width when the axis width has been explicitly set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
     * @method getExplicitlySized
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
    getExplicitlySized: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
        if(this._explicitWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
            var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
                w = host._explicitWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
                totalTitleSize = host._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
                leftTickOffset = host.get("leftTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
                margin = styles.label.margin.right;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
            host._maxLabelSize =  w - (leftTickOffset + margin + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
     * Rotate and position title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
     * @method positionTitle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
    positionTitle: function(label)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
            bounds = host._titleBounds,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
            margin = host.get("styles").title.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
            props = host._titleRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
            w = bounds.right - bounds.left,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
            labelWidth = label.offsetWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
            labelHeight = label.offsetHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
            x = (labelWidth * -0.5) + (w * 0.5),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
            y = (host.get("height") * 0.5) - (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        if(margin && margin.left)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
            x += margin.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        props.x = x;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
        props.y = y;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
        props.transformOrigin = [0.5, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
        host._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
     * Rotate and position labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
     * @method positionLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
     * @param {Object} pt hash containing the x and y coordinates in which the label will be positioned
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
     * against.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
    positionLabel: function(label, pt, styles, i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
            offset = parseFloat(styles.label.offset),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
            tickOffset = host.get("leftTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
            totalTitleSize = this._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
            leftOffset = pt.x + totalTitleSize - tickOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
            topOffset = pt.y,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
            maxLabelSize = host._maxLabelSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
            labelWidth = this._labelWidths[i],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
            labelHeight = this._labelHeights[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
            leftOffset -= labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
            topOffset -= labelHeight * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
            leftOffset -= labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
            topOffset = topOffset + labelWidth/2 - (labelWidth * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
            leftOffset -= labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
            topOffset = topOffset - labelHeight + labelWidth/2 - (labelWidth * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
            leftOffset -= labelWidth + (labelHeight * absRot/360);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
            topOffset -= labelHeight * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
        props.x = Math.round(maxLabelSize + leftOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
        props.y = Math.round(topOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
        this._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
     * Adjusts the coordinates of an axis label based on the rotation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
     * @method _setRotationCoords
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
     * @param {Object} props Coordinates, dimension and rotation properties of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
    _setRotationCoords: function(props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
        var rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
            leftOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
            topOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
            labelWidth = props.labelWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
            labelHeight = props.labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
            leftOffset = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
            topOffset = labelHeight * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
            topOffset = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
            topOffset = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
            leftOffset = labelWidth + (labelHeight * absRot/360);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
            topOffset = labelHeight * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
        props.x -= leftOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
        props.y -= topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
     * Returns the transformOrigin to use for an axis label based on the position of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
     * and the rotation of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
     * @method _getTransformOrigin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
     * @param {Number} rot The rotation (in degrees) of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
    _getTransformOrigin: function(rot)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
        var transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
            transformOrigin = [0, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
            transformOrigin = [0.5, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
            transformOrigin = [0.5, 1];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
            transformOrigin = [1, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
        return transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
     * Adjust the position of the Axis widget's content box for internal axes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
     * @method offsetNodeForTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
     * @param {Node} cb contentBox of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
    offsetNodeForTick: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
     * Sets the width of the axis based on its contents.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
     * @method setCalculatedSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
    setCalculatedSize: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
            graphic = this.get("graphic"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
            label = style.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
            tickOffset = host.get("leftTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
            max = host._maxLabelSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
            totalTitleSize = this._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
            ttl = Math.round(totalTitleSize + tickOffset + max + label.margin.right);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
        if(this._explicitWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
            ttl = this._explicitWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        this.set("calculatedWidth", ttl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
        graphic.set("x", ttl - tickOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
Y.LeftAxisLayout = LeftAxisLayout;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
 * RightAxisLayout contains algorithms for rendering a right axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
 * @class RightAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
RightAxisLayout = function(){};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
RightAxisLayout.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
     *  Default margins for text fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
     *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
     *  @method _getDefaultMargins
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
     *  @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
    _getDefaultMargins: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
            top: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
            left: 4,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
            right: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
            bottom: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
     * Sets the length of the tick on either side of the axis line.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
     * @method setTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
    setTickOffsets: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
            majorTicks = host.get("styles").majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
            halfTick = tickLength * 0.5,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
            display = majorTicks.display;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
        host.set("topTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
        host.set("bottomTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
        switch(display)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
            case "inside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
                host.set("leftTickOffset", tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
                host.set("rightTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
            case "outside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
                host.set("leftTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
                host.set("rightTickOffset", tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
            case "cross" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
                host.set("rightTickOffset", halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
                host.set("leftTickOffset", halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
            default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
                host.set("leftTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
                host.set("rightTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
     * Draws a tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
     * @method drawTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
     * @param {Path} path reference to the path `Path` element in which to draw the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
     * @param {Object} pt Point on the axis in which the tick will intersect.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
     * @param {Object} tickStyle Hash of properties to apply to the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
    drawTick: function(path, pt, tickStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
            tickLength = tickStyles.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
            start = {x:padding.left, y:pt.y},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
            end = {x:padding.left + tickLength, y:pt.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
        host.drawLine(path, start, end);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
     * Calculates the coordinates for the first point on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
     * @method getLineStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
     * @return {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
    getLineStart: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
            majorTicks = style.majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
            display = majorTicks.display,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
            pt = {x:padding.left, y:padding.top};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
        if(display === "inside")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
            pt.x += tickLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
        else if(display === "cross")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
            pt.x += tickLength/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
        return pt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
     * Calculates the point for a label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
     * @method getLabelPoint
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
     * @param {Object} point Point on the axis in which the tick will intersect.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
     * @return {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
    getLabelPoint: function(point)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
        return {x:point.x + this.get("rightTickOffset"), y:point.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
     * Updates the value for the `maxLabelSize` for use in calculating total size.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
     * @method updateMaxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
     * @param {HTMLElement} label to measure
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
    updateMaxLabelSize: function(labelWidth, labelHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
            sinRadians = props.sinRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
            cosRadians = props.cosRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
            max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
            max = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
        else if(absRot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
            max = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
            max = (cosRadians * labelWidth) + (sinRadians * labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
        host._maxLabelSize = Math.max(host._maxLabelSize, max);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
     * Determines the available label width when the axis width has been explicitly set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
     * @method getExplicitlySized
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
    getExplicitlySized: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
        if(this._explicitWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
            var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
                w = host._explicitWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
                totalTitleSize = this._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
                rightTickOffset = host.get("rightTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
                margin = styles.label.margin.right;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
            host._maxLabelSize =  w - (rightTickOffset + margin + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
     * Rotate and position title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
     * @method positionTitle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
    positionTitle: function(label)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
            bounds = host._titleBounds,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
            margin = host.get("styles").title.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
            props = host._titleRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
            labelWidth = label.offsetWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
            labelHeight = label.offsetHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
            w = bounds.right - bounds.left,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
            x = this.get("width") - (labelWidth * 0.5) - (w * 0.5),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
            y = (host.get("height") * 0.5) - (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
        if(margin && margin.right)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
            x -= margin.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
        props.x = x;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
        props.y = y;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
        props.transformOrigin = [0.5, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
        host._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
     * Rotate and position labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
     * @method positionLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
     * @param {Object} pt hash containing the x and y coordinates in which the label will be positioned
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
     * against.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
    positionLabel: function(label, pt, styles, i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
            offset = parseFloat(styles.label.offset),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
            tickOffset = host.get("rightTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
            labelStyles = styles.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
            margin = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
            leftOffset = pt.x,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
            topOffset = pt.y,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
            labelWidth = this._labelWidths[i],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
            labelHeight = this._labelHeights[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
        if(labelStyles.margin && labelStyles.margin.left)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
            margin = labelStyles.margin.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
            topOffset -= labelHeight * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
            leftOffset -= labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
            topOffset = topOffset - labelHeight + labelWidth/2 - (labelWidth * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
            topOffset = topOffset + labelWidth/2 - (labelWidth * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
            leftOffset -= labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
            topOffset -= labelHeight * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
            leftOffset += labelHeight/2 * absRot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
        leftOffset += margin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
        leftOffset += tickOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
        props.x = Math.round(leftOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
        props.y = Math.round(topOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
        this._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
     * Adjusts the coordinates of an axis label based on the rotation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
     * @method _setRotationCoords
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
     * @param {Object} props Coordinates, dimension and rotation properties of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
    _setRotationCoords: function(props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
        var rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
            leftOffset = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
            topOffset = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
            labelWidth = props.labelWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
            labelHeight = props.labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
            topOffset = labelHeight * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
            topOffset = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
            topOffset = labelHeight * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
            leftOffset = labelHeight/2 * absRot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
        props.x -= leftOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
        props.y -= topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
     * Returns the transformOrigin to use for an axis label based on the position of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
     * and the rotation of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
     * @method _getTransformOrigin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
     * @param {Number} rot The rotation (in degrees) of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
    _getTransformOrigin: function(rot)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
        var transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
            transformOrigin = [0, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
        else if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
            transformOrigin = [0.5, 1];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
            transformOrigin = [0.5, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
            transformOrigin = [0, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
        return transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
     * Adjusts position for inner ticks.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
     * @method offsetNodeForTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
     * @param {Node} cb contentBox of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
    offsetNodeForTick: function(cb)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
            tickOffset = host.get("leftTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
            offset = 0 - tickOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
        cb.setStyle("left", offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
     * Assigns a height based on the size of the contents.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
     * @method setCalculatedSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
    setCalculatedSize: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
            styles = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
            labelStyle = styles.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
            totalTitleSize = this._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
            ttl = Math.round(host.get("rightTickOffset") + host._maxLabelSize + totalTitleSize + labelStyle.margin.left);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
        if(this._explicitWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
            ttl = this._explicitWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
        host.set("calculatedWidth", ttl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
        host.get("contentBox").setStyle("width", ttl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
Y.RightAxisLayout = RightAxisLayout;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
 * Contains algorithms for rendering a bottom axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
 * @class BottomAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
 * @Constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
BottomAxisLayout = function(){};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
BottomAxisLayout.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
     *  Default margins for text fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   761
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   762
     *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   763
     *  @method _getDefaultMargins
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   764
     *  @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   765
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   766
    _getDefaultMargins: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   767
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   768
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   769
            top: 4,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   770
            left: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   771
            right: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   772
            bottom: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   773
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   774
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   775
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   776
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   777
     * Sets the length of the tick on either side of the axis line.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   778
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   779
     * @method setTickOffsets
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   780
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   781
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   782
    setTickOffsets: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   783
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   784
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   785
            majorTicks = host.get("styles").majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   786
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   787
            halfTick = tickLength * 0.5,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   788
            display = majorTicks.display;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   789
        host.set("leftTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   790
        host.set("rightTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   791
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   792
        switch(display)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   793
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   794
            case "inside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   795
                host.set("topTickOffset", tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   796
                host.set("bottomTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   797
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   798
            case "outside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   799
                host.set("topTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   800
                host.set("bottomTickOffset", tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   801
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   802
            case "cross":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   803
                host.set("topTickOffset",  halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   804
                host.set("bottomTickOffset",  halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   805
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   806
            default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   807
                host.set("topTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   808
                host.set("bottomTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   809
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   810
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   811
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   812
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   813
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   814
     * Calculates the coordinates for the first point on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   815
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   816
     * @method getLineStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   817
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   818
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   819
    getLineStart: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   820
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   821
        var style = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   822
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   823
            majorTicks = style.majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   824
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   825
            display = majorTicks.display,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   826
            pt = {x:0, y:padding.top};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   827
        if(display === "inside")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   828
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   829
            pt.y += tickLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   830
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   831
        else if(display === "cross")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   832
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   833
            pt.y += tickLength/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   834
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   835
        return pt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   836
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   837
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   838
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   839
     * Draws a tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   840
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   841
     * @method drawTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   842
     * @param {Path} path reference to the path `Path` element in which to draw the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   843
     * @param {Object} pt hash containing x and y coordinates
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   844
     * @param {Object} tickStyles hash of properties used to draw the tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   845
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   846
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   847
    drawTick: function(path, pt, tickStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   848
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   849
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   850
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   851
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   852
            tickLength = tickStyles.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   853
            start = {x:pt.x, y:padding.top},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   854
            end = {x:pt.x, y:tickLength + padding.top};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   855
        host.drawLine(path, start, end);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   856
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   857
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   858
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   859
     * Calculates the point for a label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   860
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   861
     * @method getLabelPoint
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   862
     * @param {Object} pt Object containing x and y coordinates
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   863
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   864
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   865
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   866
    getLabelPoint: function(point)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   867
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   868
        return {x:point.x, y:point.y + this.get("bottomTickOffset")};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   869
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   870
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   871
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   872
     * Updates the value for the `maxLabelSize` for use in calculating total size.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   873
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   874
     * @method updateMaxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   875
     * @param {HTMLElement} label to measure
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   876
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   877
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   878
    updateMaxLabelSize: function(labelWidth, labelHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   879
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   880
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   881
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   882
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   883
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   884
            sinRadians = props.sinRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   885
            cosRadians = props.cosRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   886
            max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   887
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   888
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   889
            max = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   890
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   891
        else if(absRot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   892
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   893
            max = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   894
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   895
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   896
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   897
            max = (sinRadians * labelWidth) + (cosRadians * labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   898
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   899
        host._maxLabelSize = Math.max(host._maxLabelSize, max);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   900
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   901
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   902
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   903
     * Determines the available label height when the axis width has been explicitly set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   904
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   905
     * @method getExplicitlySized
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   906
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   907
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   908
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   909
    getExplicitlySized: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   910
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   911
        if(this._explicitHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   912
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   913
            var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   914
                h = host._explicitHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   915
                totalTitleSize = host._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   916
                bottomTickOffset = host.get("bottomTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   917
                margin = styles.label.margin.right;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   918
            host._maxLabelSize =  h - (bottomTickOffset + margin + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   919
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   920
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   921
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   922
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   923
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   924
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   925
     * Rotate and position title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   926
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   927
     * @method positionTitle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   928
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   929
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   930
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   931
    positionTitle: function(label)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   932
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   933
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   934
            bounds = host._titleBounds,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   935
            margin = host.get("styles").title.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   936
            props = host._titleRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   937
            h = bounds.bottom - bounds.top,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   938
            labelWidth = label.offsetWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   939
            labelHeight = label.offsetHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   940
            x = (host.get("width") * 0.5) - (labelWidth * 0.5),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   941
            y = host.get("height") - labelHeight/2 - h/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   942
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   943
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   944
        if(margin && margin.bottom)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   945
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   946
            y -= margin.bottom;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   947
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   948
        props.x = x;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   949
        props.y = y;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   950
        props.transformOrigin = [0.5, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   951
        host._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   952
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   953
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   954
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   955
     * Rotate and position labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   956
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   957
     * @method positionLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   958
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   959
     * @param {Object} pt hash containing the x and y coordinates in which the label will be positioned
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   960
     * against.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   961
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   962
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   963
    positionLabel: function(label, pt, styles, i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   964
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   965
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   966
            offset = parseFloat(styles.label.offset),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   967
            tickOffset = host.get("bottomTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   968
            labelStyles = styles.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   969
            margin = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   970
            props = host._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   971
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   972
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   973
            leftOffset = Math.round(pt.x),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   974
            topOffset = Math.round(pt.y),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   975
            labelWidth = host._labelWidths[i],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   976
            labelHeight = host._labelHeights[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   977
        if(labelStyles.margin && labelStyles.margin.top)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   978
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   979
            margin = labelStyles.margin.top;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   980
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   981
        if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   982
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   983
            topOffset -= labelHeight/2 * rot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   984
            leftOffset = leftOffset + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   985
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   986
        else if(rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   987
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   988
            topOffset -= labelHeight/2 * absRot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   989
            leftOffset = leftOffset - labelWidth + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   990
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   991
        else if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   992
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   993
            leftOffset = leftOffset + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   994
            topOffset -= labelHeight/2 * rot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   995
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   996
        else if(rot < 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   997
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   998
            leftOffset = leftOffset - labelWidth + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   999
            topOffset -= labelHeight/2 * absRot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1000
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1001
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1002
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1003
            leftOffset -= labelWidth * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1004
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1005
        topOffset += margin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1006
        topOffset += tickOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1007
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1008
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1009
        props.x = leftOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1010
        props.y = topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1011
        host._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1012
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1013
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1014
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1015
     * Adjusts the coordinates of an axis label based on the rotation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1016
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1017
     * @method _setRotationCoords
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1018
     * @param {Object} props Coordinates, dimension and rotation properties of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1019
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1020
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1021
    _setRotationCoords: function(props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1022
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1023
        var rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1024
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1025
            labelWidth = props.labelWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1026
            labelHeight = props.labelHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1027
            leftOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1028
            topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1029
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1030
        if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1031
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1032
            leftOffset = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1033
            topOffset = labelHeight/2 * rot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1034
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1035
        else if(rot < 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1036
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1037
            leftOffset = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1038
            topOffset = labelHeight/2 * absRot/90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1039
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1040
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1041
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1042
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1043
            topOffset = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1044
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1045
        props.x -= leftOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1046
        props.y -= topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1047
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1048
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1049
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1050
     * Returns the transformOrigin to use for an axis label based on the position of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1051
     * and the rotation of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1052
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1053
     * @method _getTransformOrigin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1054
     * @param {Number} rot The rotation (in degrees) of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1055
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1056
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1057
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1058
    _getTransformOrigin: function(rot)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1059
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1060
        var transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1061
        if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1062
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1063
            transformOrigin = [0, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1064
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1065
        else if(rot < 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1066
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1067
            transformOrigin = [1, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1068
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1069
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1070
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1071
            transformOrigin = [0, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1072
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1073
        return transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1074
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1075
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1076
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1077
     * Adjusts position for inner ticks.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1078
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1079
     * @method offsetNodeForTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1080
     * @param {Node} cb contentBox of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1081
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1082
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1083
    offsetNodeForTick: function(cb)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1084
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1085
        var host = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1086
        cb.setStyle("top", 0 - host.get("topTickOffset"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1087
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1088
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1089
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1090
     * Assigns a height based on the size of the contents.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1091
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1092
     * @method setCalculatedSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1093
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1094
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1095
    setCalculatedSize: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1096
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1097
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1098
            styles = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1099
            labelStyle = styles.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1100
            totalTitleSize = host._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1101
            ttl = Math.round(host.get("bottomTickOffset") + host._maxLabelSize + labelStyle.margin.top + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1102
        if(host._explicitHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1103
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1104
            ttl = host._explicitHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1105
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1106
        host.set("calculatedHeight", ttl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1107
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1108
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1109
Y.BottomAxisLayout = BottomAxisLayout;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1110
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1111
 * Contains algorithms for rendering a top axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1112
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1113
 * @class TopAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1114
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1115
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1116
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1117
TopAxisLayout = function(){};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1118
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1119
TopAxisLayout.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1120
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1121
     *  Default margins for text fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1122
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1123
     *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1124
     *  @method _getDefaultMargins
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1125
     *  @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1126
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1127
    _getDefaultMargins: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1128
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1129
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1130
            top: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1131
            left: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1132
            right: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1133
            bottom: 4
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1134
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1135
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1136
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1137
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1138
     * Sets the length of the tick on either side of the axis line.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1139
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1140
     * @method setTickOffsets
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1141
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1142
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1143
    setTickOffsets: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1144
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1145
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1146
            majorTicks = host.get("styles").majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1147
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1148
            halfTick = tickLength * 0.5,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1149
            display = majorTicks.display;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1150
        host.set("leftTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1151
        host.set("rightTickOffset",  0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1152
        switch(display)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1153
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1154
            case "inside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1155
                host.set("bottomTickOffset", tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1156
                host.set("topTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1157
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1158
            case "outside" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1159
                host.set("bottomTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1160
                host.set("topTickOffset",  tickLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1161
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1162
            case "cross" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1163
                host.set("topTickOffset", halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1164
                host.set("bottomTickOffset", halfTick);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1165
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1166
            default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1167
                host.set("topTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1168
                host.set("bottomTickOffset", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1169
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1170
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1171
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1172
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1173
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1174
     * Calculates the coordinates for the first point on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1175
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1176
     * @method getLineStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1177
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1178
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1179
    getLineStart: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1180
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1181
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1182
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1183
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1184
            majorTicks = style.majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1185
            tickLength = majorTicks.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1186
            display = majorTicks.display,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1187
            pt = {x:0, y:padding.top};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1188
        if(display === "outside")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1189
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1190
            pt.y += tickLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1191
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1192
        else if(display === "cross")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1193
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1194
            pt.y += tickLength/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1195
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1196
        return pt;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1197
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1198
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1199
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1200
     * Draws a tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1201
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1202
     * @method drawTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1203
     * @param {Path} path reference to the path `Path` element in which to draw the tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1204
     * @param {Object} pt hash containing x and y coordinates
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1205
     * @param {Object} tickStyles hash of properties used to draw the tick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1206
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1207
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1208
    drawTick: function(path, pt, tickStyles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1209
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1210
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1211
            style = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1212
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1213
            tickLength = tickStyles.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1214
            start = {x:pt.x, y:padding.top},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1215
            end = {x:pt.x, y:tickLength + padding.top};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1216
        host.drawLine(path, start, end);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1217
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1218
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1219
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1220
     * Calculates the point for a label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1221
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1222
     * @method getLabelPoint
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1223
     * @param {Object} pt hash containing x and y coordinates
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1224
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1225
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1226
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1227
    getLabelPoint: function(pt)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1228
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1229
        return {x:pt.x, y:pt.y - this.get("topTickOffset")};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1230
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1231
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1232
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1233
     * Updates the value for the `maxLabelSize` for use in calculating total size.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1234
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1235
     * @method updateMaxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1236
     * @param {HTMLElement} label to measure
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1237
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1238
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1239
    updateMaxLabelSize: function(labelWidth, labelHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1240
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1241
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1242
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1243
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1244
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1245
            sinRadians = props.sinRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1246
            cosRadians = props.cosRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1247
            max;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1248
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1249
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1250
            max = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1251
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1252
        else if(absRot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1253
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1254
            max = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1255
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1256
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1257
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1258
            max = (sinRadians * labelWidth) + (cosRadians * labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1259
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1260
        host._maxLabelSize = Math.max(host._maxLabelSize, max);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1261
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1263
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1264
     * Determines the available label height when the axis width has been explicitly set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1265
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1266
     * @method getExplicitlySized
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1267
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1268
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1269
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1270
    getExplicitlySized: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1271
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1272
        if(this._explicitHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1273
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1274
            var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1275
                h = host._explicitHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1276
                totalTitleSize = host._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1277
                topTickOffset = host.get("topTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1278
                margin = styles.label.margin.right;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1279
            host._maxLabelSize =  h - (topTickOffset + margin + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1280
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1281
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1282
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1283
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1284
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1285
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1286
     * Rotate and position title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1287
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1288
     * @method positionTitle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1289
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1290
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1291
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1292
    positionTitle: function(label)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1293
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1294
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1295
            bounds = host._titleBounds,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1296
            margin = host.get("styles").title.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1297
            props = host._titleRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1298
            labelWidth = label.offsetWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1299
            labelHeight = label.offsetHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1300
            h = bounds.bottom - bounds.top,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1301
            x = (host.get("width") * 0.5) - (labelWidth * 0.5),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1302
            y = h/2 - labelHeight/2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1303
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1304
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1305
        if(margin && margin.top)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1306
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1307
            y += margin.top;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1308
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1309
        props.x = x;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1310
        props.y = y;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1311
        props.transformOrigin = [0.5, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1312
        host._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1313
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1314
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1315
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1316
     * Rotate and position labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1317
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1318
     * @method positionLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1319
     * @param {HTMLElement} label to rotate position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1320
     * @param {Object} pt hash containing the x and y coordinates in which the label will be positioned
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1321
     * against.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1322
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1323
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1324
    positionLabel: function(label, pt, styles, i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1325
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1326
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1327
            offset = parseFloat(styles.label.offset),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1328
            totalTitleSize = this._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1329
            maxLabelSize = host._maxLabelSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1330
            leftOffset = pt.x,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1331
            topOffset = pt.y + totalTitleSize + maxLabelSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1332
            props = this._labelRotationProps,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1333
            rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1334
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1335
            labelWidth = this._labelWidths[i],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1336
            labelHeight = this._labelHeights[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1337
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1338
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1339
            leftOffset -= labelWidth * offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1340
            topOffset -= labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1341
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1342
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1343
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1344
            if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1345
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1346
                leftOffset = leftOffset - labelWidth + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1347
                topOffset -= (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1348
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1349
            else if (rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1350
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1351
                leftOffset = leftOffset + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1352
                topOffset -= (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1353
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1354
            else if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1355
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1356
                leftOffset = leftOffset - labelWidth + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1357
                topOffset -= labelHeight - (labelHeight * rot/180);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1358
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1359
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1360
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1361
                leftOffset = leftOffset + labelHeight/2 - (labelHeight * offset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1362
                topOffset -= labelHeight - (labelHeight * absRot/180);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1363
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1364
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1365
        props.x = Math.round(leftOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1366
        props.y = Math.round(topOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1367
        props.labelWidth = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1368
        props.labelHeight = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1369
        this._rotate(label, props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1370
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1371
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1372
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1373
     * Adjusts the coordinates of an axis label based on the rotation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1374
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1375
     * @method _setRotationCoords
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1376
     * @param {Object} props Coordinates, dimension and rotation properties of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1377
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1378
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1379
    _setRotationCoords: function(props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1380
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1381
        var rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1382
            absRot = props.absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1383
            labelWidth = props.labelWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1384
            labelHeight = props.labelHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1385
            leftOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1386
            topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1387
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1388
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1389
            leftOffset = labelWidth * 0.5;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1390
            topOffset = labelHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1391
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1392
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1393
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1394
            if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1395
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1396
                leftOffset = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1397
                topOffset = (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1398
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1399
            else if (rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1400
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1401
                topOffset = (labelHeight * 0.5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1402
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1403
            else if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1404
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1405
                leftOffset = labelWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1406
                topOffset = labelHeight - (labelHeight * rot/180);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1407
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1408
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1409
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1410
                topOffset = labelHeight - (labelHeight * absRot/180);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1411
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1412
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1413
        props.x -= leftOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1414
        props.y -= topOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1415
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1416
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1417
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1418
     * Returns the transformOrigin to use for an axis label based on the position of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1419
     * and the rotation of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1420
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1421
     * @method _getTransformOrigin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1422
     * @param {Number} rot The rotation (in degrees) of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1423
     * @return Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1424
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1425
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1426
    _getTransformOrigin: function(rot)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1427
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1428
        var transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1429
        if(rot === 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1430
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1431
            transformOrigin = [0, 0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1432
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1433
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1434
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1435
            if(rot === 90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1436
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1437
                transformOrigin = [1, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1438
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1439
            else if (rot === -90)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1440
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1441
                transformOrigin = [0, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1442
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1443
            else if(rot > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1444
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1445
                transformOrigin = [1, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1446
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1447
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1448
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1449
                transformOrigin = [0, 0.5];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1450
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1451
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1452
        return transformOrigin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1453
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1454
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1455
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1456
     * Adjusts position for inner ticks.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1457
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1458
     * @method offsetNodeForTick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1459
     * @param {Node} cb contentBox of the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1460
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1461
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1462
    offsetNodeForTick: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1463
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1464
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1465
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1466
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1467
     * Assigns a height based on the size of the contents.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1468
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1469
     * @method setCalculatedSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1470
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1471
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1472
    setCalculatedSize: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1473
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1474
        var host = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1475
            graphic = host.get("graphic"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1476
            styles = host.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1477
            labelMargin = styles.label.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1478
            totalLabelSize = labelMargin.bottom + host._maxLabelSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1479
            totalTitleSize = host._totalTitleSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1480
            topTickOffset = this.get("topTickOffset"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1481
            ttl = Math.round(topTickOffset + totalLabelSize + totalTitleSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1482
        if(this._explicitHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1483
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1484
           ttl = this._explicitHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1485
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1486
        host.set("calculatedHeight", ttl);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1487
        graphic.set("y", ttl - topTickOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1488
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1489
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1490
Y.TopAxisLayout = TopAxisLayout;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1491
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1492
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1493
 * An abstract class that provides the core functionality for draw a chart axis. Axis is used by the following classes:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1494
 * <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1495
 *      <li>{{#crossLink "CategoryAxis"}}{{/crossLink}}</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1496
 *      <li>{{#crossLink "NumericAxis"}}{{/crossLink}}</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1497
 *      <li>{{#crossLink "StackedAxis"}}{{/crossLink}}</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1498
 *      <li>{{#crossLink "TimeAxis"}}{{/crossLink}}</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1499
 *  </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1500
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1501
 * @class Axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1502
 * @extends Widget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1503
 * @uses AxisBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1504
 * @uses TopAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1505
 * @uses RightAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1506
 * @uses BottomAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1507
 * @uses LeftAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1508
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1509
 * @param {Object} config (optional) Configuration parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1510
 * @submodule axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1511
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1512
Y.Axis = Y.Base.create("axis", Y.Widget, [Y.AxisBase], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1513
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1514
     * Calculates and returns a value based on the number of labels and the index of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1515
     * the current label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1516
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1517
     * @method getLabelByIndex
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1518
     * @param {Number} i Index of the label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1519
     * @param {Number} l Total number of labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1520
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1521
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1522
    getLabelByIndex: function(i, l)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1523
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1524
        var position = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1525
            direction = position === "left" || position === "right" ? "vertical" : "horizontal";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1526
        return this._getLabelByIndex(i, l, direction);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1527
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1528
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1529
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1530
     * @method bindUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1531
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1532
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1533
    bindUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1534
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1535
        this.after("dataReady", Y.bind(this._dataChangeHandler, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1536
        this.after("dataUpdate", Y.bind(this._dataChangeHandler, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1537
        this.after("stylesChange", this._updateHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1538
        this.after("overlapGraphChange", this._updateHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1539
        this.after("positionChange", this._positionChangeHandler);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1540
        this.after("widthChange", this._handleSizeChange);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1541
        this.after("heightChange", this._handleSizeChange);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1542
        this.after("calculatedWidthChange", this._handleSizeChange);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1543
        this.after("calculatedHeightChange", this._handleSizeChange);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1544
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1545
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1546
     * Storage for calculatedWidth value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1547
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1548
     * @property _calculatedWidth
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1549
     * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1550
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1551
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1552
    _calculatedWidth: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1553
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1554
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1555
     * Storage for calculatedHeight value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1556
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1557
     * @property _calculatedHeight
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1558
     * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1559
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1560
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1561
    _calculatedHeight: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1562
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1563
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1564
     * Handles change to the dataProvider
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1565
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1566
     * @method _dataChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1567
     * @param {Object} e Event object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1568
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1569
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1570
    _dataChangeHandler: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1571
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1572
        if(this.get("rendered"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1573
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1574
            this._drawAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1575
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1576
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1577
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1578
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1579
     * Handles change to the position attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1580
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1581
     * @method _positionChangeHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1582
     * @param {Object} e Event object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1583
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1584
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1585
    _positionChangeHandler: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1586
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1587
        this._updateGraphic(e.newVal);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1588
        this._updateHandler();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1589
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1590
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1591
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1592
     * Updates the the Graphic instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1593
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1594
     * @method _updateGraphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1595
     * @param {String} position Position of axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1596
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1597
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1598
    _updateGraphic: function(position)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1599
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1600
        var graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1601
        if(position === "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1602
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1603
            if(graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1604
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1605
                graphic.destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1606
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1607
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1608
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1609
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1610
            if(!graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1611
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1612
                this._setCanvas();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1613
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1614
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1615
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1616
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1617
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1618
     * Handles changes to axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1619
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1620
     * @method _updateHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1621
     * @param {Object} e Event object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1622
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1623
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1624
    _updateHandler: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1625
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1626
        if(this.get("rendered"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1627
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1628
            this._drawAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1629
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1630
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1631
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1632
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1633
     * @method renderUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1634
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1635
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1636
    renderUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1637
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1638
        this._updateGraphic(this.get("position"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1639
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1640
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1641
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1642
     * @method syncUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1643
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1644
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1645
    syncUI: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1646
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1647
        var layout = this._layout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1648
            defaultMargins,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1649
            styles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1650
            label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1651
            title,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1652
            i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1653
        if(layout)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1654
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1655
            defaultMargins = layout._getDefaultMargins();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1656
            styles = this.get("styles");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1657
            label = styles.label.margin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1658
            title =styles.title.margin;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1659
            //need to defaultMargins method to the layout classes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1660
            for(i in defaultMargins)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1661
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1662
                if(defaultMargins.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1663
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1664
                    label[i] = label[i] === undefined ? defaultMargins[i] : label[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1665
                    title[i] = title[i] === undefined ? defaultMargins[i] : title[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1666
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1667
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1668
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1669
        this._drawAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1670
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1671
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1672
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1673
     * Creates a graphic instance to be used for the axis line and ticks.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1674
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1675
     * @method _setCanvas
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1676
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1677
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1678
    _setCanvas: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1679
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1680
        var cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1681
            bb = this.get("boundingBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1682
            p = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1683
            pn = this._parentNode,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1684
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1685
            h = this.get("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1686
        bb.setStyle("position", "absolute");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1687
        bb.setStyle("zIndex", 2);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1688
        w = w ? w + "px" : pn.getStyle("width");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1689
        h = h ? h + "px" : pn.getStyle("height");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1690
        if(p === "top" || p === "bottom")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1691
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1692
            cb.setStyle("width", w);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1693
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1694
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1695
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1696
            cb.setStyle("height", h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1697
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1698
        cb.setStyle("position", "relative");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1699
        cb.setStyle("left", "0px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1700
        cb.setStyle("top", "0px");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1701
        this.set("graphic", new Y.Graphic());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1702
        this.get("graphic").render(cb);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1703
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1704
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1705
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1706
     * Gets the default value for the `styles` attribute. Overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1707
     * base implementation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1708
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1709
     * @method _getDefaultStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1710
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1711
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1712
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1713
    _getDefaultStyles: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1714
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1715
        var axisstyles = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1716
            majorTicks: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1717
                display:"inside",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1718
                length:4,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1719
                color:"#dad8c9",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1720
                weight:1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1721
                alpha:1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1722
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1723
            minorTicks: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1724
                display:"none",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1725
                length:2,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1726
                color:"#dad8c9",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1727
                weight:1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1728
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1729
            line: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1730
                weight:1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1731
                color:"#dad8c9",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1732
                alpha:1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1733
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1734
            majorUnit: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1735
                determinant:"count",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1736
                count:11,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1737
                distance:75
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1738
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1739
            top: "0px",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1740
            left: "0px",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1741
            width: "100px",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1742
            height: "100px",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1743
            label: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1744
                color:"#808080",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1745
                alpha: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1746
                fontSize:"85%",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1747
                rotation: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1748
                offset: 0.5,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1749
                margin: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1750
                    top: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1751
                    right: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1752
                    bottom: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1753
                    left: undefined
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1754
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1755
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1756
            title: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1757
                color:"#808080",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1758
                alpha: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1759
                fontSize:"85%",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1760
                rotation: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1761
                margin: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1762
                    top: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1763
                    right: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1764
                    bottom: undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1765
                    left: undefined
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1766
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1767
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1768
            hideOverlappingLabelTicks: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1769
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1770
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1771
        return Y.merge(Y.Renderer.prototype._getDefaultStyles(), axisstyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1772
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1773
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1774
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1775
     * Updates the axis when the size changes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1776
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1777
     * @method _handleSizeChange
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1778
     * @param {Object} e Event object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1779
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1780
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1781
    _handleSizeChange: function(e)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1782
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1783
        var attrName = e.attrName,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1784
            pos = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1785
            vert = pos === "left" || pos === "right",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1786
            cb = this.get("contentBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1787
            hor = pos === "bottom" || pos === "top";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1788
        cb.setStyle("width", this.get("width"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1789
        cb.setStyle("height", this.get("height"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1790
        if((hor && attrName === "width") || (vert && attrName === "height"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1791
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1792
            this._drawAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1793
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1794
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1795
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1796
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1797
     * Maps key values to classes containing layout algorithms
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1798
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1799
     * @property _layoutClasses
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1800
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1801
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1802
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1803
    _layoutClasses:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1804
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1805
        top : TopAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1806
        bottom: BottomAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1807
        left: LeftAxisLayout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1808
        right : RightAxisLayout
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1809
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1810
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1811
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1812
     * Draws a line segment between 2 points
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1813
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1814
     * @method drawLine
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1815
     * @param {Object} startPoint x and y coordinates for the start point of the line segment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1816
     * @param {Object} endPoint x and y coordinates for the for the end point of the line segment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1817
     * @param {Object} line styles (weight, color and alpha to be applied to the line segment)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1818
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1819
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1820
    drawLine: function(path, startPoint, endPoint)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1821
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1822
        path.moveTo(startPoint.x, startPoint.y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1823
        path.lineTo(endPoint.x, endPoint.y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1824
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1825
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1826
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1827
     * Generates the properties necessary for rotating and positioning a text field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1828
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1829
     * @method _getTextRotationProps
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1830
     * @param {Object} styles properties for the text field
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1831
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1832
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1833
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1834
    _getTextRotationProps: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1835
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1836
        if(styles.rotation === undefined)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1837
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1838
            switch(this.get("position"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1839
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1840
                case "left" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1841
                    styles.rotation = -90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1842
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1843
                case "right" :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1844
                    styles.rotation = 90;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1845
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1846
                default :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1847
                    styles.rotation = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1848
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1849
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1850
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1851
        var rot =  Math.min(90, Math.max(-90, styles.rotation)),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1852
            absRot = Math.abs(rot),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1853
            radCon = Math.PI/180,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1854
            sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1855
            cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1856
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1857
            rot: rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1858
            absRot: absRot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1859
            radCon: radCon,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1860
            sinRadians: sinRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1861
            cosRadians: cosRadians,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1862
            textAlpha: styles.alpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1863
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1864
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1865
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1866
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1867
     * Draws an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1868
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1869
     * @method _drawAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1870
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1871
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1872
    _drawAxis: function ()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1873
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1874
        if(this._drawing)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1875
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1876
            this._callLater = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1877
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1878
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1879
        this._drawing = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1880
        this._callLater = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1881
        if(this._layout)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1882
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1883
            var styles = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1884
                line = styles.line,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1885
                labelStyles = styles.label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1886
                majorTickStyles = styles.majorTicks,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1887
                drawTicks = majorTickStyles.display !== "none",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1888
                len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1889
                i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1890
                layout = this._layout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1891
                layoutLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1892
                lineStart,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1893
                label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1894
                labelWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1895
                labelHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1896
                labelFunction = this.get("labelFunction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1897
                labelFunctionScope = this.get("labelFunctionScope"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1898
                labelFormat = this.get("labelFormat"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1899
                graphic = this.get("graphic"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1900
                path = this.get("path"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1901
                tickPath,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1902
                explicitlySized,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1903
                position = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1904
                labelData,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1905
                labelValues,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1906
                point,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1907
                points,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1908
                firstPoint,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1909
                lastPoint,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1910
                firstLabel,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1911
                lastLabel,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1912
                staticCoord,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1913
                dynamicCoord,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1914
                edgeOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1915
                explicitLabels = this._labelValuesExplicitlySet ? this.get("labelValues") : null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1916
                direction = (position === "left" || position === "right") ? "vertical" : "horizontal";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1917
            this._labelWidths = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1918
            this._labelHeights = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1919
            graphic.set("autoDraw", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1920
            path.clear();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1921
            path.set("stroke", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1922
                weight: line.weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1923
                color: line.color,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1924
                opacity: line.alpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1925
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1926
            this._labelRotationProps = this._getTextRotationProps(labelStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1927
            this._labelRotationProps.transformOrigin = layout._getTransformOrigin(this._labelRotationProps.rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1928
            layout.setTickOffsets.apply(this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1929
            layoutLength = this.getLength();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1930
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1931
            len = this.getTotalMajorUnits();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1932
            edgeOffset = this.getEdgeOffset(len, layoutLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1933
            this.set("edgeOffset", edgeOffset);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1934
            lineStart = layout.getLineStart.apply(this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1935
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1936
            if(direction === "vertical")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1937
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1938
                staticCoord = "x";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1939
                dynamicCoord = "y";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1940
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1941
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1942
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1943
                staticCoord = "y";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1944
                dynamicCoord = "x";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1945
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1946
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1947
            labelData = this._getLabelData(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1948
                lineStart[staticCoord],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1949
                staticCoord,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1950
                dynamicCoord,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1951
                this.get("minimum"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1952
                this.get("maximum"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1953
                edgeOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1954
                layoutLength - edgeOffset - edgeOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1955
                len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1956
                explicitLabels
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1957
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1958
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1959
            points = labelData.points;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1960
            labelValues = labelData.values;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1961
            len = points.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1962
            if(!this._labelValuesExplicitlySet)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1963
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1964
                this.set("labelValues", labelValues, {src: "internal"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1965
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1966
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1967
            //Don't create the last label or tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1968
            if(this.get("hideFirstMajorUnit"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1969
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1970
                firstPoint = points.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1971
                firstLabel = labelValues.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1972
                len = len - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1973
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1974
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1975
            //Don't create the last label or tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1976
            if(this.get("hideLastMajorUnit"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1977
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1978
                lastPoint = points.pop();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1979
                lastLabel = labelValues.pop();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1980
                len = len - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1981
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1982
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1983
            if(len < 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1984
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1985
                this._clearLabelCache();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1986
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1987
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1988
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1989
                this.drawLine(path, lineStart, this.getLineEnd(lineStart));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1990
                if(drawTicks)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1991
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1992
                    tickPath = this.get("tickPath");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1993
                    tickPath.clear();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1994
                    tickPath.set("stroke", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1995
                        weight: majorTickStyles.weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1996
                        color: majorTickStyles.color,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1997
                        opacity: majorTickStyles.alpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1998
                    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1999
                    for(i = 0; i < len; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2000
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2001
                        point = points[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2002
                        if(point)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2003
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2004
                            layout.drawTick.apply(this, [tickPath, points[i], majorTickStyles]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2005
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2006
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2007
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2008
                this._createLabelCache();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2009
                this._maxLabelSize = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2010
                this._totalTitleSize = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2011
                this._titleSize = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2012
                this._setTitle();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2013
                explicitlySized = layout.getExplicitlySized.apply(this, [styles]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2014
                for(i = 0; i < len; i = i + 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2015
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2016
                    point = points[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2017
                    if(point)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2018
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2019
                        label = this.getLabel(labelStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2020
                        this._labels.push(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2021
                        this.get("appendLabelFunction")(label, labelFunction.apply(labelFunctionScope, [labelValues[i], labelFormat]));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2022
                        labelWidth = Math.round(label.offsetWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2023
                        labelHeight = Math.round(label.offsetHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2024
                        if(!explicitlySized)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2025
                        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2026
                            this._layout.updateMaxLabelSize.apply(this, [labelWidth, labelHeight]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2027
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2028
                        this._labelWidths.push(labelWidth);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2029
                        this._labelHeights.push(labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2030
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2031
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2032
                this._clearLabelCache();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2033
                if(this.get("overlapGraph"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2034
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2035
                   layout.offsetNodeForTick.apply(this, [this.get("contentBox")]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2036
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2037
                layout.setCalculatedSize.apply(this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2038
                if(this._titleTextField)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2039
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2040
                    this._layout.positionTitle.apply(this, [this._titleTextField]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2041
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2042
                len = this._labels.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2043
                for(i = 0; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2044
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2045
                    layout.positionLabel.apply(this, [this.get("labels")[i], points[i], styles, i]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2046
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2047
                if(firstPoint)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2048
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2049
                    points.unshift(firstPoint);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2050
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2051
                if(lastPoint)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2052
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2053
                    points.push(lastPoint);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2054
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2055
                if(firstLabel)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2056
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2057
                    labelValues.unshift(firstLabel);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2058
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2059
                if(lastLabel)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2060
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2061
                    labelValues.push(lastLabel);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2062
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2063
                this._tickPoints = points;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2064
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2065
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2066
        this._drawing = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2067
        if(this._callLater)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2068
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2069
            this._drawAxis();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2070
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2071
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2072
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2073
            this._updatePathElement();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2074
            this.fire("axisRendered");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2075
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2076
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2077
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2078
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2079
     * Calculates and sets the total size of a title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2080
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2081
     * @method _setTotalTitleSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2082
     * @param {Object} styles Properties for the title field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2083
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2084
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2085
    _setTotalTitleSize: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2086
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2087
        var title = this._titleTextField,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2088
            w = title.offsetWidth,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2089
            h = title.offsetHeight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2090
            rot = this._titleRotationProps.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2091
            bounds,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2092
            size,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2093
            margin = styles.margin,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2094
            position = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2095
            matrix = new Y.Matrix();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2096
        matrix.rotate(rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2097
        bounds = matrix.getContentRect(w, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2098
        if(position === "left" || position === "right")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2099
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2100
            size = bounds.right - bounds.left;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2101
            if(margin)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2102
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2103
                size += margin.left + margin.right;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2104
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2105
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2106
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2107
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2108
            size = bounds.bottom - bounds.top;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2109
            if(margin)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2110
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2111
                size += margin.top + margin.bottom;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2112
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2113
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2114
        this._titleBounds = bounds;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2115
        this._totalTitleSize = size;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2116
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2117
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2118
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2119
     *  Updates path.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2120
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2121
     *  @method _updatePathElement
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2122
     *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2123
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2124
    _updatePathElement: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2125
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2126
        var path = this._path,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2127
            tickPath = this._tickPath,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2128
            redrawGraphic = false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2129
            graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2130
        if(path)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2131
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2132
            redrawGraphic = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2133
            path.end();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2134
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2135
        if(tickPath)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2136
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2137
            redrawGraphic = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2138
            tickPath.end();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2139
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2140
        if(redrawGraphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2141
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2142
            graphic._redraw();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2143
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2144
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2145
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2146
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2147
     * Updates the content and style properties for a title field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2148
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2149
     * @method _updateTitle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2150
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2151
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2152
    _setTitle: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2153
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2154
        var i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2155
            styles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2156
            customStyles,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2157
            title = this.get("title"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2158
            titleTextField = this._titleTextField,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2159
            parentNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2160
        if(title !== null && title !== undefined)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2161
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2162
            customStyles = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2163
                    rotation: "rotation",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2164
                    margin: "margin",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2165
                    alpha: "alpha"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2166
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2167
            styles = this.get("styles").title;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2168
            if(!titleTextField)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2169
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2170
                titleTextField = DOCUMENT.createElement('span');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2171
                titleTextField.style.display = "block";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2172
                titleTextField.style.whiteSpace = "nowrap";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2173
                titleTextField.setAttribute("class", "axisTitle");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2174
                this.get("contentBox").append(titleTextField);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2175
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2176
            else if(!DOCUMENT.createElementNS)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2177
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2178
                if(titleTextField.style.filter)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2179
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2180
                    titleTextField.style.filter = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2181
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2182
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2183
            titleTextField.style.position = "absolute";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2184
            for(i in styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2185
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2186
                if(styles.hasOwnProperty(i) && !customStyles.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2187
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2188
                    titleTextField.style[i] = styles[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2189
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2190
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2191
            this.get("appendTitleFunction")(titleTextField, title);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2192
            this._titleTextField = titleTextField;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2193
            this._titleRotationProps = this._getTextRotationProps(styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2194
            this._setTotalTitleSize(styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2195
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2196
        else if(titleTextField)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2197
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2198
            parentNode = titleTextField.parentNode;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2199
            if(parentNode)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2200
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2201
                parentNode.removeChild(titleTextField);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2202
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2203
            this._titleTextField = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2204
            this._totalTitleSize = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2205
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2206
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2207
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2208
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2209
     * Creates or updates an axis label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2210
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2211
     * @method getLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2212
     * @param {Object} styles styles applied to label
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2213
     * @return HTMLElement
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2214
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2215
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2216
    getLabel: function(styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2217
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2218
        var i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2219
            label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2220
            labelCache = this._labelCache,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2221
            customStyles = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2222
                rotation: "rotation",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2223
                margin: "margin",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2224
                alpha: "alpha"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2225
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2226
        if(labelCache && labelCache.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2227
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2228
            label = labelCache.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2229
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2230
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2231
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2232
            label = DOCUMENT.createElement("span");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2233
            label.className = Y.Lang.trim([label.className, "axisLabel"].join(' '));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2234
            this.get("contentBox").append(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2235
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2236
        if(!DOCUMENT.createElementNS)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2237
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2238
            if(label.style.filter)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2239
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2240
                label.style.filter = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2241
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2242
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2243
        label.style.display = "block";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2244
        label.style.whiteSpace = "nowrap";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2245
        label.style.position = "absolute";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2246
        for(i in styles)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2247
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2248
            if(styles.hasOwnProperty(i) && !customStyles.hasOwnProperty(i))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2249
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2250
                label.style[i] = styles[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2251
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2252
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2253
        return label;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2254
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2255
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2256
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2257
     * Creates a cache of labels that can be re-used when the axis redraws.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2258
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2259
     * @method _createLabelCache
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2260
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2261
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2262
    _createLabelCache: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2263
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2264
        if(this._labels)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2265
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2266
            while(this._labels.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2267
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2268
                this._labelCache.push(this._labels.shift());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2269
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2270
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2271
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2272
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2273
            this._clearLabelCache();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2274
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2275
        this._labels = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2276
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2277
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2278
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2279
     * Removes axis labels from the dom and clears the label cache.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2280
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2281
     * @method _clearLabelCache
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2282
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2283
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2284
    _clearLabelCache: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2285
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2286
        if(this._labelCache)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2287
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2288
            var len = this._labelCache.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2289
                i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2290
                label;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2291
            for(; i < len; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2292
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2293
                label = this._labelCache[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2294
                this._removeChildren(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2295
                Y.Event.purgeElement(label, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2296
                label.parentNode.removeChild(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2297
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2298
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2299
        this._labelCache = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2300
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2301
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2302
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2303
     * Gets the end point of an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2304
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2305
     * @method getLineEnd
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2306
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2307
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2308
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2309
    getLineEnd: function(pt)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2310
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2311
        var w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2312
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2313
            pos = this.get("position");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2314
        if(pos === "top" || pos === "bottom")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2315
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2316
            return {x:w, y:pt.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2317
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2318
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2319
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2320
            return {x:pt.x, y:h};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2321
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2322
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2323
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2324
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2325
     * Calcuates the width or height of an axis depending on its direction.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2326
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2327
     * @method getLength
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2328
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2329
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2330
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2331
    getLength: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2332
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2333
        var l,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2334
            style = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2335
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2336
            w = this.get("width"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2337
            h = this.get("height"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2338
            pos = this.get("position");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2339
        if(pos === "top" || pos === "bottom")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2340
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2341
            l = w - (padding.left + padding.right);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2342
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2343
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2344
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2345
            l = h - (padding.top + padding.bottom);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2346
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2347
        return l;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2348
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2349
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2350
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2351
     * Gets the position of the first point on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2352
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2353
     * @method getFirstPoint
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2354
     * @param {Object} pt Object containing x and y coordinates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2355
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2356
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2357
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2358
    getFirstPoint:function(pt)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2359
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2360
        var style = this.get("styles"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2361
            pos = this.get("position"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2362
            padding = style.padding,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2363
            np = {x:pt.x, y:pt.y};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2364
        if(pos === "top" || pos === "bottom")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2365
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2366
            np.x += padding.left + this.get("edgeOffset");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2367
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2368
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2369
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2370
            np.y += this.get("height") - (padding.top + this.get("edgeOffset"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2371
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2372
        return np;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2373
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2374
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2375
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2376
     * Rotates and positions a text field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2377
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2378
     * @method _rotate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2379
     * @param {HTMLElement} label text field to rotate and position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2380
     * @param {Object} props properties to be applied to the text field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2381
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2382
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2383
    _rotate: function(label, props)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2384
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2385
        var rot = props.rot,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2386
            x = props.x,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2387
            y = props.y,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2388
            filterString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2389
            textAlpha,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2390
            matrix = new Y.Matrix(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2391
            transformOrigin = props.transformOrigin || [0, 0],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2392
            offsetRect;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2393
        if(DOCUMENT.createElementNS)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2394
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2395
            matrix.translate(x, y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2396
            matrix.rotate(rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2397
            Y_DOM.setStyle(label, "transformOrigin", (transformOrigin[0] * 100) + "% " + (transformOrigin[1] * 100) + "%");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2398
            Y_DOM.setStyle(label, "transform", matrix.toCSSText());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2399
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2400
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2401
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2402
            textAlpha = props.textAlpha;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2403
            if(Y_Lang.isNumber(textAlpha) && textAlpha < 1 && textAlpha > -1 && !isNaN(textAlpha))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2404
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2405
                filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(textAlpha * 100) + ")";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2406
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2407
            if(rot !== 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2408
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2409
                //ms filters kind of, sort of uses a transformOrigin of 0, 0.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2410
                //we'll translate the difference to create a true 0, 0 origin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2411
                matrix.rotate(rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2412
                offsetRect = matrix.getContentRect(props.labelWidth, props.labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2413
                matrix.init();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2414
                matrix.translate(offsetRect.left, offsetRect.top);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2415
                matrix.translate(x, y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2416
                this._simulateRotateWithTransformOrigin(matrix, rot, transformOrigin, props.labelWidth, props.labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2417
                if(filterString)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2418
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2419
                    filterString += " ";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2420
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2421
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2422
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2423
                    filterString = "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2424
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2425
                filterString += matrix.toFilterText();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2426
                label.style.left = matrix.dx + "px";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2427
                label.style.top = matrix.dy + "px";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2428
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2429
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2430
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2431
                label.style.left = x + "px";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2432
                label.style.top = y + "px";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2433
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2434
            if(filterString)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2435
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2436
                label.style.filter = filterString;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2437
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2438
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2439
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2440
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2441
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2442
     * Simulates a rotation with a specified transformOrigin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2443
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2444
     * @method _simulateTransformOrigin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2445
     * @param {Matrix} matrix Reference to a `Matrix` instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2446
     * @param {Number} rot The rotation (in degrees) that will be performed on a matrix.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2447
     * @param {Array} transformOrigin An array represeniting the origin in which to perform the transform. The first
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2448
     * index represents the x origin and the second index represents the y origin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2449
     * @param {Number} w The width of the object that will be transformed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2450
     * @param {Number} h The height of the object that will be transformed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2451
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2452
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2453
    _simulateRotateWithTransformOrigin: function(matrix, rot, transformOrigin, w, h)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2454
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2455
        var transformX = transformOrigin[0] * w,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2456
            transformY = transformOrigin[1] * h;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2457
        transformX = !isNaN(transformX) ? transformX : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2458
        transformY = !isNaN(transformY) ? transformY : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2459
        matrix.translate(transformX, transformY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2460
        matrix.rotate(rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2461
        matrix.translate(-transformX, -transformY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2462
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2463
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2464
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2465
     * Returns the coordinates (top, right, bottom, left) for the bounding box of the last label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2466
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2467
     * @method getMaxLabelBounds
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2468
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2469
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2470
    getMaxLabelBounds: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2471
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2472
        return this._getLabelBounds(this.getMaximumValue());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2473
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2475
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2476
     * Returns the coordinates (top, right, bottom, left) for the bounding box of the first label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2477
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2478
     * @method getMinLabelBounds
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2479
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2480
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2481
    getMinLabelBounds: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2482
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2483
        return this._getLabelBounds(this.getMinimumValue());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2484
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2485
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2486
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2487
     * Returns the coordinates (top, right, bottom, left) for the bounding box of a label.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2488
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2489
     * @method _getLabelBounds
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2490
     * @param {String} Value of the label
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2491
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2492
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2493
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2494
    _getLabelBounds: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2495
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2496
        var layout = this._layout,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2497
            labelStyles = this.get("styles").label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2498
            matrix = new Y.Matrix(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2499
            label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2500
            props = this._getTextRotationProps(labelStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2501
            props.transformOrigin = layout._getTransformOrigin(props.rot);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2502
        label = this.getLabel(labelStyles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2503
        this.get("appendLabelFunction")(label, this.get("labelFunction").apply(this, [val, this.get("labelFormat")]));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2504
        props.labelWidth = label.offsetWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2505
        props.labelHeight = label.offsetHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2506
        this._removeChildren(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2507
        Y.Event.purgeElement(label, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2508
        label.parentNode.removeChild(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2509
        props.x = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2510
        props.y = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2511
        layout._setRotationCoords(props);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2512
        matrix.translate(props.x, props.y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2513
        this._simulateRotateWithTransformOrigin(matrix, props.rot, props.transformOrigin, props.labelWidth, props.labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2514
        return matrix.getContentRect(props.labelWidth, props.labelHeight);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2515
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2516
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2517
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2518
     * Removes all DOM elements from an HTML element. Used to clear out labels during detruction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2519
     * phase.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2520
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2521
     * @method _removeChildren
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2522
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2523
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2524
    _removeChildren: function(node)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2525
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2526
        if(node.hasChildNodes())
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2527
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2528
            var child;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2529
            while(node.firstChild)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2530
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2531
                child = node.firstChild;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2532
                this._removeChildren(child);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2533
                node.removeChild(child);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2534
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2535
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2536
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2537
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2538
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2539
     * Destructor implementation Axis class. Removes all labels and the Graphic instance from the widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2540
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2541
     * @method destructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2542
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2543
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2544
    destructor: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2545
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2546
        var cb = this.get("contentBox").getDOMNode(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2547
            labels = this.get("labels"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2548
            graphic = this.get("graphic"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2549
            label,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2550
            len = labels ? labels.length : 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2551
        if(len > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2552
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2553
            while(labels.length > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2554
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2555
                label = labels.shift();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2556
                this._removeChildren(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2557
                cb.removeChild(label);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2558
                label = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2559
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2560
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2561
        if(graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2562
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2563
            graphic.destroy();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2564
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2565
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2566
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2567
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2568
     * Length in pixels of largest text bounding box. Used to calculate the height of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2569
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2570
     * @property maxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2571
     * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2572
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2573
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2574
    _maxLabelSize: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2575
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2576
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2577
     * Updates the content of text field. This method writes a value into a text field using
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2578
     * `appendChild`. If the value is a `String`, it is converted to a `TextNode` first.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2579
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2580
     * @method _setText
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2581
     * @param label {HTMLElement} label to be updated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2582
     * @param val {String} value with which to update the label
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2583
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2584
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2585
    _setText: function(textField, val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2586
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2587
        textField.innerHTML = "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2588
        if(Y_Lang.isNumber(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2589
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2590
            val = val + "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2591
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2592
        else if(!val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2593
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2594
            val = "";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2595
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2596
        if(IS_STRING(val))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2597
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2598
            val = DOCUMENT.createTextNode(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2599
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2600
        textField.appendChild(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2601
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2603
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2604
     * Returns the total number of majorUnits that will appear on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2605
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2606
     * @method getTotalMajorUnits
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2607
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2608
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2609
    getTotalMajorUnits: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2610
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2611
        var units,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2612
            majorUnit = this.get("styles").majorUnit,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2613
            len;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2614
        if(majorUnit.determinant === "count")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2615
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2616
            units = majorUnit.count;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2617
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2618
        else if(majorUnit.determinant === "distance")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2619
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2620
            len = this.getLength();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2621
            units = (len/majorUnit.distance) + 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2622
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2623
        return units;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2624
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2625
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2626
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2627
     * Returns the distance between major units on an axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2628
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2629
     * @method getMajorUnitDistance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2630
     * @param {Number} len Number of ticks
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2631
     * @param {Number} uiLen Size of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2632
     * @param {Object} majorUnit Hash of properties used to determine the majorUnit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2633
     * @return Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2634
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2635
    getMajorUnitDistance: function(len, uiLen, majorUnit)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2636
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2637
        var dist;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2638
        if(majorUnit.determinant === "count")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2639
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2640
            if(!this.get("calculateEdgeOffset"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2641
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2642
                len = len - 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2643
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2644
            dist = uiLen/len;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2645
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2646
        else if(majorUnit.determinant === "distance")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2647
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2648
            dist = majorUnit.distance;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2649
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2650
        return dist;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2651
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2652
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2653
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2654
     * Checks to see if data extends beyond the range of the axis. If so,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2655
     * that data will need to be hidden. This method is internal, temporary and subject
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2656
     * to removal in the future.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2657
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2658
     * @method _hasDataOverflow
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2659
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2660
     * @return Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2661
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2662
    _hasDataOverflow: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2663
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2664
        if(this.get("setMin") || this.get("setMax"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2665
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2666
            return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2667
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2668
        return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2669
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2670
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2671
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2672
     * Returns a string corresponding to the first label on an
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2673
     * axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2674
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2675
     * @method getMinimumValue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2676
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2677
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2678
    getMinimumValue: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2679
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2680
        return this.get("minimum");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2681
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2682
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2683
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2684
     * Returns a string corresponding to the last label on an
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2685
     * axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2686
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2687
     * @method getMaximumValue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2688
     * @return String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2689
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2690
    getMaximumValue: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2691
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2692
        return this.get("maximum");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2693
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2694
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2695
    ATTRS:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2696
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2697
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2698
         * When set, defines the width of a vertical axis instance. By default, vertical axes automatically size based
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2699
         * on their contents. When the width attribute is set, the axis will not calculate its width. When the width
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2700
         * attribute is explicitly set, axis labels will postion themselves off of the the inner edge of the axis and the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2701
         * title, if present, will position itself off of the outer edge. If a specified width is less than the sum of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2702
         * the axis' contents, excess content will overflow.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2703
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2704
         * @attribute width
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2705
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2706
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2707
        width: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2708
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2709
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2710
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2711
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2712
                if(this._explicitWidth)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2713
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2714
                    return this._explicitWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2715
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2716
                return this._calculatedWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2717
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2718
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2719
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2720
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2721
                this._explicitWidth = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2722
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2723
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2724
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2725
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2726
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2727
         * When set, defines the height of a horizontal axis instance. By default, horizontal axes automatically size based
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2728
         * on their contents. When the height attribute is set, the axis will not calculate its height. When the height
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2729
         * attribute is explicitly set, axis labels will postion themselves off of the the inner edge of the axis and the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2730
         * title, if present, will position itself off of the outer edge. If a specified height is less than the sum of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2731
         * the axis' contents, excess content will overflow.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2732
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2733
         * @attribute height
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2734
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2735
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2736
        height: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2737
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2738
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2739
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2740
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2741
                if(this._explicitHeight)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2742
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2743
                    return this._explicitHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2744
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2745
                return this._calculatedHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2746
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2747
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2748
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2749
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2750
                this._explicitHeight = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2751
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2752
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2753
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2754
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2755
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2756
         * Calculated value of an axis' width. By default, the value is used internally for vertical axes. If the `width`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2757
         * attribute is explicitly set, this value will be ignored.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2758
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2759
         * @attribute calculatedWidth
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2760
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2761
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2762
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2763
        calculatedWidth: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2764
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2765
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2766
                return this._calculatedWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2767
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2768
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2769
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2770
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2771
                this._calculatedWidth = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2772
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2773
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2774
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2775
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2776
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2777
         * Calculated value of an axis' height. By default, the value is used internally for horizontal axes. If the `height`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2778
         * attribute is explicitly set, this value will be ignored.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2779
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2780
         * @attribute calculatedHeight
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2781
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2782
         * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2783
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2784
        calculatedHeight: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2785
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2786
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2787
                return this._calculatedHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2788
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2789
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2790
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2791
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2792
                this._calculatedHeight = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2793
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2794
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2795
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2796
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2797
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2798
         * Difference between the first/last tick and edge of axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2799
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2800
         * @attribute edgeOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2801
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2802
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2803
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2804
        edgeOffset:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2805
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2806
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2807
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2808
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2809
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2810
         * The graphic in which the axis line and ticks will be rendered.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2811
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2812
         * @attribute graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2813
         * @type Graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2814
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2815
        graphic: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2816
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2817
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2818
         *  @attribute path
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2819
         *  @type Shape
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2820
         *  @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2821
         *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2822
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2823
        path: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2824
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2825
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2826
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2827
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2828
                if(!this._path)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2829
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2830
                    var graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2831
                    if(graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2832
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2833
                        this._path = graphic.addShape({type:"path"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2834
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2835
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2836
                return this._path;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2837
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2838
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2839
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2840
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2841
         *  @attribute tickPath
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2842
         *  @type Shape
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2843
         *  @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2844
         *  @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2845
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2846
        tickPath: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2847
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2848
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2849
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2850
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2851
                if(!this._tickPath)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2852
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2853
                    var graphic = this.get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2854
                    if(graphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2855
                    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2856
                        this._tickPath = graphic.addShape({type:"path"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2857
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2858
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2859
                return this._tickPath;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2860
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2861
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2862
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2863
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2864
         * Contains the contents of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2865
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2866
         * @attribute node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2867
         * @type HTMLElement
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2868
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2869
        node: {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2870
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2871
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2872
         * Direction of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2873
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2874
         * @attribute position
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2875
         * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2876
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2877
        position: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2878
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2879
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2880
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2881
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2882
                var LayoutClass = this._layoutClasses[val];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2883
                if(val && val !== "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2884
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2885
                    this._layout = new LayoutClass();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2886
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2887
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2888
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2889
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2890
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2891
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2892
         * Distance determined by the tick styles used to calculate the distance between the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2893
         * line in relation to the top of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2894
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2895
         * @attribute topTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2896
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2897
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2898
        topTickOffset: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2899
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2900
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2901
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2902
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2903
         * Distance determined by the tick styles used to calculate the distance between the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2904
         * line in relation to the bottom of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2905
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2906
         * @attribute bottomTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2907
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2908
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2909
        bottomTickOffset: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2910
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2911
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2912
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2913
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2914
         * Distance determined by the tick styles used to calculate the distance between the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2915
         * line in relation to the left of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2916
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2917
         * @attribute leftTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2918
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2919
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2920
        leftTickOffset: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2921
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2922
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2923
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2924
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2925
         * Distance determined by the tick styles used to calculate the distance between the axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2926
         * line in relation to the right side of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2927
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2928
         * @attribute rightTickOffset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2929
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2930
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2931
        rightTickOffset: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2932
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2933
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2934
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2935
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2936
         * Collection of labels used to render the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2937
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2938
         * @attribute labels
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2939
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2940
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2941
        labels: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2942
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2943
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2944
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2945
                return this._labels;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2946
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2947
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2948
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2949
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2950
         * Collection of points used for placement of labels and ticks along the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2951
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2952
         * @attribute tickPoints
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2953
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2954
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2955
        tickPoints: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2956
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2957
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2958
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2959
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2960
                if(this.get("position") === "none")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2961
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2962
                    return this.get("styles").majorUnit.count;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2963
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2964
                return this._tickPoints;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2965
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2966
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2967
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2968
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2969
         * Indicates whether the axis overlaps the graph. If an axis is the inner most axis on a given
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2970
         * position and the tick position is inside or cross, the axis will need to overlap the graph.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2971
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2972
         * @attribute overlapGraph
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2973
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2974
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2975
        overlapGraph: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2976
            value:true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2977
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2978
            validator: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2979
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2980
                return Y_Lang.isBoolean(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2981
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2982
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2983
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2984
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2985
         * Length in pixels of largest text bounding box. Used to calculate the height of the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2986
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2987
         * @attribute maxLabelSize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2988
         * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2989
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2990
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2991
        maxLabelSize: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2992
            getter: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2993
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2994
                return this._maxLabelSize;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2995
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2996
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2997
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2998
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  2999
                this._maxLabelSize = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3000
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3001
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3002
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3003
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3004
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3005
         *  Title for the axis. When specified, the title will display. The position of the title is determined by the axis position.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3006
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3007
         *      <dt>top</dt><dd>Appears above the axis and it labels. The default rotation is 0.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3008
         *      <dt>right</dt><dd>Appears to the right of the axis and its labels. The default rotation is 90.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3009
         *      <dt>bottom</dt><dd>Appears below the axis and its labels. The default rotation is 0.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3010
         *      <dt>left</dt><dd>Appears to the left of the axis and its labels. The default rotation is -90.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3011
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3012
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3013
         *  @attribute title
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3014
         *  @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3015
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3016
        title: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3017
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3018
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3019
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3020
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3021
         * Function used to append an axis value to an axis label. This function has the following signature:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3022
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3023
         *      <dt>textField</dt><dd>The axis label to be appended. (`HTMLElement`)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3024
         *      <dt>val</dt><dd>The value to attach to the text field. This method will accept an `HTMLELement`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3025
         *      or a `String`. This method does not use (`HTMLElement` | `String`)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3026
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3027
         * The default method appends a value to the `HTMLElement` using the `appendChild` method. If the given
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3028
         * value is a `String`, the method will convert the the value to a `textNode` before appending to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3029
         * `HTMLElement`. This method will not convert an `HTMLString` to an `HTMLElement`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3030
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3031
         * @attribute appendLabelFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3032
         * @type Function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3033
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3034
        appendLabelFunction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3035
            valueFn: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3036
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3037
                return this._setText;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3038
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3039
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3040
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3041
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3042
         * Function used to append a title value to the title object. This function has the following signature:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3043
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3044
         *      <dt>textField</dt><dd>The title text field to be appended. (`HTMLElement`)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3045
         *      <dt>val</dt><dd>The value to attach to the text field. This method will accept an `HTMLELement`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3046
         *      or a `String`. This method does not use (`HTMLElement` | `String`)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3047
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3048
         * The default method appends a value to the `HTMLElement` using the `appendChild` method. If the given
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3049
         * value is a `String`, the method will convert the the value to a `textNode` before appending to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3050
         * `HTMLElement` element. This method will not convert an `HTMLString` to an `HTMLElement`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3051
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3052
         * @attribute appendTitleFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3053
         * @type Function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3054
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3055
        appendTitleFunction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3056
            valueFn: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3057
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3058
                return this._setText;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3059
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3060
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3061
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3062
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3063
         * An array containing the unformatted values of the axis labels. By default, TimeAxis, NumericAxis and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3064
         * StackedAxis labelValues are determined by the majorUnit style. By default, CategoryAxis labels are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3065
         * determined by the values of the dataProvider.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3066
         * <p>When the labelValues attribute is explicitly set, the labelValues are dictated by the set value and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3067
         * the position of ticks and labels are determined by where those values would fall on the axis. </p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3068
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3069
         * @attribute labelValues
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3070
         * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3071
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3072
        labelValues: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3073
            lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3074
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3075
            setter: function(val)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3076
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3077
                var opts = arguments[2];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3078
                if(!val || (opts && opts.src && opts.src === "internal"))
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3079
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3080
                    this._labelValuesExplicitlySet = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3081
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3082
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3083
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3084
                    this._labelValuesExplicitlySet = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3085
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3086
                return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3087
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3088
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3089
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3090
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3091
         * Suppresses the creation of the the first visible label and tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3092
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3093
         * @attribute hideFirstMajorUnit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3094
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3095
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3096
        hideFirstMajorUnit: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3097
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3098
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3099
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3100
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3101
         * Suppresses the creation of the the last visible label and tick.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3102
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3103
         * @attribute hideLastMajorUnit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3104
         * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3105
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3106
        hideLastMajorUnit: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3107
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3108
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3109
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3110
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3111
         * Style properties used for drawing an axis. This attribute is inherited from `Renderer`. Below are the default values:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3112
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3113
         *      <dt>majorTicks</dt><dd>Properties used for drawing ticks.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3114
         *          <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3115
         *              <dt>display</dt><dd>Position of the tick. Possible values are `inside`, `outside`, `cross` and `none`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3116
         *              The default value is `inside`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3117
         *              <dt>length</dt><dd>The length (in pixels) of the tick. The default value is 4.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3118
         *              <dt>color</dt><dd>The color of the tick. The default value is `#dad8c9`</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3119
         *              <dt>weight</dt><dd>Number indicating the width of the tick. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3120
         *              <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the tick. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3121
         *          </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3122
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3123
         *      <dt>line</dt><dd>Properties used for drawing the axis line.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3124
         *          <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3125
         *              <dt>weight</dt><dd>Number indicating the width of the axis line. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3126
         *              <dt>color</dt><dd>The color of the axis line. The default value is `#dad8c9`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3127
         *              <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the tick. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3128
         *          </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3129
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3130
         *      <dt>majorUnit</dt><dd>Properties used to calculate the `majorUnit` for the axis.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3131
         *          <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3132
         *              <dt>determinant</dt><dd>The algorithm used for calculating distance between ticks. The possible options are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3133
         *              `count` and `distance`. If the `determinant` is `count`, the axis ticks will spaced so that a specified number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3134
         *              of ticks appear on the axis. If the `determinant` is `distance`, the axis ticks will spaced out according to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3135
         *              the specified distance. The default value is `count`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3136
         *              <dt>count</dt><dd>Number of ticks to appear on the axis when the `determinant` is `count`. The default value is 11.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3137
         *              <dt>distance</dt><dd>The distance (in pixels) between ticks when the `determinant` is `distance`. The default
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3138
         *              value is 75.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3139
         *          </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3140
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3141
         *      <dt>label</dt><dd>Properties and styles applied to the axis labels.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3142
         *          <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3143
         *              <dt>color</dt><dd>The color of the labels. The default value is `#808080`.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3144
         *              <dt>alpha</dt><dd>Number between 0 and 1 indicating the opacity of the labels. The default value is 1.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3145
         *              <dt>fontSize</dt><dd>The font-size of the labels. The default value is 85%</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3146
         *              <dt>rotation</dt><dd>The rotation, in degrees (between -90 and 90) of the labels. The default value is 0.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3147
         *              <dt>offset</td><dd>A number between 0 and 1 indicating the relationship of the label to a tick. For a horizontal axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3148
         *              label, a value of 0 will position the label's left side even to the the tick. A position of 1 would position the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3149
         *              right side of the label with the tick. A position of 0.5 would center the label horizontally with the tick. For a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3150
         *              vertical axis, a value of 0 would position the top of the label with the tick, a value of 1 would position the bottom
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3151
         *              of the label with the tick and a value 0 would center the label vertically with the tick. The default value is 0.5.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3152
         *              <dt>margin</dt><dd>The distance between the label and the axis/tick. Depending on the position of the `Axis`,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3153
         *              only one of the properties used.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3154
         *                  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3155
         *                      <dt>top</dt><dd>Pixel value used for an axis with a `position` of `bottom`. The default value is 4.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3156
         *                      <dt>right</dt><dd>Pixel value used for an axis with a `position` of `left`. The default value is 4.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3157
         *                      <dt>bottom</dt><dd>Pixel value used for an axis with a `position` of `top`. The default value is 4.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3158
         *                      <dt>left</dt><dd>Pixel value used for an axis with a `position` of `right`. The default value is 4.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3159
         *                  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3160
         *              </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3161
         *          </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3162
         *      </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3163
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3164
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3165
         * @attribute styles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3166
         * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3167
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3168
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3169
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3170
Y.AxisType = Y.Base.create("baseAxis", Y.Axis, [], {});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3172
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  3173
}, '@VERSION@', {"requires": ["dom", "widget", "widget-position", "widget-stack", "graphics", "axis-base"]});