# EventMapper EventMapper, a lightweight (hopefully), easily-deployable, nearly-static digital mapping application made for mobile in JavaScript. ## Specifications ### Data Folder Structure ``` /events [FLOOR].json /rooms [FLOOR].json floors.json tags.json ``` ### Floor Used to represent a floor in a building. It is a parent to both its [Rooms](#room) and [Events](#events). This object gets represented in the app as a map poly, and in a set of buttons among other floors. ```json { "id": "[FLOOR ID]", "poly": [ [x, y], // An array of vertex positions. ... ], "lang": { "[IETF LANGUAGE TAG]": { "name": "[SHORT SINGLE-LINE STRING]", "description": "[SINGLE-LINE STRING]" } } } ``` This will be stored in an array in `floors.json` to be accessed by clients. ### Room Used to represent a space in which events can happen. It is a child to a [Floor](#floor), and a parent to [Events](#event). This object gets represented in the app as a map poly. ```json { "id": "[FLOOR]_[ROOM ID]", "poly": [ [x, y], // An array of vertex positions. ... ], "tags": ["[ARRAY", "OF", "TAG", "IDS]"], "lang": { "[IETF LANGUAGE TAG]": { "name": "[SINGLE-LINE STRING]", "shortName": "[INITIALS OF NAME]", "description": "[SINGLE-LINE STRING]" } } } ``` This will be stored in an array in `rooms/[FLOOR].json` to be accessed by clients. ### Event Used to represent a point in time when an activity happens. It is a child to both a [Floor](#floor) and a [Room](#room), reflected in its ID. ```json { "id": "[FLOOR]_[ROOM]_[EVENT ID]", "when": { "start": "[ISO 8601 DATE]", "end": "[ISO 8601 DATE]" }, "tags": ["[ARRAY", "OF", "TAG", "IDS]"], "lang": { "[IETF LANGUAGE TAG]": { "name": "[SINGLE-LINE STRING]", "description": "[MULTI-LINE STRING]", "host": "[HOST NAME (OPTIONAL)]" } } } ``` This will be stored in an array in `events/[FLOOR].json` to be accessed by clients. ### Tag Used to represent a tag that can be applied by ID to a Room or Event. This object gets represented in the app as a searchable tag chip. `radiogroup` can be used to un-toggle other tags when this one is selected. `show` can be used to hide the tag from search completely. ```json { "id": "[FLOOR ID]", "radiogroup": "[GROUP ID]", "show": , "lang": { "[IETF LANGUAGE TAG]": { "name": "[SHORT SINGLE-LINE STRING]", "shortName": "[INITIALS OF NAME]", "description": "[SINGLE-LINE STRING]" } } } ``` This will be stored in an array in `tags.json` to be accessed by clients.