Constraint Resolution GUI question

Support for v6.x of our Scheduling components
Post Reply
User avatar
ngd
Premium Member
Premium Member
Posts: 346
Joined: Wed Apr 20, 2011 4:04 pm
Location: India
Contact:

Constraint Resolution GUI question

Post by ngd » Wed Jun 12, 2019 2:59 pm

I have a task "test fnlt" that finishes on 2 Mar 2016. Its FNLT constraint is 2 Mar 2016.

If I try to change the finish date to some date say 7 Mar 2016, I get the following window:
Screenshot 2019-06-12 at 6.28.13 PM.png
Screenshot 2019-06-12 at 6.28.13 PM.png (68.75 KiB) Viewed 177 times
My question is: what exactly is the 3rd option? Thanks.

User avatar
ngd
Premium Member
Premium Member
Posts: 346
Joined: Wed Apr 20, 2011 4:04 pm
Location: India
Contact:

Re: Constraint Resolution GUI question

Post by ngd » Wed Jun 12, 2019 3:07 pm

I would think the 3rd option should be to change the FNLT constraint itself to 7 Mar 2016. No? Currently, if I pick this option, nothing happens.

User avatar
pmiklashevich
Core Developer
Core Developer
Posts: 2254
Joined: Fri Apr 01, 2016 11:08 am

Re: Constraint Resolution GUI question

Post by pmiklashevich » Wed Jun 12, 2019 3:12 pm

That's "meet the constraint". Your task must finish not later than 02.03.2016. When you set 07.03.2016 you break that restriction. So the dialog propose a compromise solution to you. In other words 3 options are:
- I don't want the changes, please revert to initil state;
- I want the changes, please remove the constraint;
- I accept the compromise, let's set some field to an allowed value and continue;
Currently, if I pick this option, nothing happens.
Since current date is equal to constraint date, you see no changes.
Pavel Miklashevich - Core Developer

User avatar
ngd
Premium Member
Premium Member
Posts: 346
Joined: Wed Apr 20, 2011 4:04 pm
Location: India
Contact:

Re: Constraint Resolution GUI question

Post by ngd » Wed Jun 12, 2019 3:16 pm

Sorry. I still don't get it. Can you give an example?

Also, it happens to tasks having MSO and MFO constraints while setting start and finish dates respectively. At least in this case, there shouldn't be this 3rd option.

User avatar
pmiklashevich
Core Developer
Core Developer
Posts: 2254
Joined: Fri Apr 01, 2016 11:08 am

Re: Constraint Resolution GUI question

Post by pmiklashevich » Wed Jun 12, 2019 7:00 pm

Please check out this guide for reference: https://www.bryntum.com/docs/gantt-for-extjs/#!/guide/gantt_constraints
Resolution options can be different and they depend on constraints which get broken.
Pavel Miklashevich - Core Developer

User avatar
ngd
Premium Member
Premium Member
Posts: 346
Joined: Wed Apr 20, 2011 4:04 pm
Location: India
Contact:

Re: Constraint Resolution GUI question

Post by ngd » Thu Jun 13, 2019 3:50 am

I read that. But I still can't understand the behaviour. Can you give me a small example where I can understand the 3rd option? And it's not just me. Most of our support tickets are related to the 3rd option; so I guess it is indeed confusing.

User avatar
pmiklashevich
Core Developer
Core Developer
Posts: 2254
Joined: Fri Apr 01, 2016 11:08 am

Re: Constraint Resolution GUI question

Post by pmiklashevich » Thu Jun 13, 2019 2:09 pm

Ok, let me explain the difference between the 1st and the 3rd option once again.

Basically the 3rd option is for the case when the task initially violates FNLT constraint.

Example #1 (your case - task initially DOES NOT violate FNLT constraint):
The task has finish date set at Mar 2, 2016 and constraint set to FNLT Mar 2, 2016. You move it to Mar 7th. This leads to constraint violation. In this case both the 1st option (cancel and do nothing) and the 3rd option (move task to finish at Mar 2nd, 2016) will result in the same action - task will be moved back such that it finishes at Mar 2nd.

Example #2 (task initially violates FNLT constraint):
The task has finish date set at Mar 1, 2016 and constraint set to FNLT Mar 2, 2016. You move it to Mar 7th. This leads to constraint violation. In this case the 1st and the 3rd options will result in different actions. For cancel option the user's task manipulation will be canceled and the task will be moved back to end at Mar 1st. For the 3rd option task will also be moved back, but now it won't violate the constraint because it will end at Mar 2nd which is according to constraint.

For Example #1 the 3rd option looks redundant, indeed. We made it generic. But what if a user movement affects other tasks through the dependencies? The 1st cancel option will move everything back, whereas the 3rd option will move back just one task, that again might affect other tasks through dependencies and cause another constraint violation.

Please keep in mind that resulting picture might be different if some tasks had some slack!

So in simple words the 1st option is simple "undo" when the 3rd option is an attempt to resolve the conflict.

Also please keep in mind that all messages are localizable, so you can provide another text to your users if you wish. Please see packages/bryntum-gantt-pro/src/Gnt/locale/En.js

Code: Select all

'Gnt.constraint.FinishNoEarlierThan' : {
    name                             : "Finish no earlier than",
    "Move the task to finish on {0}" : "Move the task to finish on {0}"
},
Best regards,
Pavel
Pavel Miklashevich - Core Developer

Post Reply