whychdw
2019-09-09 c0b9ce437d409b89ca0e5388344ca9c5a56d70a4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* *
 *
 *  (c) 2016-2019 Highsoft AS
 *
 *  Author: Lars A. V. Cabrera
 *
 *  License: www.highcharts.com/license
 *
 *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
 *
 * */
'use strict';
 
var _Globals = require('../parts/Globals.js');
 
var _Globals2 = _interopRequireDefault(_Globals);
 
var _Utilities = require('../parts/Utilities.js');
 
var _Utilities2 = _interopRequireDefault(_Utilities);
 
require('GanttSeries.js');
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
var isArray = _Utilities2.default.isArray,
    splat = _Utilities2.default.splat;
 
var merge = _Globals2.default.merge,
    Chart = _Globals2.default.Chart;
/**
 * Factory function for Gantt charts.
 *
 * @example
 * // Render a chart in to div#container
 * var chart = Highcharts.ganttChart('container', {
 *     title: {
 *         text: 'My chart'
 *     },
 *     series: [{
 *         data: ...
 *     }]
 * });
 *
 * @function Highcharts.ganttChart
 *
 * @param {string|Highcharts.HTMLDOMElement} renderTo
 *        The DOM element to render to, or its id.
 *
 * @param {Highcharts.Options} options
 *        The chart options structure.
 *
 * @param {Highcharts.ChartCallbackFunction} [callback]
 *        Function to run when the chart has loaded and and all external images
 *        are loaded. Defining a
 *        [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)
 *        handler is equivalent.
 *
 * @return {Highcharts.Chart}
 *         Returns the Chart object.
 */
_Globals2.default.ganttChart = function (renderTo, options, callback) {
    var hasRenderToArg = typeof renderTo === 'string' || renderTo.nodeName,
        seriesOptions = options.series,
        defaultOptions = _Globals2.default.getOptions(),
        defaultLinkedTo,
        userOptions = options;
    options = arguments[hasRenderToArg ? 1 : 0];
    // If user hasn't defined axes as array, make it into an array and add a
    // second axis by default.
    if (!isArray(options.xAxis)) {
        options.xAxis = [options.xAxis || {}, {}];
    }
    // apply X axis options to both single and multi x axes
    options.xAxis = options.xAxis.map(function (xAxisOptions, i) {
        if (i === 1) {
            // Second xAxis
            defaultLinkedTo = 0;
        }
        return merge(defaultOptions.xAxis, {
            grid: {
                enabled: true
            },
            opposite: true,
            linkedTo: defaultLinkedTo
        }, xAxisOptions, // user options
        {
            type: 'datetime'
        });
    });
    // apply Y axis options to both single and multi y axes
    options.yAxis = splat(options.yAxis || {}).map(function (yAxisOptions) {
        return merge(defaultOptions.yAxis, // #3802
        {
            grid: {
                enabled: true
            },
            staticScale: 50,
            reversed: true,
            // Set default type treegrid, but only if 'categories' is
            // undefined
            type: yAxisOptions.categories ? yAxisOptions.type : 'treegrid'
        }, yAxisOptions // user options
        );
    });
    options.series = null;
    options = merge(true, {
        chart: {
            type: 'gantt'
        },
        title: {
            text: null
        },
        legend: {
            enabled: false
        }
    }, options, // user's options
    // forced options
    {
        isGantt: true
    });
    options.series = userOptions.series = seriesOptions;
    options.series.forEach(function (series) {
        series.data.forEach(function (point) {
            _Globals2.default.seriesTypes.gantt.prototype.setGanttPointAliases(point);
        });
    });
    return hasRenderToArg ? new Chart(renderTo, options, callback) : new Chart(options, options); // @todo does not look correct
};