Fibonacci Tools (React)

The sample demonstrates the available Fibonacci tool for trend analysis (Arcs, Fans, Retracements, Time Zones)

Fibonacci tool is used for trend analysis in financial charts. With the help of range selector, you can choose data range for calculation.

This example uses React.

import 'bootstrap.css'; import '@mescius/wijmo.styles/wijmo.css'; import ReactDOM from 'react-dom/client'; import React, { useRef, useState } from 'react'; import useEvent from 'react-use-event-hook'; import * as wjChart from '@mescius/wijmo.chart'; import * as Input from '@mescius/wijmo.react.input'; import * as Finance from '@mescius/wijmo.react.chart.finance'; import * as Analytics from '@mescius/wijmo.react.chart.finance.analytics'; import './app.css'; import { data } from './data'; function App() { const [selectedFib, setSelectedFib] = useState('retracements'); const [uptrend, setUptrend] = useState('True'); const [properties, setProperties] = useState({ retracements: { labelPosition: 'Left', uptrend: true, }, arcs: { labelPosition: 'Top', start: new wjChart.DataPoint(46, 19.75), end: new wjChart.DataPoint(54, 17.1) }, fans: { labelPosition: 'Top', start: new wjChart.DataPoint(10, 18.12), end: new wjChart.DataPoint(32, 20.53) }, timeZones: { labelPosition: 'Right', startX: 0, endX: 3 } }); const theChartRef = useRef(null); const tooltip = '<b>Date:{date:MMM dd}</b><br/>' + '<table>' + '<tr><td>high</td><td>{high:c}</td><tr/>' + '<tr><td>low</td><td>{low:c}</td><tr/>' + '<tr><td>open</td><td>{open:c}</td><tr/>' + '<tr><td>close</td><td>{close:c}</td><tr/>' + '</table>'; const initializeChart = useEvent((flex) => { theChartRef.current = flex; }); const typeClick = useEvent((menu) => { if (menu.selectedItem != null) { setSelectedFib(menu.selectedValue); } }); const uptrendChanged = useEvent((menu) => { if (menu.selectedItem != null) { setUptrend(menu.selectedValue); setProperties({ retracements: { labelPosition: properties.retracements.labelPosition, uptrend: menu.selectedValue, }, arcs: properties.arcs, fans: properties.fans, timeZones: properties.timeZones }); } }); const rlpChanged = useEvent((menu) => { if (menu.selectedValue != null) { setProperties({ retracements: { labelPosition: menu.selectedValue, uptrend: properties.retracements.uptrend }, arcs: properties.arcs, fans: properties.fans, timeZones: properties.timeZones }); } }); const alpChanged = useEvent((menu) => { if (menu.selectedValue != null) { setProperties({ retracements: properties.retracements, arcs: { labelPosition: menu.selectedValue, start: properties.arcs.start, end: properties.arcs.end }, fans: properties.fans, timeZones: properties.timeZones }); } }); const asxChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, arcs: { labelPosition: properties.arcs.labelPosition, start: new wjChart.DataPoint(input.value, properties.arcs.start.y), end: properties.arcs.end }, fans: properties.fans, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const asyChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, arcs: { labelPosition: properties.arcs.labelPosition, start: new wjChart.DataPoint(properties.arcs.start.x, input.value), end: properties.arcs.end }, fans: properties.fans, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const aexChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, arcs: { labelPosition: properties.arcs.labelPosition, start: properties.arcs.start, end: new wjChart.DataPoint(input.value, properties.arcs.end.y) }, fans: properties.fans, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const aeyChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, arcs: { labelPosition: properties.arcs.labelPosition, start: properties.arcs.start, end: new wjChart.DataPoint(properties.arcs.end.x, input.value) }, fans: properties.fans, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const flpChanged = useEvent((menu) => { if (menu.selectedValue != null) { setProperties({ retracements: properties.retracements, fans: { labelPosition: menu.selectedValue, start: properties.fans.start, end: properties.fans.end }, arcs: properties.arcs, timeZones: properties.timeZones }); } }); const fsxChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: { labelPosition: properties.fans.labelPosition, start: new wjChart.DataPoint(input.value, properties.fans.start.y), end: properties.fans.end }, arcs: properties.arcs, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const fsyChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: { labelPosition: properties.fans.labelPosition, start: new wjChart.DataPoint(properties.fans.start.x, input.value), end: properties.fans.end }, arcs: properties.arcs, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const fexChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: { labelPosition: properties.fans.labelPosition, start: properties.fans.start, end: new wjChart.DataPoint(input.value, properties.fans.end.y) }, arcs: properties.arcs, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const feyChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: { labelPosition: properties.fans.labelPosition, start: properties.fans.start, end: new wjChart.DataPoint(properties.fans.end.x, input.value) }, arcs: properties.arcs, timeZones: properties.timeZones }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const tlpChanged = useEvent((menu) => { if (menu.selectedValue != null) { setProperties({ retracements: properties.retracements, fans: properties.fans, arcs: properties.arcs, timeZones: { labelPosition: menu.selectedValue, startX: properties.timeZones.startX, endX: properties.timeZones.endX } }); } }); const tsxChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: properties.fans, arcs: properties.arcs, timeZones: { labelPosition: properties.timeZones.labelPosition, startX: input.value, endX: properties.timeZones.endX } }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); const texChanged = useEvent((input) => { setProperties({ retracements: properties.retracements, fans: properties.fans, arcs: properties.arcs, timeZones: { labelPosition: properties.timeZones.labelPosition, startX: properties.timeZones.startX, endX: input.value } }); if (theChartRef.current) { theChartRef.current.invalidate(); } }); return (<div className="container-fluid"> <div className="panel-group" id="settings"> <div className="panel panel-default"> <div id="settingsBody" className="panel-collapse collapse in"> <div className="panel-body"> <ul className="list-inline"> <li> <Input.Menu header="Type" value={selectedFib} itemClicked={typeClick}> <Input.MenuItem value="arcs">Arcs</Input.MenuItem> <Input.MenuItem value="fans">Fans</Input.MenuItem> <Input.MenuItem value="retracements">Retracements</Input.MenuItem> <Input.MenuItem value="timeZones">Time Zones</Input.MenuItem> </Input.Menu> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'retracements' ? "block" : "none" }}> <li> <Input.Menu header="Uptrend" value={properties.retracements.uptrend} itemClicked={uptrendChanged}> <Input.MenuItem value={true}>True</Input.MenuItem> <Input.MenuItem value={false}>False</Input.MenuItem> </Input.Menu> </li> <li> <Input.Menu header="Label Position" value={properties.retracements.labelPosition} itemClicked={rlpChanged}> <Input.MenuItem value="Left">Left</Input.MenuItem> <Input.MenuItem value="Center">Center</Input.MenuItem> <Input.MenuItem value="Right">Right</Input.MenuItem> </Input.Menu> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'arcs' ? "block" : "none" }}> <Input.Menu header="Label Position" value={properties.arcs.labelPosition} itemClicked={alpChanged}> <Input.MenuItem value="None">None</Input.MenuItem> <Input.MenuItem value="Top">Top</Input.MenuItem> <Input.MenuItem value="Center">Center</Input.MenuItem> <Input.MenuItem value="Bottom">Bottom</Input.MenuItem> </Input.Menu> </ul> <ul className="list-inline" style={{ display: selectedFib === 'arcs' ? "block" : "none" }}> <li> <label>Start X</label> <Input.InputNumber value={properties.arcs.start.x} step={1} valueChanged={asxChanged}> </Input.InputNumber> </li> <li> <label>Start Y</label> <Input.InputNumber value={properties.arcs.start.y} step={1} valueChanged={asyChanged}> </Input.InputNumber> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'arcs' ? "block" : "none" }}> <li> <label>End X</label> <Input.InputNumber value={properties.arcs.end.x} step={1} valueChanged={aexChanged}> </Input.InputNumber> </li> <li> <label>End Y</label> <Input.InputNumber value={properties.arcs.end.y} step={1} valueChanged={aeyChanged}> </Input.InputNumber> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'fans' ? "block" : "none" }}> <Input.Menu header="Label Position" value={properties.fans.labelPosition} itemClicked={flpChanged}> <Input.MenuItem value="None">None</Input.MenuItem> <Input.MenuItem value="Top">Top</Input.MenuItem> <Input.MenuItem value="Center">Center</Input.MenuItem> <Input.MenuItem value="Bottom">Bottom</Input.MenuItem> </Input.Menu> </ul> <ul className="list-inline" style={{ display: selectedFib === 'fans' ? "block" : "none" }}> <li> <label>Start X</label> <Input.InputNumber value={properties.fans.start.x} step={1} valueChanged={fsxChanged}> </Input.InputNumber> </li> <li> <label>Start Y</label> <Input.InputNumber value={properties.fans.start.y} step={1} valueChanged={fsyChanged}> </Input.InputNumber> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'fans' ? "block" : "none" }}> <li> <label>End X</label> <Input.InputNumber value={properties.fans.end.x} step={1} valueChanged={fexChanged}> </Input.InputNumber> </li> <li> <label>End Y</label> <Input.InputNumber value={properties.fans.end.y} step={1} valueChanged={feyChanged}> </Input.InputNumber> </li> </ul> <ul className="list-inline" style={{ display: selectedFib === 'timeZones' ? "block" : "none" }}> <Input.Menu header="Label Position" value={properties.timeZones.labelPosition} itemClicked={tlpChanged}> <Input.MenuItem value="None">None</Input.MenuItem> <Input.MenuItem value="Left">Left</Input.MenuItem> <Input.MenuItem value="Center">Center</Input.MenuItem> <Input.MenuItem value="Right">Right</Input.MenuItem> </Input.Menu> </ul> <ul className="list-inline" style={{ display: selectedFib === 'timeZones' ? "block" : "none" }}> <li> <label>Start X</label> <Input.InputNumber value={properties.timeZones.startX} step={1} valueChanged={tsxChanged}> </Input.InputNumber> </li> <li> <label>End X</label> <Input.InputNumber value={properties.timeZones.endX} step={1} valueChanged={texChanged}> </Input.InputNumber> </li> </ul> </div> </div> </div> </div> <Finance.FinancialChart itemsSource={data} bindingX="date" symbolSize={6} tooltipContent={tooltip} chartType="Candlestick" initialized={initializeChart}> <Finance.FinancialChartSeries binding="high,low,open,close" name="Box Inc"/> <Analytics.FlexChartFibonacci binding="close" symbolSize={1} name="Retracements" // style= "fill: 'red', stroke: 'red', strokeWidth:0.5, fontSize:10" labelPosition={properties.retracements.labelPosition} uptrend={properties.retracements.uptrend} visibility={selectedFib === 'retracements' ? 'Visible' : 'Hidden'}> </Analytics.FlexChartFibonacci> <Analytics.FlexChartFibonacciArcs binding="close" name="Arcs" start={properties.arcs.start} end={properties.arcs.end} labelPosition={properties.arcs.labelPosition} visibility={selectedFib === 'arcs' ? 'Visible' : 'Hidden'}> </Analytics.FlexChartFibonacciArcs> <Analytics.FlexChartFibonacciFans binding="close" name="Fans" start={properties.fans.start} end={properties.fans.end} labelPosition={properties.fans.labelPosition} visibility={selectedFib === 'fans' ? 'Visible' : 'Hidden'}> </Analytics.FlexChartFibonacciFans> <Analytics.FlexChartFibonacciTimeZones binding="close" name="TimeZones" startX={properties.timeZones.startX} endX={properties.timeZones.endX} labelPosition={properties.timeZones.labelPosition} visibility={selectedFib === 'timeZones' ? 'Visible' : 'Hidden'}> </Analytics.FlexChartFibonacciTimeZones> </Finance.FinancialChart> </div>); } const container = document.getElementById('app'); if (container) { const root = ReactDOM.createRoot(container); root.render(<App />); }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>MESCIUS Wijmo Wijmo FlexChart Fibonacci Tools</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SystemJS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.40/system.src.js" integrity="sha512-G6mEj6h18+m3MvzdviSDfPle/TfH0//cXcB33AKlNR/Rha0yQsKefDZKRTkIZos97HEGq2JMV1RT5ybMoQ3WsQ==" crossorigin="anonymous"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app'); </script> </head> <body> <div id="app"></div> </body> </html>
label { margin-right: 3px; } #iChart { height: 200px; }
function getTypeData() { return [{ text: 'Arcs', parm: 'arcs' }, { text: 'Fans', parm: 'fans' }, { text: 'Retracements', parm: 'retracements' }, { text: 'Time Zones', parm: 'timeZones' }]; } function getData() { return [ { "date": "01/23/15", "open": 20.2, "high": 24.73, "low": 20.16, "close": 23.23, "volume": 42593223 }, { "date": "01/26/15", "open": 23.67, "high": 24.39, "low": 22.5, "close": 22.6, "volume": 8677164 }, { "date": "01/27/15", "open": 22, "high": 22.47, "low": 21.17, "close": 21.3, "volume": 3272512 }, { "date": "01/28/15", "open": 21.62, "high": 21.84, "low": 19.6, "close": 19.78, "volume": 5047364 }, { "date": "01/29/15", "open": 19.9, "high": 19.95, "low": 18.51, "close": 18.8, "volume": 3419482 }, { "date": "01/30/15", "open": 18.47, "high": 19.48, "low": 18.22, "close": 18.81, "volume": 2266439 }, { "date": "02/02/15", "open": 19.18, "high": 19.3, "low": 18.01, "close": 18.02, "volume": 2071168 }, { "date": "02/03/15", "open": 18.22, "high": 18.64, "low": 18.12, "close": 18.24, "volume": 1587435 }, { "date": "02/04/15", "open": 18.2, "high": 18.35, "low": 17, "close": 17.1, "volume": 2912224 }, { "date": "02/05/15", "open": 17.3, "high": 17.31, "low": 16.41, "close": 16.66, "volume": 2682187 }, { "date": "02/06/15", "open": 17.39, "high": 18.88, "low": 17.21, "close": 18.12, "volume": 3929164 }, { "date": "02/09/15", "open": 18.86, "high": 19.95, "low": 18.45, "close": 19.6, "volume": 3226650 }, { "date": "02/10/15", "open": 20.5, "high": 21, "low": 19.63, "close": 20.99, "volume": 2804409 }, { "date": "02/11/15", "open": 20.89, "high": 21, "low": 20.2, "close": 20.96, "volume": 1698365 }, { "date": "02/12/15", "open": 20.66, "high": 20.85, "low": 19.75, "close": 20.17, "volume": 1370320 }, { "date": "02/13/15", "open": 20.19, "high": 20.68, "low": 20, "close": 20.18, "volume": 711951 }, { "date": "02/17/15", "open": 19.5, "high": 20.1, "low": 18.8, "close": 19.05, "volume": 2093602 }, { "date": "02/18/15", "open": 18.31, "high": 18.5, "low": 17.96, "close": 18, "volume": 1849490 }, { "date": "02/19/15", "open": 18.33, "high": 19.25, "low": 17.91, "close": 18.96, "volume": 1311518 }, { "date": "02/20/15", "open": 18.68, "high": 19.3, "low": 18.65, "close": 18.85, "volume": 1001692 }, { "date": "02/23/15", "open": 18.8, "high": 18.89, "low": 18.11, "close": 18.21, "volume": 670087 }, { "date": "02/24/15", "open": 18.46, "high": 19, "low": 18.27, "close": 18.83, "volume": 759263 }, { "date": "02/25/15", "open": 18.83, "high": 19.48, "low": 18.47, "close": 18.67, "volume": 915580 }, { "date": "02/26/15", "open": 18.64, "high": 19.2, "low": 18.64, "close": 18.94, "volume": 461283 }, { "date": "02/27/15", "open": 18.8, "high": 19.12, "low": 18.55, "close": 18.66, "volume": 617199 }, { "date": "03/02/15", "open": 18.66, "high": 19.09, "low": 18.65, "close": 18.79, "volume": 519605 }, { "date": "03/03/15", "open": 18.79, "high": 19.21, "low": 18.45, "close": 18.59, "volume": 832415 }, { "date": "03/04/15", "open": 18.64, "high": 19.05, "low": 18.32, "close": 19, "volume": 539688 }, { "date": "03/05/15", "open": 19.2, "high": 19.2, "low": 18.8, "close": 19.14, "volume": 486149 }, { "date": "03/06/15", "open": 19.03, "high": 19.1, "low": 18.7, "close": 18.91, "volume": 685659 }, { "date": "03/09/15", "open": 18.98, "high": 20.15, "low": 18.96, "close": 19.4, "volume": 1321363 }, { "date": "03/10/15", "open": 19.3, "high": 19.8, "low": 18.85, "close": 19.64, "volume": 615743 }, { "date": "03/11/15", "open": 20.08, "high": 20.65, "low": 19.24, "close": 20.53, "volume": 2167167 }, { "date": "03/12/15", "open": 17.17, "high": 18.2, "low": 16.76, "close": 18.2, "volume": 6837638 }, { "date": "03/13/15", "open": 18.05, "high": 18.05, "low": 17.3, "close": 17.88, "volume": 1715629 }, { "date": "03/16/15", "open": 17.91, "high": 18, "low": 17.01, "close": 17.13, "volume": 1321313 }, { "date": "03/17/15", "open": 17.28, "high": 17.37, "low": 16.6, "close": 17.12, "volume": 1272242 }, { "date": "03/18/15", "open": 17.1, "high": 17.27, "low": 16.91, "close": 17.01, "volume": 530063 }, { "date": "03/19/15", "open": 17, "high": 17.28, "low": 17, "close": 17.06, "volume": 536427 }, { "date": "03/20/15", "open": 17.13, "high": 17.24, "low": 16.88, "close": 17.21, "volume": 1320237 }, { "date": "03/23/15", "open": 17.21, "high": 17.23, "low": 17.01, "close": 17.11, "volume": 509798 }, { "date": "03/24/15", "open": 17.02, "high": 17.18, "low": 16.82, "close": 17, "volume": 962149 }, { "date": "03/25/15", "open": 16.92, "high": 16.99, "low": 16.82, "close": 16.97, "volume": 565673 }, { "date": "03/26/15", "open": 16.83, "high": 17.56, "low": 16.83, "close": 17.54, "volume": 884523 }, { "date": "03/27/15", "open": 17.58, "high": 18.3, "low": 17.11, "close": 18.3, "volume": 705626 }, { "date": "03/30/15", "open": 18.5, "high": 19.4, "low": 18.4, "close": 19.05, "volume": 1151620 }, { "date": "03/31/15", "open": 19.08, "high": 20.58, "low": 18.4, "close": 19.75, "volume": 2020679 }, { "date": "04/01/15", "open": 19.69, "high": 19.69, "low": 18.55, "close": 18.65, "volume": 961078 }, { "date": "04/02/15", "open": 18.56, "high": 18.66, "low": 17.85, "close": 17.9, "volume": 884233 }, { "date": "04/06/15", "open": 17.78, "high": 17.94, "low": 17.51, "close": 17.66, "volume": 605252 }, { "date": "04/07/15", "open": 17.62, "high": 17.9, "low": 17.53, "close": 17.61, "volume": 591988 }, { "date": "04/08/15", "open": 17.64, "high": 17.85, "low": 17.32, "close": 17.36, "volume": 618855 }, { "date": "04/09/15", "open": 17.33, "high": 17.54, "low": 17.1, "close": 17.1, "volume": 761855 }, { "date": "04/10/15", "open": 17.08, "high": 17.36, "low": 17, "close": 17.05, "volume": 568373 }, { "date": "04/13/15", "open": 17.24, "high": 17.26, "low": 16.81, "close": 17.1, "volume": 667142 }, { "date": "04/14/15", "open": 17.1, "high": 17.89, "low": 17.02, "close": 17.52, "volume": 870138 }, { "date": "04/15/15", "open": 17.6, "high": 17.99, "low": 17.5, "close": 17.69, "volume": 530456 }, { "date": "04/16/15", "open": 17.95, "high": 18, "low": 17.6, "close": 17.82, "volume": 548730 }, { "date": "04/17/15", "open": 17.75, "high": 17.79, "low": 17.5, "close": 17.79, "volume": 446373 }, { "date": "04/20/15", "open": 17.63, "high": 17.98, "low": 17.52, "close": 17.93, "volume": 487017 }, { "date": "04/21/15", "open": 17.96, "high": 17.98, "low": 17.71, "close": 17.92, "volume": 320302 }, { "date": "04/22/15", "open": 17.88, "high": 18.33, "low": 17.57, "close": 18.29, "volume": 644812 }, { "date": "04/23/15", "open": 18.29, "high": 18.61, "low": 18.18, "close": 18.28, "volume": 563879 }, { "date": "04/24/15", "open": 18.5, "high": 18.5, "low": 17.61, "close": 17.75, "volume": 650762 }, { "date": "04/27/15", "open": 17.97, "high": 18.05, "low": 17.45, "close": 17.57, "volume": 437294 }, { "date": "04/28/15", "open": 17.65, "high": 17.79, "low": 17.39, "close": 17.5, "volume": 224519 }, { "date": "04/29/15", "open": 17.68, "high": 17.68, "low": 17.1, "close": 17.21, "volume": 495706 }, { "date": "04/30/15", "open": 17.22, "high": 17.3, "low": 17, "close": 17.11, "volume": 391040 }, { "date": "05/01/15", "open": 17.11, "high": 17.55, "low": 16.85, "close": 17.5, "volume": 563075 }, { "date": "05/04/15", "open": 17.56, "high": 17.85, "low": 17.3, "close": 17.4, "volume": 253138 }, { "date": "05/05/15", "open": 17.68, "high": 17.68, "low": 17.09, "close": 17.43, "volume": 290935 }, { "date": "05/06/15", "open": 17.48, "high": 17.48, "low": 17, "close": 17.04, "volume": 313662 }, { "date": "05/07/15", "open": 17.05, "high": 17.19, "low": 16.92, "close": 17.04, "volume": 360284 }, { "date": "05/08/15", "open": 17.13, "high": 17.21, "low": 16.91, "close": 17.1, "volume": 297653 }, { "date": "05/11/15", "open": 17.16, "high": 17.44, "low": 17.13, "close": 17.31, "volume": 268504 }, { "date": "05/12/15", "open": 17.28, "high": 17.44, "low": 16.99, "close": 17.24, "volume": 376961 }, { "date": "05/13/15", "open": 17.24, "high": 17.3, "low": 17.06, "close": 17.2, "volume": 244617 }, { "date": "05/14/15", "open": 17.24, "high": 17.25, "low": 17.02, "close": 17.08, "volume": 252526 }, { "date": "05/15/15", "open": 17.06, "high": 17.16, "low": 16.95, "close": 16.95, "volume": 274783 }, { "date": "05/18/15", "open": 16.95, "high": 17.01, "low": 16.76, "close": 16.87, "volume": 418513 }, { "date": "05/19/15", "open": 16.93, "high": 16.94, "low": 16.6, "close": 16.83, "volume": 367660 }, { "date": "05/20/15", "open": 16.8, "high": 16.9, "low": 16.65, "close": 16.86, "volume": 297914 }, { "date": "05/21/15", "open": 16.9, "high": 17.08, "low": 16.79, "close": 16.88, "volume": 229346 }, { "date": "05/22/15", "open": 16.9, "high": 17.05, "low": 16.85, "close": 17, "volume": 253279 }, { "date": "05/26/15", "open": 17.03, "high": 17.08, "low": 16.86, "close": 17.01, "volume": 212640 }, { "date": "05/27/15", "open": 17.01, "high": 17.99, "low": 16.87, "close": 17.75, "volume": 857109 }, { "date": "05/28/15", "open": 17.77, "high": 17.77, "low": 17.44, "close": 17.62, "volume": 338482 } ]; } export const data = getData();
(function (global) { window.process = { env: { NODE_ENV: "production" } } System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true, react: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { 'jszip': 'npm:jszip/dist/jszip.js', '@mescius/wijmo': 'npm:@mescius/wijmo/index.js', '@mescius/wijmo.input': 'npm:@mescius/wijmo.input/index.js', '@mescius/wijmo.styles': 'npm:@mescius/wijmo.styles', '@mescius/wijmo.cultures': 'npm:@mescius/wijmo.cultures', '@mescius/wijmo.chart': 'npm:@mescius/wijmo.chart/index.js', '@mescius/wijmo.chart.analytics': 'npm:@mescius/wijmo.chart.analytics/index.js', '@mescius/wijmo.chart.animation': 'npm:@mescius/wijmo.chart.animation/index.js', '@mescius/wijmo.chart.annotation': 'npm:@mescius/wijmo.chart.annotation/index.js', '@mescius/wijmo.chart.finance': 'npm:@mescius/wijmo.chart.finance/index.js', '@mescius/wijmo.chart.finance.analytics': 'npm:@mescius/wijmo.chart.finance.analytics/index.js', '@mescius/wijmo.chart.hierarchical': 'npm:@mescius/wijmo.chart.hierarchical/index.js', '@mescius/wijmo.chart.interaction': 'npm:@mescius/wijmo.chart.interaction/index.js', '@mescius/wijmo.chart.radar': 'npm:@mescius/wijmo.chart.radar/index.js', '@mescius/wijmo.chart.render': 'npm:@mescius/wijmo.chart.render/index.js', '@mescius/wijmo.chart.webgl': 'npm:@mescius/wijmo.chart.webgl/index.js', '@mescius/wijmo.chart.map': 'npm:@mescius/wijmo.chart.map/index.js', '@mescius/wijmo.gauge': 'npm:@mescius/wijmo.gauge/index.js', '@mescius/wijmo.grid': 'npm:@mescius/wijmo.grid/index.js', '@mescius/wijmo.grid.detail': 'npm:@mescius/wijmo.grid.detail/index.js', '@mescius/wijmo.grid.filter': 'npm:@mescius/wijmo.grid.filter/index.js', '@mescius/wijmo.grid.search': 'npm:@mescius/wijmo.grid.search/index.js', '@mescius/wijmo.grid.style': 'npm:@mescius/wijmo.grid.style/index.js', '@mescius/wijmo.grid.grouppanel': 'npm:@mescius/wijmo.grid.grouppanel/index.js', '@mescius/wijmo.grid.multirow': 'npm:@mescius/wijmo.grid.multirow/index.js', '@mescius/wijmo.grid.transposed': 'npm:@mescius/wijmo.grid.transposed/index.js', '@mescius/wijmo.grid.transposedmultirow': 'npm:@mescius/wijmo.grid.transposedmultirow/index.js', '@mescius/wijmo.grid.pdf': 'npm:@mescius/wijmo.grid.pdf/index.js', '@mescius/wijmo.grid.sheet': 'npm:@mescius/wijmo.grid.sheet/index.js', '@mescius/wijmo.grid.xlsx': 'npm:@mescius/wijmo.grid.xlsx/index.js', '@mescius/wijmo.grid.selector': 'npm:@mescius/wijmo.grid.selector/index.js', '@mescius/wijmo.grid.cellmaker': 'npm:@mescius/wijmo.grid.cellmaker/index.js', '@mescius/wijmo.grid.immutable': 'npm:@mescius/wijmo.grid.immutable/index.js', '@mescius/wijmo.touch': 'npm:@mescius/wijmo.touch/index.js', '@mescius/wijmo.cloud': 'npm:@mescius/wijmo.cloud/index.js', '@mescius/wijmo.nav': 'npm:@mescius/wijmo.nav/index.js', '@mescius/wijmo.odata': 'npm:@mescius/wijmo.odata/index.js', '@mescius/wijmo.olap': 'npm:@mescius/wijmo.olap/index.js', '@mescius/wijmo.rest': 'npm:@mescius/wijmo.rest/index.js', '@mescius/wijmo.pdf': 'npm:@mescius/wijmo.pdf/index.js', '@mescius/wijmo.pdf.security': 'npm:@mescius/wijmo.pdf.security/index.js', '@mescius/wijmo.viewer': 'npm:@mescius/wijmo.viewer/index.js', '@mescius/wijmo.xlsx': 'npm:@mescius/wijmo.xlsx/index.js', '@mescius/wijmo.undo': 'npm:@mescius/wijmo.undo/index.js', '@mescius/wijmo.interop.grid': 'npm:@mescius/wijmo.interop.grid/index.js', '@mescius/wijmo.barcode': 'npm:@mescius/wijmo.barcode/index.js', '@mescius/wijmo.barcode.common': 'npm:@mescius/wijmo.barcode.common/index.js', '@mescius/wijmo.barcode.composite': 'npm:@mescius/wijmo.barcode.composite/index.js', '@mescius/wijmo.barcode.specialized': 'npm:@mescius/wijmo.barcode.specialized/index.js', "@mescius/wijmo.react.chart.analytics": "npm:@mescius/wijmo.react.chart.analytics/index.js", "@mescius/wijmo.react.chart.animation": "npm:@mescius/wijmo.react.chart.animation/index.js", "@mescius/wijmo.react.chart.annotation": "npm:@mescius/wijmo.react.chart.annotation/index.js", "@mescius/wijmo.react.chart.finance.analytics": "npm:@mescius/wijmo.react.chart.finance.analytics/index.js", "@mescius/wijmo.react.chart.finance": "npm:@mescius/wijmo.react.chart.finance/index.js", "@mescius/wijmo.react.chart.hierarchical": "npm:@mescius/wijmo.react.chart.hierarchical/index.js", "@mescius/wijmo.react.chart.interaction": "npm:@mescius/wijmo.react.chart.interaction/index.js", "@mescius/wijmo.react.chart.radar": "npm:@mescius/wijmo.react.chart.radar/index.js", "@mescius/wijmo.react.chart": "npm:@mescius/wijmo.react.chart/index.js", "@mescius/wijmo.react.core": "npm:@mescius/wijmo.react.core/index.js", '@mescius/wijmo.react.chart.map': 'npm:@mescius/wijmo.react.chart.map/index.js', "@mescius/wijmo.react.gauge": "npm:@mescius/wijmo.react.gauge/index.js", "@mescius/wijmo.react.grid.detail": "npm:@mescius/wijmo.react.grid.detail/index.js", "@mescius/wijmo.react.grid.filter": "npm:@mescius/wijmo.react.grid.filter/index.js", "@mescius/wijmo.react.grid.grouppanel": "npm:@mescius/wijmo.react.grid.grouppanel/index.js", '@mescius/wijmo.react.grid.search': 'npm:@mescius/wijmo.react.grid.search/index.js', "@mescius/wijmo.react.grid.multirow": "npm:@mescius/wijmo.react.grid.multirow/index.js", "@mescius/wijmo.react.grid.sheet": "npm:@mescius/wijmo.react.grid.sheet/index.js", '@mescius/wijmo.react.grid.transposed': 'npm:@mescius/wijmo.react.grid.transposed/index.js', '@mescius/wijmo.react.grid.transposedmultirow': 'npm:@mescius/wijmo.react.grid.transposedmultirow/index.js', '@mescius/wijmo.react.grid.immutable': 'npm:@mescius/wijmo.react.grid.immutable/index.js', "@mescius/wijmo.react.grid": "npm:@mescius/wijmo.react.grid/index.js", "@mescius/wijmo.react.input": "npm:@mescius/wijmo.react.input/index.js", "@mescius/wijmo.react.olap": "npm:@mescius/wijmo.react.olap/index.js", "@mescius/wijmo.react.viewer": "npm:@mescius/wijmo.react.viewer/index.js", "@mescius/wijmo.react.nav": "npm:@mescius/wijmo.react.nav/index.js", "@mescius/wijmo.react.base": "npm:@mescius/wijmo.react.base/index.js", '@mescius/wijmo.react.barcode.common': 'npm:@mescius/wijmo.react.barcode.common/index.js', '@mescius/wijmo.react.barcode.composite': 'npm:@mescius/wijmo.react.barcode.composite/index.js', '@mescius/wijmo.react.barcode.specialized': 'npm:@mescius/wijmo.react.barcode.specialized/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'react': 'npm:react/index.js', 'react-dom': 'npm:react-dom/index.js', 'react-dom/client': 'npm:react-dom/client.js', "scheduler": "npm:scheduler/index.js", 'redux': 'npm:redux/dist/redux.min.js', 'react-redux': 'npm:react-redux/dist/react-redux.min.js', 'bootstrap.css': 'npm:bootstrap/dist/css/bootstrap.min.css', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js', "react-use-event-hook": "npm:react-use-event-hook/dist/esm/useEvent.js", }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'jsx' }, "node_modules": { defaultExtension: 'js' }, } }); })(this);