Difference between revisions of "Kokeriet"

From mn/ifi/inf5750
Jump to: navigation, search
(Project descriptions requirements)
m (Division of labour)
 
(17 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
*Christian Ytterhaug Sæther (christys)
 
*Christian Ytterhaug Sæther (christys)
  
== Project descriptions requirements ==
+
== Project description requirements ==
  
===Assignment===
+
===Recipe (Assignment)===
 
* [[Stock Level Visualisations]]
 
* [[Stock Level Visualisations]]
  
===Assignment description===
+
===Directions (Assignment description)===
 
This assignment involves creating an app for DHIS2 that produces visualisations for logistics data, including the necessary calculations for producing these, including:
 
This assignment involves creating an app for DHIS2 that produces visualisations for logistics data, including the necessary calculations for producing these, including:
  
Line 19: Line 19:
 
It should be possible for an administrator to set the default minimum and maximum thresholds (in months of stock availability) to be used, and for users to override this. Furthermore, because this app should be usable in different settings/ countries and thus different DHIS2 databases, there must be an interface for selecting what data elements/ indicators to use for analysis, i.e.. for each variable the stock used, ending/ starting balance etc (as needed).
 
It should be possible for an administrator to set the default minimum and maximum thresholds (in months of stock availability) to be used, and for users to override this. Furthermore, because this app should be usable in different settings/ countries and thus different DHIS2 databases, there must be an interface for selecting what data elements/ indicators to use for analysis, i.e.. for each variable the stock used, ending/ starting balance etc (as needed).
  
===Requirements===
+
=== Plating example (Mockup) ===
TODO:
+
[[File:1.1-Screen 1.png|none|thumb|648x648px]]
 +
[[File:2.1-Screen 2.png|none|thumb|643x643px]]
 +
 
 +
===Features===
 +
* Remaining stock status
 +
* Graph visualisation
 +
* Persistent storage of Min/Max thresholds
 +
* Tree visualisation of organisation units
 +
 
 +
=== Preliminary timeline ===
 +
[[File:Preliminary timeline of project.png|frameless|922x922px]]
 +
 
 +
This is our projected time usage as of now. This is subject to change during development.
 +
* Milestone 1: Wiki page is ready according to project description.
 +
* Narrowing in on the assignment, getting the project more specific. Setting up Vue and ChartJS libraries.
 +
* Working on Input and output from users. Show data from API in chart format.
 +
* Polishing the User Experience. Functionality for saving Min/Max of stocks. Data for estimated stock and time stock will last.
 +
* Final fixes. Getting ready for presentations.
 +
 
 +
=== Assumptions ===
 +
* Since the program is supposed to be used in different settings/countries, we decided to include all data elements in one dropdown menu. This gives the user full access from one single menu.
 +
* Min/max thresholds save the minimum/maximum allowed values.
 +
* Users in the F_PROGRAM_DASHBOARD_CONFIG_ADMIN group are considered administrators. These users have extended rights to modify default thresholds.
 +
 
 +
== Ingredients (Architecture) ==
 +
To make the project we have ve decided to use these frameworks and external libraries:
 +
 
 +
=== Front end framework ===
 +
As the front end framework we will use [https://vuejs.org/ Vue]. Vue is lightweight and easy to get started with. It also has a considerable amount of modules available for use.
 +
 
 +
=== Coding style ===
 +
For keeping all code uniform in style, we used [https://eslint.org/ ESlint] with the [https://www.npmjs.com/package/eslint-config-airbnb-base Airbnb ruleset].
 +
 
 +
=== Charts ===
 +
We opted to use [http://www.chartjs.org/ ChartJS] together with [http://vue-chartjs.org/#/ vue-chartjs] to make charts because of ease of use and nice graphical capabilities. To use ChartJS with Vue, we used vue-chartjs as a wrapper.
 +
 
 +
=== Tree hierarchy ===
 +
We used [https://github.com/zdy1988/vue-jstree vue-jstree] for the organisation unit hierarchy view.
 +
 
 +
=== Dependency management ===
 +
For managing dependencies with ease we will use [https://yarnpkg.com/lang/en/ Yarn].  We're using Yarn because of ease of use. It's faster than NPM, and allows for good integration with the program itself. We've also added a license-checker package which helps us decide what licenses our dependencies use.
 +
 
 +
=== Project management ===
 +
To manage the workload we are using [https://trello.com/ Trello]. Trello is great because it makes it easy to divide work between the team members.
 +
 
 +
For version control we will use git and [https://github.uio.no/ github].
 +
 
 +
== License (MIT) ==
 +
<code>WWWWWW||WWWWWW</code>
 +
  <code>W W W||W W W</code>
 +
      <code>||</code>   
 +
    <code>( OO )__________</code>
 +
      <code>/  |          \</code>
 +
    <code>/o o|    MIT    \</code>
 +
    <code>\___/||_||__||_|| *</code>
 +
          <code>|| ||  || ||</code>
 +
        <code>_||_|| _||_||</code>
 +
        <code>(__|__|(__|__|</code>
 +
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 +
 
 +
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 +
 
 +
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
== Architecture ==
 
Nothing yet
 
== Licensing ==
 
Nothing yet
 
 
== Division of labour ==
 
== Division of labour ==
Nothing yet
+
* Christian Sæther
 +
** Editor-in-chief of project wiki.
 +
** Persistent storage of thresholds through userDataStore
 +
* Andreas Thompson
 +
** Graph module and API integration for graph.
 +
** Threshold slider
 +
* Henrik Lilleengen
 +
** Stock status module
 +
** UX Pair programming has also been used.
 +
 
 
== Link to project repository ==
 
== Link to project repository ==
Nothing yet
+
* Project repository is located [https://github.uio.no/henrilil/inf5750-kokeriet here]

Latest revision as of 13:38, 6 December 2017

Chefs (Group members)

  • Andreas Thompson (andrerth)
  • Henrik Lilleengen (henrilil)
  • Christian Ytterhaug Sæther (christys)

Project description requirements

Recipe (Assignment)

Directions (Assignment description)

This assignment involves creating an app for DHIS2 that produces visualisations for logistics data, including the necessary calculations for producing these, including:

  • For a selection of organisation units, produce a visualisation of the estimated months of stock left. There is usually a policy to keep the stock between a minimum and maximum levels. These should be configurable in the app, and organisation units above/below these levels should be highlighted.
  • For one organisation unit, produce a visualisation of the time-trend in stock availability (e.g. for the last 12 months), with minimum and maximum thresholds for what is adequate levels of stock.

The estimated months of stock left is based on the average amount used in recent periods, compared with the stock available at the end of the period in question. For example, if 350 doses of BCG has been used on average Jan-March and 600 doses is available at the end of March, the current stock will last an estimated 1,7 months.

It should be possible for an administrator to set the default minimum and maximum thresholds (in months of stock availability) to be used, and for users to override this. Furthermore, because this app should be usable in different settings/ countries and thus different DHIS2 databases, there must be an interface for selecting what data elements/ indicators to use for analysis, i.e.. for each variable the stock used, ending/ starting balance etc (as needed).

Plating example (Mockup)

1.1-Screen 1.png
2.1-Screen 2.png

Features

  • Remaining stock status
  • Graph visualisation
  • Persistent storage of Min/Max thresholds
  • Tree visualisation of organisation units

Preliminary timeline

Preliminary timeline of project.png

This is our projected time usage as of now. This is subject to change during development.

  • Milestone 1: Wiki page is ready according to project description.
  • Narrowing in on the assignment, getting the project more specific. Setting up Vue and ChartJS libraries.
  • Working on Input and output from users. Show data from API in chart format.
  • Polishing the User Experience. Functionality for saving Min/Max of stocks. Data for estimated stock and time stock will last.
  • Final fixes. Getting ready for presentations.

Assumptions

  • Since the program is supposed to be used in different settings/countries, we decided to include all data elements in one dropdown menu. This gives the user full access from one single menu.
  • Min/max thresholds save the minimum/maximum allowed values.
  • Users in the F_PROGRAM_DASHBOARD_CONFIG_ADMIN group are considered administrators. These users have extended rights to modify default thresholds.

Ingredients (Architecture)

To make the project we have ve decided to use these frameworks and external libraries:

Front end framework

As the front end framework we will use Vue. Vue is lightweight and easy to get started with. It also has a considerable amount of modules available for use.

Coding style

For keeping all code uniform in style, we used ESlint with the Airbnb ruleset.

Charts

We opted to use ChartJS together with vue-chartjs to make charts because of ease of use and nice graphical capabilities. To use ChartJS with Vue, we used vue-chartjs as a wrapper.

Tree hierarchy

We used vue-jstree for the organisation unit hierarchy view.

Dependency management

For managing dependencies with ease we will use Yarn. We're using Yarn because of ease of use. It's faster than NPM, and allows for good integration with the program itself. We've also added a license-checker package which helps us decide what licenses our dependencies use.

Project management

To manage the workload we are using Trello. Trello is great because it makes it easy to divide work between the team members.

For version control we will use git and github.

License (MIT)

WWWWWW||WWWWWW 
 W W W||W W W 
      ||    
    ( OO )__________
     /  |           \
    /o o|    MIT     \
    \___/||_||__||_|| *
         || ||  || ||
        _||_|| _||_||
       (__|__|(__|__| 

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Division of labour

  • Christian Sæther
    • Editor-in-chief of project wiki.
    • Persistent storage of thresholds through userDataStore
  • Andreas Thompson
    • Graph module and API integration for graph.
    • Threshold slider
  • Henrik Lilleengen
    • Stock status module
    • UX Pair programming has also been used.

Link to project repository

  • Project repository is located here