Difference between revisions of "TheAcademy"

From mn/ifi/inf5750
Jump to: navigation, search
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
= The project =
 
= The project =
  
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline" id="docs-internal-guid-a46fda4f-57bc-e76b-980c-7aae73a46e4e">We want to give users the ability to easily take screenshots of what they are currently seeing, and store it easily in DHIS.</span>
+
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline" id="docs-internal-guid-a46fda4f-57bc-e76b-980c-7aae73a46e4e">We wanted to give users the ability to easily take screenshots of their current view in DHIS, and allow them to browse their screenshots in a Gallery.</span>
 +
 
 +
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size: 15px; background-color: transparent;">Adding support for this feature should be easy for a DHIS2-app developer..</span>
  
== Screenshots and screen flows ==
 
  
== Milestones ==
 
  
=== Milestone 1 (1st November) ===
+
== <span style="color: rgb(0, 0, 0); font-family: Arial; font-size: 15px; background-color: transparent;">What have we made?&nbsp;</span> ==
  
<u>Document features:</u>
+
We made three things: a photo-gallery, and a test-page with a "take screenshot" button, and a spring-service to store screenshots to server.
  
*
+
Our test-app to capture screenshots is a single page with some test-data and a button. The button is the main-event here, as it is the only thing other DHIS2 apps will need to implement in order to use the screenshot feature.
  
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:bold; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">Main feature/function:</span>
+
The button will open a&nbsp;''modal''&nbsp;where the user can enter a title and a description for the screenshot. Then the screenshot will be sent to our backend-service along with the current users username(fetched from '/api/me'), the meta-data entered by user, and the current site-url.
  
*
+
The photo gallery will load all images that are taken by the current user, and present them in a responsive grid with a search-filter. Clicking an image will open the image in a larger modal.
  
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">Add the possibility of taking screenshots of the </span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:italic; font-variant:normal; text-decoration:none; vertical-align:baseline">current view</span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">in DHIS2.</span>
+
The backend-service recieves the image as a base64 encoded png-image (output from html5 canvas.toDataUrl()) and decodes and stores this to disk.
  
*
 
  
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">This should be doable for the user by simply pressing a button </span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:italic; font-variant:normal; text-decoration:none; vertical-align:baseline">somewhere..</span>
 
<ul style="margin-top:0pt;margin-bottom:0pt;">
 
<li><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">Preferably </span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:italic; font-variant:normal; text-decoration:none; vertical-align:baseline">somewhere</span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">should be at the top of the page</span></li>
 
<li><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">Should be configurable (so it can be enabled/disabled depending on what the user is doing)</span></li>
 
</ul>
 
  
*
+
== What other features would we add with more time? ==
  
<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">A user must be able to browse his/her own screenshots</span>
+
*Give users the ability to share images with each other.
<ul style="margin-top:0pt;margin-bottom:0pt;">
+
**Should also be possible to mark images as "public" so anyone can see them..
<li><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">This requires a separate DHIS2-view (possibly a separate DHIS2-app?)</span></li>
+
**The gallery should then show all images a user has access to, and have an additional filter "show only my/shared/public images"
<li><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">This should be like a photo-gallery display.</span></li>
+
**Create an additional database-table to link images with the users they have been shared with.
</ul>
+
*Allow editing description and title from the gallery
 +
*Add a sort-field in the gallery, to sort on date
 +
*Add the ability to create a "public-link" for a given image, so it could be sent as an email-attachment or similar..
 +
*Fix the user-interface styles, so they match the DHIS2-theme (not just pure bootstrap)...
  
  
  
  Show understanding of DHIS2 web apps
+
== Screenshots and screen flows ==
  
 +
==== Add a description to a screenshot ====
  
 +
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_capture_1.png
  
<span style="font-size:medium">'''Architecture'''</span>
+
====  ====
  
=== Milestone 2 (15th November) ===
+
==== Feedback to user when a screenshot is saved ====
  
*
+
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_capture_2.png
  
  First bare-bone version - static HTML
+
==== ====
  
*
+
==== Screenshot gallery ====
  
  Uploadable as DHIS2 web app
+
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_gallery_1.png
  
=== Milestone 3 (30th November) ===
+
====  ====
  
*
+
==== Search field in gallery ====
  
Finished, if applicable also with mobile app.
+
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_gallery_2.png
  
*Final delivery: 8th December, Presentation 9th December
+
====  ====
  
 +
==== Click an image to see larger version ====
  
 +
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_gallery_3.png
  
== Requirements ==
+
====  ====
  
 +
==== And, naturally, its responsive ====
  
 +
https://raw.githubusercontent.com/vegarang/the_academy/master/screenshots/screenshot_gallery_4.png
  
*<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline" id="docs-internal-guid-a46fda4f-5c6d-ae3f-ddb2-dcb210dcdd73">Add the possibility of taking screenshots of the </span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:italic; font-variant:normal; text-decoration:none; vertical-align:baseline">current view</span><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline">in DHIS2.</span>
+
=== ===
*<span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline"><span style="font-size:15px; font-family:Arial; color:#000000; background-color:transparent; font-weight:normal; font-style:normal; font-variant:normal; text-decoration:none; vertical-align:baseline" id="docs-internal-guid-a46fda4f-5c6d-e48f-858d-6b0ba33ee0c4">A user must be able to browse his/her own screenshots</span></span>
 
  
 
== Technologies ==
 
== Technologies ==
Line 76: Line 78:
 
*HTML5
 
*HTML5
 
*Spring
 
*Spring
*Hibernate  
+
*Hibernate
 
*Maven
 
*Maven
 
*DHIS 2 Web API
 
*DHIS 2 Web API
*Bootstrap
+
*Bootstrap 3
 
 
== Time schedule ==
 
  
*&nbsp;To be updated.
 
  
== Suggested improvements to APIs etc ==
 
  
 
== Team ==
 
== Team ==
Line 92: Line 90:
 
*Vegard Angell
 
*Vegard Angell
 
*Hodo Elmi Aden
 
*Hodo Elmi Aden
 
 
  
  

Latest revision as of 12:59, 9 December 2014

The project

We wanted to give users the ability to easily take screenshots of their current view in DHIS, and allow them to browse their screenshots in a Gallery.

Adding support for this feature should be easy for a DHIS2-app developer..


What have we made? 

We made three things: a photo-gallery, and a test-page with a "take screenshot" button, and a spring-service to store screenshots to server.

Our test-app to capture screenshots is a single page with some test-data and a button. The button is the main-event here, as it is the only thing other DHIS2 apps will need to implement in order to use the screenshot feature.

The button will open a modal where the user can enter a title and a description for the screenshot. Then the screenshot will be sent to our backend-service along with the current users username(fetched from '/api/me'), the meta-data entered by user, and the current site-url.

The photo gallery will load all images that are taken by the current user, and present them in a responsive grid with a search-filter. Clicking an image will open the image in a larger modal.

The backend-service recieves the image as a base64 encoded png-image (output from html5 canvas.toDataUrl()) and decodes and stores this to disk.


What other features would we add with more time?

  • Give users the ability to share images with each other.
    • Should also be possible to mark images as "public" so anyone can see them..
    • The gallery should then show all images a user has access to, and have an additional filter "show only my/shared/public images"
    • Create an additional database-table to link images with the users they have been shared with.
  • Allow editing description and title from the gallery
  • Add a sort-field in the gallery, to sort on date
  • Add the ability to create a "public-link" for a given image, so it could be sent as an email-attachment or similar..
  • Fix the user-interface styles, so they match the DHIS2-theme (not just pure bootstrap)...


Screenshots and screen flows

Add a description to a screenshot

screenshot_capture_1.png

Feedback to user when a screenshot is saved

screenshot_capture_2.png

Screenshot gallery

screenshot_gallery_1.png

Search field in gallery

screenshot_gallery_2.png

Click an image to see larger version

screenshot_gallery_3.png

And, naturally, its responsive

screenshot_gallery_4.png

Technologies

  • Javascript
  • AngularJS
  • HTML5
  • Spring
  • Hibernate
  • Maven
  • DHIS 2 Web API
  • Bootstrap 3


Team

  • Mats Astrup Schjølberg
  • Vegard Angell
  • Hodo Elmi Aden


The Repository

https://github.com/vegarang/the_academy