← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8534: mobile: first version that can go offline, can browse forms etc, but no saving of datavaluesets yet

 

------------------------------------------------------------
revno: 8534
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
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 <mortenoh@xxxxxxxxx>
@@ -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:
+*