Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3116

Hierarchial JSON model and UI5

$
0
0

Hello,

 

I am creating a demo application with JSON data and UI5. The idea (in a nutshell) is provide various information views for a selected item. I am using IconTabBar control. I have created an example scenario so (hopefully) I can explain the problem more clearly.

 

  1. IconTabBar's first tab has list of employees and user can select one by selecting a radio button on the left
  2. This takes the user to the next tab that displays say, sales view. The user can click on any tab and move to the respective view.
  3. User can modify the information in any view. If the users forgets or ignores to Save the data, the tab color is set to Red.
  4. User can Save the data.
  5. Some of the views have information in master detail format.

 

The problem(s) I am facing are:-

  1. How to filter the model data based on the item selected in the table?
  2. How to update the filtered data and set back to model?
  3. I also would like to know whether the data is structured correctly

 

I am using following code to update the binding path after company is selected. The GREP function is not returning correct values for proposals. It returns ONLY 1 proposal for E001 whereas it should return 2. It doesn't work properly for orders either. I am not sure whether the data is structured correctly.

 

var oModel_Data  = oJSONDataModel.getData();

  var oView_Data = oViewDataModel.getData();

 

  var aModelData  = oModel_Data[sSelected_Key];

  var aViewData = oView_Data[sSelected_Key];

 

  aViewData = jQuery.grep(aModelData, function(data, index) {

   return data.id === sSelected_id

  })[0];

 

  oView_Data[sSelected_Key]=aViewData;

  oViewDataModel.setData(oView_Data);

  oViewDataModel.refresh(true);

 

I am using following code to check whether user has changed data.

 

var oView_Data = oViewDataModel.getData();

  var oModel_Data  = oJSONDataModel.getData();

 

  var aViewData = oView_Data[in_sKey];

  var aModelData = oModel_Data[in_sKey];

 

  aModelData.forEach(function(item, index, array) {

   var valueView = aViewData;

   if (item.id === sSelected_id){

    //The code here need to consider complex(nested) data types

    //Thus it should check type of not only valueView and item

    //but also their each and every child elements

    /*---------Temporary Solution---------------------*/

    var sViewValue = JSON.stringify(valueView);

    var sItem = JSON.stringify(item);

    var bSameData = sViewValue === sItem;

  

    if (bSameData==true){

     flag_data_changed=false;

    }else{

     return flag_data_changed=true;

    }

   }

     });

 

 

My json model is as below.

{

  "employees": [

          {"id":"E0001"  ,

           "name":"Alec Stewert"

          },

        

          {"id":"E0002"  ,

           "name":"Debra Manning"

          }

  ],

 

  "sales": [

          {"id":"E0001"  ,

           "sale_q1":"10000",

           "sale_q2":"3000",

           "sale_q3":"8000",

           "sale_q4":"2000"

          },

        

          {"id":"E0002"  ,

           "sale_q1":"8000",

           "sale_q2":"3000",

           "sale_q3":"7000",

           "sale_q4":"5000"

          }

  ],

 

  "proposal":[

  

           {"id":"E0001",

             "fi_q":"Q2",

             "value":"12000",

             "customer":"6000"

            },

 

            {  "id":"E0001",

               "fi_q":"Q2",

               "value":"8000",

               "customer":"2300"

            }

  ],

 

  "key_orders": [

      {"id":"E0001",

      "order_hdr":  

        [

          {"id":"O0001",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"2000"

          },

        

          {"id":"O0002",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"2000"

          }

        ],

        "order_dtl":[

            {

            "id":"O0001",

            "itm":"Item X",

            "Qty":"100",

            "rate":"20"

            }

        ]

      },

    

      {"id":"E0002",

      "order_hdr":  

        [

          {"id":"O0011",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"5000"

          },

        

          {"id":"O0012",

           "fi_q":"Q1",

           "value":"1000",

           "customer":"5000"

          }

        ],

        "order_dtl":[

            {

            "id":"O00011",

            "itm":"Item Z",

            "Qty":"200",

            "rate":"10"

            }

        ]

      }  

  ]

}

 

I have investigated online and in SAP Help but failed to understand what needs to be done. Any help is appreciated.

 

Regards

Abhi


Viewing all articles
Browse latest Browse all 3116

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>