我想在spot fire中更改分配给Document Property的值。假设我已经创建了一个名为" Test1"作为一个字符串,并为其分配一个值" a"。每次加载Spotfire仪表板时,是否有办法使用Javascript更改此值?
答案 0 :(得分:1)
我不知道如何使用JavaScript,但您可以通过自定义表达式(如果它是列表框)分配string
文档属性,或者每次值更改时运行IronPython脚本。因此,您可以将表达式设置为当前日期datetimenow()
,然后每次加载时都会触发IronPython脚本。但是,我不明白为什么你需要属性控制。
我想这实际上取决于你想要将文档属性设置为什么。它是您桌子上的数据吗?复杂代码的输出?这些都是需要考虑的事情。
答案 1 :(得分:1)
1)使用您想要更改的文档属性创建输入类型属性控件。
2)编辑Html为父元素分配一个id" testInput"。并在编辑HTML窗口中添加如下所示的脚本。
<span id="testInput"><SpotfireControl id="7db34e6c423240f59fc99e6b80fa23ec" /></span>
<script>
$("#testInput input").val("after");
$("#testInput input").focus();
$("#testInput input").blur();
</script>
3)此脚本将文件属性值更改为&#34;&#34;无论何时打开文件。
答案 2 :(得分:0)
正如你的评论似乎暗示的那样,你可以做的是用Python编写这段代码并将脚本附加到动作控件e.i.链接或按钮。简单的事情:Document.Properties["Test1"] = newValue
甚至:Document.Properties[changingProperty] = newValue
允许代码更可重用。
然后您将Javascript插入文本区域以及:$("#VeryLongSpotfireControlID").click();
应该模拟单击操作控件,然后触发Python脚本更新值。注意不要使用这种方法,因为这会导致重新加载文本区域HTML,因为这将重新触发Javascript,从而创建一个无限循环。
答案 3 :(得分:0)
我相信我已经找到了一个可能的解决方案/解决方法,它完全基于纯JavaScript(因为TIBCO从Spotfire X开始删除了jQuery)。解决方案是在聚焦输入框时触发模拟的Enter键,以触发更新文档属性。 (无需数据功能和R)
HTML(SpotfireControl元素是文档属性的单行输入框):
<div id="container"><SpotfireControl id="b8534f13dc62416db6d4eaab16030f5e" /></div>
JS(此解决方案可能不再需要聚焦和模糊处理,但我还是以防万一):
const inputConfirmationEvent = new KeyboardEvent("keypress", {
keyCode: 13,
bubbles: true,
cancelable: false
});
var elem = document.querySelector("#container input");
elem.value = "stringValue";
elem.blur();
elem.focus();
document.querySelector("#container input").dispatchEvent(inputConfirmationEvent);
希望它可以帮助某人。
最好, 亚伦