如何在 Oracle Apex 中使用静态 ID 定位图表系列?

How to locate the chart series using static ID in Oracle Apex?

我现在正在使用Oracle Apex 构建一个Web 应用程序,我想使用Javascript 为图表系列添加样式class 后单击一个按钮。根据 Add filters to Interactive Grid via Javascript,我知道可以通过 static id 找到该区域并对其进行操作。因此,我给图表系列一个静态ID,我想知道如何找到图表系列,并在动态操作中使用Javascript向图表添加样式css。

更新:

基于示例图表(区域)示例,我创建了一个名为change color 的按钮,并定义了一个动态操作,当单击该按钮时将触发该操作。真正的动作是执行Javascript代码,如下所列:

    $(function( options ) {

    // Setup a callback function which gets called when data is retrieved, to manipulate the series data
    options.dataFilter = function( data ) {
        data.series[ 0 ].color = "#90ee90";
        return data;
    };

    return options;
});

执行完Javascript后,data.series[0]应该变成绿色。然而,执行后没有任何反应。

您应该使用 JavaScript,而不是 CSS...登录您的 APEX 工作区,单击应用程序库选项卡,然后安装示例图表应用程序。安装完成后,单击 运行。登录到应用程序,单击导航菜单中的面积,然后单击 select 面积图颜色(JavaScript 代码自定义)选项卡。这可能是您最好的起点。

转到编辑页面,select 面积图的属性(颜色 JavaScript 代码自定义)区域,然后向下滚动到高级 > JavaScript 初始化代码。在那里,您会看到这段代码:

function( options ) {

    // Setup a callback function which gets called when data is retrieved, to manipulate the series data
    options.dataFilter = function( data ) {

        data.series[ 0 ].color = "#ED6647";
        data.series[ 0 ].borderColor = "#0F3248";
        data.series[ 0 ].markerDisplayed = "on";
        data.series[ 0 ].markerShape = "plus";
        data.series[ 0 ].markerColor = "red";
        data.series[ 0 ].markerSize = 8;
        data.series[ 0 ].pattern = "smallChecker";
        return data;
    };

    return options;
}

查看 JET API 文档以了解有关系列选项的更多信息:https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojChartSeries.html

如果您想在初始化后更改颜色,则需要使用 option 方法来获取系列数组。从那里,您可以更新所需系列的颜色 属性,然后调用 refresh 方法来更新 DOM.

var series = apex.region("area1").widget().ojChart('option', 'series');

series[0].color = '#ED6647';

apex.region("area1").widget().ojChart('refresh');