从控制器更改Vizflex图表的度量定义

2020-09-09 09:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我对UI5开发很陌生。

我需要在单击按钮时更改viz flex图表的度量定义,因此我尝试通过根据条件从controller.js对其进行更改来做到这一点。 但是我不确定如何从controller.js中完成。

或者我应该显示多个具有不同度量定义的图表,并使用控制器显示/隐藏它们。

请让我知道如何实现。

我必须通过单击按钮来更改图像中突出显示的度量。

这就是我显示图表的方式。


   
     
       
         
                   
                   
                   
                   
                   
                   
                      
                      
                        
                         
                          
                           
                           
                        


 

(8.7 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我对UI5开发很陌生。

我需要在单击按钮时更改viz flex图表的度量定义,因此我尝试通过根据条件从controller.js对其进行更改来做到这一点。 但是我不确定如何从controller.js中完成。

或者我应该显示多个具有不同度量定义的图表,并使用控制器显示/隐藏它们。

请让我知道如何实现。

我必须通过单击按钮来更改图像中突出显示的度量。

这就是我显示图表的方式。


   
     
       
         
                   
                   
                   
                   
                   
                   
                      
                      
                        
                         
                          
                           
                           
                        


 

(8.7 kB)
付费偷看设置
发送
8条回答
风早神人
1楼-- · 2020-09-09 10:18

在运行时更新度量/维度绑定,意思是:

1。 您必须通过调用

 vizFrame.destroyFeeds();销毁绑定到vizFrame的提要和数据集;
 vizFrame.destroyDataset(); 

2。 重新定义vizFrame的数据集和feed项目。 如果将oData用作数据源,则需要触发一个新批处理。

3。 然后通过调用

 vizFrame.vizUpdate({data:newDataset,feeds:newFeeds})
歪着头看世界
2楼-- · 2020-09-09 10:16

您好,@ Chapman Wong,重新绑定并引用它们回到vizFrame 帮助,

它仍然无法正常工作,请提出建议。

1。 错误提示是什么? -没有错误,只是图例没有更改,它们与"实际"和"预算"保持不变。

2。 我用了oVIzFrame而不是this.oVizFrame。

3。 尝试在Feed部分之前调用setData()和setModel()。

下面是我当前的代码。

 var oVizModel = new sap.ui.model.json.JSONModel();
         var oVizFrame = that.oVizFrame = that.getView()。byId(" idVizFrame");

  oVizFrame.destroyFeeds();
  oVizFrame.destroyDataset();


         oVizModel.setData(objItem);
         oVizFrame.setModel(oVizModel);

         feedValueAxis = new sap.viz.ui5.controls.common.feeds.FeedItem({
               " uid":" valueAxis",
               " type":" Measure",
               "值":["实际"]
             }),

       feedValueAxis2 =新的sap.viz.ui5.controls.common.feeds.FeedItem({
           " uid":" valueAxis2",
           " type":" Measure",
           "值":["优先级"]
        }),

         feedCategoryAxis = new sap.viz.ui5.controls.common.feeds.FeedItem({
               " uid":" categoryAxis",
               " type":"维度",
               "值":["净贸易销售额"]
             }),

           oVizFrame.setVizProperties({
             plotArea:{
               isFixedDataPointSize:true,
               窗口:{开始:" firstDataPoint",结束:" lastDataPoint"},
               dataLabel:{visible:true}
             },

             valueAxis:{
               可见:正确,
               标签: { },
               标题:{visible:true}
             },


         valueAxis2:{
           可见:正确,
            标签: { },
           标题:{visible:true}
          },


          timeAxis:{
              标签: { },
               标题:{visible:false},
               间隔:{unit:''}
             },
             标题:{visible:false},
             互动:{syncValueAxis:false}
           });

           oVizFrame.addFeed(feedValueAxis);
           oVizFrame.addFeed(feedValueAxis2);
           oVizFrame.addFeed(feedCategoryAxis);
 
SAP浪
3楼-- · 2020-09-09 10:10

正如您所说的,新的度量将被引入/绑定到图表,您需要一个用于vizFrame的新数据集。

1。 您需要一个全新的数据集,其中包括新的度量和您选择的维度。 如果使用oDatamodel作为数据源,则应该从后端获取新的元数据。 如果您使用FlattenedDataset,则应该定义新的flattenedDataset并将其绑定到vizFrame。

2。 尝试

 oVizFrame.vizUpdate({'data':'newDataset'})
bbpeas
4楼-- · 2020-09-09 10:24

也尝试过此方法,但无法正常工作,我认为这里缺少一些小东西。 ..

葫芦娃快救爷爷
5楼-- · 2020-09-09 10:07
Violet凡
6楼-- · 2020-09-09 10:02

_initialdataLoadSegmentGraphEBITFY-用于图形的初始加载。

 
_initialdataLoadSegmentGraphEBITFY:函数(数据,oResponse){ 那=这个; var obj = JSON.parse(oResponse.body); var oData = {}; var objItem = new Object(); objItem.count = []; oData.results = obj.d.results; $ .each(oData.results,function(i,item){ item.index = i + 1; item.expand = false; item.dirtyState = false; item.readOnly = false; }); 对于(i = 0; i

_dataLoadSegmentGraphEBITPriorMTD-在用户单击按钮时调用,需要在此函数本身中更改图例。

该方法已被使用,我需要根据我的要求更改此方法。 图例应更改为"实际"和"优先"。

 
_dataLoadSegmentGraphEBITPriorMTD:函数(数据,oResponse){ 那=这个; var obj = JSON.parse(oResponse.body); var oData = {}; var objItem = new Object(); objItem.count = []; oData.results = obj.d.results; $ .each(oData.results,function(i,item){ item.index = i + 1; item.expand = false; item.dirtyState = false; item.readOnly = false; }); 对于(i = 0; i

一周热门 更多>