I have a problem regarding the performance of the scheduler and can’t find a suitable solution in the forums. I am working with a licenced kendo ui package.
My Scenario: I need to display ~10000 elements in the scheduler ( ~100 resources with ~100 elements each )
Since loading all at once is obviously too slow, I split the loading process.
Initializing the scheduler dataSource and adding single elements was done using scheduler.dataSource.pushCreate(), .pushDelete() and .pushUpdate()
var dataSource = new kendo.data.DataSource({ schema: { model: { id: "id"}}});
dataSource.pushCreate({ id: 1, name: "John Doe" });
So I need a way to subsequently load more elements into the scheduler without increasing execution times, and, if possible, to still interact with the scheduler during the addition. Is there a way to do this already, or if not, to have someone implement that for us?
Thank you in advance for your help.
Regards,
V. Gogov
5 Answers, 1 is accepted
As far as I can understand, your requirement is to display around 10,000 events at the same time in a Kendo Scheduler.
As you correctly observed, loading such a large number of events causes performance issues and it could lead to a crash in the browser. The reason for that is the huge amount of DOM elements, which are processed by the browser JavaScript engine.
Loading the events one by one by using the pushCreate() method of the DataSource would also cause similar (or even more evident) issue. The reason for that is the fact, that each time a new event is added to the Scheduler, the widget is redrawn to display the updated data. For example, if it initially loads only one event, it will be very fast, but at the time, it has to load 1,000 at a time, it gets slower. Here you will find a small Dojo sample, demonstrating how the dataBound event is fired each time new item is added to the DataSource.
Having in mind the above, the way to achieve better performance is to limit the number of events that are displayed in the Scheduler at the same time.
Concerning the possible implementation of a custom solution for such scenario, I could suggest you our Professional services team. Let me know if you are interested in cooperating with our colleagues on this task and I will arrange someone to contact you directly.
I hope, that the above answers your question. In case you have any other questions, please do not hesitate to contact us.
Regards,
Veselin Tsvetanov
Telerik by Progress
In what ways is reducing the events shown not practical for your use case? I am using the scheduler to allow people to just do their day to day scheduling: meetings, events, etc... So the chances of running into a situation where more than even a few hundred events are shown is not likely in my case.
But, I reduce the amount of events first by date, I only grab and load the events within the current scheduler view date range. Then, I have multiple filters (filter by owner, text filter across all fields, special filters to custom fields the user created, etc, etc...). So, if over 1000 events end up coming back (I cut them off at 1000), I only load in 1000 and pop open a notification to tell the user to switch to a narrower view date range, or utilize filters, which is a reasonable request to make of the user.
Because (again, I don't know exactly the use cases here) I do not know what a user will do with staring at 10000+ events on their screen. That is a lot of data for them to look at.
Yes, i found. I developed the scheduler myself ;) It supports 10000 quite complex elements with ease, has all the events you can imagine, templates .. etc and is drawn on a grid with up to 5 million pixels width x height. Impressive hah?
The thing with 99.99% of the components on the web is that they cover very well the daily secretary job, but fail when it comes to performance with serious data. You wont read that in the product portfolio of course, so you most probably end up buying the product and then realizing its non worthy for serious applications. Just as i did.
I would say the Kendo widgets will cover just about any application you are interested in building. They are very robust, well put together, and function quite well. They offer different ways to utilize the widgets to bring in smaller chunks of data at a time based on filters/views etc. to make things more manageable and usable.
Yes, if you really had some weird situation were you need 10,000 events shown on a scheduler, it will probably take a while to read them all in, but I believe you are in the very tiny minority of people who would need that because, again, what is a user supposed to do when flooded with 10,000 events? That sounds more internal to me...
The kendo widgets DO provide very easy, good looking, and high performing widgets for SERIOUS applications, I would say you have more of an obscure one with unreasonable amounts of data than 'serious'.