Carga
Carga
This commit is contained in:
195
static/lib/Highcharts-10.2.1/es-modules/Stock/StockToolsGui.js
Normal file
195
static/lib/Highcharts-10.2.1/es-modules/Stock/StockToolsGui.js
Normal file
@@ -0,0 +1,195 @@
|
||||
/* *
|
||||
*
|
||||
* GUI generator for Stock tools
|
||||
*
|
||||
* (c) 2009-2021 Sebastian Bochan
|
||||
*
|
||||
* License: www.highcharts.com/license
|
||||
*
|
||||
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
||||
*
|
||||
* */
|
||||
'use strict';
|
||||
import O from '../Core/DefaultOptions.js';
|
||||
var setOptions = O.setOptions;
|
||||
import StockToolsDefaults from './StockToolsDefaults.js';
|
||||
import Toolbar from './StockToolbar.js';
|
||||
import U from '../Core/Utilities.js';
|
||||
var addEvent = U.addEvent, extend = U.extend, getStyle = U.getStyle, merge = U.merge, pick = U.pick;
|
||||
/* *
|
||||
*
|
||||
* Constants
|
||||
*
|
||||
* */
|
||||
var composedClasses = [];
|
||||
/* *
|
||||
*
|
||||
* Functions
|
||||
*
|
||||
* */
|
||||
/**
|
||||
* Verify if Toolbar should be added.
|
||||
* @private
|
||||
*/
|
||||
function chartSetStockTools(options) {
|
||||
var chartOptions = this.options, lang = chartOptions.lang, guiOptions = merge(chartOptions.stockTools && chartOptions.stockTools.gui, options && options.gui), langOptions = lang && lang.stockTools && lang.stockTools.gui;
|
||||
this.stockTools = new Toolbar(guiOptions, langOptions, this);
|
||||
if (this.stockTools.guiEnabled) {
|
||||
this.isDirtyBox = true;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function compose(ChartClass, NavigationBindingsClass) {
|
||||
if (composedClasses.indexOf(ChartClass) === -1) {
|
||||
composedClasses.push(ChartClass);
|
||||
addEvent(ChartClass, 'afterGetContainer', onChartAfterGetContainer);
|
||||
addEvent(ChartClass, 'beforeRedraw', onChartBeforeRedraw);
|
||||
addEvent(ChartClass, 'beforeRender', onChartBeforeRedraw);
|
||||
addEvent(ChartClass, 'destroy', onChartDestroy);
|
||||
addEvent(ChartClass, 'getMargins', onChartGetMargins, { order: 0 });
|
||||
addEvent(ChartClass, 'redraw', onChartRedraw);
|
||||
addEvent(ChartClass, 'render', onChartRender);
|
||||
ChartClass.prototype.setStockTools = chartSetStockTools;
|
||||
}
|
||||
if (composedClasses.indexOf(NavigationBindingsClass) === -1) {
|
||||
composedClasses.push(NavigationBindingsClass);
|
||||
addEvent(NavigationBindingsClass, 'deselectButton', onNavigationBindingsDeselectButton);
|
||||
addEvent(NavigationBindingsClass, 'selectButton', onNavigationBindingsSelectButton);
|
||||
}
|
||||
if (composedClasses.indexOf(setOptions) === -1) {
|
||||
composedClasses.push(setOptions);
|
||||
setOptions(StockToolsDefaults);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Run HTML generator
|
||||
* @private
|
||||
*/
|
||||
function onChartAfterGetContainer() {
|
||||
this.setStockTools();
|
||||
}
|
||||
/**
|
||||
* Handle beforeRedraw and beforeRender
|
||||
* @private
|
||||
*/
|
||||
function onChartBeforeRedraw() {
|
||||
if (this.stockTools) {
|
||||
var optionsChart = this.options.chart;
|
||||
var listWrapper = this.stockTools.listWrapper, offsetWidth = listWrapper && ((listWrapper.startWidth +
|
||||
getStyle(listWrapper, 'padding-left') +
|
||||
getStyle(listWrapper, 'padding-right')) || listWrapper.offsetWidth);
|
||||
var dirty = false;
|
||||
if (offsetWidth && offsetWidth < this.plotWidth) {
|
||||
var nextX = pick(optionsChart.spacingLeft, optionsChart.spacing && optionsChart.spacing[3], 0) + offsetWidth;
|
||||
var diff = nextX - this.spacingBox.x;
|
||||
this.spacingBox.x = nextX;
|
||||
this.spacingBox.width -= diff;
|
||||
dirty = true;
|
||||
}
|
||||
else if (offsetWidth === 0) {
|
||||
dirty = true;
|
||||
}
|
||||
if (offsetWidth !== this.stockTools.prevOffsetWidth) {
|
||||
this.stockTools.prevOffsetWidth = offsetWidth;
|
||||
if (dirty) {
|
||||
this.isDirtyLegend = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function onChartDestroy() {
|
||||
if (this.stockTools) {
|
||||
this.stockTools.destroy();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function onChartGetMargins() {
|
||||
var listWrapper = this.stockTools && this.stockTools.listWrapper, offsetWidth = listWrapper && ((listWrapper.startWidth +
|
||||
getStyle(listWrapper, 'padding-left') +
|
||||
getStyle(listWrapper, 'padding-right')) || listWrapper.offsetWidth);
|
||||
if (offsetWidth && offsetWidth < this.plotWidth) {
|
||||
this.plotLeft += offsetWidth;
|
||||
this.spacing[3] += offsetWidth;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function onChartRedraw() {
|
||||
if (this.stockTools && this.stockTools.guiEnabled) {
|
||||
this.stockTools.redraw();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Check if the correct price indicator button is displayed, #15029.
|
||||
* @private
|
||||
*/
|
||||
function onChartRender() {
|
||||
var stockTools = this.stockTools, button = stockTools &&
|
||||
stockTools.toolbar &&
|
||||
stockTools.toolbar.querySelector('.highcharts-current-price-indicator');
|
||||
// Change the initial button background.
|
||||
if (stockTools &&
|
||||
this.navigationBindings &&
|
||||
this.options.series &&
|
||||
button) {
|
||||
if (this.navigationBindings.constructor.prototype.utils
|
||||
.isPriceIndicatorEnabled(this.series)) {
|
||||
button.firstChild.style['background-image'] =
|
||||
'url("' + stockTools.getIconsURL() + 'current-price-hide.svg")';
|
||||
}
|
||||
else {
|
||||
button.firstChild.style['background-image'] =
|
||||
'url("' + stockTools.getIconsURL() + 'current-price-show.svg")';
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function onNavigationBindingsDeselectButton(event) {
|
||||
var className = 'highcharts-submenu-wrapper', gui = this.chart.stockTools;
|
||||
if (gui && gui.guiEnabled) {
|
||||
var button = event.button;
|
||||
// If deselecting a button from a submenu, select state for it's parent
|
||||
if (button.parentNode.className.indexOf(className) >= 0) {
|
||||
button = button.parentNode.parentNode;
|
||||
}
|
||||
// Set active class on the current button
|
||||
gui.toggleButtonActiveClass(button);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Communication with bindings
|
||||
* @private
|
||||
*/
|
||||
function onNavigationBindingsSelectButton(event) {
|
||||
var className = 'highcharts-submenu-wrapper', gui = this.chart.stockTools;
|
||||
if (gui && gui.guiEnabled) {
|
||||
var button = event.button;
|
||||
// Unslect other active buttons
|
||||
gui.unselectAllButtons(event.button);
|
||||
// If clicked on a submenu, select state for it's parent
|
||||
if (button.parentNode.className.indexOf(className) >= 0) {
|
||||
button = button.parentNode.parentNode;
|
||||
}
|
||||
// Set active class on the current button
|
||||
gui.toggleButtonActiveClass(button);
|
||||
}
|
||||
}
|
||||
/* *
|
||||
*
|
||||
* Default Export
|
||||
*
|
||||
* */
|
||||
var StockToolsGui = {
|
||||
compose: compose
|
||||
};
|
||||
export default StockToolsGui;
|
||||
Reference in New Issue
Block a user