workTimer work flow using workdays and hours per day
I'd like to use some workflow to automatic add "Spent time" to tracks when using Time tracking. But workTimer default workflow doesn't support working days, hours per day etc.
I there any WF which does? Why are Workdays and Hour per day in settings, when I is not used at all? It's good enought to limit max. work time per day to set value (etc. 8 hours) and exclude weekends. Currently when I put task to state In process on Friday morning and set it as Fixed on Monday, it adds me e.g.60 hours - it's not useable at all.
Thx for any advice.
I there any WF which does? Why are Workdays and Hour per day in settings, when I is not used at all? It's good enought to limit max. work time per day to set value (etc. 8 hours) and exclude weekends. Currently when I put task to state In process on Friday morning and set it as Fixed on Monday, it adds me e.g.60 hours - it's not useable at all.
Thx for any advice.
Please sign in to leave a comment.
As workaround you can define the day of week by the string Timer time.format(#e);
Also the following workflow should take into account work hours, please try:
var seconds = duration.millis / 1000; var minutes = seconds / 60; var hours = minutes / 60; hours = hours - 16 * ((hours + 8) / 24); var days = hours / 8; minutes = minutes % 60; hours = hours % 8; if (days != 0) { message(l10n ( Work time: {days} day(s) {hours} hour(s) {minutes} minute(s). )); } else if (hours != 0) { message(l10n ( Work time: {hours} hour(s) {minutes} minute(s). )); } else { message(l10n ( Work time: {minutes} minute(s). )); } issue.applyCommand("add work Brief Client Review Today " + days + "d" + hours + "h" + minutes + "m" + " Brief Client Review Time Automagically Logged");Let's say I finished my work 10 hours after it has been started.
hours = 10 - 16 * ((10+8)/24)
hours = -2
That is wrong, isn't it?
I tried also count actual time, day of week etc. But I don't know, how to set date variable properly.
Let's say I need to count first day spent time as: Timer time.date at 18:00 - Timer time.time. How to set any variable this way?
I tried
But timerEvening is becomes value in this case, not date time value. And I didn't find any way how to use some "semi constants"like this.
Any other idea?
Unfortunately you cannot create a date field from scratch.
All weekends and hollidays are not counted into final sum (there is list of Czech hollidays exclude Easter Monday).
rule Work finished when (State.oldValue == {Describing} && State.becomes({Describing}) == false) || (State.oldValue == {In Progress} && State.becomes({In Progress}) == false) || (State.oldValue == {Verification process} && State.becomes({Verification process}) == false) || (State.oldValue == {Documenting} && State.becomes({Documenting}) == false) { var justNow = now; var duration = justNow - Timer time; var seconds = (duration.millis - duration.millis % 1000) / 1000; var spentMinutes = (seconds - seconds % 60) / 60; var workDays = 0; var freeDays = 0; var spentDays = 0; var spentHours = (spentMinutes - spentMinutes % 60) / 60; var workType = ""; spentMinutes = spentMinutes % 60; if (State.oldValue == {Describing}) { workType = "Analyze"; } if (State.oldValue == {In Progress}) { workType = "Development"; } if (State.oldValue == {Verification process}) { workType = "Testing"; } if (State.oldValue == {Documenting}) { workType = "Documentation"; } if (Timer time < justNow) { while (justNow.format(#YYYY-MM-dd) != Timer time.format(#YYYY-MM-dd)) { if ((justNow.format(#e) == "6") || (justNow.format(#e) == "7") || (justNow.format(#dd.MM.) == "01.01.") || (justNow.format(#dd.MM.) == "01.05.") || (justNow.format(#dd.MM.) == "08.05.") || (justNow.format(#dd.MM.) == "05.07.") || (justNow.format(#dd.MM.) == "06.07.") || (justNow.format(#dd.MM.) == "28.09.") || (justNow.format(#dd.MM.) == "28.10.") || (justNow.format(#dd.MM.) == "17.11.") || (justNow.format(#dd.MM.) == "24.12.") || (justNow.format(#dd.MM.) == "25.12.") || (justNow.format(#dd.MM.) == "26.12.")) { freeDays = freeDays + 1; } else { workDays = workDays + 1; } justNow = justNow - 1 day; if (workDays >= 250) { issue.addComment("There is more than 250 working days, something is wrong!"); break; } } } spentHours = spentHours - 24 * freeDays; if (workDays > 0) { workDays = workDays - 1; spentHours = spentHours - 24 * workDays; if (spentHours > 14) { spentHours = spentHours - 14; } else { spentHours = 0; } } if (workDays != 0) { message(workType + " time " + workDays + " day(s) " + spentHours + " hour(s) " + spentMinutes + " minute(s)."); } else if (spentHours != 0) { message(workType + " time " + spentHours + " hour(s) " + spentMinutes + " minute(s)."); } else { message(workType + " time " + spentMinutes + "minute(s)."); } if (spentMinutes > 0 || spentHours > 0 || workDays > 0) { issue.applyCommand("add work " + workType + " Today " + workDays + "d" + spentHours + "h" + spentMinutes + "m Work item added by RCS-workTimer"); } }Hi! I've started working on a solution for this problem, but am new to programming workflows. I'm wondering if you can point me to documentation about both Timer and also what language features are supported. To my front-end eye the code looks very Javascript-y and I'm wondering what's supported and not. Thanks!