Skip to content

Developer documentation

Emory Shaw edited this page Feb 1, 2022 · 15 revisions

Documentation for development up until March 2020 can be found on the GCRC Wiki on Github. The current page presents developer documentation that was produced between March 2020 and March 2021 by tanvirislamcu. For contributions to the Nunaliit source code, please refer to the Nunaliit Documentation for Developers.


An Atlascine front-end is a composed of JavaScript which is run by a Java program. The important folders to deal with when working with Atlascine are:

  • docs
  • htdocs
  • src/css/custom.css

The docs folder houses all the configurations for a module. A module can be seen as a large feature for an atlas. We define the necessary configuratons in these files, which then injects into the JavaScript code via backend.

All configurations for a Multi Maps Module can be found in docs/module.multistories.

Below is a table containing all the important files and their descriptions:

File Name Description
canvas.json Defines configurations used for the map
display.json Defines the name of the module
models.json Defines data that will flow throught the app
utilities.json Defines the utilties that we will use for the app
widget.json Defines the widgets that the app uses (these are the front-end components that gets rendered to the users)

Models

Data gets emitted into the application in the form of events via models. Using the model attributes listed below you can create static dependencies between the data sources and derive business logic accordingly.

  • modelType - Models can be categorized into types
  • modelId - Unique model identifier
  • sourceModelId - A child model will list its parent model's id here to create a dependency
  • selector - Is used to list primary data source

Javascript Files

theme_map_filter.js

Has the following model relationship:

  • sourceModelId - atlascine_cinemaps
  • modelId - theme_map_filter

This file contains a ModelFilter which uses an existing primary datasource to extract themes of the stories. This data is used to create the the singleFilterSelectionWidget widget from which a theme is selected.

theme_index_transform.js

Has the following model relationship:

  • sourceModelId - couchdb
  • modelId - theme

This file contains a TimeIntervalModel which uses an existing primary datasource to prepare data that will be used to draw the donuts in the map. The code in this file can be conceptualized of as a pipe that transforms the data and passes it along.

theme_donus_tag_legend.js

Has the following model relationship:

  • sourceModelId - theme
  • modelId - donut

This file contains a widget class called ThemeGroupTagLegendWidget which is responsible for drawing the map legend. This file also contains a SelectableDocumentFilter called ThemeDonutFilterByGroupTag responsible for filtering data retrieved from theme_index_transformrom.js for the legend.

theme_transcripts.js

This file overrides the existing functionalities defined in TranscriptWidget. It contains the revamped transcript highlighting functionalities from the Single Map Module. It also contains logic that allows the automatic selection of the widget.



Release validation procedure

Before public release, processes are tested individually by the GCRC developers and then in a staging environment by lead project members in the Geomedia Lab. Releases are authorized jointly by the GCRC lead developer and Sébastien Caquard, Geomedia Lab director.