diff --git a/migration/i8.2z/oracle/202001180340_IDEMPIERE-4651.sql b/migration/i8.2z/oracle/202001180340_IDEMPIERE-4651.sql new file mode 100644 index 0000000000..4f82507eac --- /dev/null +++ b/migration/i8.2z/oracle/202001180340_IDEMPIERE-4651.sql @@ -0,0 +1,10 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Jan 18, 2021, 11:13:52 AM MYT +INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200168,0,0,TO_DATE('2021-01-18 11:13:51','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2021-01-18 11:13:51','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS','500','Maximum number of rows to retrieve and display for search field''s autocomplete list','D','C','a54d5000-57db-42f7-a910-06ea1e1fd245') +; + +SELECT register_migration_script('202001180340_IDEMPIERE-4651.sql') FROM dual +; + diff --git a/migration/i8.2z/postgresql/202001180340_IDEMPIERE-4651.sql b/migration/i8.2z/postgresql/202001180340_IDEMPIERE-4651.sql new file mode 100644 index 0000000000..3f371eaf8c --- /dev/null +++ b/migration/i8.2z/postgresql/202001180340_IDEMPIERE-4651.sql @@ -0,0 +1,7 @@ +-- Jan 18, 2021, 11:13:52 AM MYT +INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200168,0,0,TO_TIMESTAMP('2021-01-18 11:13:51','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2021-01-18 11:13:51','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS','500','Maximum number of rows to retrieve and display for search field''s autocomplete list','D','C','a54d5000-57db-42f7-a910-06ea1e1fd245') +; + +SELECT register_migration_script('202001180340_IDEMPIERE-4651.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/model/MSysConfig.java b/org.adempiere.base/src/org/compiere/model/MSysConfig.java index 6979fc0141..877f5a7690 100644 --- a/org.adempiere.base/src/org/compiere/model/MSysConfig.java +++ b/org.adempiere.base/src/org/compiere/model/MSysConfig.java @@ -200,6 +200,7 @@ public class MSysConfig extends X_AD_SysConfig public static final String ZK_REPORT_ONLY_PRINTFORMAT_LINKEDTO_REPORTVIEW = "ZK_REPORT_ONLY_PRINTFORMAT_LINKEDTO_REPORTVIEW"; public static final String ZK_REPORT_TABLE_OUTPUT_TYPE = "ZK_REPORT_TABLE_OUTPUT_TYPE"; public static final String ZK_ROOT_FOLDER_BROWSER = "ZK_ROOT_FOLDER_BROWSER"; + public static final String ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS = "ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS"; public static final String ZK_SEQ_DEFAULT_VALUE_PANEL = "ZK_SEQ_DEFAULT_VALUE_PANEL"; public static final String ZK_SESSION_TIMEOUT_IN_SECONDS = "ZK_SESSION_TIMEOUT_IN_SECONDS"; public static final String ZK_THEME_USE_FONT_ICON_FOR_IMAGE = "ZK_THEME_USE_FONT_ICON_FOR_IMAGE"; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChosenboxSearchEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChosenboxSearchEditor.java index b8138bb09c..ff53398514 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChosenboxSearchEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChosenboxSearchEditor.java @@ -37,6 +37,7 @@ import org.compiere.model.GridField; import org.compiere.model.Lookup; import org.compiere.model.MColumn; import org.compiere.model.MLookup; +import org.compiere.model.MSysConfig; import org.compiere.model.MTable; import org.compiere.model.X_AD_CtxHelp; import org.compiere.util.CLogger; @@ -70,7 +71,7 @@ public class WChosenboxSearchEditor extends WEditor implements ContextMenuListen private InfoListSubModel subModel = null; private static final CLogger log = CLogger.getCLogger(WChosenboxSearchEditor.class); - private static final int MAX_AUTO_COMPLETE_ROWS = 50; + private static final int DEFAULT_MAX_AUTO_COMPLETE_ROWS = 500; private boolean onselecting; /** @@ -593,7 +594,8 @@ public class WChosenboxSearchEditor extends WEditor implements ContextMenuListen @Override public ListModel getSubModel(Object value, int nRows) { subModel.setWhereClause(getWhereClause()); - ListModel model = subModel.getSubModel(value, MAX_AUTO_COMPLETE_ROWS); + int maxRows = MSysConfig.getIntValue(MSysConfig.ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS, DEFAULT_MAX_AUTO_COMPLETE_ROWS, Env.getAD_Client_ID(Env.getCtx())); + ListModel model = subModel.getSubModel(value, maxRows); getComponent().getChosenbox().setSubListModel(model); return model; } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java index d388bb59a0..52ae1ff807 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java @@ -78,7 +78,7 @@ import org.zkoss.zk.ui.util.Clients; */ public class WSearchEditor extends WEditor implements ContextMenuListener, ValueChangeListener, IZoomableEditor { - private static final int MAX_AUTO_COMPLETE_ROWS = 50; + private static final int DEFAULT_MAX_AUTO_COMPLETE_ROWS = 500; private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_OK}; public static final String ATTRIBUTE_IS_INFO_PANEL_OPEN = "ATTRIBUTE_IS_INFO_PANEL_OPEN"; private Lookup lookup; @@ -228,13 +228,14 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value if (gridField != null && gridField.isAutocomplete()) { setTableAndKeyColumn(); listModel = new InfoListSubModel(lookup, gridField, m_tableName, m_keyColumnName); - getComponent().getCombobox().setModel(listModel.getSubModel(null, MAX_AUTO_COMPLETE_ROWS)); + int maxRows = MSysConfig.getIntValue(MSysConfig.ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS, DEFAULT_MAX_AUTO_COMPLETE_ROWS, Env.getAD_Client_ID(Env.getCtx())); + getComponent().getCombobox().setModel(listModel.getSubModel(null, maxRows)); getComponent().getCombobox().addEventListener(Events.ON_CHANGING, (EventListener)(e) -> { if (!e.isChangingBySelectBack()) { listModel.setWhereClause(getWhereClause()); String s = e.getValue(); - getComponent().getCombobox().setModel(listModel.getSubModel(s, MAX_AUTO_COMPLETE_ROWS)); + getComponent().getCombobox().setModel(listModel.getSubModel(s, maxRows)); } }); } else {