bryntum / support

An issues-only repository for the Bryntum project management component suite which includes powerful Grid, Scheduler, Calendar, Kanban Task Board and Gantt chart components all built in pure JS / CSS / TypeScript
https://www.bryntum.com
54 stars 6 forks source link

Scheduler crashes when moving splitter and stores are loaded with no data #9951

Closed taauntik closed 2 months ago

taauntik commented 2 months ago

Forum post

I am experiencing an issue when the Bryntum Scheduler 6.05 component is loaded with empty arrays for all the stores. When the splitter between the Grid and the Timeline is clicked, the following error is shown in the console, and the splitter doesn't move:

Uncaught TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Scheduler.internalOnSplitterDragStart (scheduler.umd.js?_dc=1725489177287:189645:22)
    at Scheduler.trigger (scheduler.umd.js?_dc=1725489177287:10683:38)
    at RegionResize.startMove (scheduler.umd.js?_dc=1725489177287:129825:16)
    at RegionResize.onElementPointerDown (scheduler.umd.js?_dc=1725489177287:129991:16)
    at functionChainRunner (scheduler.umd.js?_dc=1725489177287:16633:27)
    at plugInto.<computed> [as onElementPointerDown] (scheduler.umd.js?_dc=1725489177287:16602:47)
    at Scheduler.handleEvent (scheduler.umd.js?_dc=1725489177287:143671:57)
    at HTMLDivElement.handler (scheduler.umd.js?_dc=1725489177287:47462:76)

The issue can be reproduced on the big data set tree example: https://bryntum.com/products/schedulerpro/examples-scheduler/bigdataset-tree/

By providing empty arrays instead of the generated resources in the generateResources function:

scheduler.project = {
            assignmentStore : {
                useRawData : true,
                data       : []
            },
            resourceStore : {
                useRawData : true,
                data       : []
            },
            eventStore : {
                useRawData : true,
                data       : []
            },
            dependencyStore : {
                useRawData : true,
                data       : []
            },
            resourceTimeRangeStore : {
                useRawData : true,
                data       : []
            }
        };

For our use case, we are limiting our query to date ranges, and it isn't uncommon for a user to enter a date range that returns no data. In that case, we provide empty arrays to the project similarly to what I've shown in my above example.

Can this be fixed?