import * as React from 'react';
import { IChartProps, ICustomizedCalloutData, ILineChartProps, LineChart } from '@fluentui/react-charting';
import { DefaultPalette } from '@fluentui/react/lib/Styling';
interface ILineChartGapsState {
width: number;
height: number;
}
export class LineChartGapsExample extends React.Component<{}, ILineChartGapsState> {
constructor(props: ILineChartProps) {
super(props);
this.state = {
width: 1200,
height: 400,
};
}
public render(): JSX.Element {
return
{this._gapsExample()}
;
}
private _onWidthChange = (e: React.ChangeEvent) => {
this.setState({ width: parseInt(e.target.value, 10) });
};
private _onHeightChange = (e: React.ChangeEvent) => {
this.setState({ height: parseInt(e.target.value, 10) });
};
private _calculateCalloutDescription = (calloutDataProps: ICustomizedCalloutData): string | undefined => {
if (calloutDataProps.values.filter(value => value.legend === 'Low Confidence Data*').length > 0) {
return '* This data was below our confidence threshold.';
}
return undefined;
};
private _gapsExample(): JSX.Element {
const data: IChartProps = {
chartTitle: 'Line Chart',
lineChartData: [
{
legend: 'Confidence Level',
legendShape: 'dottedLine',
hideNonActiveDots: true,
lineOptions: {
strokeDasharray: '5',
strokeLinecap: 'butt',
strokeWidth: '2',
},
data: [
{
x: new Date('2020-03-03T00:00:00.000Z'),
y: 250000,
hideCallout: true,
},
{
x: new Date('2020-03-10T00:00:00.000Z'),
y: 250000,
hideCallout: true,
},
],
color: DefaultPalette.black,
},
{
legend: 'Normal Data',
gaps: [
{
startIndex: 3,
endIndex: 4,
},
{
startIndex: 6,
endIndex: 7,
},
{
startIndex: 1,
endIndex: 2,
},
],
hideNonActiveDots: true,
lineOptions: {
lineBorderWidth: '4',
},
data: [
{
x: new Date('2020-03-03T00:00:00.000Z'),
y: 216000,
},
{
x: new Date('2020-03-03T10:30:00.000Z'),
y: 218123,
hideCallout: true,
},
// gap here
{
x: new Date('2020-03-03T11:00:00.000Z'),
y: 219000,
hideCallout: true,
},
{
x: new Date('2020-03-04T00:00:00.000Z'),
y: 248000,
hideCallout: true,
},
// gap here
{
x: new Date('2020-03-05T00:00:00.000Z'),
y: 252000,
hideCallout: true,
},
{
x: new Date('2020-03-06T00:00:00.000Z'),
y: 274000,
},
{
x: new Date('2020-03-07T00:00:00.000Z'),
y: 260000,
hideCallout: true,
},
// gap here
{
x: new Date('2020-03-08T00:00:00.000Z'),
y: 300000,
hideCallout: true,
},
{
x: new Date('2020-03-08T12:00:00.000Z'),
y: 218000,
},
{
x: new Date('2020-03-09T00:00:00.000Z'),
y: 218000,
},
{
x: new Date('2020-03-10T00:00:00.000Z'),
y: 269000,
},
],
color: DefaultPalette.blue,
},
{
legend: 'Low Confidence Data*',
legendShape: 'dottedLine',
hideNonActiveDots: true,
lineOptions: {
strokeDasharray: '2',
strokeDashoffset: '-1',
strokeLinecap: 'butt',
lineBorderWidth: '4',
},
gaps: [
{
startIndex: 3,
endIndex: 4,
},
{
startIndex: 1,
endIndex: 2,
},
],
data: [
{
x: new Date('2020-03-03T10:30:00.000Z'),
y: 218123,
},
{
x: new Date('2020-03-03T11:00:00.000Z'),
y: 219000,
},
// gap here
{
x: new Date('2020-03-04T00:00:00.000Z'),
y: 248000,
},
{
x: new Date('2020-03-05T00:00:00.000Z'),
y: 252000,
},
// gap here
{
x: new Date('2020-03-07T00:00:00.000Z'),
y: 260000,
},
{
x: new Date('2020-03-07T00:30:00.000Z'),
y: 270000,
},
{
x: new Date('2020-03-07T01:00:00.000Z'),
y: 270000,
},
{
x: new Date('2020-03-07T01:30:00.000Z'),
y: 270000,
},
{
x: new Date('2020-03-07T02:00:00.000Z'),
y: 280000,
},
{
x: new Date('2020-03-07T02:30:00.000Z'),
y: 270000,
},
{
x: new Date('2020-03-07T03:00:00.000Z'),
y: 290000,
},
{
x: new Date('2020-03-07T03:30:00.000Z'),
y: 270000,
},
{
x: new Date('2020-03-08T00:00:00.000Z'),
y: 300000,
},
],
color: DefaultPalette.blue,
},
{
legend: 'Green Data',
lineOptions: {
lineBorderWidth: '4',
},
data: [
{
x: new Date('2020-03-03T00:00:00.000Z'),
y: 297000,
},
{
x: new Date('2020-03-04T00:00:00.000Z'),
y: 284000,
},
{
x: new Date('2020-03-05T00:00:00.000Z'),
y: 282000,
},
{
x: new Date('2020-03-06T00:00:00.000Z'),
y: 294000,
},
{
x: new Date('2020-03-07T00:00:00.000Z'),
y: 224000,
},
{
x: new Date('2020-03-08T00:00:00.000Z'),
y: 300000,
},
{
x: new Date('2020-03-09T00:00:00.000Z'),
y: 298000,
},
{
x: new Date('2020-03-10T00:00:00.000Z'),
y: 299000,
},
],
color: DefaultPalette.green,
},
],
};
const rootStyle = { width: `${this.state.width}px`, height: `${this.state.height}px` };
const margins = { left: 35, top: 20, bottom: 35, right: 20 };
return (
<>
>
);
}
}