Support for v6.x of our Scheduling components


Post by friedj »

Dear Bryntum Team!

Happy New Year :)

I have a tricky problem.
My setup is the following:
Gantt Pro 6.1.2 and Ext JS 7.0.0.156

In my Gantt chart I set up a project and several base calendars.
Each task has a responsible, each responsible has it's own calendar which extends an already defined base calendar.
I use the following code:

var calendar = new Gnt.data.Calendar({
       calendarId: calendarID,
	parent: parentCalendarID,
	data: calendarData.exceptions,
	hoursPerDay: calendarData.workHoursPerDay
});
calendarManager.getRoot().appendChild(calendar);

The problems:
/1/ In case I use the above example the non working days which comes from the parent calendar are not respected. (I can place the task end to a non working day which comes from the parent calendar).
For me the following solution helped:

calendar.setParent(parentCalendarID);

If I set directly the parent via the setter method it works fine.
/2/ In case of setting the parent by using the setParent method I have serious performance problems.
Do you have any hints to me? Usually the performance problem occurs when I reload the store after some change. Thank you very much!


Post by arcady »

I think you can skip Gnt.data.Calendar direct usage and use just calendar manager in this case.

Something like this:

var calendar = calendarManager.getById(parentCalendarId).appendChild({
    Name                : "Foo",
    HoursPerDay         : 24,
    leaf                : true,
    Days                : [
        {
            Cls  : "gnt-national-holiday",
            Date : "2017-01-13",
            Name : "Some big holiday"
        }
    ]
}).getCalendar();

Post by friedj »

Hello!

Thanks for your help.
Unfortunately does not work, I have the same problem, even though I use the code proposed by you.
I've debugged and it helps the following patch in Gnt.data.Calendar class setParent method: removing the following listener: calendarchange: this.onParentCalendarChange, like:

      if (this.parent != parent) {
            var proxy = this.proxy;
            var listeners = {
                    //calendarchange: this.onParentCalendarChange, => by commenting/removing this line it works.
                    destroy: this.onParentDestroy,
                    scope: this
                };
            var oldParent = this.parent;
            if (oldParent)  {
                oldParent.un(listeners);
            }
            
this.parent = parent; if (parent) { parent.on(listeners); } if (proxy && proxy.extraParams) { proxy.extraParams.parentId = parent ? parent.calendarId : null; } this.clearCache(); this.fireEvent('parentchange', this, parent, oldParent); }

If I don't remove this line the browser hangs when the Gantt has several item specific calendar.
Do you have some hints?

Thanks!


Post by arcady »

We need a test case to see what happens otherwise it's hard to tell anything concrete I'm afraid.


Post Reply