From mn/ifi/inf5750
Revision as of 11:36, 6 December 2017 by (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Group members

  • Bartosz Gembala (bartoszg)
  • Erik Aaron Hansen (erihanse)
  • Erik Snartland (eriksna)

Project description requirements


We chose the Sharing Editor assignment. The assignment involves making a DHIS2 app for updating sharing configuration for multiple/a set of metadata objects.


Our initial product:
APP layout.png
Finished product:
BEE - sharing editor

Requirements and features

Should be able to update sharing configurations for multiple/a set of metadata objects. Metadata should be updated based on these methods:

  • Through search on name (or other properties), with the possibility of applying settings to all or a selection of the search result
  • Through selection of a group, with the possibility of applying settings to all or a selection of the search result
  • Through data sets, programmes and dashboards with dependencies. The metadata dependency export functionality will give an idea of which metadata objects need to be updated for data sets, programmes and dashboards.

Currently sharing settings can be applied to all or a selection of the search results, we have not supported search, but we do have a drop-down list which lists all the different metadata we need to access. It is possible to apply sharing settings through data sets, dashboards and programmes.

Ideally, there should be support to work with all shareable objects, but a minimum is:

  • Dashboards
  • Analysis tool favourites
  • Data sets
  • Data elements (and groups)
  • Indicators (and groups)
  • Category/ category combos/ category option

We are able to work with all shareable objects which are specified as sharable in DHIS2 documentation except analysis tool favourites.


REACT is a JavaScript library used for building user interfaces. The library makes it easier to handle small tasks and changes by only updating the right components when data is changed.

React uses a special syntax called JSX which is a combination of HTML and JavaScript. And since DHIS2 also uses JSX syntax, it will feel natural to work with React.

The sharing editor assignment requires changes to the DHIS2 internal features. Ideally we will create a local DHIS2 server running on a virtual machine. Currently under development. This will allow us to edit the server without affecting other groups. An alternative is to create a local DHIS2 server running on each of our computer. We are currently fetching data from

Other libraries might be added later on.


November 1.

  • Create wiki
  • Chose assignment
  • Overview of the product to be developed, including features
  • Proposed architecture of the app (including key frameworks to be used)
  • Broad timeline for development (in form of milestones)
  • Link to project repository

November 8.

  • DHIS2 data management

November 15.

  • Interface

November 22.

  • Features finalized

November 29.

  • Bugfixes and documentation

Although our initial timeline milestones seemed neat and looked like a good plan, we have not been able to follow them completely as we otherwise would have wished to. There have been weeks were we were stuck on a problem and had to work through it before we could continue, and other weeks where suddenly everything made sense. But all in all we managed to work with our project as much as we had time to, we also had other exams that made it impossible to do everything we had planned to.


React is a JavaScript library for building user interfaces. React is licensed under the MIT license. It is a permissive license with few restrictions.

DHIS2 is a free and open source software. They have a permissive BSD license, allowing others to contribute to the code if some requirements are met. We only used the API and is therefore not affected by this limitation.

For out project, we chose the MIT license. BEE is an open source application with source code published allowing for third parties to copy, edit and publish their own versions.

Division of labour

In the initial part og the project we will work together. Everyone needs to have a good understanding of the structure we are implementing. We then decided to take an extreme programming approach where the working load was divided. We had a KanBan-list where we were free to create different issues, and once a person did not have an assignment at hand, he could drag the issue to the work-in-progress board and start implementing the given feature. Once he was done, the issue could be marked as finished and a new one could be chosen.

Link to project repository