Slow row selection in the InfoWindow with Related Tabs

Description

Each row selection in InfoWindow executes a query for all Related Tabs.
I suggest making a query only if 1 row is selected in InfoWindow.

It is necessary to replace the following lines in class InfoWIndow (line 185):
replace

contentPanel.addActionListener(new EventListener<Event>() { public void onEvent(Event event) throws Exception { updateSubcontent(); } });

on

contentPanel.addActionListener(new EventListener<Event>() { public void onEvent(Event event) throws Exception { int selectedRecords = getSelectedRowInfo().size(); if (selectedRecords <= 1) updateSubcontent(); embeddedPane.getParent().setVisible(selectedRecords <= 1); } });

Sponsor www.palichmos.ru

Environment

None

Activity

Show:

Murilo Habermann Torquato May 9, 2020 at 9:15 PM

If we try to do the suggested code modification on actual version 7.1z we have a NPE:

18:08:32.756===========> UiEngineImpl.error: [230] java.lang.NullPointerException at org.adempiere.webui.info.InfoWindow$1.onEvent(InfoWindow.java:234) at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:3177) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3147) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3089) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1846) at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1618) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1321) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:611) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:487) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:495) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:859) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

BTW i think that this ticket should be kept open because both and suggestions are good and avoid an unwanted load on big databases instances when users wants just to check values from the main info.

Hiep Lq November 25, 2017 at 10:18 AM

maybe use collapse status to auto or manual. in case use collapse detail tab don't query it and in case expand then query for active tab, when active other tab then query for this tab.

Heng Sin Low November 25, 2017 at 12:01 AM

I think we should consider making the retrieval of related details as manual instead of auto. A lot of time, user is just searching for record and not interested at the related details.

Details

Assignee

Reporter

Affects versions

Priority

Created November 24, 2017 at 1:30 PM
Updated May 9, 2020 at 9:16 PM