1e41f4b71Sopenharmony_ci# <chart> Development
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThe **<chart>** component displays line charts, gauge charts, and bar charts. For details, see [chart](../reference/apis-arkui/arkui-js/js-components-basic-chart.md).
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Creating a <chart> Component
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciCreate a **<chart>** component in the .hml file under **pages/index**.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```html
12e41f4b71Sopenharmony_ci<!-- xxx.hml -->
13e41f4b71Sopenharmony_ci<div class="container">
14e41f4b71Sopenharmony_ci  <chart class="chart-data" type="line" options="{{lineOps}}" datasets="{{lineData}}"></chart>
15e41f4b71Sopenharmony_ci</div>
16e41f4b71Sopenharmony_ci```
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci```css
19e41f4b71Sopenharmony_ci/* xxx.css */
20e41f4b71Sopenharmony_ci.container {
21e41f4b71Sopenharmony_ci  width: 100%;
22e41f4b71Sopenharmony_ci  height: 100%;
23e41f4b71Sopenharmony_ci  flex-direction: column;
24e41f4b71Sopenharmony_ci  justify-content: center;
25e41f4b71Sopenharmony_ci  align-items: center;
26e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
27e41f4b71Sopenharmony_ci}
28e41f4b71Sopenharmony_ci.chart-data {
29e41f4b71Sopenharmony_ci  width: 700px;
30e41f4b71Sopenharmony_ci  height: 600px;
31e41f4b71Sopenharmony_ci}
32e41f4b71Sopenharmony_ci```
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci```js
35e41f4b71Sopenharmony_ci// xxx.js
36e41f4b71Sopenharmony_ciexport default {
37e41f4b71Sopenharmony_ci  data: {
38e41f4b71Sopenharmony_ci    lineData: [
39e41f4b71Sopenharmony_ci      {
40e41f4b71Sopenharmony_ci        data: [763, 550, 551, 554, 731, 654, 525, 696, 595, 628, 791, 505, 613, 575, 475, 553, 491, 680, 657, 716]
41e41f4b71Sopenharmony_ci      }
42e41f4b71Sopenharmony_ci    ],
43e41f4b71Sopenharmony_ci    lineOps: {
44e41f4b71Sopenharmony_ci      xAxis: {
45e41f4b71Sopenharmony_ci        min: 0,
46e41f4b71Sopenharmony_ci        max: 20,
47e41f4b71Sopenharmony_ci        display: false,
48e41f4b71Sopenharmony_ci      },
49e41f4b71Sopenharmony_ci      yAxis: {
50e41f4b71Sopenharmony_ci        min: 0,
51e41f4b71Sopenharmony_ci        max: 1000,
52e41f4b71Sopenharmony_ci        display: false,
53e41f4b71Sopenharmony_ci      },
54e41f4b71Sopenharmony_ci      series: {
55e41f4b71Sopenharmony_ci        lineStyle: {
56e41f4b71Sopenharmony_ci          width: 15,
57e41f4b71Sopenharmony_ci        },
58e41f4b71Sopenharmony_ci      }
59e41f4b71Sopenharmony_ci    },
60e41f4b71Sopenharmony_ci  }
61e41f4b71Sopenharmony_ci}
62e41f4b71Sopenharmony_ci```
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci![en-us_image_0000001231683156](figures/en-us_image_0000001231683156.png)
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci## Setting the Chart Type
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ciDefine the chart type using the **type** attribute, for example, setting a chart to a bar chart.
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci```html
74e41f4b71Sopenharmony_ci<!-- xxx.hml -->
75e41f4b71Sopenharmony_ci<div class="container">
76e41f4b71Sopenharmony_ci  <div class="container">
77e41f4b71Sopenharmony_ci    <div class="switch-block">
78e41f4b71Sopenharmony_ci      <text class="title">
79e41f4b71Sopenharmony_ci        {{ title }}
80e41f4b71Sopenharmony_ci      </text>
81e41f4b71Sopenharmony_ci    </div>
82e41f4b71Sopenharmony_ci    <tabs class="tabs" index="0" vertical="false" onchange="changes">
83e41f4b71Sopenharmony_ci      <tab-content class="tabcontent" scrollable="true">
84e41f4b71Sopenharmony_ci        <tabs >
85e41f4b71Sopenharmony_ci          <tab-bar class="tab-bar" mode="fixed"style="margin-bottom: 50px;">
86e41f4b71Sopenharmony_ci            <text class="tab-text">Line chart</text>
87e41f4b71Sopenharmony_ci            <text class="tab-text">Bar chart</text>
88e41f4b71Sopenharmony_ci            <text class="tab-text">Gauge chart</text>
89e41f4b71Sopenharmony_ci          </tab-bar>
90e41f4b71Sopenharmony_ci          <tab-content>
91e41f4b71Sopenharmony_ci            <div class="bar-block" style="margin-left: 30px;">
92e41f4b71Sopenharmony_ci              <chart class="chart-data" type="line" ref="linechart" options="{{ lineOps }}" datasets="{{ lineData }}">
93e41f4b71Sopenharmony_ci              </chart>
94e41f4b71Sopenharmony_ci            </div>
95e41f4b71Sopenharmony_ci            <div class="bar-block">
96e41f4b71Sopenharmony_ci              <chart class="data-bar" type="bar" id="bar-chart" options="{{ barOps }}" datasets="{{ barData }}">
97e41f4b71Sopenharmony_ci              </chart>
98e41f4b71Sopenharmony_ci            </div>
99e41f4b71Sopenharmony_ci            <div class="chart-block">
100e41f4b71Sopenharmony_ci              <chart type="gauge" ></chart>
101e41f4b71Sopenharmony_ci            </div>
102e41f4b71Sopenharmony_ci          </tab-content>
103e41f4b71Sopenharmony_ci        </tabs>
104e41f4b71Sopenharmony_ci      </tab-content>
105e41f4b71Sopenharmony_ci    </tabs>
106e41f4b71Sopenharmony_ci  </div>
107e41f4b71Sopenharmony_ci</div>
108e41f4b71Sopenharmony_ci```
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci```css
112e41f4b71Sopenharmony_ci/* xxx.css */
113e41f4b71Sopenharmony_ci.container {
114e41f4b71Sopenharmony_ci  width: 100%;
115e41f4b71Sopenharmony_ci  height: 100%;
116e41f4b71Sopenharmony_ci  flex-direction: column;
117e41f4b71Sopenharmony_ci  justify-content: center;
118e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
119e41f4b71Sopenharmony_ci}
120e41f4b71Sopenharmony_ci.tab-bar{
121e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
122e41f4b71Sopenharmony_ci}
123e41f4b71Sopenharmony_ci.chart-data {
124e41f4b71Sopenharmony_ci  width: 700px;
125e41f4b71Sopenharmony_ci  height: 600px;
126e41f4b71Sopenharmony_ci}
127e41f4b71Sopenharmony_ci.title{
128e41f4b71Sopenharmony_ci  margin-left: 50px;
129e41f4b71Sopenharmony_ci  margin-top: 50px;
130e41f4b71Sopenharmony_ci  font-size: 50px;
131e41f4b71Sopenharmony_ci}
132e41f4b71Sopenharmony_ci.line-block{
133e41f4b71Sopenharmony_ci  align-items: center;
134e41f4b71Sopenharmony_ci  justify-content: center;
135e41f4b71Sopenharmony_ci}
136e41f4b71Sopenharmony_ci.bar-block{
137e41f4b71Sopenharmony_ci  align-items: center;
138e41f4b71Sopenharmony_ci  justify-content: center;
139e41f4b71Sopenharmony_ci}
140e41f4b71Sopenharmony_ci.chart-block{
141e41f4b71Sopenharmony_ci  width: 90%;
142e41f4b71Sopenharmony_ci  margin-left: 30px;
143e41f4b71Sopenharmony_ci}
144e41f4b71Sopenharmony_ci```
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci```js
148e41f4b71Sopenharmony_ci// xxx.js
149e41f4b71Sopenharmony_ciexport default {
150e41f4b71Sopenharmony_ci  data: {
151e41f4b71Sopenharmony_ci    title:"Type display",
152e41f4b71Sopenharmony_ci    barData: [
153e41f4b71Sopenharmony_ci      {
154e41f4b71Sopenharmony_ci        fillColor: '#3848e8',
155e41f4b71Sopenharmony_ci        data: [763, 550, 551, 554, 731, 654, 525, 696, 595],
156e41f4b71Sopenharmony_ci      }
157e41f4b71Sopenharmony_ci    ],
158e41f4b71Sopenharmony_ci    lineData: [
159e41f4b71Sopenharmony_ci      {
160e41f4b71Sopenharmony_ci        strokeColor: '#0081ff',
161e41f4b71Sopenharmony_ci        fillColor: '#cce5ff',
162e41f4b71Sopenharmony_ci        data: [763, 550, 551, 554, 731, 654, 525, 696, 595, 628, 791, 505, 613, 575, 475, 553, 491, 680, 657, 716],
163e41f4b71Sopenharmony_ci        gradient: true,
164e41f4b71Sopenharmony_ci      }
165e41f4b71Sopenharmony_ci    ],
166e41f4b71Sopenharmony_ci    lineOps: {
167e41f4b71Sopenharmony_ci      xAxis: {
168e41f4b71Sopenharmony_ci        min: 0,
169e41f4b71Sopenharmony_ci        max: 20,
170e41f4b71Sopenharmony_ci        display: false,
171e41f4b71Sopenharmony_ci      },
172e41f4b71Sopenharmony_ci      yAxis: {
173e41f4b71Sopenharmony_ci        min: 0,
174e41f4b71Sopenharmony_ci        max: 1000,
175e41f4b71Sopenharmony_ci        display: false,
176e41f4b71Sopenharmony_ci      },
177e41f4b71Sopenharmony_ci      series:{
178e41f4b71Sopenharmony_ci        lineStyle: {
179e41f4b71Sopenharmony_ci          width: "5px",
180e41f4b71Sopenharmony_ci          smooth: true,
181e41f4b71Sopenharmony_ci        },
182e41f4b71Sopenharmony_ci        headPoint: {
183e41f4b71Sopenharmony_ci          shape:"circle",
184e41f4b71Sopenharmony_ci          size: 20,
185e41f4b71Sopenharmony_ci          strokeWidth: 5,
186e41f4b71Sopenharmony_ci          fillColor: '#ffffff',
187e41f4b71Sopenharmony_ci          strokeColor: '#007aff',
188e41f4b71Sopenharmony_ci          display: true,
189e41f4b71Sopenharmony_ci        },
190e41f4b71Sopenharmony_ci        loop:{
191e41f4b71Sopenharmony_ci          margin: 2,
192e41f4b71Sopenharmony_ci          gradient: true
193e41f4b71Sopenharmony_ci        }
194e41f4b71Sopenharmony_ci      },
195e41f4b71Sopenharmony_ci    },
196e41f4b71Sopenharmony_ci    barOps: {
197e41f4b71Sopenharmony_ci      xAxis: {
198e41f4b71Sopenharmony_ci        min: 0,
199e41f4b71Sopenharmony_ci        max: 20,
200e41f4b71Sopenharmony_ci        display: false,
201e41f4b71Sopenharmony_ci        axisTick: 10,
202e41f4b71Sopenharmony_ci      },
203e41f4b71Sopenharmony_ci      yAxis: {
204e41f4b71Sopenharmony_ci        min: 0,
205e41f4b71Sopenharmony_ci        max: 1000,
206e41f4b71Sopenharmony_ci      },
207e41f4b71Sopenharmony_ci    },
208e41f4b71Sopenharmony_ci  },
209e41f4b71Sopenharmony_ci}
210e41f4b71Sopenharmony_ci```
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci![en-us_image_0000001275803181](figures/en-us_image_0000001275803181.gif)
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci> **NOTE**
215e41f4b71Sopenharmony_ci>
216e41f4b71Sopenharmony_ci> The **&lt;chart&gt;** component does not display the value of each point.
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci## Setting the Chart Attributes
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ciIn the **options** attribute of the **&lt;chart&gt;** component, you can set the x-axis, y-axis, and data series parameters. In the **datasets** attribute, you can set the line color, fill color, gradient fill color, and drawing point set.
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci```html
225e41f4b71Sopenharmony_ci<!-- xxx.hml -->
226e41f4b71Sopenharmony_ci<div class="container">
227e41f4b71Sopenharmony_ci  <chart class="chart-data" type="line" options="{{lineOps}}" datasets="{{lineData}}"></chart>
228e41f4b71Sopenharmony_ci</div>
229e41f4b71Sopenharmony_ci```
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci```css
233e41f4b71Sopenharmony_ci/* xxx.css */
234e41f4b71Sopenharmony_ci.container {
235e41f4b71Sopenharmony_ci  width: 100%;
236e41f4b71Sopenharmony_ci  height: 100%;
237e41f4b71Sopenharmony_ci  flex-direction: column;
238e41f4b71Sopenharmony_ci  justify-content: center;
239e41f4b71Sopenharmony_ci  align-items: center;
240e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
241e41f4b71Sopenharmony_ci}
242e41f4b71Sopenharmony_ci.chart-data {
243e41f4b71Sopenharmony_ci  width: 700px;
244e41f4b71Sopenharmony_ci  height: 600px;
245e41f4b71Sopenharmony_ci}
246e41f4b71Sopenharmony_ci```
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci```js
250e41f4b71Sopenharmony_ci// xxx.js
251e41f4b71Sopenharmony_ciexport default {
252e41f4b71Sopenharmony_ci  data: {
253e41f4b71Sopenharmony_ci    // Line chart data
254e41f4b71Sopenharmony_ci    lineData: [
255e41f4b71Sopenharmony_ci      {
256e41f4b71Sopenharmony_ci        strokeColor: '#0081ff',
257e41f4b71Sopenharmony_ci        fillColor: '#cce5ff',  // Fill color
258e41f4b71Sopenharmony_ci        data: [463, 250, 251, 254, 431, 354, 225, 396, 295, 328, 491, 205, 313, 275, 475, 553, 491, 380, 357, 416],
259e41f4b71Sopenharmony_ci        gradient: true,
260e41f4b71Sopenharmony_ci      }
261e41f4b71Sopenharmony_ci    ],
262e41f4b71Sopenharmony_ci   lineOps: {
263e41f4b71Sopenharmony_ci     // X-axis parameters
264e41f4b71Sopenharmony_ci      xAxis: {
265e41f4b71Sopenharmony_ci        min: 0,
266e41f4b71Sopenharmony_ci        max: 20,
267e41f4b71Sopenharmony_ci        display: false,
268e41f4b71Sopenharmony_ci      },
269e41f4b71Sopenharmony_ci     // Y-axis parameters
270e41f4b71Sopenharmony_ci      yAxis: {
271e41f4b71Sopenharmony_ci        min: 0,
272e41f4b71Sopenharmony_ci        max: 1000,
273e41f4b71Sopenharmony_ci        display: false,
274e41f4b71Sopenharmony_ci      },
275e41f4b71Sopenharmony_ci     // Data series parameters
276e41f4b71Sopenharmony_ci      series: {
277e41f4b71Sopenharmony_ci        // Line style
278e41f4b71Sopenharmony_ci        lineStyle: {
279e41f4b71Sopenharmony_ci          width: "5px",
280e41f4b71Sopenharmony_ci          smooth: true,
281e41f4b71Sopenharmony_ci        },
282e41f4b71Sopenharmony_ci        // Style and size of the white point at the start of the line
283e41f4b71Sopenharmony_ci        headPoint: {
284e41f4b71Sopenharmony_ci          shape: "circle",
285e41f4b71Sopenharmony_ci          size: 20,
286e41f4b71Sopenharmony_ci          strokeWidth: 5,
287e41f4b71Sopenharmony_ci          fillColor: '#ffffff',
288e41f4b71Sopenharmony_ci          strokeColor: '#007aff',
289e41f4b71Sopenharmony_ci          display: true,
290e41f4b71Sopenharmony_ci        },
291e41f4b71Sopenharmony_ci        // Whether to start drawing again when the screen is looped.
292e41f4b71Sopenharmony_ci        loop: {
293e41f4b71Sopenharmony_ci          margin: 2,
294e41f4b71Sopenharmony_ci          gradient: true
295e41f4b71Sopenharmony_ci        }
296e41f4b71Sopenharmony_ci      }
297e41f4b71Sopenharmony_ci    },
298e41f4b71Sopenharmony_ci  },
299e41f4b71Sopenharmony_ci}
300e41f4b71Sopenharmony_ci```
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci> **NOTE**
303e41f4b71Sopenharmony_ci> - The **options** attribute supports the settings of bar charts and line charts but does not support those of gauge charts.
304e41f4b71Sopenharmony_ci> 
305e41f4b71Sopenharmony_ci> - The **datasets** attribute supports the datasets for bar charts and line charts but does not support those of gauge charts.
306e41f4b71Sopenharmony_ci> 
307e41f4b71Sopenharmony_ci> - Only line charts support **series**.
308e41f4b71Sopenharmony_ci
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci## Adding Data
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ciUse the **append** method of the **&lt;chart&gt;** component to dynamically add data.
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci
315e41f4b71Sopenharmony_ci```html
316e41f4b71Sopenharmony_ci<!-- xxx.hml -->
317e41f4b71Sopenharmony_ci<div class="container">
318e41f4b71Sopenharmony_ci  <stack class="chart-region">
319e41f4b71Sopenharmony_ci    <chart class="chart-data" type="line" ref="linechart" options="{{lineOps}}" datasets="{{lineData}}"></chart>
320e41f4b71Sopenharmony_ci  </stack>
321e41f4b71Sopenharmony_ci  <button value="Add data" onclick="addData"></button>
322e41f4b71Sopenharmony_ci</div>
323e41f4b71Sopenharmony_ci```
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ci```css
327e41f4b71Sopenharmony_ci/* xxx.css */
328e41f4b71Sopenharmony_ci.container {
329e41f4b71Sopenharmony_ci  flex-direction: column;
330e41f4b71Sopenharmony_ci  justify-content: center;
331e41f4b71Sopenharmony_ci  align-items: center;
332e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
333e41f4b71Sopenharmony_ci}
334e41f4b71Sopenharmony_ci.chart-region {
335e41f4b71Sopenharmony_ci  height: 400px;
336e41f4b71Sopenharmony_ci  width: 700px;
337e41f4b71Sopenharmony_ci}
338e41f4b71Sopenharmony_ci.chart-data {
339e41f4b71Sopenharmony_ci  width: 700px;
340e41f4b71Sopenharmony_ci  height: 600px;
341e41f4b71Sopenharmony_ci}
342e41f4b71Sopenharmony_cibutton {
343e41f4b71Sopenharmony_ci  width: 100%;
344e41f4b71Sopenharmony_ci  height: 50px;
345e41f4b71Sopenharmony_ci  background-color: #F4F2F1;
346e41f4b71Sopenharmony_ci  text-color: #0C81F3;
347e41f4b71Sopenharmony_ci  margin-top: 30px;
348e41f4b71Sopenharmony_ci}
349e41f4b71Sopenharmony_ci```
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci```js
353e41f4b71Sopenharmony_ci// xxx.js
354e41f4b71Sopenharmony_ciexport default {
355e41f4b71Sopenharmony_ci  data: {
356e41f4b71Sopenharmony_ci    lineData: [
357e41f4b71Sopenharmony_ci      {
358e41f4b71Sopenharmony_ci        strokeColor: '#de0b6e',
359e41f4b71Sopenharmony_ci        fillColor: '#bb09a3',
360e41f4b71Sopenharmony_ci        data: [763, 550, 551, 554, 731, 654, 525, 696, 595, 628, 791, 505, 613, 575, 475, 553, 491, 680, 657, 716],
361e41f4b71Sopenharmony_ci        gradient: true,
362e41f4b71Sopenharmony_ci      }
363e41f4b71Sopenharmony_ci    ],
364e41f4b71Sopenharmony_ci    lineOps: {
365e41f4b71Sopenharmony_ci      xAxis: {
366e41f4b71Sopenharmony_ci      min: 0,
367e41f4b71Sopenharmony_ci      max: 20,
368e41f4b71Sopenharmony_ci      display: false,
369e41f4b71Sopenharmony_ci      },
370e41f4b71Sopenharmony_ci      yAxis: {
371e41f4b71Sopenharmony_ci        min: 0,
372e41f4b71Sopenharmony_ci        max: 1000,
373e41f4b71Sopenharmony_ci        display: false,
374e41f4b71Sopenharmony_ci      },
375e41f4b71Sopenharmony_ci      series: {
376e41f4b71Sopenharmony_ci        lineStyle: {
377e41f4b71Sopenharmony_ci          width: "5px",
378e41f4b71Sopenharmony_ci          smooth: true,
379e41f4b71Sopenharmony_ci        },
380e41f4b71Sopenharmony_ci        headPoint: {
381e41f4b71Sopenharmony_ci          shape: "circle",
382e41f4b71Sopenharmony_ci          size: 20,
383e41f4b71Sopenharmony_ci          strokeWidth: 5,
384e41f4b71Sopenharmony_ci          fillColor: '#ffffff',
385e41f4b71Sopenharmony_ci          strokeColor: '#f8145c',
386e41f4b71Sopenharmony_ci          display: true,
387e41f4b71Sopenharmony_ci        },
388e41f4b71Sopenharmony_ci        loop: {
389e41f4b71Sopenharmony_ci          margin: 2,
390e41f4b71Sopenharmony_ci          gradient: true,
391e41f4b71Sopenharmony_ci        }
392e41f4b71Sopenharmony_ci      }
393e41f4b71Sopenharmony_ci    },
394e41f4b71Sopenharmony_ci  },
395e41f4b71Sopenharmony_ci  addData() {    
396e41f4b71Sopenharmony_ci    this.$refs.linechart.append({      
397e41f4b71Sopenharmony_ci    serial: 0,        
398e41f4b71Sopenharmony_ci      data: [Math.floor(Math.random() * 400) + 200]    
399e41f4b71Sopenharmony_ci    })  
400e41f4b71Sopenharmony_ci  }
401e41f4b71Sopenharmony_ci}
402e41f4b71Sopenharmony_ci```
403e41f4b71Sopenharmony_ci
404e41f4b71Sopenharmony_ci![en-us_image_0000001275803177](figures/en-us_image_0000001275803177.gif)
405e41f4b71Sopenharmony_ci
406e41f4b71Sopenharmony_ci
407e41f4b71Sopenharmony_ci## Example Scenario
408e41f4b71Sopenharmony_ci
409e41f4b71Sopenharmony_ciSelect the data display status using **&lt;switch&gt;**. When **&lt;switch&gt;** is set to **true**, the timer is used to dynamically display data.
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci```html
413e41f4b71Sopenharmony_ci<!-- xxx.hml -->
414e41f4b71Sopenharmony_ci<div class="container">
415e41f4b71Sopenharmony_ci  <div class="container">
416e41f4b71Sopenharmony_ci    <div class="switch-block">
417e41f4b71Sopenharmony_ci      <text class="title">{{ title }} </text>
418e41f4b71Sopenharmony_ci      <switch class="switch" showtext="{{ showText }}" allow-scale="{{ allowScale }}"onchange="change">
419e41f4b71Sopenharmony_ci      </switch>
420e41f4b71Sopenharmony_ci    </div>
421e41f4b71Sopenharmony_ci    <tabs class="tabs" index="0" vertical="false" onchange="changes">
422e41f4b71Sopenharmony_ci      <tab-content class="tabcontent" scrollable="true">
423e41f4b71Sopenharmony_ci        <div>
424e41f4b71Sopenharmony_ci          <tabs class="tabs" index="0" vertical="false" onchange="changes">
425e41f4b71Sopenharmony_ci            <tab-content class="tabcontent" scrollable="true">
426e41f4b71Sopenharmony_ci              <div class="line-class">
427e41f4b71Sopenharmony_ci                <div class="bar-block">
428e41f4b71Sopenharmony_ci                  <chart class="chart-data" type="line" ref="linechart" options="{{ lineOps }}"   
429e41f4b71Sopenharmony_ci                  datasets="{{ lineData }}">
430e41f4b71Sopenharmony_ci                  </chart>
431e41f4b71Sopenharmony_ci                </div>
432e41f4b71Sopenharmony_ci                <div class="bar-block">
433e41f4b71Sopenharmony_ci                  <chart class="data-bar" type="bar" id="bar-chart" options="{{ barOps }}"datasets="{{ barData }}">
434e41f4b71Sopenharmony_ci                  </chart>
435e41f4b71Sopenharmony_ci                </div>
436e41f4b71Sopenharmony_ci             </div>
437e41f4b71Sopenharmony_ci           </tab-content>
438e41f4b71Sopenharmony_ci         </tabs>
439e41f4b71Sopenharmony_ci       </div>
440e41f4b71Sopenharmony_ci       <div>
441e41f4b71Sopenharmony_ci         <div class="container">
442e41f4b71Sopenharmony_ci           <list class="todo-wrapper">
443e41f4b71Sopenharmony_ci             <list-item for="{{ barData }}" class="todo-item">
444e41f4b71Sopenharmony_ci               <text class="todo-title">{{ $item.data }}</text>
445e41f4b71Sopenharmony_ci             </list-item>
446e41f4b71Sopenharmony_ci           </list>
447e41f4b71Sopenharmony_ci           <list class="todo-wrapper">
448e41f4b71Sopenharmony_ci             <list-item for="{{ lineData.data }}" class="todo-item">
449e41f4b71Sopenharmony_ci               <text class="todo-title">{{ $item.value }}</text>
450e41f4b71Sopenharmony_ci             </list-item>
451e41f4b71Sopenharmony_ci           </list>
452e41f4b71Sopenharmony_ci         </div>
453e41f4b71Sopenharmony_ci       </div>
454e41f4b71Sopenharmony_ci      </tab-content>
455e41f4b71Sopenharmony_ci    </tabs>
456e41f4b71Sopenharmony_ci  </div>
457e41f4b71Sopenharmony_ci</div>
458e41f4b71Sopenharmony_ci```
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci
461e41f4b71Sopenharmony_ci```css
462e41f4b71Sopenharmony_ci/* xxx.css */
463e41f4b71Sopenharmony_ci.container{
464e41f4b71Sopenharmony_ci  display:flex;
465e41f4b71Sopenharmony_ci  flex-direction:column;
466e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
467e41f4b71Sopenharmony_ci}
468e41f4b71Sopenharmony_ci.line-class{
469e41f4b71Sopenharmony_ci  display: flex;
470e41f4b71Sopenharmony_ci  flex-direction: column;
471e41f4b71Sopenharmony_ci}
472e41f4b71Sopenharmony_ci.title{
473e41f4b71Sopenharmony_ci  font-size: 40px;
474e41f4b71Sopenharmony_ci  margin-left: 40px;
475e41f4b71Sopenharmony_ci}
476e41f4b71Sopenharmony_ci.switch-block {
477e41f4b71Sopenharmony_ci  margin-top: 30px;
478e41f4b71Sopenharmony_ci  width: 98%;
479e41f4b71Sopenharmony_ci  height: 80px;
480e41f4b71Sopenharmony_ci  display: flex;
481e41f4b71Sopenharmony_ci  justify-content: space-between;
482e41f4b71Sopenharmony_ci}
483e41f4b71Sopenharmony_ci.switch{
484e41f4b71Sopenharmony_ci  font-size: 40px;
485e41f4b71Sopenharmony_ci}
486e41f4b71Sopenharmony_ci.bar-block {
487e41f4b71Sopenharmony_ci  margin-top: 80px;
488e41f4b71Sopenharmony_ci  margin-left: 40px;
489e41f4b71Sopenharmony_ci  position: relative;
490e41f4b71Sopenharmony_ci  width: 90%;
491e41f4b71Sopenharmony_ci  border-radius: 10px;
492e41f4b71Sopenharmony_ci  background-color: #25FAB27B;
493e41f4b71Sopenharmony_ci  height: 40%;
494e41f4b71Sopenharmony_ci  justify-content: center;
495e41f4b71Sopenharmony_ci}
496e41f4b71Sopenharmony_ci```
497e41f4b71Sopenharmony_ci
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ci```js
500e41f4b71Sopenharmony_ci// xxx.js
501e41f4b71Sopenharmony_ciexport default {
502e41f4b71Sopenharmony_ci  data: {
503e41f4b71Sopenharmony_ci    interval: null,
504e41f4b71Sopenharmony_ci    title: "Data Display",
505e41f4b71Sopenharmony_ci    allowScale: true,
506e41f4b71Sopenharmony_ci    dataLength: 30,
507e41f4b71Sopenharmony_ci    barGroup: 3,
508e41f4b71Sopenharmony_ci    lineData: null,
509e41f4b71Sopenharmony_ci    lineOps: {
510e41f4b71Sopenharmony_ci      xAxis: {
511e41f4b71Sopenharmony_ci        min: 0,
512e41f4b71Sopenharmony_ci        max: 5
513e41f4b71Sopenharmony_ci      },
514e41f4b71Sopenharmony_ci      yAxis: {
515e41f4b71Sopenharmony_ci        min: 0,
516e41f4b71Sopenharmony_ci        max: 100
517e41f4b71Sopenharmony_ci      },
518e41f4b71Sopenharmony_ci      series: {
519e41f4b71Sopenharmony_ci        lineStyle: {
520e41f4b71Sopenharmony_ci        width: '1px',
521e41f4b71Sopenharmony_ci      },
522e41f4b71Sopenharmony_ci        headPoint: {
523e41f4b71Sopenharmony_ci          shape: 'circle',
524e41f4b71Sopenharmony_ci          size: 10,
525e41f4b71Sopenharmony_ci          strokeWidth: 2,
526e41f4b71Sopenharmony_ci          fillColor: '#ffffff',
527e41f4b71Sopenharmony_ci          strokeColor: '#8477DF'
528e41f4b71Sopenharmony_ci        },
529e41f4b71Sopenharmony_ci        loop: {
530e41f4b71Sopenharmony_ci          margin: 2
531e41f4b71Sopenharmony_ci        }
532e41f4b71Sopenharmony_ci      }
533e41f4b71Sopenharmony_ci    },
534e41f4b71Sopenharmony_ci    barData: [
535e41f4b71Sopenharmony_ci      {
536e41f4b71Sopenharmony_ci        fillColor: '#97CF0A2C',
537e41f4b71Sopenharmony_ci        data: [20, 20,40, 56]
538e41f4b71Sopenharmony_ci      },
539e41f4b71Sopenharmony_ci      {
540e41f4b71Sopenharmony_ci        fillColor: '#6D0A7ACF',
541e41f4b71Sopenharmony_ci        data: [52, 40, 2, 67]
542e41f4b71Sopenharmony_ci      },
543e41f4b71Sopenharmony_ci      {
544e41f4b71Sopenharmony_ci        fillColor: '#6A0ACFA1',
545e41f4b71Sopenharmony_ci        data: [56, 2, 77, 40]
546e41f4b71Sopenharmony_ci      }
547e41f4b71Sopenharmony_ci    ],
548e41f4b71Sopenharmony_ci    barOps: {
549e41f4b71Sopenharmony_ci      xAxis: {
550e41f4b71Sopenharmony_ci        min: 0,
551e41f4b71Sopenharmony_ci        max: 20,
552e41f4b71Sopenharmony_ci        axisTick: 5
553e41f4b71Sopenharmony_ci      },
554e41f4b71Sopenharmony_ci      yAxis: {
555e41f4b71Sopenharmony_ci        min: 0,
556e41f4b71Sopenharmony_ci        max: 100
557e41f4b71Sopenharmony_ci      }
558e41f4b71Sopenharmony_ci    }
559e41f4b71Sopenharmony_ci  },
560e41f4b71Sopenharmony_ci  onInit() {
561e41f4b71Sopenharmony_ci    this.changeLine();
562e41f4b71Sopenharmony_ci  },
563e41f4b71Sopenharmony_ci  change(e) {
564e41f4b71Sopenharmony_ci    if (e.checked) {
565e41f4b71Sopenharmony_ci      this.interval = setInterval(() => {
566e41f4b71Sopenharmony_ci        this.changeLine();
567e41f4b71Sopenharmony_ci        this.changeBar();
568e41f4b71Sopenharmony_ci      }, 1000)
569e41f4b71Sopenharmony_ci    } else {
570e41f4b71Sopenharmony_ci      clearInterval(this.interval);
571e41f4b71Sopenharmony_ci    }
572e41f4b71Sopenharmony_ci  },
573e41f4b71Sopenharmony_ci  changeLine() {
574e41f4b71Sopenharmony_ci    var dataArray = [];
575e41f4b71Sopenharmony_ci    for (var i = 0; i < this.dataLength; i++) {
576e41f4b71Sopenharmony_ci      var nowValue = Math.floor(Math.random() * 99 + 1);
577e41f4b71Sopenharmony_ci      var obj = {
578e41f4b71Sopenharmony_ci        "value": nowValue,
579e41f4b71Sopenharmony_ci        "description": nowValue + "",
580e41f4b71Sopenharmony_ci        "textLocation": "top",
581e41f4b71Sopenharmony_ci        "textColor": "#CDCACA",
582e41f4b71Sopenharmony_ci        "pointStyle": {
583e41f4b71Sopenharmony_ci          "shape": "circle",
584e41f4b71Sopenharmony_ci          "size": 5,
585e41f4b71Sopenharmony_ci          "fillColor": "#CF0A2C",
586e41f4b71Sopenharmony_ci          "strokeColor": "#CF0A2C"
587e41f4b71Sopenharmony_ci        }
588e41f4b71Sopenharmony_ci      };
589e41f4b71Sopenharmony_ci      dataArray.push(obj);
590e41f4b71Sopenharmony_ci    }
591e41f4b71Sopenharmony_ci    this.lineData = [
592e41f4b71Sopenharmony_ci      {
593e41f4b71Sopenharmony_ci        strokeColor: '#0081ff',
594e41f4b71Sopenharmony_ci        fillColor: '#FF07CDC4',
595e41f4b71Sopenharmony_ci        data: dataArray,
596e41f4b71Sopenharmony_ci        gradient: true,
597e41f4b71Sopenharmony_ci      }
598e41f4b71Sopenharmony_ci    ]
599e41f4b71Sopenharmony_ci  },
600e41f4b71Sopenharmony_ci  changeBar() {
601e41f4b71Sopenharmony_ci    for (var i = 0;i < this.barGroup; i++) {
602e41f4b71Sopenharmony_ci      var dataArray = this.barData[i].data;
603e41f4b71Sopenharmony_ci      for (var j = 0;j < 4; j++) {
604e41f4b71Sopenharmony_ci        dataArray[j] = Math.floor(Math.random() * 99 + 1);
605e41f4b71Sopenharmony_ci      }
606e41f4b71Sopenharmony_ci    }
607e41f4b71Sopenharmony_ci    this.barData = this.barData.splice(0, this.barGroup + 1);
608e41f4b71Sopenharmony_ci  },
609e41f4b71Sopenharmony_ci  changes(e) {
610e41f4b71Sopenharmony_ci    console.log("Tab index: " + e.index);
611e41f4b71Sopenharmony_ci  },
612e41f4b71Sopenharmony_ci}
613e41f4b71Sopenharmony_ci
614e41f4b71Sopenharmony_ci```
615e41f4b71Sopenharmony_ci
616e41f4b71Sopenharmony_ci![en-us_image_0000001232162328](figures/en-us_image_0000001232162328.gif)