=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/cacheManifest.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/cacheManifest.vm 2013-05-03 03:27:58 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/cacheManifest.vm 2013-05-03 04:18:04 +0000 @@ -39,9 +39,11 @@ ../dhis-web-commons/javascripts/dhis2/dhis2.select.js ../dhis-web-commons/javascripts/dhis2/dhis2.comparator.js ../dhis-web-commons/javascripts/dhis2/dhis2.availability.js +../dhis-web-commons/javascripts/dhis2/dhis2.storage.ls.js +../dhis-web-commons/javascripts/dhis2/dhis2.storage.ss.js +../dhis-web-commons/javascripts/dhis2/dhis2.storage.idb.js +../dhis-web-commons/javascripts/dhis2/dhis2.storage.memory.js ../dhis-web-commons/javascripts/dhis2/dhis2.storage.js -../dhis-web-commons/javascripts/dhis2/dhis2.storage.dom.js -../dhis-web-commons/javascripts/dhis2/dhis2.storage.dom-ss.js ../dhis-web-commons/javascripts/jQuery/jquery.cookie.js ../dhis-web-commons/javascripts/jQuery/jquery.validate.js ../dhis-web-commons/javascripts/jQuery/jquery.validate.ext.js === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm 2013-05-03 03:27:58 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm 2013-05-03 04:18:04 +0000 @@ -78,3 +78,6 @@ #parse( "dhis-web-commons/loader/loader.vm" )
+ + + === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationResult.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationResult.vm 2013-05-03 03:27:58 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationResult.vm 2013-05-03 04:18:04 +0000 @@ -36,11 +36,11 @@ #elseif($velocityCount==2) #set($categoryoptioncomboid=$col) #elseif($velocityCount==3) + #set($periodid=$col) + #elseif($velocityCount==4) #set($organisationunitid=$col) #elseif($velocityCount==$row.size()) #set($value=$col) - #elseif($velocityCount==6) - #set($periodid=$col) #end #set($item=$dataelementid + '_' + $categoryoptioncomboid + '_' + $periodid + '_' + $organisationunitid + '_' + $value) #end === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js 2013-05-03 03:27:58 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js 2013-05-03 04:18:04 +0000 @@ -1,74 +1,134 @@ var DAO = DAO || {}; -var PROGRAMS_STORE = 'anonymousPrograms'; -var PROGRAM_STAGES_STORE = 'anonymousProgramStages'; -var OPTION_SET_STORE = 'optionSets'; -var USERNAME_STORE = 'usernames'; -var OFFLINE_DATA_STORE = 'anonymousOfflineData'; - -function initalizeProgramStages() { - DAO.programStages = new dhis2.storage.Store( {name: PROGRAM_STAGES_STORE, adapter: 'dom-ss'}, function(store) { - $( document ).trigger('dhis2.anonymous.programStagesInitialized'); - }); -} - -function initializePrograms() { - DAO.programs = new dhis2.storage.Store( {name: PROGRAMS_STORE, adapter: 'dom-ss'}, function ( store ) { - jQuery.getJSON( "getProgramMetaData.action", {},function ( data ) { - var keys = _.keys( data.metaData.programs ); - var objs = _.values( data.metaData.programs ); - - DAO.programs.addAll( keys, objs, function ( store ) { - var deferred = $.Deferred(); - var promise = deferred.promise(); - - _.each( _.values(data.metaData.programs), function(el, idx) { - var psid = el.programStages[0].id; - - promise = promise.pipe(function () { - return loadProgramStage(psid); - }); - }); - - promise = promise.pipe(function() { - loadOptionSets( data.metaData.optionSets, data.metaData.usernames ); - }); - - deferred.resolve(); - - selection.setListenerFunction( organisationUnitSelected ); - $( document ).trigger('dhis2.anonymous.programsInitialized'); +DAO.metaData = new dhis2.storage.Store( { + name: 'dhis2', + adapters: [ dhis2.storage.DomSessionStorageAdapter, dhis2.storage.InMemoryAdapter ], + objectStores: [ 'programs', 'programStages', 'optionSets', 'usernames' ] +} ); + +DAO.offlineData = new dhis2.storage.Store( { + name: 'dhis2', + adapters: [ dhis2.storage.DomLocalStorageAdapter, dhis2.storage.InMemoryAdapter ], + objectStores: [ 'dataValues' ] +} ); + +DAO.metaData.open(); +DAO.offlineData.open(); + +function loadPrograms() { + var def = $.Deferred(); + + $.ajax({ + url: 'getProgramMetaData.action', + dataType: 'json' + } ).done(function(data) { + var programs = _.values( data.metaData.programs ); + DAO.metaData.setAll('programs', programs ).then(function() { + def.resolve(data.metaData); + }); + } ).always(function() { + def.resolve(); + }); + + return def.promise(); +} + +function loadProgramStages( metaData ) { + if(!metaData) { + return; + } + + var deferred1 = $.Deferred(); + var deferred2 = $.Deferred(); + var promise = deferred2.promise(); + + _.each( _.values(metaData.programs), function(el, idx) { + var psid = el.programStages[0].id; + var data = createProgramStage(psid); + + promise = promise.then(function() { + return $.ajax( { + url: 'dataentryform.action', + data: data, + dataType: 'html' + } ).done(function(data) { + var obj = {}; + obj.id = psid; + obj.form = data; + DAO.metaData.set('programStages', obj); + }); + }); + }); + + promise = promise.then(function() { + deferred1.resolve( metaData ); + }); + + deferred2.resolve(); + + return deferred1.promise(); +} + +function loadOptionSets(metaData) { + if(!metaData) { + return; + } + + var deferred1 = $.Deferred(); + var deferred2 = $.Deferred(); + var promise = deferred2.promise(); + + _.each( metaData.optionSets, function ( item, idx ) { + promise = promise.then( function () { + return $.ajax( { + url: 'getOptionSet.action?dataElementUid=' + item, + dataType: 'json' + } ).done( function ( data ) { + var obj = {}; + obj.id = item; + obj.optionSet = data.optionSet; + DAO.metaData.set('optionSets', obj); } ); - } ).fail( function () { - DAO.optionSets = new dhis2.storage.Store( {name: OPTION_SET_STORE, adapter: 'dom-ss'}, function() {} ); - DAO.usernames = new dhis2.storage.Store( {name: USERNAME_STORE, adapter: 'dom-ss'}, function() {} ); - - selection.setListenerFunction( organisationUnitSelected ); - $( document ).trigger('dhis2.anonymous.programsInitialized'); } ); } ); -} - -function initializeOfflineData() { - DAO.offlineData = new dhis2.storage.Store( {name: OFFLINE_DATA_STORE, adapter: 'dom'}, function(store) { - $( document ).trigger('dhis2.anonymous.offlineData'); + + if ( metaData.usernames ) { + promise = promise.then( function() { + return $.ajax( { + url: 'getUsernames.action', + dataType: 'json' + } ).done( function (data) { + var obj = {}; + obj.id = 'usernames'; + obj.usernames = data.usernames; + DAO.metaData.set('usernames', obj); + } ) + } ); + } + + promise = promise.then(function() { + deferred1.resolve( metaData ); }); + + deferred2.resolve(); + + return deferred1.promise(); } function updateOfflineEvents() { - DAO.offlineData.fetchAll(function(store, arr) { + var no_offline_template = $( '#no-offline-event-template' ); + var no_offline_template_compiled = _.template( no_offline_template.html() ); + + var offline_template = $( '#offline-event-template' ); + var offline_template_compiled = _.template( offline_template.html() ); + + return DAO.offlineData.getAll( 'dataValues' ).done( function ( arr ) { var orgUnitId = selection.getSelected(); var programId = $('#programId').val(); var target = $( '#offlineEventList' ); target.children().remove(); - var no_offline_template = $( '#no-offline-event-template' ); - var no_offline_template_compiled = _.template( no_offline_template.html() ); - - var offline_template = $( '#offline-event-template' ); - var offline_template_compiled = _.template( offline_template.html() ); - if ( arr.length > 0 ) { var matched = false; @@ -89,9 +149,7 @@ } else { target.append( no_offline_template_compiled() ); } - - $( document ).trigger('dhis2.anonymous.checkOfflineEvents'); - }); + } ); } function showOfflineEvents() { @@ -105,12 +163,10 @@ var haveLocalData = false; function checkOfflineData(callback) { - DAO.offlineData.fetchAll( function ( store, arr ) { + return DAO.offlineData.getAll( 'dataValues' ).done( function ( arr ) { haveLocalData = arr.length > 0; - $( document ).trigger('dhis2.anonymous.checkOfflineData'); - if(callback && typeof callback == 'function') callback(haveLocalData); - } ); + }); } function uploadOfflineData( item ) { @@ -120,7 +176,7 @@ data: JSON.stringify( item ) } ).done(function(json) { if ( json.response == 'success' ) { - DAO.offlineData.remove( item.key, function ( store ) { + DAO.offlineData.delete( 'dataValues', item.id ).done( function () { updateOfflineEvents(); searchEvents( eval( getFieldValue( 'listAll' ) ) ); } ); @@ -131,7 +187,7 @@ function uploadLocalData() { setHeaderWaitMessage( i18n_uploading_data_notification ); - DAO.offlineData.fetchAll( function ( store, arr ) { + DAO.offlineData.getAll( 'dataValues' ).done( function ( arr ) { if(arr.length == 0) { setHeaderDelayMessage( i18n_sync_success ); return; @@ -151,7 +207,7 @@ }); deferred.resolve(); - } ); + }); } function sync_failed_button() { @@ -170,16 +226,21 @@ } ); $( "#orgUnitTree" ).one( "ouwtLoaded", function () { - $( document ).one( 'dhis2.anonymous.programStagesInitialized', initializePrograms ); - $( document ).one( 'dhis2.anonymous.programsInitialized', updateOfflineEvents ); - $( document ).one( 'dhis2.anonymous.checkOfflineEvents', checkOfflineData ); - $( document ).one( 'dhis2.anonymous.checkOfflineData', function () { + var def = $.Deferred(); + var promise = def.promise(); + promise = promise.then(loadPrograms); + promise = promise.then(loadProgramStages); + promise = promise.then(loadOptionSets); + promise = promise.then(updateOfflineEvents); + promise = promise.then(checkOfflineData); + promise = promise.then(function() { + selection.setListenerFunction( organisationUnitSelected ); + dhis2.availability.startAvailabilityCheck(); selection.responseReceived(); - } ); + }); - initalizeProgramStages(); - initializeOfflineData(); + def.resolve(); } ); $( document ).bind( 'dhis2.online', function ( event, loggedIn ) { @@ -292,7 +353,7 @@ hideById( 'listDiv' ); hideById( 'dataEntryInfor' ); - DAO.programs.fetchAll( function ( store, arr ) { + DAO.metaData.getAll( 'programs' ).done( function (arr) { var programs = []; $.each( arr, function ( idx, item ) { @@ -317,7 +378,7 @@ for ( var i = 0; i < arr.length; i++ ) { jQuery( '#programId' ).append( - '