Как настроить корневой и дочерний путь в SAPUI5 TreeTable - PullRequest
0 голосов
/ 25 января 2019

Я запросил сервис oData, чтобы получить список проектов, и я заполнил их массивом, чем для каждого проекта, в который я вставил задачи

Но как отобразить их в моем SAPUI5 TreeTable?

onInit: function () {

        var Projects = [];

        var urlSummaryListP =
            "/ProjectProjectSummaryTaskCollection?$format=json&$filter=ResponsibleEmployeeUUID eq guid'x-x-x-x-x' and ParentTaskUUID eq null&$expand=Project";

        // create an entry of the Products collection with the specified properties and values
        var serviceUrl1 = "/destinations/BYD/sap/byd/odata/cust/v1/odata_project" + urlSummaryListP;

        var odataMod = new sap.ui.model.odata.ODataModel(serviceUrl1, true);


       //getTreeTable
        var oTreeTable = this.getView().byId("treeTable");
        //Get Projects
        odataMod.read(
            "/",
            null, [],
            true,
            function (oData, oResponse) {
                var data = oData.results;

                data.forEach(function (item) {

                    item.ObjectType = "Chevron";
                    item.HierarchyNodeLevel = 0;
                    item.IsCriticalPath = false;
                    item.IsProjectMilestone = false;
                    item.DrillDownState = "expanded";
                    item.TasksProject = [];
                    Projects.push(item);

                });

             //Get Projects Tasks
                Projects.forEach(function (task) {
                    var urlProjectTask = 'ProjectCollection(\'' + task.ObjectID +
                        '\')/ProjectTask?$format=json';
                    var serviceUrl2 = "/destinations/BYD/sap/byd/odata/cust/v1/odata_project/" + urlProjectTask;
                    var taskQueries = new sap.ui.model.odata.ODataModel(serviceUrl2, true);

                    taskQueries.read(
                        "/",
                        null, [],
                        true,
                        function (oDataTask, oResponseTask) {
                            var datatask = oDataTask.results;

                            datatask.forEach(function (ec) {

                                    ec.ObjectType = "Chevron";
                                    ec.HierarchyNodeLevel = 1;
                                    ec.IsCriticalPath = false;
                                    ec.IsProjectMilestone = false;
                                    if (ec.SummaryTaskIndicator == "false" || ec.SummaryTaskIndicator == false)
                                        ec.DrillDownState = "leaf";
                                    else
                                        ec.DrillDownState = "expanded";

                                    task.TasksProject.push(ec);
                                }
                            );
                        });
                });
            }
        );


        var oData = {
            root: {
                name: "root",
                description: "root description",
                checked: false

            }
        };

       //Bind the results to my treeTable   
        oData.root = Projects;
        var oModel = new sap.ui.model.json.JSONModel();
        oModel.setData(oData);
        oTreeTable.setModel(oModel);



.../
}

Если вы заметили в моем init (), я привязываю свой массив результатов к древовидной таблице

   var oData = {
            root: {
                name: "root",
                description: "root description",
                checked: false

            }
        };

         //Bind the results to my treeTable   

     oData.root = Projects;
        var oModel = new sap.ui.model.json.JSONModel();
        oModel.setData(oData);
        oTreeTable.setModel(oModel);

Результаты при отладке с использованием Chrome:

var mytreetable = sap.ui.getCore().byId("__xmlview0--treeTable");

Когда я печатаю: mytreetable.getModel().oData

Результаты:

enter image description here

и в каждом Root-узле у меня есть массив TasksProject []

enter image description here

Теперь БОЛЬШОЙ вопрос, на мой взгляд, как настроить мой путь? :

<t:TreeTable id="treeTable" selectionMode="Single" visibleRowCountMode="Auto" minAutoRowCount="12" selectionBehavior="RowSelector" enableColumnReordering="true" rootLevel="0" 
                         rows="{path:'oModel>/root'}" enableSelectAll="false"
                        expandFirstLevel="true">

Я пробовал несколько комбинаций, но ничего не получалось, как заставить мою древовидную таблицу отображать корневые объекты и отображать дочерние элементы, которые являются TasksProject массивом?

rows="{path:'oModel>/root'}"   
rows="{path:'/root'}"
rows="{path:'/}"
...