这是我在这里发表的第一篇文章,所以如果我在此过程中在礼仪方面失败,请原谅我。
我正在开发一个 POC,用于处理 Tibco Spotfire 7.0 中的可视化动画,这将允许用户通过迭代一组过滤器或基于一组预先确定的数据迭代更改数据来查看数据随时间的变化。状况。 TIBCOmmunity 已经为此目的定义了一个自定义工具http://tibcoanalytics.com/spotfire/archive/totw/2011-01-16.html。然而,我的任务是证明这可以在 Iron Python 脚本中完成。 POC 在概念上相当简单,我需要一个动作控件来将散点图上的点绕一圈移动。下面是我目前正在使用的 Python。我遇到的问题是强制 Spotfire 更新/刷新循环内的可视化。帮助?
import time
import math
R = Rad; #parameter containing the radius of the circle
x_0 = xc; #parameter containing the center x coord
y_0 = yc; #parameter containing the center y coord
t=0.00
while t<(2*math.pi):
x = R*(math.cos(t)) + x_0;
y = R*(math.sin(t)) + y_0;
t+=0.01
Document.Properties['xc'] = x
Document.Properties['yc'] = y
#code to force the visualization/document to refresh/update goes here
time.sleep(1/360)
这并不直接回答您的问题,而是为您提供了一种创建可以与文档属性交互的计时器的方法。抱歉,我没有时间提供明确的答案。因此,请不要将其标记为已接受——也许其他人有更好的。
您的代码不起作用的原因是 IronPython 引擎锁定 Spotfire,直到执行完成。您可以假设可视化不会更新:事实上,整个应用程序都不会更新!正如我在评论中提到的,您可以通过将睡眠值设置为 1 秒来测试这一点。
我创建this DXP前段时间演示了如何允许 IronPython 和 Javascript 代码在文本区域内相互交互。这IP->JS页面应该为您提供一些有关如何构建动画解决方案的线索。
这里幕后发生了什么:
- 内部的 Spotfire 属性控件(输入区域)
<div>
允许用户输入文本
- 一个名为的 Javascript 函数
update
定期运行:var timer = setInterval(update, 1000);
- the
update
函数使用 JQuery 通过其父级访问输入区域<div>
: var text_in = $("#input_container").text();
-
update
最后替换“输出”容器中的文本<div>
修改后的文本:$("#output_container").html(rainbowize(text_in));
您可以修改此示例以使用 JQuery 输出到文档属性链接的输入区域。换句话说,使用 Javascript 计时器setInterval()
代替time.sleep()
.
我希望我已经很好地解释了这一点。如果不清楚,请告诉我:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)