Labels should be the same for Person, Location, Task, etc
A Label should have:
(required) A name (aka "label kind")
? (optional) A list of entity types that it can be applied to
(optional) An icon
(optional) Description
Rationale
Apart from qualifications, people can belong to teams, be full time employees / volunteers, etc.
Locations (and potentially other entities) can also have a different properties ("is it wheelchair accessible?" / "does this room have a projector?"). We need a more general way to manage these.
Examples
The label "Accessible" indicates that a location is wheelchair-accessible.
Its colour is green and its icon is "lucide:accessibility".
It is displayed as <Icon lucide:accessibility> Accessible on a green background
If it is present, the location is considered accessible
If it is not present, the location is considered non-accessible
This label can only be applied to locations
Considerations
Skill Progression
We have discussed the possibility of skill progression for employees when starting this project.
This would be easier if a Skill was a distinct type, and not a generic label.
This functionality is not required in this iteration (or likely the next one), so this is ok. In the future, we could subclass the Label class to create special kinds of labels
Label values
Currently, a label is just a boolean property. This is flexible and simple to implement, but in the future users may want more ways to organize labels. (For example, in this project we have labels like kind::code or kind::design; "kind" could be a category and ["code", "design", ...] could be values).
This is probably not needed in this iteration or the next one, if at all. It may become necessary if we try to support large organisations with a large number of teams, employee skill sets, etc
Requirements
Rationale
Apart from qualifications, people can belong to teams, be full time employees / volunteers, etc. Locations (and potentially other entities) can also have a different properties ("is it wheelchair accessible?" / "does this room have a projector?"). We need a more general way to manage these.
Examples
<Icon lucide:accessibility> Accessible
on a green backgroundConsiderations
Skill Progression
We have discussed the possibility of skill progression for employees when starting this project. This would be easier if a Skill was a distinct type, and not a generic label. This functionality is not required in this iteration (or likely the next one), so this is ok. In the future, we could subclass the Label class to create special kinds of labels
Label values
Currently, a label is just a boolean property. This is flexible and simple to implement, but in the future users may want more ways to organize labels. (For example, in this project we have labels like
kind::code
orkind::design
;"kind"
could be a category and["code", "design", ...]
could be values). This is probably not needed in this iteration or the next one, if at all. It may become necessary if we try to support large organisations with a large number of teams, employee skill sets, etc