Я запросил сервис 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
Результаты:
и в каждом Root-узле у меня есть массив TasksProject []
Теперь БОЛЬШОЙ вопрос, на мой взгляд, как настроить мой путь? :
<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:'/}"