Spotfire Java脚本将字段拆分为唯一值,并每30秒更新一次MapChart可视化,以反映值的变化

Spotfire Java Script to split a field into unique values and Update MapChart Visualization every 30seconds reflecting change in value

本文关键字:一次 MapChart 可视化 变化 更新 字段 脚本 Java 拆分 Spotfire 30秒      更新时间:2023-09-26

我遇到了与线程相同的问题(Spotfire IronPython 脚本,用于滚动过滤器并每一步更新可视化(通过日期范围播放按钮)),但以列表框的形式使用 IP 在 spotfire 中过滤。我有一个名为"Magic"的动作控制按钮。我想做的是,当点击此按钮时,代码将首先计算出数据字段中唯一值的数量,并将这些值填充到列表框中。然后,我从那里提取出要在地图可视化中显示的字段。可视化应该在某个指定的时间间隔后改变外观,但如前所述,这在 IP 中不起作用。我在下面附上了我的代码。有人有机会指导我如何在 HTML 和 JS 中实现这一点吗?我对他们的经验很少。提前非常感谢!

#!/usr/bin/python
import time
import Spotfire.Dxp.Application.Filters as filters
import Spotfire.Dxp.Application.Filters.ListBoxFilter
from Spotfire.Dxp.Application.Filters import FilterTypeIdentifiers
from Spotfire.Dxp.Data import *
from Spotfire.Dxp.Application.Filters import *
finalStr = ""
found, nodes = myTable.Columns["FSY_CODE"].Hierarchy.Levels.LeafLevel.TryGetNodes(int.MaxValue)
for node in nodes:
    finalStr = finalStr + ',' + node.Value.ValidValue + ''
finalStr = finalStr.strip(',')
print(finalStr)
myPanel=Application.Document.ActivePageReference.FilterPanel
myFilter=myPanel.TableGroups[1].GetFilter("FSY_CODE")
myFilter.FilterReference.As[ListBoxFilter]().Reset()
myFilter.FilterReference.As[ListBoxFilter]().IncludeAllValues = False
def p1():
    myFilter.FilterReference.As[ListBoxFilter]().SetSelection("E")
    print("Proc 1")
def p2():
    myFilter.FilterReference.As[ListBoxFilter]().SetSelection("H")
    print("Proc 2")
def p3():
    myFilter.FilterReference.As[ListBoxFilter]().SetSelection("P")
    print("Proc 3")
p1()
time.slp(5)
p2()
time.slp(5)
p3()

#if myTable.IsRefreshable and myTable.NeedsRefresh:
#   myTable.Refresh()
#myFilter.FilterReference.As[ListBoxFilter]().SetSelection(finalStr.split(','))

如果你还没有,请阅读我@kaorie提到的原始答案。 一定要看看我提供的示例DXP,因为我试图在我的解释中非常详细。 如果您仍然对此有疑问,请碰到此线程。