Timesheet
Hi,
Do you have a control that sums hours in columns with tree view? Something like this:https://www.youtube.com/watch?v=9sVa_bkYpy0&feature=youtu.be&hd=1
Best regards,
Tomasz Tomczykiewicz
SIGN IN To post a reply.
1 Reply
PP
Pooja Priya Krishna Moorthy
Syncfusion Team
July 9, 2019 05:23 PM UTC
Hi Tomasz,
We can sum all the child values and display in a custom column of parent row by using queryCellInfo event. We can update the custom column values on CRUD operations by using actionComplete event.
Please find the code example below.
|
[app.component.html]
<ej-gantt id="GanttControl" [dataSource]="ganttData" (actionComplete)="actionComplete($event)"
(queryCellInfo) = "queryCellInfo($event)" >
//...
</ej-gantt>
[app.component.ts]
export class AppComponent {
public totalRecords: any = [];
constructor() {
//...
queryCellInfo(args) {
if ((args.column.field == "Totalvalue") && args.data.hasChildRecords == true) {
var records = this.getChildRecords(args.data, args.model.updatedRecords);
var updated_value = ej.sum(records, "Totalvalue");
args.cellValue = updated_value;
$(args.cellElement).text(updated_value);
this.totalRecords = [];
}
}
actionComplete(args) {
if (args.requestType == "recordUpdate") {
this.update(args.data.parentItem);
}
if (args.requestType == "save" && args.addedRecord) {
this.update(args.addedRecord.parentItem);
}
if (args.requestType == "delete") {
this.update(args.data.parentItem);
}
}
public getChildRecords(parentRecord, updatedRecords): any {
var recordLength = updatedRecords.length, record;
for (var length = 0; length < recordLength; length++) {
record = updatedRecords[length];
if (parentRecord == record.parentItem) {
if (record.hasChildRecords)
this.getChildRecords(record, updatedRecords);
else
this.totalRecords.push(record);
}
}
return this.totalRecords;
}
public update(parentItem) {
var totValue = 0;
if (parentItem != null) {
let childRecords = parentItem.childRecords,
len = childRecords.length;
for (var i = 0; i < len; i++) {
var totalvalue = parentItem.childRecords[i].Totalvalue;
if (totalvalue)
totValue = totValue + totalvalue;
parentItem.Totalvalue = totValue;
}
let proxy = $('#GanttControl').ejGantt('instance');
let treeGridObj = proxy._$treegridHelper.data("ejTreeGrid");
treeGridObj.refreshRow(treeGridObj.model.updatedRecords.indexOf(parentItem));
return this.update(parentItem.parentItem);
}
}
}
|
Please find the below sample link.
Regards,
Pooja Priya K
SIGN IN To post a reply.
- 1 Reply
- 2 Participants
-
TT Tomasz Tomczykiewicz
- Jul 5, 2019 12:56 PM UTC
- Jul 9, 2019 05:23 PM UTC