The initial idea has been that those events that need to specify the location (room) of a program can do so by adding a dimension for it, a dimension like any other.
However, in some visualizations the location carries special meaning: for example, in the V1 schedule, time runs from top to bottom and rooms are represented as columns, none of which may have two programs coinciding in the same room. In Guide V2, there is nothing stopping you from having multiple programs in the same room at the same time. In order to support use cases such as this, events may now designate a dimension as their location dimension.
Solmukohta (2024) revealed another need: We may need to add a specifier to the location, such as Nightclub (Dance floor) or Winter Garden (piano after the bend). In addition, there may be program items that happen in a location used by no other program items, in which case using a dimension may feel like overkill.
Should there be a way to specify the room in a more freeform fashion to either supplant or replace the room as a dimension? If both are set, how to proceed?
Location as dimension makes sense when there is a clearly defined set of locations where program can happen. This enables filtering the program by location and visualizations that have location as an axis, grouping or similar visible dimension.
Location as free text makes sense when the set of locations where program can happen is not clearly defined. This allows informing the participants of the location but not necessarily efficient filtering.
One possible approach would be implementing all of the following:
The program can have a location set as localized freeform text (single line per language). This will not be filterable (but perhaps searchable?).
For the purposes of filtering, the room dimension would be as any other and receive no special treatment.
In places where the location is displayed read-oly in the UI (such as Guide V2 Light/Embedded), if the freeform location is set, that will replace the value of the location dimension.
Implement this in the backend by having a location(lang: String) attribute that will return the value of the freeform location field, if set; the value of the location dimension, if set; or finally, empty.
When that field is offered for editing in the UI, autocomplete location dimension values by slug or title in current language. If an autocompletion is selected, clear the freeform location.
Example:
A program item of A Week in Finland is happening in the upstairs of Artteli.
Dimension Location, value Artteli
Freeform location: Artteli (upstairs)
Displayed in V2 Guides as: Artteli (upstairs)
Will show up when filtering for Location = Artteli
The initial idea has been that those events that need to specify the location (room) of a program can do so by adding a dimension for it, a dimension like any other.
However, in some visualizations the location carries special meaning: for example, in the V1 schedule, time runs from top to bottom and rooms are represented as columns, none of which may have two programs coinciding in the same room. In Guide V2, there is nothing stopping you from having multiple programs in the same room at the same time. In order to support use cases such as this, events may now designate a dimension as their location dimension.
Solmukohta (2024) revealed another need: We may need to add a specifier to the location, such as Nightclub (Dance floor) or Winter Garden (piano after the bend). In addition, there may be program items that happen in a location used by no other program items, in which case using a dimension may feel like overkill.
Should there be a way to specify the room in a more freeform fashion to either supplant or replace the room as a dimension? If both are set, how to proceed?
Location as dimension makes sense when there is a clearly defined set of locations where program can happen. This enables filtering the program by location and visualizations that have location as an axis, grouping or similar visible dimension.
Location as free text makes sense when the set of locations where program can happen is not clearly defined. This allows informing the participants of the location but not necessarily efficient filtering.
One possible approach would be implementing all of the following:
location(lang: String)
attribute that will return the value of the freeform location field, if set; the value of the location dimension, if set; or finally, empty.Example:
A program item of A Week in Finland is happening in the upstairs of Artteli.
Location
, valueArtteli
Artteli (upstairs)
Artteli (upstairs)
Location = Artteli
Program v2 documentation Slack discussion