/** * Discrete layout that combines duplicate data points only if they have the same index. * For example: * * @example * Ext.create({ * xtype: 'cartesian', * title: 'Weight vs Calories', * * renderTo: document.body, * width: 400, * height: 400, * * store: { * fields: ['month', 'weight', 'calories'], * data: [ * { * month: 'Jan', * weight: 185, * calories: 2650 * }, * { * month: 'Jan', * weight: 188, * calories: 2800 * }, * { * month: 'Feb', * weight: 188, * calories: 2800 * }, * { * month: 'Mar', * weight: 191, * calories: 2800 * }, * { * month: 'Apr', * weight: 189, * calories: 1500 * }, * { * month: 'May', * weight: 187, * calories: 1350 * } * ] * }, * * axes: [{ * type: 'numeric', * position: 'left', * fields: ['weight'], * minimum: 140 * }, { * type: 'numeric', * position: 'right', * fields: ['calories'], * minimum: 500, * maximum: 3500 * }, { * type: 'category', * grid: true, * layout: 'combineByIndex', * fields: 'month', * position: 'bottom', * label: { * rotate: { * degrees: -45 * } * } * }], * * series: [{ * type: 'line', * title: 'Weight', * xField: 'month', * yField: 'weight', * smooth: true, * marker: true * }, { * type: 'line', * title: 'Calories', * xField: 'month', * yField: 'calories', * smooth: true, * marker: true * }], * * legend: { * docked: 'bottom' * } * * }); * * @since 7.0.0 */Ext.define('Ext.chart.axis.layout.CombineByIndex', { extend: 'Ext.chart.axis.layout.Discrete', alias: 'axisLayout.combineByIndex', getCoordFor: function (value, field, idx, items) { var labels = this.labels, result = idx; if (labels[idx] !== value) { result = labels.push(value) - 1; } return result; }});