Hedge for org unit display: for big consortiums (>25 ou), display the org tree sorted...
authorkenstir <kenstir@gmail.com>
Wed, 2 Dec 2015 03:12:43 +0000 (22:12 -0500)
committerkenstir <kenstir@gmail.com>
Wed, 2 Dec 2015 03:12:43 +0000 (22:12 -0500)
Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/HoldDetails.java
Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/PlaceHold.java
Open-ILS/src/Android/core/src/org/evergreen_ils/auth/TestAuthActivity.java
Open-ILS/src/Android/core/src/org/evergreen_ils/globals/GlobalConfigs.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/Organisation.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java

index cc9a511..144664f 100644 (file)
@@ -31,7 +31,6 @@ import org.evergreen_ils.accountAccess.AccountAccess;
 import org.evergreen_ils.accountAccess.SessionNotFoundException;
 import org.evergreen_ils.globals.GlobalConfigs;
 import org.evergreen_ils.utils.ui.ActionBarUtils;
-import org.evergreen_ils.utils.ui.CompatSpinnerAdapter;
 import org.evergreen_ils.views.splashscreen.SplashActivity;
 
 import android.app.AlertDialog;
@@ -358,7 +357,7 @@ public class HoldDetails extends ActionBarActivity {
 
         ArrayList<String> list = new ArrayList<String>();
         for (int i = 0; i < globalConfigs.organisations.size(); i++) {
-            list.add(globalConfigs.organisations.get(i).displayName
+            list.add(globalConfigs.organisations.get(i).indentedDisplayPrefix
                     + globalConfigs.organisations.get(i).name);
 
             if (globalConfigs.organisations.get(i).id == record.pickup_lib)
index 2d03559..e63f5a0 100644 (file)
@@ -34,7 +34,6 @@ import org.evergreen_ils.globals.GlobalConfigs;
 import org.evergreen_ils.searchCatalog.Organisation;
 import org.evergreen_ils.searchCatalog.RecordInfo;
 import org.evergreen_ils.utils.ui.ActionBarUtils;
-import org.evergreen_ils.utils.ui.CompatSpinnerAdapter;
 import org.evergreen_ils.views.splashscreen.SplashActivity;
 
 import android.app.DatePickerDialog;
@@ -330,7 +329,7 @@ public class PlaceHold extends ActionBarActivity {
         ArrayList<String> list = new ArrayList<String>();
         for (int i = 0; i < globalConfigs.organisations.size(); i++) {
             Organisation org = globalConfigs.organisations.get(i);
-            list.add(org.displayName + org.name);
+            list.add(org.indentedDisplayPrefix + org.name);
             if (org.id == homeLibrary) {
                 selectedOrgPos = i;
             }
index ee222f4..37c8369 100644 (file)
@@ -190,7 +190,6 @@ public class TestAuthActivity extends Activity {
 
                     final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
                     final String account_name = bnd.getString(AccountManager.KEY_ACCOUNT_NAME);
-                    Log.d("kcxxx","getExistingAccountAuthToken account.name "+account.name+" account_name "+account_name+" token "+authtoken);
                     showMessage((authtoken != null) ? "SUCCESS with "+account_name+"\ntoken: " + authtoken : "FAIL");
                     Log.d(TAG, "GetToken Bundle is " + bnd);
                     //mLastTextView.setText(account.name);//todo: wrong thread here
index bb005f0..5f14076 100644 (file)
@@ -161,8 +161,8 @@ public class GlobalConfigs {
         String opac_visible = obj.getString("opac_visible");
         org.opac_visible = TextUtils.equals(opac_visible, "t");
 
-        org.displayName = new String(new char[level]).replace("\0", "  ");
-        Log.d(TAG, "kcxxx: id="+org.id+" level="+org.level+" name="+org.name+" vis="+(org.opac_visible ? "1" : "0"));
+        org.indentedDisplayPrefix = new String(new char[level]).replace("\0", "  ");
+        //Log.d(TAG, "kcxxx: id="+org.id+" level="+org.level+" name="+org.name+" vis="+(org.opac_visible ? "1" : "0"));
         if (org.opac_visible)
             organisations.add(org);
 
@@ -180,6 +180,23 @@ public class GlobalConfigs {
     public void loadOrganizations(OSRFObject orgTree) {
         organisations = new ArrayList<Organisation>();
         addOrganization(orgTree, 0);
+
+        // If the org tree is too big, then an indented list is unwieldy.
+        // Convert it into a flat list sorted by org.name.
+        if (organisations.size() > 25) {
+            Collections.sort(organisations, new Comparator<Organisation>() {
+                @Override
+                public int compare(Organisation a, Organisation b) {
+                    // top-level OU appears first
+                    if (a.level == 0) return -1;
+                    if (b.level == 0) return 1;
+                    return a.name.compareTo(b.name);
+                }
+            });
+            for (Organisation o : organisations) {
+                o.indentedDisplayPrefix = "";
+            }
+        }
     }
 
     public void loadCopyStatusesAvailable() {
index 3763432..c75e604 100644 (file)
@@ -28,7 +28,7 @@ public class Organisation {
     public String name = null;
     public String shortname = null;
     public Integer orgType = null;
-    public String displayName = "";
+    public String indentedDisplayPrefix = "";
 
     public Boolean opac_visible = null;
 
index 4a268be..c5461a4 100644 (file)
@@ -31,7 +31,6 @@ import org.evergreen_ils.accountAccess.holds.PlaceHold;
 import org.evergreen_ils.barcodescan.CaptureActivity;
 import org.evergreen_ils.globals.GlobalConfigs;
 import org.evergreen_ils.utils.ui.ActionBarUtils;
-import org.evergreen_ils.utils.ui.CompatSpinnerAdapter;
 import org.evergreen_ils.views.splashscreen.SplashActivity;
 
 import android.app.AlertDialog;
@@ -429,7 +428,7 @@ public class SearchCatalogListView extends ActionBarActivity {
         ArrayList<String> list = new ArrayList<String>();
         for (int i = 0; i < globalConfigs.organisations.size(); i++) {
             Organisation org = globalConfigs.organisations.get(i);
-            list.add(org.displayName + org.name);
+            list.add(org.indentedDisplayPrefix + org.name);
             if (org.id == homeLibrary) {
                 selectedOrgPos = i;
             }