Our pure JavaScript Scheduler component


Post by mocana »

Hi,

As the title indicates, when I try to open the default task editor using context menu or double-clicking on an event widget or even if I just double-click on part of the timeline grid that does not have an task on it, all the events just disappear from the screen.

There is no logging on the console indicating an error or http activity when this happens.

Tried to analyze the resulting HTML document using the Chrome Dev Tools and one thing I see is that tell is that a whole bunch of elements , like every div that represents an event gets the

 .b-released

CSS class assigned to them which has the property

display: none !important

.
This is not an assignment my code does the directly.

I have tried to isolate the problem by turning off a bunch of features in the configuration but have been unsuccessful in preventing this behavior.

For whatever reason, if I replace the default editor with my own modal dialog using the beforeEventEdit listener, I am able to avoid the disappearing tasks. But I would much prefer to customize the Bryntum dialog.

Providing a reproducible example is difficult since I am using Bryntum from an Aurelia app and would be quite a task to run it in isolation.

But I am hoping you might have seen this phenomenon before or could provide some guidance on how to troubleshoot this problem.

I am using version 5.6.12 (latest as far as I know) of Bryntum Scheduler Pro.

Thanks!

Marco


Post by alex.l »

Hi Marco,

We are not noticed about such problem, so that's hard to guide you what's wrong. We have it working well in our demos. Did you try to reproduce it using our demos?

In case it's not possible to wrap it up and send runnable code to us for investigation, I will try to guide you what to check first.
1) Make sure you don't have any custom event listeners that might affect on store data.
2) Check stores if all data is still there after it disappeared.
3) Check if you bind data to some object and if that object still persisted and has correct values.

It sounds like data-level problem, but hard to know without the code, it's just a fantasy. So, you should make sure nothing has been reset/re-created/updated when you opened a dialog.
It also might be rendering problem, make sure you didn't create a new instance of Scheduler on page refresh or something like that.

Looking forward for more details!

All the best,
Alex


Post by mocana »

Hi Alex,

Thanks for the response.
I have poked on many of your examples and have not observed this problem there.

In my case, I am not really doing anything with the data once I assign it to the schedule. I have an HTTP service from which I get the records from a server and then I just assign it directly to scheduler instance, using the events and assignments properties.
One thing that I do that is probably not "normal" is that that I am not extending the EventModel class. My events look something like this:

export interface ScheduleEvent {
  id: string;
  name: string;
  projectName: string;
  requestUnits: string;
  startDate: Date;
  endDate: Date;
  actualStartDate: Date;
  actualEndDate: Date;
  requestId: string;
  stepGroupName: string;
  batch?: number;
  cls: string; 
  eventColor?: string
}

Could this be the source of my problem? I am willing to try to adjust my code if there is a reasonable chance that somehow this causes the Bryntum Scheduler to want to hide everything, but again, my code is not changing the data in any way after initial load.

Thanks again!

Marco


Post by alex.l »

Hi,

Yes for sure you have to use EventModel class instances or pure Object that will be used to create EventModel instance automatically. Otherwise you will get problems because your class doesn't have any of required logic inside.

All the best,
Alex


Post by mocana »

OK. I converted everything to use subclass of EventModel as shown below. Good news is that my app works as before.

But unfortunately the error I reported of all the events disappearing on edit event from context menu or double-clicking on timeline is still happening the same way.

I don't have access to Bryntum source code.
Can you tell me under what circumstance would Bryntum try to assign the .b-released class to event divs?

Whatever is happening, in the case of "Edit event" it happens after the beforeEventEdit event occurs

export class B9ScheduleEventModel extends EventModel {
  static get fields() {
    return [
      { name: 'name', type: 'string' },
      { name: 'requestUnits', type: 'string' },
      { name: 'actualStartDate', type: 'date' },
      { name: 'actualEndDate', type: 'date' },
      { name: 'projectName', type: 'string' },
      { name: 'requestId', type: 'string' },
      { name: 'stepGroupName', type: 'string' },
      { name: 'batch', type: 'number' },
    ];
  }
  declare projectName: string;
  declare requestUnits: string;
  declare actualStartDate: Date;
  declare actualEndDate: Date;
  declare requestId: string;
  declare stepGroupName: string;
  declare batch: number;
}

Thanks for your help!!

Marco


Post by marcio »

Hey Marco,

Could you please share a runnable example and some recordings of the behavior that you mentioned?

You can have more info on that by checking our guidelines here https://www.bryntum.com/forum/viewtopic.php?f=1&t=772

You can try to adapt one of our demos, add your configuration, and share it here for us to debug and assist you.

Best regards,
Márcio


Post by mocana »

Hi,

Figured out that the root cause of the behavior I was seeing was not setting and changing the scheduler properties correctly. Updated my code to do these more carefully and problem of events disappearing went way.

Thanks!

Marco


Post by mats »

Thanks for the update!


Post by c3ui@c3.ai »

@mocana could you please share what do you change in you configuration? I'm facing the same issue when I try to drag events with dependencies


Post by mocana »

@c3ui@c3.ai In my case it was more a matter of cleaning up how I was initiating the component that that was creating and configuring the the Bryntum scheduler instance; I refactored initialization and made sure that that configuration, features, and data assignments for scheduler only occurred once.
So I can't point at one specific thing I had done wrong, but simplifying and clarifying the initial setup was my fix.

Good luck!


Post Reply