Hi Team,
We’re in the process of transforming our standard Bryntum Scheduler setup into one that supports infinite scrolling. However, I’ve encountered some performance issues when attempting to apply resource grouping in this mode.
Specifically:
The UI freezes or becomes unresponsive during the grouping process.
In some cases, the infinite scroll functionality breaks after grouping is applied.
Before proceeding further, I’d like to confirm:
Is grouping a recommended or supported feature when using infinite scroll in Scheduler Pro?
If so, could you please provide guidance or best practices for implementing grouping efficiently in an infinite scroll–enabled scheduler setup?
Any insights or code examples would be greatly appreciated.
Thank you for your time and support.
My Code
protected async toggleCapacityPlanner(capacityPlannerState: CapacityPlannerState): Promise<void> {
if (capacityPlannerState.isCapacityPlannerEnabled) {
await this.updateEmployeeGrouping(capacityPlannerState);
this.updateGroupSummary(capacityPlannerState);
return;
}
schedulerInstance.features.group.disabled = true;
await schedulerInstance.resourceStore.clearGroupers();
schedulerInstance.features.groupSummary.disabled = true;
this.clearGroupEventListeners();
}
protected updateGroupSummary(capacityPlannerState: CapacityPlannerState): void {
const groupSummaryConfig = this.schedulerFeaturesService.getGroupSummaryConfig(capacityPlannerState);
schedulerInstance.features.groupSummary.disabled = true;
schedulerInstance.features.groupSummary.summaries = groupSummaryConfig.summaries as SchedulerSummaryOptions[];
schedulerInstance.features.groupSummary.disabled = groupSummaryConfig.disabled as boolean;
const tooltipConfig = this.schedulerFeaturesService.getGroupSummaryTooltipConfig(capacityPlannerState);
schedulerInstance.features.groupSummary.setConfig(tooltipConfig);
}
override async updateEmployeeGrouping(capacityPlannerState: CapacityPlannerState): Promise<void> {
const scheduler = schedulerInstance;
const groupConfig = this.schedulerFeaturesService.getGroupConfig(capacityPlannerState);
const { field, disabled } = groupConfig;
const groupFeature = scheduler.features.group;
if (field) groupFeature.field = field;
groupFeature.disabled = !!disabled;
const store = scheduler.resourceStore;
await schedulerInstance.resourceStore.group({
field: groupConfig.field as string,
fn: this.schedulerFeaturesService.resourceStoreGroupSortFunction,
ascending: true
});
if (store.trigger) {
console.log('Triggering refresh after grouping change');
store.trigger('refresh');
}
}