I’m facing an issue where a single Gantt row is getting split into multiple entries after applying a filter on the “type” field using the dropdown.
You can reproduce the issue in this snippet: Code Snippet
Steps to reproduce:
Open the snippet.
Use the dropdown to filter by Type (e.g., select “Project”).
Observe the PMDA row — it gets split into two rows, with child nodes appearing unexpectedly.
This seems to break the tree structure during filtering.
I have tried a few solutions, but nothing has worked so far. We need to fix this as a priority. Any guidance or workaround would be greatly appreciated!
Our team is currently working on the issue to determine the cause of the unexpected behavior when filtering. It will take some additional time to investigate and implement a proper fix.
We will keep you updated on our progress and let you know as soon as we have a solution.
We appreciate your understanding.
@Natalia_Shilova when I use local service overrides, initial render it self I’m not seeing links, why?
Can you give a snippet with local data and filter records based some proerty like expiryStatus values will be ‘expiry’ , nearExpiry, expired, active and etc…
Looks your solution has some issue, also can you mention some comments about the fix you have given
Here is an example based on the @Natalia_Shilova solution with local data and filtering by tasks status: Code Snippet .
Could you, please, provide a similar snippet with your overrides where links are missing initially?
Or, if you see any issues in the provided example, could you describe them and your expectations during filtering?
In the example we define a new filter() method in the local service that filters the inner TreeCollection of the tasks. Then, when inner store is updated, the links are refreshed and _isTaskVisible() method is called during refreshing to check if a certain task is visible ( we check source and target tasks related to the link ) . By default the method mainly checks if all task parents are open so we add an additional inOrder check to hide the invalid links related to the non-visible tasks after filtering .
By default in the source code the order array includes all the tasks except children tasks of split tasks. So to understand if a child of a split task is in the order array or not, it is sufficient to check if the split task itself is in the order. We do this using the code above.
In your example to filter split tasks correctly you need the child tasks of the parent task to have the same expiryStatus (expired). Instead your parent split task has expiryStatus: "expired" but its child tasks have expiryStatus: "active" (in html code: rows 50 - parent task, row 73, 102 - child tasks).
Also to filter tasks correctly you need your items in statuses array (row 2 in html code) to be the same as options ids in richselect, expired string and id: "expiry" (row 77) are not equal.
@Natalia_Shilova Sorry, in the snippet I made a mistake. However, I’m still not able to replicate the same issue in the snippet with the same data. I’m not sure what the problem is. Below is the filter function I’m using: