The modules names are obtained from the *.wpd files.
The version value should be updated every time we release a new LibrePlan
version.
FEA: ItEr77S04BugFixing
Otherwise the MutableTreeModel associated is initialized with a Order
that is not saved yet. When it's used, e.g., when adding a
subtask, it fails.
The MutableTreeModel#nodesByDomainObject map wouldn't find the node
associated to the Order, because the hashCode is different. At first
the Order is a new object so it returns a different hashCode, once
saved another. With these changes, when initializing the
MutableTreeModel it has already been saved.
A mechanism for ignoring in a scope the calls to createBindings has
been added. When accessing from the entry point the page is been
created and the AnnotatedDataBinder created automatically will track
the created tab. So in these cases we must ignore createBindings
calls.
Sometimes reloadBindings is called several times in the same request.
Now only the first call would force the reload and the others would be
ignored.
For example, when switching to Projects List reloadBindings is called
after the tab being created and another time when calling
org.libreplan.web.orders.OrderCRUDController.goToList(). Now the
second call is ignored.
Fix 2 issues in Util.createBindingsFor:
* Avoid to go over all the children of the component as it seems enough with
create the data binder in the root component.
* Avoid to call .loadAll() for each binder as the method Util.reloadBindings is
usually used before when needed.
FEA: ItEr77S04BugFixing
The problem was that OrderModel.getOrders() was been called several times to
show the list of projects.
After reviewing the problem several issues were detected:
* Util.createBindingsFor was always calling .loadAll() for each binder it
creates, however this was not needed. Moreover a lot of times
Util.reloadBindings is called just after Util.createBindings so the same thing
is called twice.
* If you go via the entry point or the icon to the project list, the binder for
the page is properly initialized or not. If you come from the entry point, the
binder is already working as expected, however if you come from the icon the
binder has to be created manually. It has been added a method
CreatedOnDemandTab.afterCreateAction() that is called or not depending if the
user comes from the entry point or the icon.
FEA: ItEr77S04BugFixing
When users clicks on save and the project has been already modified by other
user, it should be redirected to the page explaining the issue without having to
confirm that he is leaving the planning.
FEA: ItEr77S04BugFixing
This was happening when clicking too fast on the node deletion
column on the tree, wich caused an exception due to trying to remove
an already deleted element.
FEA: ItEr77S04BugFixing
Now the dates filtering the resource load window are checked against the
resources activation periods. Using the following algorithm:
1) If the resource has not activation periods then it should always appear
2) The filter can have null for start and end dates and the activation periods
can have null for end date. So we should define what to do in each case:
Let's define some acronyms:
* Filter Start Date: FSD
* Filter End Date: FED
* Activation Period Start Date: APSD (cannot be null)
* Activation Period End Date: APED
2.1) FSD is null and FED are null: The resource should appear regardless its
activation periods
2.2) FSD is null:
2.2.1) APED is null: Check if APSD is lower or equals than FED
2.2.2) APED is not null: Check if APSD is lower or equals than FED or APED
is lower or equals than FED
2.3) FED is null:
2.3.1) APED is null: The resource should appear
2.3.2) APED is not null: Check if APSD is later or equals than FSD or APED
is later or equals than FSD
2.4) FSD is not null and FED is not null:
2.4.1) APED is null: Check if APSD is between FSD and FED
2.4.2) APED is not null: Check if activation period overlaps filter period
at any point
FEA: ItEr77S04BugFixing