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 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 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci> **NOTE** 215e41f4b71Sopenharmony_ci> 216e41f4b71Sopenharmony_ci> The **<chart>** 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 **<chart>** 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 **<chart>** 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 405e41f4b71Sopenharmony_ci 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_ci## Example Scenario 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ciSelect the data display status using **<switch>**. When **<switch>** 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