- 1 About CloseSource
- 2 Product descriptions requirements
- 3 Architecture
- 4 Licensing
- 5 Division of labour
- 6 Link to project repository
This is the Wiki for CloseSource, one of the groups enrolled in INF5750 - Open Source Development 2017. Information about our group project will be added here throughout the semester.
The group consists of the following members:
- Edvarda W. Eriksen (ererikse)
- Duy Johnny K. Nguyen (djnguyen)
- Milad Sharif (milads)
Product descriptions requirements
We have chosen the task
Requirements from the assignment
The app needs to be able to present this information in (at least) three ways:
- As percentages, where the first bar in the cascade is 100%, and the subsequent bars as expressed as percentages of the previous.
- As raw numbers, but showing both the actual number and the gap (i.e. difference between target and actual).
- As raw data and percentages (on different axis), i.e. bars with the raw data and a line with the percentage.
Because this app should be usable in different settings/ countries and thus different DHIS2 databases, there must be an interface for configuring the cascade and a possibility of saving these configurations for reuse later:
- What data elements/indicators to include in the cascade, as this might differ from country to country or even at different levels within a country.
- The target for each data element/indicator. While the global target for HIV is 90-90-90, it should be possible to set the target in the app.
Cascades are often done done for different population groups (by sex, age etc). Therefore, it should be possible to save different configurations, and to swap between these. In addition to selection of data, it must be possible to select the time period and organisation unit to display data for, either as part of the configuration or when generating the visualisation. There must be support for downloading the visualisations.
Description of Final Product
CloseSource HIV Cascade Analysis is a lightweight React application designed for DHIS2, including the possibility to select organisation units and data elements from the DHIS2 API, creating a cascade visualisation with Recharts of how far the data elements are from the established target of the cascade.
It features three different visualisations, as specified in the Requirements section, as well as the possibility to save your chosen data elements as a configuration that you can reuse at a later time.
Version requirements for this project
- Material UI:
| ├── ExportButton.js // button for exporting chart to png
| ├── graph.css
| ├── GraphContainer.js
| ├── GraphPicker.js
| ├── PercentageBarChart.js // component for chart
| ├── RawPercantageBarChart.js // component for chart
| └── StackedBarChart.js // component for chart
| └── icon-96x96.png
├── Drawer.js // component: side menu and navbar
├── manifest.webapp // to deploy on DHIS2
We also saw in the lecture that for smaller projects React supposedly is more efficient than for instance Angular 2. In addition React has reuseable components, so if anyone at DHIS2 want to re-use our code for other illnesses or statistics, this can easily be done with React. This way we can also hope to help extend DHIS2 as a platform, by building reusable, sustainable code in a true Open Source fashion.
We chose to use Recharts to provide more functionality for the graphs being made. Recharts were used to create truly Open Source charts, and saveSvgAsPng.js was used to download the charts when created. Material-UI was used for general design and layout of the application.
React, Recharts, Material UI and saveSvgAsPng are all under the MIT license, that you can read more about here
Node.js is under a custom license for all open software and free software, that you can read more about here
Division of labour
We all want to have a fullstack understanding of the application, so we will divide the working power where it needs be. Even so we have defined the most essential parts of development and divided responsibility for these. In practice this means that for the following tasks, each group member is responsible that their part of the application is up to speed with the rest of the application during development. In this way we ensure that all group members are familiar with the other parts of the application, so we never end up in a situation where one member is unavailable and the development stops. We also ensure that someone is keeping track of the different parts of the application and can communicate if that particular part starts lagging behind.
|Milad Sharif||Data retrieval and manipulation between DHIS2 and application|
|Duy Johnny Khac Nguyen||Graph/Chart development|
|Edvarda Eriksen||UX design and overall application interface|
Timeline for Development
This will naturally be subject to change as the development commences.
|Week 44||Week 45||Week 46||Week 47||Week 48|