# Background The current webqueue implements assignment controls by a text field that is empty when an item has not been assigned to someone and autofilled with a string when the item has been assigned.  That string in the text field can have one of three forms: State | Cause | Example --- | --- | --- Empty | Item has yet to be assigned or item assignment was removed | `""` Single Assignment | Item has been assigned to one person | `campb303` Multi Assignment | Item has been assigned to more than one person | `campb303\sundeep` also `campb303, sundeep` The assignment is used in three ways: - grouping items in the table view using the Group By control - filtering items using the Filter control - showing who an item is assigned to while viewing it The assignment usually contains the career account alias of the ECN staff member(s) assigned to the item but can also be used to assign the item to a group such as `0-FYI`, `0-WINDOWS` or `ALL`. Combinations of career account aliases and groups is not common. # Benefits - Highly flexible, allowing for the free form entry of assignees and simple filtering using substring matching. _Example:_ Filtering for `campb303`, will match `campb303`, `campb303/sundeep`, and `campb303, sundeep`. - Using aliases allows for consistent identifiers across platforms. _Example:_ `sundeep`'s handle is the same for his user account, career account and Slack handle. - Easy to create, read, update and delete by just editing the text field. # Drawbacks - Open to error as it has no checks allowing wrongful keypresses to break filtering. _Example:_ Filtering for `campv303`, will not match `campb303`, `campb303/sundeep`, or `campb303, sundeep`. - Group assignment is entirely arbitrary and requires being remembered to be useful. - Inconsistent formatting makes it difficult to parse programatically. - Not accessible for screen readers. Special characters like slashes aren't read aloud pleasantly. # Solution - Introduce a controlled interface for assignments. - Use autocompletion to make entry faster while also allowing name based lookup. - Maintain arbitrary entry ability while also allowing newly entered options to be autocompleted after their first entry. - Present using [MUI Chips](https://material-ui.com/components/chips/) in the same way that Gmail allows contact entry. _Example: Contact Entry in Gmail_ 