=== 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-10-03 04:32:03 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js 2013-10-04 12:54:12 +0000 @@ -70,54 +70,75 @@ return; } - var deferred1 = $.Deferred(); - var deferred2 = $.Deferred(); - var promise = deferred2.promise(); - - _.each( metaData.optionSets, function ( item, idx ) { - DAO.store.get('optionSets', item.uid).done(function(obj) { - if(!obj || obj.optionSet.version !== item.v) { - promise = promise.then(function() { - return $.ajax({ - url: 'getOptionSet.action', - data: { - id: item.uid - }, - dataType: 'json', - cache: false - }).done(function(data) { - var obj = {}; - obj.id = item.uid; - obj.optionSet = data.optionSet; - DAO.store.set('optionSets', obj); - }); - }); - } + var def = $.Deferred(); + var promise = def.promise(); + + var builder = $.Deferred(); + var build = builder.promise(); + + _.each( metaData.optionSets, function ( item ) { + build = build.then(function() { + var d = $.Deferred(); + var p = d.promise(); + DAO.store.get('optionSets', item.uid).done(function(obj) { + if(!obj || obj.optionSet.version !== item.v) { + promise = promise.then( makeOptionSetRequest(item.uid) ); + } + + d.resolve(); + }); + + return p; }); } ); if ( metaData.usernames ) { - promise = promise.then( function () { - return $.ajax( { - url: 'getUsernames.action', - dataType: 'json', - cache: false - } ).done( function ( data ) { - var obj = {}; - obj.id = 'usernames'; - obj.usernames = data.usernames; - DAO.store.set( 'usernames', obj ); - } ) + promise = promise.then( makeUsernameRequest() ); + } + + build.done(function() { + def.resolve( metaData ); + + promise = promise.done( function () { + console.log(promise); + console.log('done'); } ); - } - - promise = promise.then( function () { - deferred1.resolve( metaData ); - } ); - - deferred2.resolve(); - - return deferred1.promise(); + }); + + builder.resolve(); + + return promise; +} + +function makeUsernameRequest() { + return function() { + return $.ajax( { + url: 'getUsernames.action', + dataType: 'json', + cache: false + }).done(function( data ) { + var obj = {}; + obj.id = 'usernames'; + obj.usernames = data.usernames; + DAO.store.set( 'usernames', obj ); + }); + } +} + +function makeOptionSetRequest( id ) { + return function() { + return $.ajax({ + url: 'getOptionSet.action', + data: { id: id }, + dataType: 'json', + cache: false + }).done(function(data) { + var obj = {}; + obj.id = id; + obj.optionSet = data.optionSet; + DAO.store.set('optionSets', obj); + }); + } } function updateOfflineEvents() { @@ -231,9 +252,12 @@ cache: false } ); + $("#programId").attr('disabled', true); + $( "#orgUnitTree" ).one( "ouwtLoaded", function () { var def = $.Deferred(); var promise = def.promise(); + promise = promise.then( DAO.store.open ); promise = promise.then( loadPrograms ); promise = promise.then( loadProgramStages ); @@ -241,6 +265,8 @@ promise = promise.then( updateOfflineEvents ); promise = promise.then( checkOfflineData ); promise = promise.then( function () { + $("#programId").removeAttr('disabled'); + selection.setListenerFunction( organisationUnitSelected ); dhis2.availability.startAvailabilityCheck();