在运行时设置 <chart:guide> 值

Set <chart:guide> value at runtime

我正在尝试访问

<chart:guide>
来自屏幕控制器的

值 属性,但我找不到任何 getter 来达到它。 xml块是这样的:

<chart:valueAxes>
 <chart:axis position="LEFT"
  stackType="REGULAR"
  title="Graph Title">
  <chart:guides>
   <chart:guide
    value="0"
    inside="true"
    lineAlpha="1"
   />
  </chart:guides>
 </chart:axis>
</chart:valueAxes>

我需要在运行时设置指南的值。有什么建议吗?

假设我们有以下 SerialChart:

<chart:serialChart id="serialChart"
                   caption="Serial chart"
                   height="100%"
                   width="100%"
                   categoryField="x">
    <chart:graphs>
        <chart:graph valueField="y"/>
    </chart:graphs>
    <chart:valueAxes>
        <chart:axis position="LEFT">
            <chart:guides>
                <chart:guide value="12"
                             inside="true"
                             lineAlpha="1"/>
            </chart:guides>
        </chart:axis>
    </chart:valueAxes>
    <chart:data>
        <chart:item>
            <chart:property name="x" value="10"/>
            <chart:property name="y" value="12"/>
        </chart:item>
        <chart:item>
            <chart:property name="x" value="11"/>
            <chart:property name="y" value="2"/>
        </chart:item>
        <chart:item>
            <chart:property name="x" value="12"/>
            <chart:property name="y" value="120"/>
        </chart:item>
        <chart:item>
            <chart:property name="x" value="13"/>
            <chart:property name="y" value="16"/>
        </chart:item>
    </chart:data>
</chart:serialChart>

您可以简单地获取 ValueAxis 然后通过索引获取 Guide 对象或迭代集合并通过 id(Guide 的可选属性)查找:

@Inject
private SerialChart serialChart;

ValueAxis valueAxis = serialChart.getValueAxes().get(0);
Guide guide = valueAxis.getGuides().get(0);
guide.setValue(15);

serialChart.repaint();

注意,如果我们想更改已经显示的图表配置,那么我们必须调用 repaint() 方法。

如果您使用 CUBA 6.4 或更早版本,您必须首先使用 getConfiguration() 方法获取 Configuration 对象并将其转换为适当的图表类型,如下所示:https://doc.cuba-platform.com/charts-6.4/cdp_screen_controller.html