Content
View differences
Updated by Parimal Satyal almost 4 years ago
# Implementation plan
This EPIC has been divided in two for the next releases:
* **12.2**: User-definable non-working days (on the user settings page, date picker, team planner, calendar and GANTT view) are implemented but not visible. On the front-end, weekends are greyed out (cosmetically) as they are today but continue to remain selectable.
* **12.3:** Weekends and non-working days are now user-configurable via settings and are properly reflected (with a grey background) in the date picker, team planner, calendar and GANTT view. Date picker has an "include non-working days" checkbox enabled by default for all existing work packages on migration. <mention class="mention" data-id="42316" data-type="work_package" data-text="#42316">#42316</mention>
* **13.0:** Possible to manually define individual Manually add single non-working dates: days <mention class="mention" data-id="41226" data-type="work_package" data-text="#41226">#41226</mention>
* **13.0:** Possible to use and important calendars with pre-defined Add a non-working days: days calendar <mention class="mention" data-id="41227" data-type="work_package" data-text="#41227">#41227</mention>
# Problem
* It is currently hard to create project schedules as when work packages span a weekend. In these cases the weekend days are counted as normal working days.
* When projects change the start day of a work package the calculation of the finish date does not take into account any non-working days between the start and the finish date.
> **Example:** A task starts on Monday and finishs on Friday. If the task is delayed by one day the finish date is set for the Saturday. Since Saturday is a non-working day in this scenario the more accurate calculation for the finish date would be Monday.
# Solution
* For each each instance, an admin can configure working weekdays, which applies to all projects in that instance.
* In addition, the admin can also configure non-working days (such as public holidays or company events) manually, with a weekly or a yearly calendar. This behaviour is specified in <mention class="mention" data-id="41226" data-type="work_package" data-text="#41226">#41226</mention>
* Within the same module to configure non-working days (with a weekly or a yearly calendar), admins will be able to import local calendar files (ics.) or choose from a list of public holiday calendars relevant to the selected region/country for that instance. This feature is specified in <mention class="mention" data-id="41227" data-type="work_package" data-text="#41227">#41227</mention>.
* Non-working days are represented visually in the front-end in the following views:
* Date picker (in several views)
* Gantt
* Calendar
* Team planner
* _\[open\] any other place ?_
* **NOTE:** This work package handles the configuration and display of non-working days. Actual calculation and adaption of start/end dates and duration of work packages by taking into account these non-working days will be handled separately (and specified in epic <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>).
## Visuals
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27750/content"></div></figure>
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27751/content"></div></figure>
# Visuals of affected pages
* Date picker (_note: this is an illustration/work in progress, will almost certainly change with work on epic <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>)_
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27770/content"></div></figure>
* Gantt:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27771/content"></div></figure>
* Calendar:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27772/content"></div></figure>
* Team planner
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27769/content"></div></figure>
# **Out of Scope**
* Selecting non-working days at a project level.
* Non-working-days at an individual user-level.
* Subscribing to external calendars, e.g. Google calendars (that are not included in our libraries of region-based ics calendars, or uploaded manually).
* Actual calculation of start and end dates and duration of work packages by taking in account non-working days. This will be handled in <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>.
* Informing the user when they try to schedule a meeting on a non-working day.
# Implementation notes
* Frontend:
* Fetch non working days when date picker, gantt chart, calendar or planning board is opened
* Block&visualize in working days settings
* Block&visualize in date picker
* Block&visualize in gantt
* Block&visualize in calendar
* Block&visualize in team planner
* Angular based administration of non working days relying on the API
* Backend:
* model layer for non working days
* Contract and Services for non working days
* API: Introduce an index action that will fetch all non working days. There are two types of those. One type represents the recurring days (e.g. Saturday and Sunday) and one the exemptions (e.g. Christmas)
* Background job upon changes to the non working days
* Exclude non working days on schedule
* Default/Seed data
# Figma link
https://www.figma.com/file/SMzHAQWcY9k0PkTEKd5UQn/?node-id=0%3A1
This EPIC has been divided in two for the next releases:
* **12.2**: User-definable non-working days (on the user settings page, date picker, team planner, calendar and GANTT view) are implemented but not visible. On the front-end, weekends are greyed out (cosmetically) as they are today but continue to remain selectable.
* **12.3:** Weekends and non-working days are now user-configurable via settings and are properly reflected (with a grey background) in the date picker, team planner, calendar and GANTT view. Date picker has an "include non-working days" checkbox enabled by default for all existing work packages on migration. <mention class="mention" data-id="42316" data-type="work_package" data-text="#42316">#42316</mention>
* **13.0:** Possible to manually define individual
* **13.0:** Possible to use and important calendars with pre-defined
# Problem
* It is currently hard to create project schedules as when work packages span a weekend. In these cases the weekend days are counted as normal working days.
* When projects change the start day of a work package the calculation of the finish date does not take into account any non-working days between the start and the finish date.
> **Example:** A task starts on Monday and finishs on Friday. If the task is delayed by one day the finish date is set for the Saturday. Since Saturday is a non-working day in this scenario the more accurate calculation for the finish date would be Monday.
# Solution
* For each each instance, an admin can configure working weekdays, which applies to all projects in that instance.
* In addition, the admin can also configure non-working days (such as public holidays or company events) manually, with a weekly or a yearly calendar. This behaviour is specified in <mention class="mention" data-id="41226" data-type="work_package" data-text="#41226">#41226</mention>
* Within the same module to configure non-working days (with a weekly or a yearly calendar), admins will be able to import local calendar files (ics.) or choose from a list of public holiday calendars relevant to the selected region/country for that instance. This feature is specified in <mention class="mention" data-id="41227" data-type="work_package" data-text="#41227">#41227</mention>.
* Non-working days are represented visually in the front-end in the following views:
* Date picker (in several views)
* Gantt
* Calendar
* Team planner
* _\[open\] any other place ?_
* **NOTE:** This work package handles the configuration and display of non-working days. Actual calculation and adaption of start/end dates and duration of work packages by taking into account these non-working days will be handled separately (and specified in epic <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>).
## Visuals
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27750/content"></div></figure>
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27751/content"></div></figure>
# Visuals of affected pages
* Date picker (_note: this is an illustration/work in progress, will almost certainly change with work on epic <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>)_
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27770/content"></div></figure>
* Gantt:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27771/content"></div></figure>
* Calendar:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27772/content"></div></figure>
* Team planner
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/27769/content"></div></figure>
# **Out of Scope**
* Selecting non-working days at a project level.
* Non-working-days at an individual user-level.
* Subscribing to external calendars, e.g. Google calendars (that are not included in our libraries of region-based ics calendars, or uploaded manually).
* Actual calculation of start and end dates and duration of work packages by taking in account non-working days. This will be handled in <mention class="mention" data-id="31992" data-type="work_package" data-text="#31992">#31992</mention>.
* Informing the user when they try to schedule a meeting on a non-working day.
# Implementation notes
* Frontend:
* Fetch non working days when date picker, gantt chart, calendar or planning board is opened
* Block&visualize in working days settings
* Block&visualize in date picker
* Block&visualize in gantt
* Block&visualize in calendar
* Block&visualize in team planner
* Angular based administration of non working days relying on the API
* Backend:
* model layer for non working days
* Contract and Services for non working days
* API: Introduce an index action that will fetch all non working days. There are two types of those. One type represents the recurring days (e.g. Saturday and Sunday) and one the exemptions (e.g. Christmas)
* Background job upon changes to the non working days
* Exclude non working days on schedule
* Default/Seed data
# Figma link
https://www.figma.com/file/SMzHAQWcY9k0PkTEKd5UQn/?node-id=0%3A1