Skip to content

Commit

Permalink
Merge branch 'develop' into release/1.6.6.3
Browse files Browse the repository at this point in the history
  • Loading branch information
iperdomo committed Nov 5, 2013
2 parents 41135a4 + 3552558 commit ac0e686
Show file tree
Hide file tree
Showing 20 changed files with 578 additions and 22 deletions.
21 changes: 4 additions & 17 deletions Dashboard/app/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -2121,14 +2121,11 @@ nav.smallMenu ul li a.showQuestion:hover { background: url(../images/showQuestio
.questionNbr span {
display: inline-block;
margin: -10px 0.6em 0 0;
padding: 0.2em 0 0 0;
width: 2em;
height: 1.8em;
border-radius: 1em;
padding:0.3em 0.6em;
border-radius: 0.75em;
background: rgb(58,58,58);
color: rgb(223,223,223);
text-align: center;
font-weight: bold;
font-size: 0.8em;
-moz-box-shadow: 0 -1px 0 rgb(185,185,185), 0 2px 0 rgb(255,255,255);
-webkit-box-shadow: 0 -1px 0 rgb(185,185,185), 0 2px 0 rgb(255,255,255);
Expand Down Expand Up @@ -2747,25 +2744,15 @@ footer.bottomPage a[rel="self"]:hover { }
}
.surveyPreviewWrap .innerContent h1.questionNbr span {
display: inline-block;
margin: 0.1em 0.2em 0 0;
padding: 0 0 0 0;
margin: 0.1em 0.5em 0 0;
width: inherit;
height: inherit;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
background: transparent;
color: rgb(58,58,58);
text-align: center;
font-weight: bold;
font-size: 1.2em;
-o-border-radius: 0;
}

.surveyPreviewWrap .innerContent h1.questionNbr span:after {
display: inline-block;
margin: 0 0.2em 0 0;
content: ".";
margin: 0 0.5em 0 0;
}
.surveyPreviewWrap .previewQuestion { margin: 2.5em auto 0 auto; }
/********************************************************************************************************************************
Expand Down
1 change: 0 additions & 1 deletion Dashboard/app/js/lib/controllers/survey-controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,6 @@ FLOW.surveyGroupControl = Ember.ArrayController.create({
var surveyGroup;
surveyGroup = FLOW.store.find(FLOW.SurveyGroup, keyId);
surveyGroup.deleteRecord();
FLOW.selectedControl.selectedSurvey.set('status', 'NOT_PUBLISHED');
FLOW.store.commit();
FLOW.selectedControl.set('selectedSurveyGroup', null);
}
Expand Down
7 changes: 3 additions & 4 deletions Dashboard/app/js/lib/views/devices/assignment-edit-views.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,10 +178,9 @@ FLOW.AssignmentEditView = FLOW.View.extend({
},

selectAllSurveys: function () {
var selected = Ember.A([]);
FLOW.surveyControl.get('content').forEach(function (item) {
selected.pushObject(item);
});
var selected = FLOW.surveyControl.get('content').filter(function (item) {
return item.get('status') === "PUBLISHED";
});
FLOW.selectedControl.set('selectedSurveys', selected);
},

Expand Down
10 changes: 10 additions & 0 deletions doc/FunctionalDesign.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Functional design
The Dashboard is organised in sections, each of which represent a functional unit of the system. Each section links to its functional design document.
* [Surveys](functionalDesign/Surveys.md) - Create, edit and publish surveys
* [Devices](functionalDesign/Devices.md) - Manage the devices connected with your Akvo FLOW Dashboard
* [Data](functionalDesign/Data.md) - View, edit, import and clean data collected with Akvo FLOW surveys
* [Reports](functionalDesign/Reports.md) - Viewing and exporting data and results from your surveys
* [Maps](functionalDesign/Maps.md) - Shows the surveys collected with a GPS location as points on a map
* [Users](functionalDesign/Users.md) - Defining users and their permissions
* [Messages](functionalDesign/Messages.md) - Lists messages on your dashboard related to activity with surveys and data processing activity
* [Admin](functionalDesign/Admin.md) - Activities for super users (typically Akvo staff)
53 changes: 53 additions & 0 deletions doc/Requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
## Purpose
The mission of the Akvo Foundation is to increase the quality of development processes by providing organisations with open source tools for knowledge sharing, online reporting, and data collection. To accomplish this, Akvo is working on an open source suite of tools under the label end-to-end transparency — transparency all the way from the allocation of government ODA funds, down to individual projects, down to the detailed impact data in the field. Akvo FLOW is part of this suite of tools.

Data is a valuable commodity for the organizations working to deliver better services to those who lack them. Having the right data can drive smarter decision-making and make development projects more efficient, more effective, and more appealing to funders.The ultimate goal of Akvo FLOW is providing governments and organizations an open, easy-to-use, affordable way to collect and understand this data. Experience has shown that use of Akvo FLOW significantly reduces errors in data collection, increases the speed and convenience of collection, survey management and data sharing and analysis, as well as increasing transparency in the data flow.

The outcome we aim for is that using the Akvo FLOW service allows organisations and governments to do their (monitoring) work more efficient, more effective, and more transparent. A second expected outcome is that using Akvo FLOW leads to more transparency in the sector. In the end, the impact of Akvo FLOW is the benefit it brings to the processes and systems it helps manage: pumps that are monitored stay working longer and are reparied earlier, client satisfaction interviews leads to better services in hospitals, open data leads to more public scrutiny and less corruption, etc.

Expected areas of change for organisations using Akvo FLOW:
* easier data collection, leading to more and high-quality data
* increases of speed of data collection
* accuracy of data collection - reduction of data entry errors
* better usage of data analysis and visualisation for decision making
* More users of collected data
* Easier management of surveys

A quote from Keri Kugler, Monitoring expert at the US-based NGO Water for People: "Using the survey tools, we speak with community members, find out if water service is reliable, whether someone can fix problems, and better understand ongoing issues,” Kugler wrote. “This kind of monitoring is a cornerstone to sustainable water solutions across the developing world."

## Scope
The goal of Akvo FLOW is to provide organisations with an affordable and reliable service to collect, manage, analyse and display geographically-referenced monitoring and evaluation data, offering fast data collection, survey flexibility, analytical tools for data-driven decision making and visual reporting of results.

Due to the wide availability of Android-based devices at low cost, the Akvo FLOW at the moment exclusively runs on Android devices.

FLOW users create surveys that can include text, photos, video, and GPS coordinates. Smartphones can store hundreds of surveys and collect data even where there is no cellular connection. The data automatically gets transmitted once the user has a mobile connection, or can be manually transferred.

## Akvo FLOW overview
The Akvo FLOW system consists of two parts: an online system for managing surveys and data, and an android app. Detailed functional design specifications [are available here](FunctionalDesign.md).

#### Dashboard
The FLOW Dashboard is the web-based location where users access and manage their FLOW data. All the data collected through FLOW is stored and processed in the Dashboard. It is also where users can run reports, create and edit surveys, and edit data. Each organization has its own URL to access its online Dashboard.

The Dashboard is made up a series of pages. Across the top bar there are a series of menu items:
* Surveys - Create, edit and publish surveys
* Devices - Manage the devices connected with your Akvo FLOW Dashboard
* Data - View, edit, import and clean data collected with Akvo FLOW surveys
* Reports - Viewing and exporting data and results from your surveys
* Maps - Shows the surveys collected with a GPS location as points on a map
* Users - Defining users and their permissions
* Messages - Lists messages on your dashboard related to activity with surveys and data processing activity
* Admin - contains activities for super users (typically Akvo staff)

#### FLOW app
The FLOW app is an Android app that runs on phones or tablets. Users can log in to the app, download surveys, fill in surveys, and submit data. Users can also download data, if monitoring features are used.

## Use cases
We have defined a number of user roles, representing ways that people with different roles can interact with the system. Each roles has a detailed description in the form of a persona. The user roles are:
* [Enumerator](useCases/Enumerator.md)
* [Field Manager](useCases/FieldManager.md)
* [Project Manager](useCases/ProjectManager.md)
* [Director](useCases/Director.md)
* [Donor](useCases/Donor.md)
* [External data user](useCases/DataUser.md)

We have also formulated a number of [use case examples](useCases/UserCaseExamples.md).
23 changes: 23 additions & 0 deletions doc/functionalDesign/Admin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## Admin

The admin functionaly is only for super admins, i.e. Akvo staff.

#### High-level requirements
1. Remote exception manager
2. Import survey definition and data from other instance
3. bulk delete data
4. etc.

#### Requirements
###### 1. Remote exception manager
* On a subtab __Device issues__, a list of remote exceptions is displayed

###### 2. Import survey definition and data from other instance
* On a subtab *Remote instance actions*, the user can select a survey from a different instance, and import it in the current instance.
* A checkbox *also import survey data?* determines if the data collected with that survey is also imported

###### 3. bulk delete data
* On a subtab *Bulk delete*, the user can select a survey for bulk deletion of data

###### 4. etc.

40 changes: 40 additions & 0 deletions doc/functionalDesign/Data.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## Data

#### High-level requirements
1. inspect raw data (survey Instances)
2. inspect records (surveyed Locales)
3. bulk upload data
4. Excel data cleaning
5. data cleaning

#### Requirements
###### 1. inspect raw data (survey Instances)
* On a subtab __Inspect Data__, the raw data (surveyInstances) is displayed in a list, with the actions *Edit* and *Delete
* The raw data is ordered by decreasing submitted time
* When *Edit* is clicked, all answers for the given surveyInstance are shown in a popup. All answers can be edited, with the edit action being aware of the question type.
* When *Delete* is clicked, a confirmation dialog is displayed. If confirmed, the surveyInstance will be deleted, and all attached aggregates will be updated.
* Raw data can be filered by survey, submission to and from date, submitter name, device id.

###### 2. inspect records (surveyed Locales)
* On a subtab __Inspect records__, records (surveyedLocales) are shown in a list, after a monitoring survey group is chosen.
* On top, there is an action *Detail view*
* When *Details view* is clicked, the currently selected surveyedLocale is shown with all its details, and *previous record* and *next record* actions.
* A record shows the list of surveyInstances that has contributed to it. If a surveyInstance is clicked, the questionAnswers are shown

###### 3. bulk upload data
* On a subtab __Bulk upload data__, a dropdown area is presented where users can drop zipped flow data. Users can also select a file on their computer for upload
* A clear help message is displayed to explain the user what needs to be uploaded (a zip file of the surveyal folder).

###### 4. Excel data cleaning
* On a subtab __Excel data cleaning__, the user can select a surveygroup, survey and language
* When the survey is selected, the user can export a raw data report
* When the survey is selected, the user can import a raw data report that has been cleaned
* The system checks if the uploaded data corresponds to the selected survey.

###### 5. Data cleaning
* On a subtab __Data cleaning__, a survey can be selected, after which the raw data is displayed, with survey instances as rows and questions as columns
* users can hide and show columns
* users can perform actions per column
* actions include search-and-replace, capitalize first word, all lowercase, remove punctuation, etc.
* edit individual fields, with the field being aware of the question type
* The system should save the previous version, and indicate if fields have changed.
22 changes: 22 additions & 0 deletions doc/functionalDesign/Devices.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Devices

The data collection is user-centric, so the device is just a tool. Surveys are assigned to users, not devices


#### High-level requirements
1. See device status, including recent activity, app version, users, etc.
2. Send message to device

#### Requirements
###### 1. See device status, including recent activity, app version, users, etc.
* The __Devices__ page shows a list of devices that have been in contact with the dashboard lately
* Devices can be grouped into device groups
* Each device has the actions , *see details* and *block*
* When *details* is clicked, a popup is shown with the details of the device, including: last contact, last known location, users that have logged in, number of surveys submitted, remote exceptions, apk version installed.
* When *block* is clicked, a confirmation popup is shown. If confirmed, it will block new contributions from that device, and block all access to data stored in that device.
* if a device is blocked, and a mobile user tries to login, a message is displayed informing the mobile user that the phone is blocked, with a 'contact your field manager' message.

###### 2. Send message to device
* On the __Devices__ page, a user can select devices or groups of devices, and apply actions to them.
* One action is to send a message to a device, which will be displayed when a mobile user logs in.
* If the *Send message* is clicked, a popup is displayed with a text field for the message and a confirmation message.
26 changes: 26 additions & 0 deletions doc/functionalDesign/Maps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Maps

#### High-level requirements
1. Display maps in dashboard
2. Display public map
3. Filter data
4. Export maps

#### Requirements
###### 1. Display maps in dashboard
* On a page __Maps__, a world map is displayed
* On the map, clustered point data is shown for all data in the system, both public and private
* The point data is the surveyedLocales.
* When a point is selected, a sidebar on the right is displayed with point data, such as submission date, photo, question answers, etc.

###### 2. Display public map
* On a publicly available URL, a world map is shown with clustered data of public data
* The map has a footer that contains name of organization(s) that collected the data, link to akvo.org or "powered by Akvo".

###### 3. Filter data
* The user can filter on survey, submission date
* When a filter is active, individual point data is shown, otherwise, clustered data is shown
* The user can define color coding to highlight answers of option questions

###### 4. Export maps
* Maps can be exported in a variety of formats, among which a Google Earth file (.kmz)
10 changes: 10 additions & 0 deletions doc/functionalDesign/Messages.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Messages

#### High-level requirements
1. Display system status messages

#### Requirements
###### 1. Display system status messages
* On a page *Messages*, a list of system messages is displayed, order by decreasing timestamp
* System messages include published surveys, importated spreadsheets, etc.

39 changes: 39 additions & 0 deletions doc/functionalDesign/Reports.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## Reports

#### High-level requirements
1. Display charts
2. Display of default and custom reports (user activity, devices, data)
3. Custom report builder
4. Export of default and custom reports
5. Edit notifications

#### Requirements
###### 1. Display charts
* On a subtab __Charts__, users can select a survey group, survey, and option question
* An action *Build chart* is displayed on the page
* The user can choose between different type of charts, currently doughnut chart, vertical bar chart, horizontal bar chart
* When a selection is made, the action *Build chart*, the chart is displayed using the results from the question
* a checkbox *group smaller items* is displayed. When checked, the doughnut chart groups together small items so they don't clutter up the chart. The smaller items are displayed in a list on the right
* Functionality is provided to save the chart in a number of formats, among which gif, jpg, png, and pdf.

###### 2. Display of default and custom reports (user activity, devices, data)
* A subtab __Display reports__ allows choosing a survey group and survey, and a type of report
* The default report types include surveyInstances, surveyedLocales, user activity, google earth file, comprehensive report, etc.
* The custom reports include what has been defined under the custom report builder

###### 3. Custom report builder
* A subtab __Report builder__ allows the user to create custom reports. A list of custom reports is shown, with *edit* and *delete* actions per report, and a *Add Custom Report* action on top
* When *Add Custom Report* is chosen, a new report is created. Users can choose a name for the report.
* The user can define the contents of the custom report.

###### 4. Export of default and custom reports
* A subtab __Export reports__ allows the user to export custom reports as excel or pdf format, depending on the type.
* Two dropdowns are shown, one for the default reports, and one for the custom reports
* After choosing a report, the user can click *Export*.
* The user will be presented with a file location chooser
* After selection, the file is saved.

###### 5. Edit notifications
* A subtab __Notifications__ allows the user to edit notifications. A list of notifications is shown, with *edit* and *delete* actions per notification, and a *Add Notificaiton* action on top
* When *Add notification* is selected, a new notification is created. The user can provide an email address, name of the notification, type of notification.

Loading

0 comments on commit ac0e686

Please sign in to comment.