/* * This file contains a project skeleton. It is part of the * TaskJuggler project management tool. You can use this as a basis to * start your own project file. */ project finalProject "Fab Academy 2021 Final Project" 2021-05-19 - 2021-06-14 { # Set the default time zone for the project. timezone "Europe/Berlin" # Hide the clock time. Only show the date. timeformat "%m-%d" # Use US format for numbers numberformat "-" "" "," "." 1 # Use US financial format for currency values. Don't show cents. currencyformat "(" ")" "," "." 0 # Pick a day during the project that will be reported as 'today' in # the project reports. If not specified, the current day will be # used, but this will likely be outside of the project range, so it # can't be seen in the reports. # The currency for all money values is the Euro. currency "Eur" workinghours mon 15:00 - 18:00 workinghours tue, thu, fri 9:00 - 18:00 workinghours wed 9:00 - 14:00 workinghours sat, sun 16:00 - 20:00 yearlyworkingdays 365 dailyworkinghours 6.14 # You can define multiple scenarios here if you need them. scenario plan "Plan" { scenario actual "Actual" } # You can define your own attributes for tasks and resources. This # is handy to capture additional information about the project that # is not directly impacting the project schedule, but which you like to # keep in one place. #extend task { # reference spec "Link to Wiki page" #} #extend resource { # text Phone "Phone" #} } copyright "Creative Commons Attribution-NonCommercialShareAlike 4.0 International (CC BY-NC-SA 4.0)" # If you have any text block that you need multiple times to describe # your project, you should define a macro for it. Macros can even have # variable segments that you can set upon calling the macro. # # macro Task [ # task "A ${1} task" { # } # ] # # Can be called as # ${Task "big"} # to generate # task "A big task" { # } # You can attach flags to accounts, resources and tasks. These can be # used to filter out subsets of them during reporting. flags important, hidden # If you want to do budget planning for your project, you need to # define some accounts. account cost "Project Cost" { account dev "Development" account doc "Documentation" } account rev "Customer Payments" # The Profit & Loss analysis should be rev - cost accounts. balance cost rev # Define your public holidays here. # vacation "Class" 2021-05-24 # vacation "Class" 2021-05-31 # vacation "Class" 2021-06-07 # The daily default rate of all resources. This can be overridden for each # resource. We specify this so we can do a good calculation of # the costs of the project. rate 185.0 # This is a set of example resources. resource boss "Mauro" { email "mauroherrero@gmail.com" rate 200 } # This is a resource that does not do any work. resource s1 "System 1" { efficiency 0.0 rate 600.0 } task FiPro "Final project Fab Academy 2021" { responsible boss allocate boss task plan "Plan the Final Project Execution" { task p0 "Install TaskJuggler" { effort 2h priority 1000 actual:start 2021-05-20 actual:complete 100 } task p1 "Get up and running with TaskJuggler" { effort 3h priority 990 actual:start 2021-05-21 actual:effort 8h actual:complete 75 } task p2 "Outline major tasks of the FP" { effort 3h priority 950 actual:start 2021-05-21 actual:effort 1h actual:complete 100 } } task def "Define final project masterpiece proposal" { priority 900 depends !plan task def1 "Answer questions" {effort 1h} task def2 "Define evaluation" {effort 2h} task def3 "Prepare estimate" {effort 1h} } task case "Case of measuring device" { depends !plan task case1 "Design moving carriage in FreeCad" {effort 2h} task case2 "3d print and assemble moving carriage" {depends !case1 effort 6h} task case3 "Desing top cover Rhino" {depends !case1 effort 3h} task case4 "3d print and assemble top side of case" {depends !case3 effort 6h} } task pcb "PCB design & production" { depends !case.case1 task man1 "Design manager board w/ led & button" {effort 4h} task stp1 "Design stepper board w/ led" {effort 4h} task tof1 "Design VL53L1X board with led" {effort 4h} task pcb1 "Mill PCB boards" {depends !man1, !stp1, !tof1 effort 3h} task man2 "Solder, test & debug manager board" {depends !pcb1 effort 6h} task stp2 "Solder, test & debug stepper board" {depends !stp1 effort 6h} task tof2 "Solder, test & debug ToF board" {depends !tof1 effort 6h} } task prog "Board programming" { depends !plan, !def task man3 "Write program for manager board" {effort 2h} task man4 "Test & debug manager board program" {depends !man3, !!pcb.man2 effort 6h} task stp3 "Write program for stepper control" {effort 3h} task stp4 "Test & debug stepper control" {depends !stp3, !!pcb.stp2 effort 6h} task tof3 "Write program for ToF board" {effort 3h} task tof4 "Test & degbug ToF" {depends !tof3, !!pcb.tof2 effort 6h} } task data "Retrieve data from device" { depends !prog task data1 "Program a data collector form serial" {effort 6h} task data2 "Draw a line from collected data" {effort 4h depends !data1} task data3 "Debug, debug, debug" {effort 10h depends !data2} } task cut "Use data gathered to make a test cut" { depends !data effort 4h } task rev "Review documentation and assesment guide" { depends !data effort 6h } task pres "Prepare final presentation" { depends !cut task vid "Prepare 1 minute video" {effort 8h} task slide "Prepare project slide" {effort 4h} task reh "Rehersal final presentation" {effort 2h} } } # Now the project has been specified completely. Stopping here would # result in a valid TaskJuggler file that could be processed and # scheduled. Here reports will be generated to visualize the # results. navigator navbar { hidereport 0 } macro TaskTip [ tooltip istask() -8<- '''Start: ''' <-query attribute='start'-> '''End: ''' <-query attribute='end'-> ---- '''Resources:''' <-query attribute='resources'-> ---- '''Precursors: ''' <-query attribute='precursors'-> ---- '''Followers: ''' <-query attribute='followers'-> ->8- ] textreport frame "" { header -8<- == TaskJuggler Project Template == <[navigator id="navbar"]> ->8- footer "----" textreport index "Overview" { formats html center -8<- <[report id="overview"]> <[report id="actual"]> ->8- } textreport "Status" { formats html center -8<- <[report id="status.dashboard"]> ---- <[report id="status.completed"]> ---- <[report id="status.ongoing"]> ---- <[report id="status.future"]> ->8- } textreport wps "Work packages" { textreport plan "Project planning" { formats html center -8<- <[report id="plan"]> ---- <[report id="def"]> ->8- } textreport case "Case design & Fabrication" { formats html center '<[report id="case"]>' } textreport pcb "Electronics production and programming" { formats html center -8<- <[report id="pcb"]> ---- <[report id="prog"]> ->8- } textreport data "Data gathering & testing" { formats html center -8<- <[report id="data"]> ---- <[report id="cut"]> ->8- } textreport doc "Review & presentation" { formats html center -8<- <[report id="pres"]> ---- <[report id ="rev"]> ->8- } } textreport "ResourceGraph" { formats html title "Resource Graph" center '<[report id="resourceGraph"]>' } } # A traditional Gantt chart with a project overview. taskreport overview "" { header -8<- === Project Overview === The project is structured into 2 work packages. # Specification # <-reportlink id='frame.wps.plan'-> # <-reportlink id='frame.wps.case'-> # <-reportlink id='frame.wps.pcb'-> # <-reportlink id='frame.wps.doc'-> # Testing === Original Project Plan === ->8- columns bsi { title 'WBS' }, name, start, end, effort, chart {scale day width 600 ${TaskTip} } # For this report we like to have the abbreviated weekday in front # of the date. %a is the tag for this. timeformat "%m-%d" loadunit hours hideresource 1 #balance cost rev #caption 'All effort values are in man days.' footer -8<- ->8- } # A traditional Gantt chart with actual project scenario overview. taskreport actual "" { header -8<- === Actual Tracking Overview === ->8- scenarios actual columns bsi { title 'WBS' }, name, start, end, effort, chart {scale day width 600 ${TaskTip} } # For this report we like to have the abbreviated weekday in front # of the date. %a is the tag for this. timeformat "%m-%d" loadunit hours hideresource 1 #balance cost rev #caption 'All effort values are in man days.' footer -8<- ->8- } # Macro to set the background color of a cell according to the alert # level of the task. macro AlertColor [ cellcolor plan.alert = 0 "#00D000" # green cellcolor plan.alert = 1 "#D0D000" # yellow cellcolor plan.alert = 2 "#D00000" # red ] taskreport status "" { loadunit hours scenarios actual columns bsi { width 50 title 'WBS' }, name { width 400 }, start { width 50 }, end { width 50 }, effort { width 75 }, alert { tooltip plan.journal != '' "<-query attribute='journal'->" width 100 }, status { width 100 } taskreport dashboard "" { headline "Project Dashboard (<-query attribute='now'->)" columns name { title "Task" ${AlertColor} width 200}, resources { width 200 ${AlertColor} listtype bullets listitem "<-query attribute='name'->" start ${projectstart} end ${projectend} }, alerttrend { title "Trend" ${AlertColor} width 50 }, journal { width 350 ${AlertColor} } journalmode status_up journalattributes headline, author, date, summary, details hidetask ~hasalert(0) sorttasks alert.down, plan.end.up period %{${now} - 1w} +1w } taskreport completed "" { headline "Already due tasks" hidetask ~(actual.end <= ${now}) } taskreport ongoing "" { headline "Ongoing tasks" hidetask ~((actual.start <= ${now}) & (plan.end > ${now})) } taskreport future "" { headline "Future tasks" hidetask ~(actual.start > ${now}) } } # A list of tasks showing the resources assigned to each task taskreport plan "" { headline "Planning - resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.plan } taskreport def "" { headline "Define project masterpiece - resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.plan } taskreport case "" { headline "Building the case - resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.case } taskreport pcb "" { headline "PCB fabrication - resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.case } taskreport prog "" { headline "Programming - resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.prog } taskreport data "" { headline "Data collect- resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.prog } taskreport cut "" { headline "Cutting the board- resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.prog } taskreport pres "" { headline "Presentation and documenting- resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.prog } taskreport rev "" { headline "Project revision- resource allocation report" columns bsi {title 'WBS'}, name, start, end, effort {title "Work"}, duration, chart {${TaskTip} scale hour width 500} timeformat "%m-%d" hideresource ~(isleaf() & isleaf_()) sortresources name.up taskroot FiPro.prog } # A graph showing resource allocation. It identifies whether each # resource is under- or over-allocated for. resourcereport resourceGraph "" { headline "Resource Allocation Graph" columns no, name, effort, rate, weekly { ${TaskTip} } loadunit shortauto # We only like to show leaf tasks for leaf resources. hidetask ~(isleaf() & isleaf_()) sorttasks plan.start.up }