PlantUML deliverable/milestone is not positioned at end of milestone - gantt-chart

I specify a milestone to occur at the end of an activity, with:
[<size:30>Platform Planning Buffer] as [1_3] lasts 30 days
[<size:30>First Customer Usage - first_customer_usage] as [first_customer_usage] happens at [1_3]'s end
However, it is positioned at somewhere before the start of that activity, (on a new line between purple and yellow):
I expect this is because that specific activity does not have a follow-up.
The full UML file is:
#startgantt
project starts the 2022/10-01
saturday are closed
sunday are closed
skinparam classFontSize 100
[<size:30>Develop protocol] as [0] lasts 120 days
[<size:30>On-chain: Solidty+VRF] as [0_0] lasts 60 days
[<size:30>Git integration: Tellor] as [0_1] lasts 90 days
[<size:30>Git integration: Chainlink] as [0_2] lasts 90 days
[<size:30>Support all languages - support_all_languages] as [support_all_languages] happens at [0_2]'s end
[<size:30>Alternative Chains] as [0_3] lasts 90 days
[<size:30>(Decentralised) Continuous integration] as [0_2_0] lasts 30 days
[<size:30>Security & Robustness] as [0_2_1] lasts 60 days
[<size:30>Platform & ecosystem] as [1] lasts 120 days
[<size:30>Website] as [1_0] lasts 50 days
[<size:30>API] as [1_0_0] lasts 50 days
[<size:30>GUI] as [1_0_1] lasts 50 days
[<size:30>Forum] as [1_0_2] lasts 10 days
[<size:30>Marketing platform] as [1_1] lasts 30 days
[<size:30>Subsidize bounties] as [1_2] lasts 10 days
[<size:30>Platform Planning Buffer] as [1_3] lasts 30 days
[<size:30>First Customer Usage - first_customer_usage] as [first_customer_usage] happens at [1_3]'s end
[<size:30>Launch company] as [2] lasts 150 days
[<size:30>Qualitative partner research] as [2_0] lasts 20 days
[<size:30>Establish organisation] as [2_1] lasts 80 days
[<size:30>Auditing] as [2_1_0] lasts 10 days
[<size:30>Hiring] as [2_1_1] lasts 20 days
[<size:30>Administration] as [2_1_2] lasts 10 days
[<size:30>Legal] as [2_1_3] lasts 20 days
[<size:30>Financial] as [2_1_4] lasts 20 days
[<size:30>Marketing] as [2_2] lasts 30 days
[<size:30>Organisation Planning Buffer ] as [2_3] lasts 20 days
[0_0] starts at [0]'s start
[0_1] starts at [0]'s start
[0_2] starts at [0]'s start
[0_3] starts at [0]'s start
[0_2_0] starts at [0_3]'s end
[0_2_1] starts at [0_2_0]'s end
[1] starts at [0]'s start
[1_0] starts at [1]'s start
[1_1] starts at [1_0]'s end
[1_2] starts at [1_1]'s end
[1_3] starts at [1_2]'s end
[1_0_0] starts at [1_0]'s start
[1_0_1] starts at [0]'s start
[1_0_2] starts at [0]'s start
[2] starts at [0]'s start
[2_0] starts at [2]'s start
[2_1] starts at [2_0]'s end
[2_2] starts at [2_1]'s end
[2_3] starts at [2_2]'s end
[2_1_0] starts at [2_1]'s start
[2_1_1] starts at [2_1_0]'s end
[2_1_2] starts at [2_1_1]'s end
[2_1_3] starts at [2_1_2]'s end
[2_1_4] starts at [2_1_3]'s end
[0] is colored in Green
[0_0] is colored in Green
[0_1] is colored in Green
[0_2] is colored in Green
[0_3] is colored in Green
[0_2_0] is colored in Green
[0_2_1] is colored in Green
[1] is colored in DarkOrchid
[1_0] is colored in DarkOrchid
[1_0_0] is colored in DarkOrchid
[1_0_1] is colored in DarkOrchid
[1_0_2] is colored in DarkOrchid
[1_1] is colored in DarkOrchid
[1_2] is colored in DarkOrchid
[1_3] is colored in DarkOrchid
[2] is colored in Yellow
[2_0] is colored in Yellow
[2_1] is colored in Yellow
[2_1_0] is colored in Yellow
[2_1_1] is colored in Yellow
[2_1_2] is colored in Yellow
[2_1_3] is colored in Yellow
[2_1_4] is colored in Yellow
[2_2] is colored in Yellow
[2_3] is colored in Yellow
'[Develop protocol] takes: 120[days] equating to:960[hours] and costs:0 per hour, yielding activity costs:0 Euros.
'[On-chain: Solidty+VRF] takes: 60[days] equating to:480[hours] and costs:76 per hour, yielding activity costs:36480 Euros.
'[Git integration: Tellor] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[Git integration: Chainlink] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[Alternative Chains] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[(Decentralised) Continuous integration] takes: 30[days] equating to:240[hours] and costs:76 per hour, yielding activity costs:18240 Euros.
'[Security & Robustness] takes: 60[days] equating to:480[hours] and costs:76 per hour, yielding activity costs:36480 Euros.
'[Platform & ecosystem] takes: 120[days] equating to:960[hours] and costs:41 per hour, yielding activity costs:39360 Euros.
'[Website] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[API] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[GUI] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[Forum] takes: 10[days] equating to:80[hours] and costs:41 per hour, yielding activity costs:3280 Euros.
'[Marketing platform] takes: 30[days] equating to:240[hours] and costs:41 per hour, yielding activity costs:9840 Euros.
'[Subsidize bounties] takes: 10[days] equating to:80[hours] and costs:41 per hour, yielding activity costs:3280 Euros.
'[Platform Planning Buffer] takes: 30[days] equating to:240[hours] and costs:41 per hour, yielding activity costs:9840 Euros.
'[Launch company] takes: 150[days] equating to:1200[hours] and costs:36 per hour, yielding activity costs:43200 Euros.
'[Qualitative partner research] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Establish organisation] takes: 80[days] equating to:640[hours] and costs:36 per hour, yielding activity costs:23040 Euros.
'[Auditing] takes: 10[days] equating to:80[hours] and costs:36 per hour, yielding activity costs:2880 Euros.
'[Hiring] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Administration] takes: 10[days] equating to:80[hours] and costs:36 per hour, yielding activity costs:2880 Euros.
'[Legal] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Financial] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Marketing] takes: 30[days] equating to:240[hours] and costs:36 per hour, yielding activity costs:8640 Euros.
'[Organisation Planning Buffer ] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
[<size:30>Complete CI deployment - complete_ci_deployment] as [complete_ci_deployment] happens 2022-12-01
#endgantt
Question
How can I ensure the deliverable/milestone is actually located at the end of the activity (Without manually computing the end date of the activity)?

I'm not sure if it's a bug or a feature, but I think that the milestone when it's declared is miscalculating its date, probably because the other dates haven't been calculated.
The fix was to define only its "duration" (which is a kind of hack for a milestone) to 0, as well as its as [name] as before.
[<size:30>First Customer Usage - first_customer_usage] as [first_customer_usage] lasts 0 days
Later, after the other dependency links are specified, you can specify its date using its as reference.
[first_customer_usage] happens at [1_3]'s end
Here's the result:
#startgantt
project starts the 2022/10-01
saturday are closed
sunday are closed
skinparam classFontSize 100
[<size:30>Develop protocol] as [0] lasts 120 days
[<size:30>On-chain: Solidty+VRF] as [0_0] lasts 60 days
[<size:30>Git integration: Tellor] as [0_1] lasts 90 days
[<size:30>Git integration: Chainlink] as [0_2] lasts 90 days
[<size:30>Support all languages - support_all_languages] as [support_all_languages] happens at [0_2]'s end
[<size:30>Alternative Chains] as [0_3] lasts 90 days
[<size:30>(Decentralised) Continuous integration] as [0_2_0] lasts 30 days
[<size:30>Security & Robustness] as [0_2_1] lasts 60 days
[<size:30>Platform & ecosystem] as [1] lasts 120 days
[<size:30>Website] as [1_0] lasts 50 days
[<size:30>API] as [1_0_0] lasts 50 days
[<size:30>GUI] as [1_0_1] lasts 50 days
[<size:30>Forum] as [1_0_2] lasts 10 days
[<size:30>Marketing platform] as [1_1] lasts 30 days
[<size:30>Subsidize bounties] as [1_2] lasts 10 days
[<size:30>Platform Planning Buffer] as [1_3] lasts 30 days
[<size:30>First Customer Usage - first_customer_usage] as [first_customer_usage] lasts 0 days
[<size:30>Launch company] as [2] lasts 150 days
[<size:30>Qualitative partner research] as [2_0] lasts 20 days
[<size:30>Establish organisation] as [2_1] lasts 80 days
[<size:30>Auditing] as [2_1_0] lasts 10 days
[<size:30>Hiring] as [2_1_1] lasts 20 days
[<size:30>Administration] as [2_1_2] lasts 10 days
[<size:30>Legal] as [2_1_3] lasts 20 days
[<size:30>Financial] as [2_1_4] lasts 20 days
[<size:30>Marketing] as [2_2] lasts 30 days
[<size:30>Organisation Planning Buffer ] as [2_3] lasts 20 days
[0_0] starts at [0]'s start
[0_1] starts at [0]'s start
[0_2] starts at [0]'s start
[0_3] starts at [0]'s start
[0_2_0] starts at [0_3]'s end
[0_2_1] starts at [0_2_0]'s end
[1] starts at [0]'s start
[1_0] starts at [1]'s start
[1_1] starts at [1_0]'s end
[1_2] starts at [1_1]'s end
[1_3] starts at [1_2]'s end
[1_0_0] starts at [1_0]'s start
[1_0_1] starts at [0]'s start
[1_0_2] starts at [0]'s start
[2] starts at [0]'s start
[2_0] starts at [2]'s start
[2_1] starts at [2_0]'s end
[2_2] starts at [2_1]'s end
[2_3] starts at [2_2]'s end
[2_1_0] starts at [2_1]'s start
[2_1_1] starts at [2_1_0]'s end
[2_1_2] starts at [2_1_1]'s end
[2_1_3] starts at [2_1_2]'s end
[2_1_4] starts at [2_1_3]'s end
[0] is colored in Green
[0_0] is colored in Green
[0_1] is colored in Green
[0_2] is colored in Green
[0_3] is colored in Green
[0_2_0] is colored in Green
[0_2_1] is colored in Green
[1] is colored in DarkOrchid
[1_0] is colored in DarkOrchid
[1_0_0] is colored in DarkOrchid
[1_0_1] is colored in DarkOrchid
[1_0_2] is colored in DarkOrchid
[1_1] is colored in DarkOrchid
[1_2] is colored in DarkOrchid
[1_3] is colored in DarkOrchid
[2] is colored in Yellow
[2_0] is colored in Yellow
[2_1] is colored in Yellow
[2_1_0] is colored in Yellow
[2_1_1] is colored in Yellow
[2_1_2] is colored in Yellow
[2_1_3] is colored in Yellow
[2_1_4] is colored in Yellow
[2_2] is colored in Yellow
[2_3] is colored in Yellow
[first_customer_usage] happens at [1_3]'s end
'[Develop protocol] takes: 120[days] equating to:960[hours] and costs:0 per hour, yielding activity costs:0 Euros.
'[On-chain: Solidty+VRF] takes: 60[days] equating to:480[hours] and costs:76 per hour, yielding activity costs:36480 Euros.
'[Git integration: Tellor] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[Git integration: Chainlink] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[Alternative Chains] takes: 90[days] equating to:720[hours] and costs:76 per hour, yielding activity costs:54720 Euros.
'[(Decentralised) Continuous integration] takes: 30[days] equating to:240[hours] and costs:76 per hour, yielding activity costs:18240 Euros.
'[Security & Robustness] takes: 60[days] equating to:480[hours] and costs:76 per hour, yielding activity costs:36480 Euros.
'[Platform & ecosystem] takes: 120[days] equating to:960[hours] and costs:41 per hour, yielding activity costs:39360 Euros.
'[Website] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[API] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[GUI] takes: 50[days] equating to:400[hours] and costs:41 per hour, yielding activity costs:16400 Euros.
'[Forum] takes: 10[days] equating to:80[hours] and costs:41 per hour, yielding activity costs:3280 Euros.
'[Marketing platform] takes: 30[days] equating to:240[hours] and costs:41 per hour, yielding activity costs:9840 Euros.
'[Subsidize bounties] takes: 10[days] equating to:80[hours] and costs:41 per hour, yielding activity costs:3280 Euros.
'[Platform Planning Buffer] takes: 30[days] equating to:240[hours] and costs:41 per hour, yielding activity costs:9840 Euros.
'[Launch company] takes: 150[days] equating to:1200[hours] and costs:36 per hour, yielding activity costs:43200 Euros.
'[Qualitative partner research] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Establish organisation] takes: 80[days] equating to:640[hours] and costs:36 per hour, yielding activity costs:23040 Euros.
'[Auditing] takes: 10[days] equating to:80[hours] and costs:36 per hour, yielding activity costs:2880 Euros.
'[Hiring] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Administration] takes: 10[days] equating to:80[hours] and costs:36 per hour, yielding activity costs:2880 Euros.
'[Legal] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Financial] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
'[Marketing] takes: 30[days] equating to:240[hours] and costs:36 per hour, yielding activity costs:8640 Euros.
'[Organisation Planning Buffer ] takes: 20[days] equating to:160[hours] and costs:36 per hour, yielding activity costs:5760 Euros.
[<size:30>Complete CI deployment - complete_ci_deployment] as [complete_ci_deployment] happens 2022-12-01
#endgantt

Related

I want to calculate the number of active requests through starting time and completion time column

I have data for Starting time and completion time of client requests in columns. I want to get another column with the values for the number of active requests during the specific time in the row.
I could not figure out how to add this condition in my case.
Request ID Starting Time Completion time
1 16:14:53 12.411
2 16:15:12 29.065
3 16:15:17 53.485
4 16:15:22 62.471
5 16:15:32 68.908
6 16:15:32 68.908
7 16:15:32 68.867
Starting time is the clock time(HH:MM:SS), Completion time is in Seconds. This is actually the time server received the request from client and then took some number of seconds to process and complete the request. Now I want to know in another column, how many active clients were there when the specific request arrived. I need values in new column for the number of active requests that have started but not completed yet. Starting time will always be in ascending order.
In Column D i used this formula to calculate the end time
=B2+(C2/86400)
In Coulmn E i used this formula to calculate the number of tasks that would have started before the current task was completed
=COUNTIF($B$2:$B$8;">"&$D2)
This was the output i got. You would have to extend the range in CountIf to capture the entirety of your data set.
RequestID StartingTime CompletionTime EndTime TasksStarted
1 04:14:53 PM 12.411 04:15:05 PM 6
2 04:15:12 PM 29.065 04:15:41 PM 0
3 04:15:17 PM 53.485 04:16:10 PM 0
4 04:15:22 PM 62.471 04:16:24 PM 0
5 04:15:32 PM 68.908 04:16:41 PM 0
6 04:15:32 PM 68.908 04:16:41 PM 0
7 04:15:32 PM 68.867 04:16:41 PM 0

Powerpivot DAX time- counting when a timestamp falls within 1st 30 mins or 2nd 30 mins of an hour

say I have a list of users and timestamps.
User Time
Tim 6:15PM
Tim 6:17PM
Tim 6:44PM
Tim 3:33PM
Bort 8:00PM
Bort 9:04PM
Bort 9:05PM
I want to count, for each user, the number of 30 minute increment they have a timestamp for, within each hour between 5PM and 8 30AM
Result:
Tim 2
Bort 2
Note that Tim has times at 6:15 and 6:17, this falls within the first 30 minutes of the 6PM hour, therefore it only counts as 1. He has a time at 6:44PM, which comes after 6:30PM, therefore it also counts as 1. Altogether he has 2
Bort has a time in the first half of 8PM but not in the latter half. So he gets 1. He then has two times within 9PM. Altogether he has 2.
Is this too intense to do in Powerpivot/dax?
I'm assuming you meant PM for those last two Bort rows since that's how you referred to it later.
I was able to achieve this by doing the following:
Create a calculated column HalfHour = ROUNDUP(48*TimeStamps[Time],0).
Create a measure CountTimeStamps as below.
Put them in a matrix visual with User on the rows and CountTimeStamps in the values.
CountTimeStamps =
CALCULATE(
DISTINCTCOUNT(TimeStamps[HalfHour]),
TimeStamps[Time] <= TIMEVALUE("8:30AM") ||
TimeStamps[Time] >= TIMEVALUE("5PM")
)

How to display 1 hour 46 minutes in MS Excel cell where both the number count of hours and minutes comes from calculation?

Suppose I sleep for 7 hours and 36 minutes. I have a sleeping threshold of 5 hours and 54 minutes. If I sleep more than threshold time, I get the time difference and If i sleep less than or equal to my sleeping threshold, i get the output as 'You slept Good". To do so, I scaled zero to 60 minutes of actual time to 0 to 1 on a decimal scale, this way 7 hours 36 minutes comes as 7.6 and 5 hours 54 minutes comes as 5.9.
Now, I take their difference which comes out to be 1.7 i.e. I slept extra for 1 hour and 0.7 minutes on 0to1 scale (which equals 1 hour 42 minutes on actual time scale).
So, I used TRUNC function to display 1 h (i.e ! hour); however I can't get my mind working as to how I can display 42 minutes in the same cell.
i.e. my output should be 1h 42 min
This should work:
=IF(B2+C2/60>5.9,LEFT(B2+C2/60-5.9)& "hr "&ROUND(((B2+C2/60-5.9)-VALUE(LEFT(B2+C2/60-5.9)))*60,0)&"min","You slept good")
However, you wouldn't be able to do further calculations, as it is a text.
Also assumes you will not oversleep by more than 10 hrs :)

Calculate SLA in days, hours and minutes

I have a spreadsheet calculating SLA s between two dates and displays in the format X Days X Hours X Minutes.
=IF('My Access Month Data'!I3="","",INT(D3-C3)&" Days "&HOUR(MOD(D3-C3,1))&" Hour "&MINUTE(MOD(D3-C3,1))&" Minutes")
I am looking to run a calculation on the results if the above formula that will basically give me a Y if the results are less than or equal to 1 day 0 hours and 0 minuets and a N if the time has exceeded this.

Excel working time calculation

I am trying to put together an excel spreadsheet to track working time. A standard working day is say 8 hours with one hour lunch, say 40 hours total, 35 hours working. I need to track over and under time on a given day, and total this for a week period. The reason is to that if someone only takes a 30 minute lunch for three days, they can then take 1.5 hours off early at the end of the week for example.
Example daily record:
Mon - 9-6, 1 hour lunch = 8 working hours, 1 hour lunch, balance = 0 (the perfect day)
Tue - 8-6, 1 hour lunch = 9 working hours, 1 hour lunch, balance = +60 (one hour over)
Wed - 9-4, 1 hour lunch = 7 working hours, 1 hour lunch, balance = -60 (one hour under)
Thu - 9-6, 30 min lunch = 8 working hours, 30 min lunch, balance = +30 (30 mins over)
Fri - 9-6, 30 min lunch = 8 working hours, 30 min lunch, balance = +30 (30 mins over)
Example end of week totals
I am recording start/end/lunch times in excel in custom "time format" cells: 09:00 - 17:00
I am getting the hours with this formula: =TEXT(End-Start,"hh:mm")
I enter the lunch time in "time format" 00:30 (30 mins)
I get the actual time worked with this formula: =TEXT(Total-Lunch,"hh:mm")
When I try to add together / sum the values however I am not getting anything...
Any thoughts?
I do this with six columns
Date / Start / Lunch / Lunch / Stop / total
3-sep / 8:29 AM / 12:30 PM / 1:30 PM / 5:44 PM / 8.25
For total, I calculate with the function =MROUND((D5-C5+F5-E5)*24,0.25). This rounds the total to the closest 0.25 hour (that is, 15 min).
Just for kicks, I accumulate the excess hours. Excel will put in the current time by pressing Ctrl+Shift ; (semicolon).

Resources