Our state of the art Gantt chart


Post by kalai »

Hi,

How to do server side project schedule calculations with Bryntum?.

In our application bryntum takes almost 40 seconds to load 5178 activates. We expect more than 40K activates in a a project. So, definitely UI based schedule calculation will not work. What will be the better approach bryntum can offer?


Post by arcady »

In our application bryntum takes almost 40 seconds to load 5178 activates

Have you provided us with a runnable test case demonstrating your performance issues?

What will be the better approach bryntum can offer?

First we need a test case to check what exactly is going on.

Regarding Server side scheduler.. Running the Gantt data code on the server is technically possible w/ Node JS.
Yet we never really implemented a demo following that approach so good news - calculation logic is there, but bad news - other parts that are handling requests/responses, connecting the database you'll have to implement.


Post by kalai »

Attached sample code which is almost equivalent our product code. Sample code which is attached here takes almost 28 seconds to 32+ seconds. It's tested on i5 processor and 16GB RAM, Chrome 89.

Regarding the server side scheduler, How to disable the calculation in Project/Gantt initialization because all the dates and durations are calculated in server side. May some sample code would be helpful which piece of code stay in server and client side.

Attachments
performace-issue-demo.zip
(265.19 KiB) Downloaded 62 times

Post by saki »

I have already replied in details to this showcase in viewtopic.php?p=87928#p87928

Is this a duplicate of it?


Post by kalai »

No.

viewtopic.php?p=87928#p87928 is intended to improve the performance of Gantt on Client side.

This post's main intention is to know how to implement server side scheduling instead of client side scheduling. In a real project we are expect 40K tasks in a project. Its definitely not a good idea to load all 40K task in UI and do the calculation.


Post by pmiklashevich »

Regarding the server side scheduler, How to disable the calculation in Project/Gantt initialization because all the dates and durations are calculated in server side. May some sample code would be helpful which piece of code stay in server and client side.

It's not supported at the moment. There is a ticket to implement "dump" Gantt to only display data: https://github.com/bryntum/support/issues/2284

Pavlo Miklashevych
Sr. Frontend Developer


Post by pmiklashevich »

This post's main intention is to know how to implement server side scheduling instead of client side scheduling.

There is no demos or guides regarding this yet. But there is a ticket to create: https://github.com/bryntum/support/issues/2008

Pavlo Miklashevych
Sr. Frontend Developer


Post by kalai »

There is no demos or guides regarding this yet. But there is a ticket to create: https://github.com/bryntum/support/issues/2008

It's not supported at the moment. There is a ticket to implement "dump" Gantt to only display data: https://github.com/bryntum/support/issues/2284

@pmiklashevich
Thanks for pointing out the tickets. I don't see traction for last 5 months. Having server side engine is super top high priority for us.

Any idea when these ticket get resolved.


Post by pmiklashevich »

Attached sample code which is almost equivalent our product code. Sample code which is attached here takes almost 28 seconds to 32+ seconds. It's tested on i5 processor and 16GB RAM, Chrome 89.

In a real project we are expect 40K tasks in a project. Its definitely not a good idea to load all 40K task in UI and do the calculation.

I've checked your testcase. Though bumped version to 4.1.5 first. Ran "npm i", "npm run start". The time logged to console was < 3s. Though I can see you only loaded 5K tasks. Checked on iMac 21'' 2019, Intel Core i3 (3,6GHz), 32Gb RAM (2400MHz DDR4), Chrome 91. Also made sure Reload button works the same fast, expand all works fast, and drag and drop / task editing works fast.

//Total Gantt Time: 2814.805908203125 ms

bryntum.query('gantt').project.forEachCrudStore(store => console.log(`${store.id} ${store.allCount}`))
//timeRanges 0
//calendars 0
//tasks 5181
//dependencies 0
//resources 0
//assignments 0

Pavlo Miklashevych
Sr. Frontend Developer


Post by pmiklashevich »

Thanks for pointing out the tickets. I don't see traction for last 5 months. Having server side engine is super top high priority for us.

Any idea when these ticket get resolved.

You can subscribe to the tickets to get notified about the progress. We will discuss in the team the tickets priority. The milestone field tell when to expect a ticket to be done. If you need this functionality asap, you can request professional services, so we can implement this thing for you. Please check out this page: https://www.bryntum.com/services/

Cheers!

Pavlo Miklashevych
Sr. Frontend Developer


Post Reply