我有一个Web HTML页面,其中包含一些基于dojox.charting的客户端JS代码。我的本地网站上没有dojo库(实际上没有Web服务器)。我使用dojos的xDomain引用功能和src一起google的托管网站:
<head>
...
<script type="text/javascript"
djConfig1="isDebug:true"
src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js">
</script>
<script type="text/javascript"
dojo.require("dojox.gfx");
dojo.require("dojox.gfx.move");
dojo.require("dojo.html");
dojo.require("dojox.charting.Chart2D");
dojo.require("dojox.charting.themes.PlotKit.green");
dojo.require("dojox.charting.action2d.Highlight");
dojo.require("dojox.charting.action2d.Magnify");
dojo.require("dojox.charting.action2d.MoveSlice");
dojo.require("dojox.charting.action2d.Shake");
dojo.require("dojox.charting.action2d.Tooltip");
dojo.require("dojox.charting.themes.MiamiNice");
dojo.require("dojox.charting.widget.Legend");
</script>
....
</head>
以下是根据Dojo: Now With Drawing Tools中的代码创建曲线图的功能。
function drawCurve(nodeChart, nodeLegend) {
var chart1 = new dc.Chart2D(nodeChart)
.setTheme(dc.themes.PlotKit.green)
.addPlot("default", {
type: "Default",
lines: true,
markers: true,
tension: 2
})
.addAxis("x", {
min: 0,
max: 6,
majorTick: { stroke: "black", length: 3 },
minorTick: { stroke: "gray", length: 3 }
})
.addAxis("y", {
vertical: true,
min: 0,
max: 10,
fixLower: "major",
fixUpper: "major",
majorTick: { stroke: "black", length: 3 },
minorTick: { stroke: "gray", length: 3 }
})
.addSeries("Series A", [
{ x: 0.5, y: 5 },
{ x: 1.5, y: 1.5 },
{ x: 2, y: 9 },
{ x: 5, y: 0.3 }
])
.addSeries("Series B", [
{ x: 0.3, y: 8 },
{ x: 4, y: 6, tooltip: "Custom tooltip"},
{ x: 5.5, y: 2 }
]);
var series = chart1.series;
var anim_a = new dc.action2d.Tooltip(chart1, "default");
var anim_c = new dc.action2d.Magnify(chart1, "default"); // not working
chart1.render();
var legendChart = new dc.widget.Legend(
{chart: chart1, horizontal: false}, nodeLegend.id);
}
我的第一个问题是,对于曲线图,沿y轴的数字仅显示0和10.不显示所有中间数字1到9。 x轴的值从1到6是可见的。文章中的原始图表快照也会显示y轴值,但DojoToolKit Demos上的图表确实显示沿y轴的值。我不确定我的代码中遗漏了什么。如何启用显示y轴值?
接下来的问题是Magnify()。 DojoToolKit演示网站的曲线图工作正常,但我的图表的放大功能不起作用。我认为这可能是由xDomain引用引起的。我可能需要从xDomain的dojox库中指定一些指定的js文件。我不确定我必须指定哪一个。
我注意到的一件事是我的FireBug在绘制曲线图后显示以下错误:
_4.fx.combine is not a function http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojox/charting/action2d/Magnify.xd.js Line 8
_11.action is undefined http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojox/charting/action2d/Magnify.xd.js Line 8
我认为那些未定义的错误可能表示我错过了在我的脑部加载一些dojox库文件。
顺便说一下,我没有网络服务器,我更喜欢使用dojo的xDomain引用选项。通过这种方式,我可以在任何地方编辑html文件并将其发送给其他人。无需下载和安装dojo源库。
答案 0 :(得分:0)
我想我得到了缺失的部分:
dojo.require("dojo.fx");
当我将此行添加到我的HTML头部设置中时,请参阅上面的Mangify()设置的动画部分正在运行。这仅适用于为dojox.charting库设置doDox的xDomain引用的情况。
我发现这是通过使用Firebug来查看DojoToolKit's Event 2D web page。在head部分有代码:
<script src="http://../action2/Magnify.js" type="text/javascript"></script>
该页面已启用调试。因此,在FireBug窗口中,您将看到js的良好布局的源代码。我看到了三个要求,一个是“dojo.fx”。我尝试添加这个。然后没有更多错误,当我将鼠标移动到图表曲线中的点上时,我可以看到放大效果的动画。
有趣的是关于&lt; script src =“..”&gt;如果js是xDomain引用,js源代码将在一个很长的时间内部分显示。如果您拥有安装在网页上的dojo库,即同一个域,那么dojo的源代码就能很好地显示出来。
答案 1 :(得分:0)
关于y轴值,我也找到了显示它们的简便方法(0到9):
.addAxis("y", {
vertical: true,
//min: 0
//max: 10
....
您也可以只注释分钟,并将最大值保留为10(0,1,...到10)。有关轴设置的详细信息,请参阅DojoCampus.org。