Gantt Charts and Network Diagrams

definedImageSize={420,300};​​determineMaximumNumberOfTasks[task2_,task3_,task4_,task5_]:=Complement[Range[5],Union[task2,task3,task4,task5]];​​determineMinimumNumberOfTasks[task2_,task3_,task4_,task5_]:=Complement[Range[5],If[task2≠{},{2},{}],If[task3≠{},{3},{}],If[task4≠{},{4},{}],If[task5≠{},{5},{}]];​​EmptyQ[list_]:=If[Length[list]0,True,False];​​IsTaskCritical[criticalTasks_,task_]:=If[MemberQ[criticalTasks,task],"yes","no"];PlotGanttChart[earlyStarts_,taskDurations_,slackTimes_,taskLabels_,projectDuration_,imageSize_]:=Graphics[{Table[{White,Rectangle[{0,i-0.5},{earlyStarts[[i]],i+0.5}],Black,Rectangle[{earlyStarts[[i]],i-0.5},{earlyStarts[[i]]+taskDurations[[i]],i+0.5}],Gray,Rectangle[{earlyStarts[[i]]+taskDurations[[i]],i-0.5},{earlyStarts[[i]]+taskDurations[[i]]+slackTimes[[i]],i+0.5}]},{i,Length[earlyStarts]}]},AspectRatio1/GoldenRatio,ImageSizeimageSize,Frame{{True,True},{True,True}},FrameTicks{{Transpose[{Table[i,{i,Length[taskLabels]}],taskLabels}],None},{Table[i,{i,0,projectDuration,2}],Table[i,{i,0,projectDuration,2}]}}];
​
task durations
task 1
task 2
task 3
task 4
task 5
task 2 predecessors
task 1
task 3 predecessors
task 1
task 2
task 4 predecessors
task 1
task 2
task 3
task 5 predecessors
task 1
task 2
task 3
task 4
display options
mode
information
task
is task critical?
early start
late start
early finish
late finish
duration
slack
task 1
yes
0
0
5
5
5
0
task 2
yes
5
5
10
10
5
0
task 3
yes
10
10
15
15
5
0
task 4
yes
15
15
20
20
5
0
task 5
yes
20
20
25
25
5
0

CAPTION


DETAILS


THIS NOTEBOOK IS THE SOURCE CODE FROM
 Anthony I. Joseph
"Gantt Charts and Network Diagrams" http://demonstrations.wolfram.com/GanttChartsAndNetworkDiagrams/ Wolfram Demonstrations Project Published: December 7, 2007
A full-function Wolfram Mathematica system is required to edit this notebook.​GET WOLFRAM MATHEMATICA »
© Wolfram Demonstrations Project & Contributors|Terms of Use|Make a new version of this Demonstration »