import React from 'react';
import Chart, {
CommonSeriesSettings,
Series,
Reduction,
ArgumentAxis,
Label,
Format,
ValueAxis,
Title,
Legend,
Export,
Tooltip,
} from 'devextreme-react/chart';
import type { ChartTypes } from 'devextreme-react/chart';
import { dataSource } from './data.ts';
const customizeTooltip = (arg: ChartTypes.CandleStickPointInfo | ChartTypes.PointInfo): Record<string, string> => {
if (!('openValue' in arg)) {
return { text: '' };
}
return {
text: `Open: $${arg.openValue}<br/>
Close: $${arg.closeValue}<br/>
High: $${arg.highValue}<br/>
Low: $${arg.lowValue}<br/>`,
};
};
function App() {
return (
<Chart id="chart" title="Stock Price" dataSource={dataSource}>
<CommonSeriesSettings argumentField="date" type="candlestick" />
<Series
name="E-Mart"
openValueField="o"
highValueField="h"
lowValueField="l"
closeValueField="c"
>
<Reduction color="red" />
</Series>
<ArgumentAxis workdaysOnly={true}>
<Label format="shortDate" />
</ArgumentAxis>
<ValueAxis tickInterval={1}>
<Title text="US dollars" />
<Label>
<Format precision={0} type="currency" />
</Label>
</ValueAxis>
<Legend itemTextPosition="left" />
<Export enabled={true} />
<Tooltip
enabled={true}
location="edge"
customizeTooltip={customizeTooltip}
/>
</Chart>
);
}
export default App;
import React from 'react';
import Chart, {
CommonSeriesSettings,
Series,
Reduction,
ArgumentAxis,
Label,
Format,
ValueAxis,
Title,
Legend,
Export,
Tooltip,
} from 'devextreme-react/chart';
import { dataSource } from './data.js';
const customizeTooltip = (arg) => {
if (!('openValue' in arg)) {
return { text: '' };
}
return {
text: `Open: $${arg.openValue}<br/>
Close: $${arg.closeValue}<br/>
High: $${arg.highValue}<br/>
Low: $${arg.lowValue}<br/>`,
};
};
function App() {
return (
<Chart
id="chart"
title="Stock Price"
dataSource={dataSource}
>
<CommonSeriesSettings
argumentField="date"
type="candlestick"
/>
<Series
name="E-Mart"
openValueField="o"
highValueField="h"
lowValueField="l"
closeValueField="c"
>
<Reduction color="red" />
</Series>
<ArgumentAxis workdaysOnly={true}>
<Label format="shortDate" />
</ArgumentAxis>
<ValueAxis tickInterval={1}>
<Title text="US dollars" />
<Label>
<Format
precision={0}
type="currency"
/>
</Label>
</ValueAxis>
<Legend itemTextPosition="left" />
<Export enabled={true} />
<Tooltip
enabled={true}
location="edge"
customizeTooltip={customizeTooltip}
/>
</Chart>
);
}
export default App;
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.tsx';
ReactDOM.render(
<App />,
document.getElementById('app'),
);
export const dataSource = [{
date: new Date(1994, 2, 1),
l: 24.00,
h: 25.00,
o: 25.00,
c: 24.875,
}, {
date: new Date(1994, 2, 2),
l: 23.625,
h: 25.125,
o: 24.00,
c: 24.875,
}, {
date: new Date(1994, 2, 3),
l: 26.25,
h: 28.25,
o: 26.75,
c: 27.00,
}, {
date: new Date(1994, 2, 4),
l: 26.50,
h: 27.875,
o: 26.875,
c: 27.25,
}, {
date: new Date(1994, 2, 7),
l: 26.375,
h: 27.50,
o: 27.375,
c: 26.75,
}, {
date: new Date(1994, 2, 8),
l: 25.75,
h: 26.875,
o: 26.75,
c: 26.00,
}, {
date: new Date(1994, 2, 9),
l: 25.75,
h: 26.75,
o: 26.125,
c: 26.25,
}, {
date: new Date(1994, 2, 10),
l: 25.75,
h: 26.375,
o: 26.375,
c: 25.875,
}, {
date: new Date(1994, 2, 11),
l: 24.875,
h: 26.125,
o: 26.00,
c: 25.375,
}, {
date: new Date(1994, 2, 14),
l: 25.125,
h: 26.00,
o: 25.625,
c: 25.75,
}, {
date: new Date(1994, 2, 15),
l: 25.875,
h: 26.625,
o: 26.125,
c: 26.375,
}, {
date: new Date(1994, 2, 16),
l: 26.25,
h: 27.375,
o: 26.25,
c: 27.25,
}, {
date: new Date(1994, 2, 17),
l: 26.875,
h: 27.25,
o: 27.125,
c: 26.875,
}, {
date: new Date(1994, 2, 18),
l: 26.375,
h: 27.125,
o: 27.00,
c: 27.125,
}, {
date: new Date(1994, 2, 21),
l: 26.75,
h: 27.875,
o: 26.875,
c: 27.75,
}, {
date: new Date(1994, 2, 22),
l: 26.75,
h: 28.375,
o: 27.50,
c: 27.00,
}, {
date: new Date(1994, 2, 23),
l: 26.875,
h: 28.125,
o: 27.00,
c: 28.00,
}, {
date: new Date(1994, 2, 24),
l: 26.25,
h: 27.875,
o: 27.75,
c: 27.625,
}, {
date: new Date(1994, 2, 25),
l: 27.50,
h: 28.75,
o: 27.75,
c: 28.00,
}, {
date: new Date(1994, 2, 28),
l: 25.75,
h: 28.25,
o: 28.00,
c: 27.25,
}, {
date: new Date(1994, 2, 29),
l: 26.375,
h: 27.50,
o: 27.50,
c: 26.875,
}, {
date: new Date(1994, 2, 30),
l: 25.75,
h: 27.50,
o: 26.375,
c: 26.25,
}, {
date: new Date(1994, 2, 31),
l: 24.75,
h: 27.00,
o: 26.50,
c: 25.25,
}];
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
export const dataSource = [
{
date: new Date(1994, 2, 1),
l: 24.0,
h: 25.0,
o: 25.0,
c: 24.875,
},
{
date: new Date(1994, 2, 2),
l: 23.625,
h: 25.125,
o: 24.0,
c: 24.875,
},
{
date: new Date(1994, 2, 3),
l: 26.25,
h: 28.25,
o: 26.75,
c: 27.0,
},
{
date: new Date(1994, 2, 4),
l: 26.5,
h: 27.875,
o: 26.875,
c: 27.25,
},
{
date: new Date(1994, 2, 7),
l: 26.375,
h: 27.5,
o: 27.375,
c: 26.75,
},
{
date: new Date(1994, 2, 8),
l: 25.75,
h: 26.875,
o: 26.75,
c: 26.0,
},
{
date: new Date(1994, 2, 9),
l: 25.75,
h: 26.75,
o: 26.125,
c: 26.25,
},
{
date: new Date(1994, 2, 10),
l: 25.75,
h: 26.375,
o: 26.375,
c: 25.875,
},
{
date: new Date(1994, 2, 11),
l: 24.875,
h: 26.125,
o: 26.0,
c: 25.375,
},
{
date: new Date(1994, 2, 14),
l: 25.125,
h: 26.0,
o: 25.625,
c: 25.75,
},
{
date: new Date(1994, 2, 15),
l: 25.875,
h: 26.625,
o: 26.125,
c: 26.375,
},
{
date: new Date(1994, 2, 16),
l: 26.25,
h: 27.375,
o: 26.25,
c: 27.25,
},
{
date: new Date(1994, 2, 17),
l: 26.875,
h: 27.25,
o: 27.125,
c: 26.875,
},
{
date: new Date(1994, 2, 18),
l: 26.375,
h: 27.125,
o: 27.0,
c: 27.125,
},
{
date: new Date(1994, 2, 21),
l: 26.75,
h: 27.875,
o: 26.875,
c: 27.75,
},
{
date: new Date(1994, 2, 22),
l: 26.75,
h: 28.375,
o: 27.5,
c: 27.0,
},
{
date: new Date(1994, 2, 23),
l: 26.875,
h: 28.125,
o: 27.0,
c: 28.0,
},
{
date: new Date(1994, 2, 24),
l: 26.25,
h: 27.875,
o: 27.75,
c: 27.625,
},
{
date: new Date(1994, 2, 25),
l: 27.5,
h: 28.75,
o: 27.75,
c: 28.0,
},
{
date: new Date(1994, 2, 28),
l: 25.75,
h: 28.25,
o: 28.0,
c: 27.25,
},
{
date: new Date(1994, 2, 29),
l: 26.375,
h: 27.5,
o: 27.5,
c: 26.875,
},
{
date: new Date(1994, 2, 30),
l: 25.75,
h: 27.5,
o: 26.375,
c: 26.25,
},
{
date: new Date(1994, 2, 31),
l: 24.75,
h: 27.0,
o: 26.5,
c: 25.25,
},
];
<!DOCTYPE html>
<html lang="en">
<head>
<title>DevExtreme Demo</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" />
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/26.1.5/css/dx.light.css" />
<link rel="stylesheet" type="text/css" href="./bundle.css" />
</head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
<script src="bundles/vendor/react.vendor.js"></script>
<script src="./bundle.js"></script>
</body>
</html>
#chart {
height: 440px;
}