=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js 2015-04-10 08:41:17 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/form.js 2015-04-10 10:22:15 +0000 @@ -77,6 +77,9 @@ // Indicates whether multi org unit is enabled on instance dhis2.de.multiOrganisationUnitEnabled = false; +// Simple object to see if we have tried to fetch children DS for a parent before +dhis2.de.fetchedDataSets = {}; + // "organisationUnits" object inherited from ouwt.js // Constants @@ -224,7 +227,7 @@ $.when( dhis2.de.getMultiOrgUnitSetting(), dhis2.de.loadMetaData(), dhis2.de.loadDataSetAssociations() ).done( function() { dhis2.de.setMetaDataLoaded(); - organisationUnitSelected( ids, names ); + organisationUnitSelected( ids, names ); } ); } ); } ); @@ -234,7 +237,7 @@ return false; } - if( !$.isArray(ids) || ids.length == 0 ) { + if( !$.isArray(ids) || ids.length == 0 || (ids.length > 0 && dhis2.de.fetchedDataSets[ids[0]]) ) { return false; } @@ -912,6 +915,14 @@ return false; } + if( dhis2.de.shouldFetchDataSets(orgUnits) ) { + dhis2.de.fetchDataSets( orgUnits[0] ).always(function() { + selection.responseReceived(); + }); + + return false; + } + dhis2.de.currentOrganisationUnitId = orgUnits[0]; var organisationUnitName = orgUnitNames[0]; @@ -1015,6 +1026,7 @@ dhis2.de._updateDataSets(item); }); + dhis2.de.fetchedDataSets[ou] = true; def.resolve(data); });