在使用 Dojo 的图形库时,我有一个蜘蛛图,定义如下:
require([
"dojox/charting/Chart",
"dojox/charting/themes/Claro",
"dojox/charting/plot2d/Spider",
"dojox/charting/action2d/Tooltip",
"dojox/charting/widget/SelectableLegend",
"dojox/charting/axis2d/Default"
], function (Chart, theme, Spider, Tooltip, Legend, Default) {
var chart = new Chart(element).setTheme(theme).addPlot("default", {
type: Spider,
radius: 200,
fontColor: "black",
labelOffset: "-20"
});
var colors = ["blue", "red", "green", "yellow", "purple", "orange", "teal",
"maroon", "olive", "lime", "aqua", "fuchsia"];
$.each(factors, function (index, factor) {
chart.addAxis(factor.name, {
type: Default,
min: factor.min,
max: factor.max
});
});
$.each(presets, function (pIndex, preset) {
var data = [];
$.each(factors, function (fIndex, factor) {
data[factor.name] = preset.values[fIndex];
});
chart.addSeries(preset.short, data, {
fill: colors[pIndex % colors.length]
});
});
new Tooltip(chart, "default");
chart.render();
new Legend({
chart: chart,
horizontal: false
}, $(element).next(".legend")[0]);
});
我为调用的数组的每个成员添加了一个系列,presets
并使用了一个可选择的图例,让用户可以根据需要打开或关闭它们。但是,我在文档中似乎找不到的是如何在未选择、不可见的状态下开始一个系列?我最理想的做法是限制页面加载时可见的系列数量,因为在某些情况下,我有多达 14 个预设,而且在用户取消选择一堆之前,它看起来一团糟。因此,我希望在开始时隐藏前 5 个以上的每个预设。
这是我敲过的一个粗略的小提琴来演示。我想要的是在第一次显示情节时取消选择一些系列。
更新:我在添加我的系列后尝试添加这个:
var checkboxes = $(".dijitCheckBoxInput").each((index, elem) => {
if (index > 4) {
elem.click();
}
});
哪个有效,但似乎非常脆弱。如果他们更改分配给复选框的类,它将中断。此外,它禁止我使用一组以上的 dojo 复选框,因为我没有很好的方法来区分它们。SelectableLegend
(注意,由dijit_form_CheckBox_0
,等添加的复选框的 IDdijit_form_CheckBox_1
也没有提供有关它们相关内容的有用信息)。我想我也许可以使用图例占位符 div 作为选择后代复选框的一种方式,但似乎 Dojo 完全用表格替换了占位符。