提交 9943ac02 编写于 作者: O Ovilia

feat(aria for all other chart types):

上级 72b5650a
......@@ -7,14 +7,20 @@ export default function (dom, ecModel) {
}
var maxDataCnt = ariaModel.get('maxDataCnt') || 10;
var maxSeriesCnt = ariaModel.get('maxSeriesCnt') || 10;
var series = [];
var seriesCnt = 0;
ecModel.eachSeries(function (seriesModel, idx) {
var type = seriesModel.type.substr('series.'.length);
series.push({
type: type,
desc: getSeriesDesc(type, seriesModel)
});
if (idx < maxSeriesCnt) {
var type = ariaModel.get('renderAs')
|| seriesModel.type.substr('series.'.length);
series.push({
type: type,
desc: getSeriesDesc(type, seriesModel)
});
}
++seriesCnt;
}, this);
var ariaLabel;
......@@ -31,7 +37,7 @@ export default function (dom, ecModel) {
}
if (series.length > 1) {
ariaLabel += '图表,它由' + series.length + '个图表系列组成。';
ariaLabel += '图表,它由' + seriesCnt + '个图表系列组成。';
}
zrUtil.each(series, function (s, id) {
......@@ -63,6 +69,36 @@ export default function (dom, ecModel) {
case 'scatter':
case 'effectScatter':
return '散点图';
case 'radar':
return '雷达图';
case 'tree':
return '树图';
case 'treemap':
return '矩形树图';
case 'boxplot':
return '箱型图';
case 'candlestick':
return 'K线图';
case 'heatmap':
return '热力图';
case 'map':
return '地图';
case 'parallel':
return '平行坐标图';
case 'lines':
return '线图';
case 'graph':
return '关系图';
case 'sankey':
return '桑基图';
case 'funnel':
return '漏斗图';
case 'gauge':
return '仪表盘图';
case 'pictorialBar':
return '象形柱图';
case 'themeRiver':
return '主题河流图';
default:
return '';
}
......@@ -70,30 +106,28 @@ export default function (dom, ecModel) {
function getSeriesDesc(type, seriesModel) {
var data = seriesModel.getData();
var dataCnt = data.indices.length;
var dataCnt = data.indices ? data.indices.length : 0;
var seriesName = seriesModel.get('name');
var displayDataCnt = Math.min(dataCnt, maxDataCnt);
var desc = (seriesName ? '表示' + seriesName + '' : '')
+ getSeriesTypeName(type) + ',包括' + dataCnt + '个数据项';
if (dataCnt > maxDataCnt) {
desc += '。其中,前' + maxDataCnt + '项是';
}
desc += '——';
+ getSeriesTypeName(type) + ',包括' + dataCnt + '个数据项。';
var dataDesc = '';
switch (type) {
case 'pie':
data.each('value', function (value, id) {
if (id < maxDataCnt) {
if (id < displayDataCnt) {
var percent = seriesModel.getDataParams(id).percent;
desc += data.getName(id) + '的数据是' + value
dataDesc += data.getName(id) + '的数据是' + value
+ ',占' + percent + '%';
if (id < maxDataCnt - 1) {
desc += '';
if (id < displayDataCnt - 1) {
dataDesc += '';
}
else {
desc += '';
dataDesc += '';
}
}
});
......@@ -105,36 +139,107 @@ export default function (dom, ecModel) {
var labels = baseAxis.scale.getTicksLabels();
zrUtil.each(data.indices, function (id, i) {
if (id < maxDataCnt) {
desc += labels[id] + '' + seriesModel.getRawValue(id);
if (id < displayDataCnt) {
dataDesc += labels[id] + '' + seriesModel.getRawValue(id);
if (i < maxDataCnt - 1) {
desc += '';
if (i < displayDataCnt - 1) {
dataDesc += '';
}
else {
desc += '';
dataDesc += '';
}
}
});
break;
case 'scatter':
case 'effectScatter':
case 'parallel':
zrUtil.each(data.indices, function (id, i) {
if (id < displayDataCnt) {
dataDesc += '[' + seriesModel.getRawValue(id) + ']';
if (i < displayDataCnt - 1) {
dataDesc += '';
}
else {
dataDesc += '';
}
}
});
break;
case 'radar':
case 'gauge':
var data = seriesModel.option.data;
zrUtil.each(data, function (d, i) {
if (i < displayDataCnt) {
dataDesc += (d.name ? d.name + '' : '') + d.value;
if (i < displayDataCnt - 1) {
dataDesc += '';
}
else {
dataDesc += '';
}
}
});
break;
case 'tree':
case 'treemap':
var root = seriesModel.getData().tree.root;
desc += '根节点';
if (root.name) {
desc += '' + root.name + '';
}
desc += '包含' + root.children.length + '个数据。';
break;
case 'boxplot':
var baseAxis = seriesModel.getBaseAxis();
var labels = baseAxis.scale.getTicksLabels();
zrUtil.each(data.indices, function (id, i) {
if (id < maxDataCnt) {
desc += '[' + seriesModel.getRawValue(id) + ']';
if (id < displayDataCnt) {
dataDesc += labels[id] + ''
+ seriesModel.getRawValue(id).join(', ');
if (i < maxDataCnt - 1) {
desc += '';
if (i < displayDataCnt - 1) {
dataDesc += '';
}
else {
desc += '';
dataDesc += '';
}
}
});
break;
case 'funnel':
data.each('value', function (value, id) {
if (id < displayDataCnt) {
dataDesc += data.getName(id) + '的数据占' + value + '%';
if (id < displayDataCnt - 1) {
dataDesc += '';
}
else {
dataDesc += '';
}
}
});
break;
}
if (dataDesc) {
if (dataCnt === displayDataCnt) {
// Display all data
desc += '其数据是——' + dataDesc;
}
else {
// Display part of data
desc += '其中,前' + displayDataCnt + '项是——' + dataDesc;
}
}
return desc;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册