This repository was archived by the owner on Jul 30, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdashed-line.tsx
More file actions
151 lines (145 loc) · 6.52 KB
/
dashed-line.tsx
File metadata and controls
151 lines (145 loc) · 6.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/**
* Sample for Line Series with dashed line
*/
import * as React from "react";
import * as ReactDOM from "react-dom";
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject,
LineSeries, Crosshair, DateTime, Legend, Tooltip, ILoadedEventArgs, ChartTheme
} from '@syncfusion/ej2-react-charts';
import { Browser } from '@syncfusion/ej2-base';
import { SampleBase } from '../common/sample-base';
export let data1: any[] = [
{ x: new Date(2005, 0, 1), y: 12 }, { x: new Date(2006, 0, 1), y: 10.6 },
{ x: new Date(2007, 0, 1), y: 15.6 }, { x: new Date(2008, 0, 1), y: 38.6 },
{ x: new Date(2009, 0, 1), y: 27.4 }, { x: new Date(2010, 0, 1), y: 23.5 },
{ x: new Date(2011, 0, 1), y: 16.6 }
];
export let data2: any[] = [
{ x: new Date(2005, 0, 1), y: 9.5 }, { x: new Date(2006, 0, 1), y: 19.9 },
{ x: new Date(2007, 0, 1), y: 25.2 }, { x: new Date(2008, 0, 1), y: 36 },
{ x: new Date(2009, 0, 1), y: 16.6 }, { x: new Date(2010, 0, 1), y: 14.2 }, { x: new Date(2011, 0, 1), y: 10.3 }
];
const SAMPLE_CSS = `
.control-fluid {
padding: 0px !important;
}
#charts_Series_1,
#charts_Series_0 {
stroke-dasharray: 10px 10px;
stroke-linejoin: round; stroke-linecap: round;
-webkit-animation: dash 1s linear infinite;
animation: dash 1s linear infinite;
}
#charts_Series_0_Point_3_Symbol {
-webkit-animation: opac 1s ease-out infinite;
animation: opac 1s ease-out infinite;
}
@-webkit-keyframes dash {
100% {
stroke-dashoffset: -20px;
}
}
@keyframes dash {
100% {
stroke-dashoffset: -20px;
}
}
@keyframes opac {
0% {
stroke-opacity: 1;
stroke-width: 0px;
}
100% {
stroke-opacity: 0;
stroke-width: 10px;
}
}`;
export class DashedLine extends SampleBase<{}, {}> {
render() {
return (
<div className='control-pane'>
<style>
{SAMPLE_CSS}
</style>
<div className='control-section'>
<ChartComponent id='charts' style={{ textAlign: "center" }}
primaryXAxis={{
valueType: 'DateTime',
labelFormat: 'y',
intervalType: 'Years',
edgeLabelPlacement: 'Shift',
majorGridLines: { width: 0 }
}}
load={this.load.bind(this)}
primaryYAxis={{
labelFormat: '{value}%',
rangePadding: 'None',
lineStyle: { width: 0 },
minimum: 0,
maximum: 40,
interval: 10,
majorTickLines: { width: 0 },
minorTickLines: { width: 0 }
}}
chartArea={{ border: { width: 0 } }}
tooltip={{ enable: true, shared: true }}
crosshair={{
enable: true,
line: {
color: 'rgba(204,214,235,0.25)',
width: Browser.isDevice ? 50 : 20,
},
lineType: 'Vertical'
}}
width={Browser.isDevice ? '100%' : '60%'}
title='Fruits Production Statistics' loaded={this.onChartLoad.bind(this)}>
<Inject services={[LineSeries, DateTime, Legend, Tooltip, Crosshair]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={data1} xName='x' yName='y' name='Banana' dashArray='5'
width={2} marker={{ visible: true, width: 10, height: 10 }} type='Line'>
</SeriesDirective>
<SeriesDirective dataSource={data2} xName='x' yName='y' name='Apple'
width={2} marker={{ visible: true, width: 10, height: 10, shape: 'Diamond' }} dashArray='10' type='Line'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
</div>
<div id="action-description">
<p>
This sample illustrates a line series with dash array.
Dashed lines are animated by using css animation.
</p>
</div>
<div id="description">
<p>
In this example, you can see how to render and configure the line type charts. Line type charts are used to represent time-dependent data, showing trends in data at equal intervals.
You can use <code>dashArray</code>, <code>width</code>, <code>fill</code> properties to customize the line. <code>marker</code> and <code>dataLabel</code> are used to represent individual data and its value.
</p>
<p>
Tooltip is enabled in this example, to see the tooltip in action, hover a point or tap on a point in touch enabled devices.
</p> <br>
</br>
<p><b>Injecting Module</b></p>
<p>
Chart component features are segregated into individual feature-wise modules. To use line series, we need to inject
<code>LineSeries</code> module into <code>services</code>.
</p>
<p>
More information on the line series can be found in this
<a target="_blank" href="http://ej2.syncfusion.com/react/documentation/chart/api-series.html#type-chartseriestype">documentation section</a>.
</p>
</div>
</div>
)
}
public onChartLoad(args: ILoadedEventArgs): void {
let chart: Element = document.getElementById('charts');
chart.setAttribute('title', '');
};
public load(args: ILoadedEventArgs): void {
let selectedTheme: string = location.hash.split('/')[1];
selectedTheme = selectedTheme ? selectedTheme : 'Material';
args.chart.theme = (selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1)) as ChartTheme;
};
}