Each document property triggers the corresponding iron python script when the value changes
for the category doc prop: reads the combination chart color and series type from the selected category
from Spotfire.Dxp.Application.Visuals import CombinationChart, CategoryKey
#cast visual to combo chart
combinationChart = vis.As[CombinationChart]()
category = CategoryKey(Document.Properties["category"])
#get type
Document.Properties["type"] = str(combinationChart.IndexedSeriesType[category])
#get color
import re
color = str(combinationChart.ColorAxis.Coloring.GetColorForCategory(category))
color = re.findall(r"\[([^\[\]]+)\]", color)[0]
Document.Properties["color"] = color.lower()
for the color doc prop: changes the color for the selected category
from Spotfire.Dxp.Application.Visuals import CombinationChart, CategoryKey
from System.Drawing import Color
#cast visual to combo chart
combinationChart = vis.As[CombinationChart]()
#get script parameters from doc props
category = CategoryKey(Document.Properties["category"]) #string representing a category from the series
color = Color.FromName(Document.Properties["color"]) #named color such as blue, green, magenta, beige...
#color = Color.FromArgb(255,0,0) #if you know the rgb values
#if hexadecimal color (hc) comes from a color picker (#FF0000)
#color = Color.FromArgb(int(hc[1:3], 16), int(hc[3:5], 16), int(hc[5:7], 16))
# change the color for the corresponding category
combinationChart.ColorAxis.Coloring.SetColorForCategory(category,color)
and for the type dropdown that changes the series type for the selected category:
from Spotfire.Dxp.Application.Visuals import CombinationChart, CombinationChartSeriesType, CategoryKey
#cast visual to combo chart
combinationChart = vis.As[CombinationChart]()
#get script parameters from doc props
category = CategoryKey(Document.Properties["category"])
#string representing a category from the series
type = CombinationChartSeriesType.Bar if Document.Properties["type"] == "Bar" else CombinationChartSeriesType.Line
# change series type as Bar or line
combinationChart.IndexedSeriesType[category] = type
No comments:
Post a Comment