为了账号安全,请及时绑定邮箱和手机立即绑定

在 dataPointStyle 规则回调中获取 SAPUI5 VizFrame 的 id

在 dataPointStyle 规则回调中获取 SAPUI5 VizFrame 的 id

收到一只叮咚 2022-12-02 15:45:26
我通过循环访问从我的服务vizframe获得的响应来生成一些动态柱形图。Odata我对图表的要求之一是根据数据中的字段值以不同颜色显示列。我们称之为验证状态。对于如何在正常情况下通过使用该方法并为属性setVizProperties设置规则来实现这一点,我有一个相当好的想法。dataPointStyle如果我对所有图表和所有值都有相同的标准,它仍然是可能的。但事实并非如此,因为我需要单独检查每条记录以确定其状态。所以我想到了使用dataPointStyle. 但这里的问题是,虽然它给了我上下文,但它没有告诉我这个回调是从哪个图表触发的。我的想法是,如果我得到图表名称或它的参考,那么我就可以访问它的模型并确定颜色。因此,如果我能以某种方式获得vizframe触发回调的参考,它将解决我的问题。callback 说明: function (data, extData) {...} => true|false 判断给定数据是否匹配规则的函数。参数:data是一个对象,所有绑定的字段id为键,对应的值为值。将它视为包含您在datapoint mouseover tooltip. 如果在FlatTableDataset上下文字段中设置了未绑定的维度或度量,则相关的键/值对也将包含在该参数中。 extData是一个对象,所有其他测量字段与当前数据点在同一行。度量 ID 作为键,对应的值作为值。它有助于比较不同措施之间的价值。我的数据看起来像这样:[{    "RunLogId": "0000000040",    "RuleId": "00016",    "CreatedOn": "2020-07-21",    "CreatedAt": "09:44:35",    "NAV_SUBSCRIBED_LOGS": {      "results": [        {          "RunLogId": "0000000040",          "Sequence": "00001",          "RuleId": "00016",          "Variation": "-3.94",          "ValidationStatus": "F",          "Dimension": "ABC"        },        {          "RunLogId": "0000000040",          "Sequence": "00002",          "RuleId": "00016",          "Variation": "1.04",          "ValidationStatus": "S",          "Dimension": "DEF"        }      ]    }  },  {    "RunLogId": "0000000033",    "RuleId": "00014",    "CreatedOn": "2020-07-15",    "CreatedAt": "11:10:09",    "NAV_SUBSCRIBED_LOGS": {      "results": [        {          "RunLogId": "0000000033",          "Sequence": "00001",          "RuleId": "00014",          "Variation": "-2.36",          "ValidationStatus": "F",          "Dimension": "ABC"        },        {          "RunLogId": "0000000033",          "Sequence": "00002",          "RuleId": "00014",          "Variation": "-5.05",          "ValidationStatus": "F",          "Dimension": "DEF"        }      ]    }  }]
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

不确定我是否理解正确,但无论如何我都会试一试。如果我错了,请告诉我。


您在循环中创建图表。您想要在回调中访问特定图表。


你为什么不访问oVizFrame你的回调?


首先,我会将 for 循环替换为forEach. forEach为数组中的每个元素调用给定函数:


aSubscriptions.forEach(function(oSubscription) {

    const oModel = new JSONModel();

    const chartData = oSubscription.NAV_SUBSCRIBED_LOGS.results;


    ...

}

在 for 循环中,您的变量被重用。在forEach函数中,为每个项目创建一个新范围。因此,当您oVizFrame在回调中访问时,它与oVizFrame您之前声明的相同。


然后你应该能够oVizFrame在你的回调中访问。


oVizFrame.setVizProperties({

    plotArea: {

        dataPointStyle: {

            "rules": [{

                callback: function(oContext, extData) {

                    // >>>>>>>> Do something with oVizFrame <<<<<<<<

                    that.checkValue(oContext, "S");

                },

                ...

            }, {

                callback: function(oContext, extData) {

                    // >>>>>>>> Do something with oVizFrame <<<<<<<<

                    that.checkValue(oContext, "F");

                },

                ...

            }],

            ...

        }

    }

});


查看完整回答
反对 回复 2022-12-02
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信