------------------------------------------------------------ revno: 8534 committer: Morten Olav Hansen <morte...@gmail.com> branch nick: dhis2 timestamp: Mon 2012-10-15 14:37:39 +0200 message: mobile: first version that can go offline, can browse forms etc, but no saving of datavaluesets yet added: dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/js/dhis2.storage.js dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/manifest.appcache modified: dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Forms.java dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/base.vm dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/data-entry.vm dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/index.vm
-- lp:dhis2 https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk Your team DHIS 2 developers is subscribed to branch lp:dhis2. To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Forms.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Forms.java 2012-10-15 10:20:17 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/webdomain/Forms.java 2012-10-15 12:37:39 +0000 @@ -31,9 +31,7 @@ import org.hisp.dhis.api.webdomain.form.Form; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; /** * @author Morten Olav Hansen <morte...@gmail.com> @@ -41,7 +39,7 @@ public class Forms { // maps ou.uid => org unit. - private Map<String, FormOrganisationUnit> organisationUnits = new HashMap<String, FormOrganisationUnit>( ); + private Map<String, FormOrganisationUnit> organisationUnits = new HashMap<String, FormOrganisationUnit>(); // maps dataSet.uid => form instance private Map<String, Form> forms = new HashMap<String, Form>(); === modified file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/base.vm' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/base.vm 2012-09-29 03:50:36 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/base.vm 2012-10-15 12:37:39 +0000 @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html> +<html manifest="../dhis-web-mobile-resources/manifest.appcache"> <head> <title>DHIS2</title> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -7,6 +7,7 @@ <script src="$baseUrl/../dhis-web-commons/javascripts/jQuery/jquery.min.js?v=1.7.1"></script> <script src="$baseUrl/../dhis-web-mobile-resources/js/underscore.min.js?v=1.3.3"></script> <script src="$baseUrl/../dhis-web-mobile-resources/js/jquery.mobile.min.js?v=1.1.1"></script> + <script src="$baseUrl/../dhis-web-mobile-resources/js/dhis2.storage.js"></script> <script> $(document).bind('pageinit',function(){ === modified file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/data-entry.vm' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/data-entry.vm 2012-10-15 10:20:17 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/data-entry.vm 2012-10-15 12:37:39 +0000 @@ -2,7 +2,7 @@ <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.glob.js"></script> <script type="text/javascript" src="../dhis-web-commons/javascripts/jQuery/jquery.date.js"></script> <script type="text/javascript" src="../dhis-web-commons/javascripts/date.js"></script> -<script type="text/javascript" src="../../dhis-web-commons/javascripts/periodType.js"></script> +<script type="text/javascript" src="../dhis-web-commons/javascripts/periodType.js"></script> <script> var Selected = {}; @@ -28,7 +28,7 @@ function loadOrganisationUnitsPage() { $.mobile.showPageLoadingMsg(); - var organisationUnits = JSON.parse( localStorage['organisationUnits'] ); + var organisationUnits = fm.organisationUnits(); var tmpl = jQuery('#organisation-units-template').html(); @@ -51,8 +51,7 @@ $.mobile.showPageLoadingMsg(); - var organisationUnits = JSON.parse( localStorage['organisationUnits'] ); - var organisationUnit = organisationUnits[Selected.orgUnit]; + var organisationUnit = fm.organisationUnit(Selected.orgUnit); var tmpl = jQuery('#data-sets-template').html(); @@ -104,7 +103,7 @@ $.mobile.showPageLoadingMsg(); - var form = JSON.parse( localStorage['form_' + Selected.dataSet] ); + var form = fm.form(Selected.dataSet); periodType = form.periodType; refreshPeriods(); @@ -134,7 +133,7 @@ $.mobile.showPageLoadingMsg(); - var form = JSON.parse( localStorage['form_' + Selected.dataSet] ); + var form = fm.form(Selected.dataSet); var tmpl = jQuery('#data-entry-template').html(); === modified file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/index.vm' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/index.vm 2012-10-15 10:20:17 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/index.vm 2012-10-15 12:37:39 +0000 @@ -13,22 +13,7 @@ $('#messages a').append("<span class='ui-li-count'>Offline</span>") }); - $.mobile.showPageLoadingMsg(); - - $.ajax({ - url: '../api/currentUser/forms', - dataType: 'json' - }).success(function(data) { - localStorage['organisationUnits'] = JSON.stringify(data.organisationUnits); - - _.each(data.forms, function(v, k) { - localStorage['form_' + k] = JSON.stringify(v); - }); - - $.mobile.hidePageLoadingMsg(); - }).error(function() { - // offline ? reuse meta-data already present - }); + fm.initialize(); }); </script> @@ -40,7 +25,7 @@ <section data-role="content"> <ul data-role="listview" data-inset="true"> - <li id="data-entry"><a href="data-entry">Data Entry</a></li> + <li id="data-entry"><a href="data-entry">Aggregate Reporting</a></li> <li id="messages"><a href="messages">Messages</a></li> <li id="settings"><a href="settings">Settings</a></li> </ul> @@ -51,330 +36,3 @@ </footer> </section> - - - - - - - - - - - - - - - -<!-- - -<section data-role="page" id="selectOrganisationUnitPage" data-theme="c"> - - <header data-role="header"> - <h1>DHIS 2</h1> - <a href="dhis-web-mobile" data-icon="back">Back</a> - <a href="dhis-web-mobile" data-icon="home" data-iconpos="notext">Home</a> - </header> - - <section data-role="content"> - <ul data-role="listview" data-inset="true" data-filter="true"> - <li><a href="#dataEntryPage">OrgUnit #01</a></li> - <li><a href="#dataEntryPage">OrgUnit #02</a></li> - <li><a href="#dataEntryPage">OrgUnit #03</a></li> - <li><a href="#dataEntryPage">OrgUnit #04</a></li> - <li><a href="#dataEntryPage">OrgUnit #05</a></li> - <li><a href="#dataEntryPage">OrgUnit #06</a></li> - <li><a href="#dataEntryPage">OrgUnit #07</a></li> - <li><a href="#dataEntryPage">OrgUnit #08</a></li> - <li><a href="#dataEntryPage">OrgUnit #09</a></li> - <li><a href="#dataEntryPage">OrgUnit #10</a></li> - <li><a href="#dataEntryPage">OrgUnit #11</a></li> - <li><a href="#dataEntryPage">OrgUnit #12</a></li> - <li><a href="#dataEntryPage">OrgUnit #13</a></li> - <li><a href="#dataEntryPage">OrgUnit #14</a></li> - <li><a href="#dataEntryPage">OrgUnit #15</a></li> - <li><a href="#dataEntryPage">OrgUnit #16</a></li> - </ul> - </section> - - <footer data-role="footer"> - <h1></h1> - </footer> - -</section> - -<section data-role="page" id="dataEntryPage" data-theme="c"> - - <header data-role="header"> - <h1>DHIS 2</h1> - <a href="#selectOrganisationUnitPage" data-icon="back">Back</a> - <a href="dhis-web-mobile" data-icon="home" data-iconpos="notext">Home</a> - </header> - - <section data-role="content"> - - <form method="GET"> - <div data-role="fieldcontain"> - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - - <label for="textInput">Text Input</label> - <input id="textInput" type="text" placeholder="Enter text.." /> - </div> - - <div data-role="fieldcontain"> - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - - <label for="numberInput">Number Input</label> - <input id="numberInput" type="number" placeholder="Enter value.." /> - </div> - - <div data-role="fieldcontain"> - <label for="select-choice-1" class="select">Single select native menu:</label> - <select name="select-choice-1" data-native-menu="true" id="select-choice-1"> - <option value="AL">Alabama</option> - <option value="AK">Alaska</option> - <option value="AZ">Arizona</option> - <option value="AR">Arkansas</option> - <option value="CA">California</option> - <option value="CO">Colorado</option> - <option value="CT">Connecticut</option> - <option value="DE">Delaware</option> - <option value="FL">Florida</option> - <option value="GA">Georgia</option> - <option value="HI">Hawaii</option> - <option value="ID">Idaho</option> - <option value="IL">Illinois</option> - <option value="IN">Indiana</option> - <option value="IA">Iowa</option> - <option value="KS">Kansas</option> - <option value="KY">Kentucky</option> - <option value="LA">Louisiana</option> - <option value="ME">Maine</option> - <option value="MD">Maryland</option> - <option value="MA">Massachusetts</option> - <option value="MI">Michigan</option> - <option value="MN">Minnesota</option> - <option value="MS">Mississippi</option> - <option value="MO">Missouri</option> - <option value="MT">Montana</option> - <option value="NE">Nebraska</option> - <option value="NV">Nevada</option> - <option value="NH">New Hampshire</option> - <option value="NJ">New Jersey</option> - <option value="NM">New Mexico</option> - <option value="NY">New York</option> - <option value="NC">North Carolina</option> - <option value="ND">North Dakota</option> - <option value="OH">Ohio</option> - <option value="OK">Oklahoma</option> - <option value="OR">Oregon</option> - <option value="PA">Pennsylvania</option> - <option value="RI">Rhode Island</option> - <option value="SC">South Carolina</option> - <option value="SD">South Dakota</option> - <option value="TN">Tennessee</option> - <option value="TX">Texas</option> - <option value="UT">Utah</option> - <option value="VT">Vermont</option> - <option value="VA">Virginia</option> - <option value="WA">Washington</option> - <option value="WV">West Virginia</option> - <option value="WI">Wisconsin</option> - <option value="WY">Wyoming</option> - </select> - </div> - - <div data-role="fieldcontain"> - <label for="select-choice-2" class="select">Single select custom menu:</label> - <select name="select-choice-2" id="select-choice-2"> - <option value="AL">Alabama</option> - <option value="AK">Alaska</option> - <option value="AZ">Arizona</option> - <option value="AR">Arkansas</option> - <option value="CA">California</option> - <option value="CO">Colorado</option> - <option value="CT">Connecticut</option> - <option value="DE">Delaware</option> - <option value="FL">Florida</option> - <option value="GA">Georgia</option> - <option value="HI">Hawaii</option> - <option value="ID">Idaho</option> - <option value="IL">Illinois</option> - <option value="IN">Indiana</option> - <option value="IA">Iowa</option> - <option value="KS">Kansas</option> - <option value="KY">Kentucky</option> - <option value="LA">Louisiana</option> - <option value="ME">Maine</option> - <option value="MD">Maryland</option> - <option value="MA">Massachusetts</option> - <option value="MI">Michigan</option> - <option value="MN">Minnesota</option> - <option value="MS">Mississippi</option> - <option value="MO">Missouri</option> - <option value="MT">Montana</option> - <option value="NE">Nebraska</option> - <option value="NV">Nevada</option> - <option value="NH">New Hampshire</option> - <option value="NJ">New Jersey</option> - <option value="NM">New Mexico</option> - <option value="NY">New York</option> - <option value="NC">North Carolina</option> - <option value="ND">North Dakota</option> - <option value="OH">Ohio</option> - <option value="OK">Oklahoma</option> - <option value="OR">Oregon</option> - <option value="PA">Pennsylvania</option> - <option value="RI">Rhode Island</option> - <option value="SC">South Carolina</option> - <option value="SD">South Dakota</option> - <option value="TN">Tennessee</option> - <option value="TX">Texas</option> - <option value="UT">Utah</option> - <option value="VT">Vermont</option> - <option value="VA">Virginia</option> - <option value="WA">Washington</option> - <option value="WV">West Virginia</option> - <option value="WI">Wisconsin</option> - <option value="WY">Wyoming</option> - </select> - </div> - - <div data-role="fieldcontain"> - <label for="select-choice-3" class="select">Multi select custom menu:</label> - <select name="select-choice-3" multiple="multiple" id="select-choice-3"> - <option value="AL">Alabama</option> - <option value="AK">Alaska</option> - <option value="AZ">Arizona</option> - <option value="AR">Arkansas</option> - <option value="CA">California</option> - <option value="CO">Colorado</option> - <option value="CT">Connecticut</option> - <option value="DE">Delaware</option> - <option value="FL">Florida</option> - <option value="GA">Georgia</option> - <option value="HI">Hawaii</option> - <option value="ID">Idaho</option> - <option value="IL">Illinois</option> - <option value="IN">Indiana</option> - <option value="IA">Iowa</option> - <option value="KS">Kansas</option> - <option value="KY">Kentucky</option> - <option value="LA">Louisiana</option> - <option value="ME">Maine</option> - <option value="MD">Maryland</option> - <option value="MA">Massachusetts</option> - <option value="MI">Michigan</option> - <option value="MN">Minnesota</option> - <option value="MS">Mississippi</option> - <option value="MO">Missouri</option> - <option value="MT">Montana</option> - <option value="NE">Nebraska</option> - <option value="NV">Nevada</option> - <option value="NH">New Hampshire</option> - <option value="NJ">New Jersey</option> - <option value="NM">New Mexico</option> - <option value="NY">New York</option> - <option value="NC">North Carolina</option> - <option value="ND">North Dakota</option> - <option value="OH">Ohio</option> - <option value="OK">Oklahoma</option> - <option value="OR">Oregon</option> - <option value="PA">Pennsylvania</option> - <option value="RI">Rhode Island</option> - <option value="SC">South Carolina</option> - <option value="SD">South Dakota</option> - <option value="TN">Tennessee</option> - <option value="TX">Texas</option> - <option value="UT">Utah</option> - <option value="VT">Vermont</option> - <option value="VA">Virginia</option> - <option value="WA">Washington</option> - <option value="WV">West Virginia</option> - <option value="WI">Wisconsin</option> - <option value="WY">Wyoming</option> - </select> - </div> - - <input type="reset" value="Clear form" /> - <input type="submit" value="Send form" /> - </form> - - </section> - - <footer data-role="footer"> - <h1></h1> - </footer> - -</section> - -<section data-role="page" id="settingsPage" data-theme="c"> - - <header data-role="header"> - <h1>DHIS 2</h1> - <a href="dhis-web-mobile" data-icon="back">Back</a> - <a href="dhis-web-mobile" data-icon="home" data-iconpos="notext">Home</a> - </header> - - <section data-role="content"> - <form method="GET"> - <label for="firstNameInput">First Name</label> - <input id="firstNameInput" type="text" placeholder="Enter first name.." /> - - <label for="surnameInput">Surname</label> - <input id="surnameInput" type="text" placeholder="Enter surname.." /> - - <label for="emailInput">E-mail</label> - <input id="emailInput" type="text" placeholder="Enter e-mail.." /> - - <label for="phoneInput">Phone Number</label> - <input id="phoneInput" type="text" placeholder="Enter phone number.." /> - - <input type="submit" value="Save settings" /> - </form> - </section> - - <footer data-role="footer"> - <h1></h1> - </footer> - -</section> ---> === added file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/js/dhis2.storage.js' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/js/dhis2.storage.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/js/dhis2.storage.js 2012-10-15 12:37:39 +0000 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2004-2012, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var dhis2 = dhis2 || {}; +dhis2['storage'] = dhis2['storage'] || {}; + +dhis2.storage.FormManager = function ( args ) { + this._organisationUnits = undefined; + this._forms = undefined; + this._id = _.uniqueId('formManager'); +}; + +dhis2.storage.FormManager.prototype.initialize = function ( args ) { + $.ajax({ + url : '../api/currentUser/forms', + dataType : 'json' + }).success(function ( data ) { + localStorage['organisationUnits'] = JSON.stringify(data.organisationUnits); + localStorage['forms'] = JSON.stringify(data.forms); + }).error(function () { + // offline ? reuse meta-data already present + console.log("unable to load meta-data"); + }).complete(function() { + }); +}; + +dhis2.storage.FormManager.prototype.organisationUnits = function () { + if ( this._organisationUnits === undefined ) { + this._organisationUnits = JSON.parse(localStorage['organisationUnits']); + } + + return this._organisationUnits; +}; + +dhis2.storage.FormManager.prototype.organisationUnit = function (id) { + return this.organisationUnits()[id]; +}; + +dhis2.storage.FormManager.prototype.dataSets = function (id) { + var ou = this.organisationUnits()[id]; + return ou.dataSets; +}; + +dhis2.storage.FormManager.prototype.forms = function () { + if( this._forms === undefined ) { + this._forms = JSON.parse( localStorage['forms'] ); + } + + return this._forms; +}; + +dhis2.storage.FormManager.prototype.form = function ( id ) { + return this.forms()[id] +}; + +// global storage manager instance +(function () { + window.fm = new dhis2.storage.FormManager(); +}).call(); === added file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/manifest.appcache' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/manifest.appcache 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/dhis-web-mobile-resources/manifest.appcache 2012-10-15 12:37:39 +0000 @@ -0,0 +1,26 @@ +CACHE MANIFEST +# Version: 1 + +CACHE: +../mobile/index +../mobile/data-entry +../dhis-web-commons/javascripts/jQuery/jquery.min.js?v=1.7.1 +../dhis-web-commons/i18nJavaScript.action +../dhis-web-commons/javascripts/jQuery/jquery.glob.js +../dhis-web-commons/javascripts/jQuery/jquery.date.js +../dhis-web-commons/javascripts/date.js +../dhis-web-commons/javascripts/periodType.js +../dhis-web-commons/css/light_blue/logo_banner.png +css/jquery.mobile.min.css?v=1.1.1 +css/images/ajax-loader.gif +css/images/ajax-loader.png +css/images/icons-18-white.png +css/images/icons-18-black.png +css/images/icons-36-white.png +css/images/icons-36-black.png +js/underscore.min.js?v=1.3.3 +js/jquery.mobile.min.js?v=1.1.1 +js/dhis2.storage.js + +NETWORK: +*
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp