8
8
formatExcelDate ,
9
9
} from './utils.js' ;
10
10
import getTheme from './chartLightTheme.js' ;
11
- import { replaceKey } from '../../features/placeholders.js' ;
12
11
13
12
export const SMALL = 'small' ;
14
13
export const MEDIUM = 'medium' ;
@@ -192,12 +191,13 @@ export const tooltipFormatter = (params, units) => {
192
191
return tooltip ;
193
192
} ;
194
193
195
- export const barSeriesOptions = ( chartType , hasOverride , firstDataset , colors , size , yUnits ) => {
194
+ export const barSeriesOptions = ( chartType , hasOverride , dimensions , colors , size , yUnits ) => {
196
195
const isLarge = size === LARGE ;
197
196
const isBar = chartType === 'bar' ;
198
197
199
- return firstDataset . map ( ( value , index ) => ( {
198
+ return dimensions . map ( ( value , index ) => ( {
200
199
type : 'bar' ,
200
+ name : value ,
201
201
label : {
202
202
show : isBar ,
203
203
formatter : `{@[${ index + 1 } ]}${ yUnits [ 0 ] } ` ,
@@ -220,11 +220,12 @@ export const barSeriesOptions = (chartType, hasOverride, firstDataset, colors, s
220
220
} ) ) ;
221
221
} ;
222
222
223
- export const lineSeriesOptions = ( series , firstDataset , xUnit , yUnits ) => {
223
+ export const lineSeriesOptions = ( series , dimensions , xUnit , yUnits ) => {
224
224
const marks = processMarkData ( series , xUnit ) ;
225
225
226
- return firstDataset . map ( ( value , index ) => {
226
+ return dimensions . map ( ( value , index ) => {
227
227
let options = {
228
+ name : value ,
228
229
type : 'line' ,
229
230
symbol : 'none' ,
230
231
lineStyle : { width : 3 } ,
@@ -239,9 +240,10 @@ export const lineSeriesOptions = (series, firstDataset, xUnit, yUnits) => {
239
240
} ) ;
240
241
} ;
241
242
242
- export const areaSeriesOptions = ( firstDataset ) => (
243
- firstDataset . map ( ( ) => ( {
243
+ export const areaSeriesOptions = ( dimensions ) => (
244
+ dimensions . map ( ( value ) => ( {
244
245
type : 'line' ,
246
+ name : value ,
245
247
symbol : 'none' ,
246
248
areaStyle : { opacity : 1 } ,
247
249
stack : 'area' ,
@@ -351,7 +353,7 @@ export const getChartOptions = ({
351
353
} ) => {
352
354
const hasOverride = headers ? hasPropertyCI ( headers , 'color' ) : false ;
353
355
const source = dataset ?. source ;
354
- const firstDataset = source ?. [ 1 ] ?. slice ( ) || [ ] ;
356
+ const dimensions = source ?. [ 0 ] ?. slice ( ) || [ ] ;
355
357
const isBar = chartType === 'bar' ;
356
358
const isColumn = chartType === 'column' ;
357
359
const isPie = chartType === 'pie' ;
@@ -365,7 +367,7 @@ export const getChartOptions = ({
365
367
yUnits = units . length > 1 ? units . slice ( 1 ) : [ '' ] ;
366
368
}
367
369
368
- firstDataset . shift ( ) ;
370
+ dimensions . shift ( ) ;
369
371
370
372
let bottomGrid = 90 ;
371
373
@@ -387,6 +389,21 @@ export const getChartOptions = ({
387
389
inactiveColor : '#6C6C6C' ,
388
390
type : 'scroll' ,
389
391
} ,
392
+ aria : {
393
+ enabled : true ,
394
+ label : {
395
+ general : { withTitle : 'This is a chart' } ,
396
+ series : {
397
+ maxCount : 1 ,
398
+ multiple :
399
+ {
400
+ prefix : '. It consists of {seriesCount} series count ' ,
401
+ withName : `with series ${ dimensions . join ( ', ' ) } . ` ,
402
+ } ,
403
+ } ,
404
+ data : { separator : { middle : `${ yUnits } , ` , end : yUnits } } ,
405
+ } ,
406
+ } ,
390
407
title : isDonut ? donutTitleOptions ( source , series , yUnits [ 0 ] , size ) : { } ,
391
408
tooltip : {
392
409
show : true ,
@@ -431,10 +448,10 @@ export const getChartOptions = ({
431
448
) ) ( ) ,
432
449
series : ( ( ) => {
433
450
if ( isBar || isColumn ) {
434
- return barSeriesOptions ( chartType , hasOverride , firstDataset , colors , size , yUnits ) ;
451
+ return barSeriesOptions ( chartType , hasOverride , dimensions , colors , size , yUnits ) ;
435
452
}
436
- if ( chartType === 'line' ) return lineSeriesOptions ( series , firstDataset , xUnit , yUnits ) ;
437
- if ( chartType === 'area' ) return areaSeriesOptions ( firstDataset ) ;
453
+ if ( chartType === 'line' ) return lineSeriesOptions ( series , dimensions , xUnit , yUnits ) ;
454
+ if ( chartType === 'area' ) return areaSeriesOptions ( dimensions ) ;
438
455
if ( isDonut ) return donutSeriesOptions ( size ) ;
439
456
if ( isPie ) return pieSeriesOptions ( size ) ;
440
457
return [ ] ;
@@ -464,6 +481,7 @@ const initChart = ({
464
481
const chart = window . echarts ?. init ( chartWrapper , themeName , { renderer : 'svg' } ) ;
465
482
466
483
chartWrapper . tabIndex = 0 ;
484
+ chartWrapper . role = 'img' ;
467
485
chart . setOption ( chartOptions ) ;
468
486
469
487
if ( chartType === 'donut' ) {
@@ -642,6 +660,8 @@ const init = (el) => {
642
660
</svg>` ;
643
661
644
662
chartWrapper . innerHTML = html ;
663
+ chartWrapper . role = 'img' ;
664
+ chartWrapper . ariaLabel = `${ number } ${ data ?. subtitle } ` ;
645
665
} )
646
666
// eslint-disable-next-line no-console
647
667
. catch ( ( error ) => console . log ( 'Error loading script:' , error ) ) ;
@@ -692,8 +712,6 @@ const init = (el) => {
692
712
observer . observe ( el ) ;
693
713
}
694
714
695
- const title = children [ 0 ] ?. textContent . trim ( ) || children [ 1 ] ?. textContent . trim ( ) ;
696
- chartWrapper . setAttribute ( 'aria-label' , `${ await replaceKey ( `${ chartType } -chart` , config ) } : ${ title } ` ) ;
697
715
/* c8 ignore next 4 */
698
716
window . addEventListener ( 'resize' , throttle (
699
717
1000 ,
0 commit comments