=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js 2013-02-05 08:35:12 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ouwt/ouwt.js 2013-07-03 05:50:10 +0000 @@ -485,11 +485,33 @@ subtree.reloadTree(); selection.sync( false, selection.responseReceived ); - // selection.responseReceived(); } else { - $( '#searchField' ).css( 'background-color', '#ffc5c5' ); + $.ajax( { + url: '../dhis-web-commons-ajax-json/getOrganisationUnitTree.action', + data: { byName: name } + } ).done(function(data) { + if ( data.realRoot === undefined ) { + if ( sessionStorage["organisationUnits"] === undefined ) + { + sessionStorage["organisationUnits"] = JSON.stringify( data.organisationUnits ); + } + else + { + var units = JSON.parse( sessionStorage["organisationUnits"] ); + $.extend(units, data.organisationUnits); + sessionStorage["organisationUnits"] = JSON.stringify( units ); + } + + $.extend(organisationUnits, data.organisationUnits); + selection.findByName(); + } + + $( '#searchField' ).css( 'background-color', '#ffc5c5' ); + } ).fail(function() { + $( '#searchField' ).css( 'background-color', '#ffc5c5' ); + }); } }; @@ -692,7 +714,7 @@ } else { - units = JSON.parse( sessionStorage["organisationUnits"] ); + var units = JSON.parse( sessionStorage["organisationUnits"] ); $.extend(units, data.organisationUnits); sessionStorage["organisationUnits"] = JSON.stringify( units ); } === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetOrganisationUnitTreeAction.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetOrganisationUnitTreeAction.java 2013-07-03 04:04:40 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/commons/action/GetOrganisationUnitTreeAction.java 2013-07-03 05:50:10 +0000 @@ -128,6 +128,13 @@ this.parentId = parentId; } + private String byName; + + public void setByName( String byName ) + { + this.byName = byName; + } + private boolean realRoot; public boolean isRealRoot() @@ -142,6 +149,27 @@ public String execute() throws Exception { + if ( byName != null ) + { + List organisationUnitByName = organisationUnitService.getOrganisationUnitByName( byName ); + + if ( !organisationUnitByName.isEmpty() ) + { + OrganisationUnit child = organisationUnitByName.get( 0 ); + organisationUnits.add( child ); + OrganisationUnit parent = child.getParent(); + + do + { + organisationUnits.add( parent ); + organisationUnits.addAll( parent.getChildren() ); + } + while ( (parent = parent.getParent()) != null ); + + return "partial"; + } + } + if ( parentId != null ) { OrganisationUnit parent = organisationUnitService.getOrganisationUnit( parentId ); === modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/ouwt/action/GetOrganisationUnitsByNameAction.java' --- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/ouwt/action/GetOrganisationUnitsByNameAction.java 2012-09-19 11:41:19 +0000 +++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/ouwt/action/GetOrganisationUnitsByNameAction.java 2013-07-03 05:50:10 +0000 @@ -27,14 +27,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import com.opensymphony.xwork2.Action; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; + import java.util.ArrayList; import java.util.List; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitService; - -import com.opensymphony.xwork2.Action; - /** * @author Chau Thu Tran */ @@ -42,7 +41,7 @@ implements Action { private static final int MAX = 14; - + // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- @@ -85,7 +84,7 @@ throws Exception { organisationUnits = new ArrayList( organisationUnitService.getOrganisationUnitsBetweenByName( term, 0, MAX ) ); - + return SUCCESS; } }