| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /* *
- *
- * (c) 2016-2020 Highsoft AS
- *
- * Author: Lars A. V. Cabrera
- *
- * License: www.highcharts.com/license
- *
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
- *
- * */
- 'use strict';
- import Chart from './Chart.js';
- import H from '../Globals.js';
- import U from '../Utilities.js';
- var getOptions = U.getOptions, isArray = U.isArray, merge = U.merge, splat = U.splat;
- import '../../Series/GanttSeries.js';
- /**
- * 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.
- */
- H.ganttChart = function (renderTo, options, callback) {
- var hasRenderToArg = typeof renderTo === 'string' || renderTo.nodeName, seriesOptions = options.series, defaultOptions = 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
- },
- navigator: {
- series: { type: 'gantt' }
- }
- }, options, // user's options
- // forced options
- {
- isGantt: true
- });
- options.series = userOptions.series = seriesOptions;
- (options.series || []).forEach(function (series) {
- if (series.data) {
- series.data.forEach(function (point) {
- H.seriesTypes.gantt.prototype.setGanttPointAliases(point);
- });
- }
- });
- return hasRenderToArg ?
- new Chart(renderTo, options, callback) :
- new Chart(options, options); // @todo does not look correct
- };
|