/** * This class provides a dataview-based chart legend. */Ext.define('Ext.chart.legend.Legend', { extend: 'Ext.chart.legend.LegendBase', alternateClassName: 'Ext.chart.Legend', xtype: 'legend', alias: 'legend.dom', type: 'dom', isLegend: true, isDomLegend: true, config: { /** * @cfg {Array} * The rect of the legend relative to its container. */ rect: null, /** * @cfg {Boolean} toggleable * `true` to allow series items to have their visibility * toggled by interaction with the legend items. */ toggleable: true /** * @cfg {Ext.chart.legend.store.Store} store * The {@link Ext.chart.legend.store.Store} to bind this legend to. * @private */ }, baseCls: Ext.baseCSSPrefix + 'legend', horizontalCls: Ext.baseCSSPrefix + 'legend-horizontal', verticalCls: Ext.baseCSSPrefix + 'legend-vertical', toggleItem: function (index) { if (!this.getToggleable()) { return; } var store = this.getStore(), disabledCount = 0, disabled, canToggle = true, i, count, record; if (store) { count = store.getCount(); for (i = 0; i < count; i++) { record = store.getAt(i); if (record.get('disabled')) { disabledCount++; } } canToggle = count - disabledCount > 1; record = store.getAt(index); if (record) { disabled = record.get('disabled'); if (disabled || canToggle) { // This will trigger AbstractChart.onLegendStoreUpdate. record.set('disabled', !disabled); } } } }, onResize: function (width, height, oldWidth, oldHeight) { var me = this, chart = me.chart; if (!me.isConfiguring) { if (chart) { chart.scheduleLayout(); } } } });