Project task dependencies

I decided to create a simple App to demonstrate how to achieve Gantt chart-lite functionality.
The App has one Type (Task) and each Task can have zero, one or more predecessor Tasks (and zero, one or more successor Tasks). When the dates are changed for a Task, any successor tasks are automatcially shuffled to start at the latest finish time of all their predecessors, whilst maintaining duration.
Hope that makes sense, and it might help someone.

You’ll need to makes sure that you don’t create any circular dependencies, or the snake will forever be chasing its tail :slight_smile:

2 Likes

@Chr1sG I am not sure the link you’ve added is correct here. Did you copy it from Share as Template action for an app? In general it should look like this https://shared.fibery.io/t/2cc63797-57ac-429e-9815-6d0636ba1ebf-product-management

Yes, that’s what I did.
I think the problem lies with discourse. I pasted in the following text:
https://shared.fibery.io/t/d65814be-8588-49fb-acdd-b997cae4a648-dependencies
but it seems like it gets automatically converted into a different url :frowning:

(it replaces the /t/ with /sign-up?appShareId=, I don’t know why)

Also, having tried to import it into another workspace, it looks as though the automation rule gets lost, so it doesn’t work anyway :frowning:
I guess template sharing doesn’t support automation rules?

Unfortunately, Rules are not yet supported in the template sharing :jack_o_lantern:
The support is in our plans — we’ll let know once it goes live.

Sorry for the unpleasant surprise.

Ah well, c’est la vie.

For anyone who is interested in getting it to work, here’s the automation rule that I used:

and the script is as follows (which I’m sure could be done better, but I’m no SW engineer :slight_smile: ):

const fibery = context.getService('fibery');
for (const entity of args.currentEntities) {
    const x = await fibery.getEntitiesByIds(entity.type, [entity.id], ["Predecessors finish", "Duration"]);
    const pFinish = Date.parse(x[0]['Predecessors finish'])
    const duration = x[0]['Duration']
    const newEnd = new Date(pFinish + 86400000 * duration);
    await fibery.updateEntity(entity.type, entity.id, {
        'Dates': {
            "start": x[0]['Predecessors finish'],
            "end": newEnd
        }
    });
}
1 Like

Seems to be working now :slight_smile:

FYI I’ve added a conditional color on the Gantt chart that reflects if a task has been manually adjusted (overriding the automated scheduling).

1 Like