Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取SAPUI5 VizFrame';dataPointStyle规则回调中的s id_Javascript_Sapui5_Sap Fiori - Fatal编程技术网

Javascript 获取SAPUI5 VizFrame';dataPointStyle规则回调中的s id

Javascript 获取SAPUI5 VizFrame';dataPointStyle规则回调中的s id,javascript,sapui5,sap-fiori,Javascript,Sapui5,Sap Fiori,我通过循环从我的Odata服务得到的响应来生成一些动态vizframe柱形图。我对图表的一个要求是根据数据中字段的值以不同的颜色显示列。我们称之为验证状态 关于如何在正常情况下通过使用setVizProperties方法并为dataPointStyle属性设置规则来实现这一点,我有一个相当好的想法。如果我对所有图表和所有值都有相同的标准,这仍然是可能的。但事实并非如此,因为我需要逐个检查每条记录以确定其状态。因此,我考虑使用dataPointStyle的回调功能。但这里的问题是,虽然它给了我上下

我通过循环从我的
Odata
服务得到的响应来生成一些动态
vizframe
柱形图。我对图表的一个要求是根据数据中字段的值以不同的颜色显示列。我们称之为验证状态

关于如何在正常情况下通过使用
setVizProperties
方法并为
dataPointStyle
属性设置规则来实现这一点,我有一个相当好的想法。如果我对所有图表和所有值都有相同的标准,这仍然是可能的。但事实并非如此,因为我需要逐个检查每条记录以确定其状态。因此,我考虑使用
dataPointStyle
的回调功能。但这里的问题是,虽然它给了我上下文,但它没有告诉我这个回调是从哪个图表触发的。我的想法是,如果我得到图表名称或它的参考,那么我可以访问它的模型并确定颜色

因此,如果我能以某种方式从触发回调的位置获取
vizframe
的引用,它将解决我的问题

回调 说明:
function(data,extData){…}=>true | false
用于确定给定数据是否与规则匹配的函数。参数: 数据是一个对象,所有绑定字段ID作为键,相应的值作为值。它有助于将其视为包含在代码>数据DATAPON/<代码> >代码>鼠标> <代码>代码>工具提示> /代码>中的所有对象。如果在
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"
        }
      ]
    }
  }]
我的代码如下所示:

for (var i = 0; i < chartsCount; i++) {
            var oModel = new JSONModel();
            var chartData = aSubscriptions[i].NAV_SUBSCRIBED_LOGS.results;
            var aDimensions = [];
            var aDimFeeds = [];
            aDimensions.push({
                    name: "Dimension",
                    value: "{Dimension}"
                });
            aDimFeeds.push("Dimension");
            oModel.setData(chartData);
            oModel.refresh();
            
            var oDataset = new FlattenedDataset({
                dimensions: aDimensions,
                measures: [{
                    name: "Variation",
                    value: "{Variation}"
                }],
                data: {
                    path: "/"
                }
            });
            
            var oVizFrame = new VizFrame();
            oVizFrame.setVizType("column");
            oVizFrame.setHeight("450px");
            oVizFrame.setDataset(oDataset);
            oVizFrame.setModel(oModel);
            var feedValueAxisActual = new sap.viz.ui5.controls.common.feeds.FeedItem({
                    "uid": "valueAxis",
                    "type": "Measure",
                    "values": ["Variation"]
                }),
                feedCategoryAxis = new sap.viz.ui5.controls.common.feeds.FeedItem({
                    "uid": "categoryAxis",
                    "type": "Dimension",
                    "values": aDimFeeds
                });
                
            oVizFrame.addFeed(feedValueAxisActual);
            oVizFrame.addFeed(feedCategoryAxis);
            oVizFrame.setVizProperties({
                
                plotArea: {
                    
                    dataPointStyle: {
                        "rules": [
                            {
                                    callback: function (oContext, extData) {
                                        that.checkValue(oContext, "S");
                                    },
                                    "properties": {
                                        "color": "sapUiChartPaletteSemanticGoodLight1"
                                    },
                                    "displayName": "Successful"
                                }
                            , {
                                    callback: function (oContext, extData) {
                                        that.checkValue(oContext, "F");
                                    },
                                    properties: {
                                        color: "sapUiChartPaletteSemanticBadLight1"
                                    },
                                    "displayName": "Failed"
                            }
                        ],
                            others: {
                                properties: {
                                    color: "sapUiChartPaletteSemanticNeutral"
                                },
                                "displayName": "Undefined"
                            }
                    }
                }
            });
            //Chart Container
            var oChartContainer = new ChartContainer();
            var oChartContainerContent = new ChartContainerContent();
            oChartContainerContent.setContent(oVizFrame);
            oChartContainer.addContent(oChartContainerContent);
}
for(变量i=0;i
我不确定我是否理解正确,但无论如何我会试一试。如果我错了,请告诉我

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

您为什么不在回调中访问oVizFrame

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

assubscriptions.forEach(函数(ossubscription){
康斯特o