【发布时间】:2013-07-07 16:12:33
【问题描述】:
我正在对从 MS SQL 服务器数据库中提取的一些数据进行强制定向布局(使用 d3.js http://bl.ocks.org/mbostock/raw/4062045/)。目前我正在使用 python 脚本生成 json 文件,然后使用 python -m SimpleHTTPServer 在本地服务器上运行它。
我想要做的是在我的 python 脚本和 HTML 之间创建一个链接,这样当我输入网址时,python 脚本应该在服务器端运行并生成 json 文件。在此期间,我需要阻止 UI。生成文件后,图形应显示在屏幕上。我可以分别生成图形和 json 文件。需要将它们与 blockui 或进度条放在一起(我认为进度条会太多)。
我是 javascript 和 web 开发的菜鸟,在创建我的图表时有点学习。对此方向的任何指导将不胜感激。
谢谢,
普拉提克
编辑:
目前的sn-p代码如下:
d3.json("json_data.json", function(error, graph)
{
var nodeMap = {};
graph.nodes.forEach(function(x) { nodeMap[x.name] = x; });
graph.links = graph.links.map(
function(x)
{
return {
source: nodeMap[x.source],
target: nodeMap[x.target],
value: x.value
};
});
force
.nodes(graph.nodes)
.links(graph.links)
.start();
我将把这段代码放在 ajax 请求的成功部分下。我希望脚本发送 ajax 请求一分钟,以查看服务器上是否存在 json_data.json 文件,并在创建文件时显示纺车,如果时间用完,则控制转移到错误请求部分。
json文件简单如下:
nodes: {}
links: {} //without any children level of depth.
【问题讨论】:
-
你不可能有一个真正的进度条(除非你做了一堆不值得的额外工作)。你可以只用一个纺车之类的东西吗?
-
是的。这就是为什么我说进度条的工作量太大了。纺车会很好。我可以阻止 UI 的任何体面的东西。
-
您可能需要重新考虑您的方法。阻止用户界面不是通常是一件好事。
-
malsup.com/jquery/block/#page。这就是我对 blockUI 的意思。由于我从 MS SQL Server 数据库中提取的数据非常庞大(超过 50K 行),因此我不希望用户在代码呈现图形时单击页面上的其他任何位置。你能详细说明为什么这不是一件好事吗?
标签: javascript jquery ajax d3.js