How to get GanttTask dependant task

4 posts, 1 answers
  1. Doc
    Doc avatar
    4 posts
    Member since:
    May 2015

    Posted 29 May 2015 Link to this post

    I'm using Telerik's wpf gantt control and I'm trying to find a way to get dependant task from a specific one.

    For example, given Task 2, I need to get a sort of task2.dependant which should be a list or an array with Task 3, Task 4, Task 5, etc.

    (see attached screenshot)

    but task's dependencies have only a .FromTask property, which in Task 2 case is Task 1

    public interface IDependency
    {
        // Summary:
        //     Represents the destination task of relation.
        IGanttTask FromTask { get; set; }
        //
        // Summary:
        //     Represents the type of relation between two tasks, such as finish to start,
        //     start to finish, start to start, and finish to finish.
        DependencyType Type { get; set; }
    }

    Is there an easy way than looping through ALL tasks to find the one
    which depend from Task 2 and then looping for that one and so on?
  2. Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 02 Jun 2015 Link to this post

    Hello,

    Thank you for contacting us.

    In the current version of the RadGanttView control when creating a Dependency between tasks that Dependency is added to the Dependencies property of the specific GanttTask. This enables a task to have multiple dependencies which is also why the Dependency requires its FromTask to be set. By design in the RadGanttView control the Dependencies property of a GanttTask contains only the direct dependent tasks to it rather than a list of all chain related tasks. Retrieving such list is currently not a built-in feature in the control and would require a custom implementation.

    What you could do is loop over the TasksSource of the control and retrieve all of the GanttTask object that are considered "dependency" for a specific task. Hope this details are helpful and if we can be of any further assistance do not hesitate to contact us again.

    Regards,
    Vladi
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  3. UI for WPF is Visual Studio 2017 Ready
  4. Doc
    Doc avatar
    4 posts
    Member since:
    May 2015

    Posted 03 Jun 2015 in reply to Vladi Link to this post

    but continuously looping through the TaskSource is not performant if i have 300k+ tasks...
  5. Answer
    Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 04 Jun 2015 Link to this post

    Hi,

    Implementing such "dependency chain" retrieval will indeed introduce performance drop as it requires the implementation of an advanced algorithm that will go though each task in the TaskSource and its Dependencies multiple times in order to find all of relations. As previously mentioned each task could have multiple tasks which are its direct dependency which would make implementing such algorithm even harder and lower the performance event further. By design the RadGanttView control has been developed to have the best performance it could have which is why such advanced "dependency chain" feature is not available as a built-in feature and only the direct dependencies are available.

    An easier way of achieving the desired behavior could be to create such dependencies lists for each GanttTask when they are being created rather than finding them at run time. You could:
    • Create a custom GanttTask by inheriting the GanttTask and adding a property named for example DependencyChain that will contain the "dependency chain" collection of GanttTask objects
    • When creating each task and its dependencies in the ViewModel simply populate each task's DependencyChain collection.

     

    As you see such appraoch would make it easier to pre populate such collections of dependencies rather than looking of them at run time but it is possible that such appraoch is not applicable depending on the way the TasksSource is created/retrieved. I created a sample project of the described appraoch for you and you can find it attached to my response. Hope this is helpful.

    Regards,
    Vladi
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top