From dac45f6f7a77c9591e15aa698cce6fae50ee34fa Mon Sep 17 00:00:00 2001 From: kenstir Date: Tue, 1 Dec 2015 22:12:43 -0500 Subject: [PATCH] Hedge for org unit display: for big consortiums (>25 ou), display the org tree sorted with level=0 on top. For smaller consortiums, display the org tree using an indented spinner. --- .../accountAccess/holds/HoldDetails.java | 3 +-- .../accountAccess/holds/PlaceHold.java | 3 +-- .../org/evergreen_ils/auth/TestAuthActivity.java | 1 - .../org/evergreen_ils/globals/GlobalConfigs.java | 21 +++++++++++++++++++-- .../evergreen_ils/searchCatalog/Organisation.java | 2 +- .../searchCatalog/SearchCatalogListView.java | 3 +-- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/HoldDetails.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/HoldDetails.java index cc9a511772..144664f7dc 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/HoldDetails.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/HoldDetails.java @@ -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 list = new ArrayList(); 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) diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/PlaceHold.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/PlaceHold.java index 2d03559d89..e63f5a07df 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/PlaceHold.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/accountAccess/holds/PlaceHold.java @@ -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 list = new ArrayList(); 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; } diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/auth/TestAuthActivity.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/auth/TestAuthActivity.java index ee222f469c..37c83695ad 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/auth/TestAuthActivity.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/auth/TestAuthActivity.java @@ -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 diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/globals/GlobalConfigs.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/globals/GlobalConfigs.java index bb005f00e5..5f14076243 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/globals/GlobalConfigs.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/globals/GlobalConfigs.java @@ -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(); 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() { + @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() { diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/Organisation.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/Organisation.java index 3763432f9e..c75e604a31 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/Organisation.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/Organisation.java @@ -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; diff --git a/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java b/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java index 4a268bed89..c5461a41f6 100644 --- a/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java +++ b/Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java @@ -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 list = new ArrayList(); 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; } -- 2.11.0