This is by far the most popular request and one that we get at least 3 emails a day about. I have even needed it myself lately.
There are some interesting questions posed from a development point of view. What seems like such an easy thing to add actually is quite complicated and requires LOT'S of thought and careful planning. Let's talk first about what the feature actually does and why it isn't in the app right now. You want to create a task and assign it to multiple people. What does this actually mean?- Does it mean:
- Assign this task to 5 people but anyone of those 5 people need to complete it. When it's complete, it's done. Finito.
- Example: Take out the office trash. There is only 1 trash can, when it's emptied, it's done.
- Assign this task to 5 people but anyone of those 5 people need to complete it. When it's complete, it's done. Finito.
- Does it mean:
- Assign this task to 5 people and all people need to complete this task.
- Example: Take out your office trash. There are 5 cubicles in the office, all trash cans must be emptied.
- Assign this task to 5 people and all people need to complete this task.
Let's talk about the User Interface (UI) for this
We need to keep the adding of tasks fast and lean as this is the most frequent use of the app. Right now we have broken the Task form into tabs with the important bits on the first tab and any additional functionality hidden away in the other tabs. What do we do when you need to select multiple people?
Basically, by using the drop-down select in combination with another button (icon to be decided) a quick menu is displayed allowing quick checking-off of people. This works well on the calendar for notifying multiple people but is not the best looking fish in the world so it'll get a lick of paint and some TLC. Lets talk about the impact this has on the app and current architecture..switch off if you're not a nerd
Everything right now works around optimised queries looking up tasks based on the current user. It's a simple LEFT OUTER JOIN. We'll need to now hold another look up table in the database mapping tasks to users. This normally would be OK except tasks are tied to task lists which are tied to milestones and the date of a task can be inherited up the chain. Couple this with a lookup table for people attached to the task and it gets fairly hairy. (So what? I hear you say, feed the monkeys more peanuts and it'll get done) Well, this affects everything. It affects the Dashboard, Project Overview, API, Everything Tab, Task listing page, Daily Report, Export, Reports, RSS.....ugghhhhhh So, it's hard. We need to spend alot of time and lucozade on this one. Lets talk about the listing of tasks The last bit that this impacts is the actual listing of tasks. We have the name of the person as the first segment of each individual task. This will have to change and again, we have some ideas on this....