diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java index 5612c8381e..8815aa31e8 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java @@ -28,18 +28,14 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import org.adempiere.webui.apps.AEnv; -import org.adempiere.webui.apps.WReport; import org.adempiere.webui.apps.graph.WGraph; import org.adempiere.webui.apps.graph.WPerformanceDetail; import org.adempiere.webui.component.ToolBarButton; import org.adempiere.webui.dashboard.DashboardPanel; import org.adempiere.webui.dashboard.DashboardRunnable; -import org.adempiere.webui.event.DrillEvent; -import org.adempiere.webui.event.ZoomEvent; import org.adempiere.webui.part.WindowContainer; import org.adempiere.webui.report.HTMLExtension; import org.adempiere.webui.session.SessionManager; -import org.adempiere.webui.window.FDialog; import org.adempiere.webui.window.ZkReportViewerProvider; import org.compiere.Adempiere; import org.compiere.model.I_AD_Menu; @@ -50,10 +46,7 @@ import org.compiere.model.MMenu; import org.compiere.model.MPInstance; import org.compiere.model.MPInstancePara; import org.compiere.model.MProcess; -import org.compiere.model.MQuery; -import org.compiere.model.MRole; import org.compiere.model.MSysConfig; -import org.compiere.model.MTable; import org.compiere.model.X_AD_CtxHelp; import org.compiere.print.ReportEngine; import org.compiere.process.ProcessInfo; @@ -268,30 +261,6 @@ public class DashboardController implements EventListener { { String processParameters = dc.getProcessParameters(); embedReport(content, AD_Process_ID, processParameters); - content.addEventListener("onZoom", new EventListener() { - public void onEvent(Event event) throws Exception { - if (event instanceof ZoomEvent) - { - ZoomEvent ze = (ZoomEvent) event; - if (ze.getData() != null && ze.getData() instanceof MQuery) { - AEnv.zoom((MQuery) ze.getData()); - } - } - } - }); - - content.addEventListener(DrillEvent.ON_DRILL_DOWN, new EventListener() { - public void onEvent(Event event) throws Exception { - if (event instanceof DrillEvent) - { - DrillEvent de = (DrillEvent) event; - if (de.getData() != null && de.getData() instanceof MQuery) { - MQuery query = (MQuery) de.getData(); - executeDrill(query); - } - } - } - }); Toolbar toolbar = new Toolbar(); content.appendChild(toolbar); @@ -706,7 +675,8 @@ public class DashboardController implements EventListener { Iframe iframe = new Iframe(); iframe.setSclass("dashboard-report-iframe"); File file = File.createTempFile(re.getName(), ".html"); - re.createHTML(file, false, AEnv.getLanguage(Env.getCtx()), new HTMLExtension(Executions.getCurrent().getContextPath(), "rp", parent.getUuid())); + re.createHTML(file, false, AEnv.getLanguage(Env.getCtx()), new HTMLExtension(Executions.getCurrent().getContextPath(), "rp", + SessionManager.getAppDesktop().getComponent().getUuid())); AMedia media = new AMedia(re.getName(), "html", "text/html", file, false); iframe.setContent(media); parent.appendChild(iframe); @@ -717,22 +687,6 @@ public class DashboardController implements EventListener { new ZkReportViewerProvider().openViewer(re); } - /** - * Execute Drill to Query - * @param query query - */ - public void executeDrill (MQuery query) - { - int AD_Table_ID = MTable.getTable_ID(query.getTableName()); - if (!MRole.getDefault().isCanReport(AD_Table_ID)) - { - FDialog.error(0, dashboardLayout.getParent(), "AccessCannotReport", query.getTableName()); - return; - } - if (AD_Table_ID != 0) - new WReport(AD_Table_ID, query); - } // executeDrill - private void fillParameter(MPInstance pInstance, String parameters) { if (parameters != null && parameters.trim().length() > 0) { Map paramMap = new HashMap(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java index 6012893b39..73e8c61587 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java @@ -29,10 +29,13 @@ import org.adempiere.util.ServerContext; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.BusyDialog; import org.adempiere.webui.apps.ProcessDialog; +import org.adempiere.webui.apps.WReport; import org.adempiere.webui.component.Tabpanel; import org.adempiere.webui.component.ToolBarButton; +import org.adempiere.webui.event.DrillEvent; import org.adempiere.webui.event.MenuListener; import org.adempiere.webui.event.ZKBroadCastManager; +import org.adempiere.webui.event.ZoomEvent; import org.adempiere.webui.panel.ADForm; import org.adempiere.webui.panel.BroadcastMessageWindow; import org.adempiere.webui.panel.HeaderPanel; @@ -43,8 +46,12 @@ import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.util.IServerPushCallback; import org.adempiere.webui.util.ServerPushTemplate; import org.adempiere.webui.util.UserPreference; +import org.adempiere.webui.window.FDialog; import org.compiere.Adempiere; import org.compiere.model.GridField; +import org.compiere.model.MQuery; +import org.compiere.model.MRole; +import org.compiere.model.MTable; import org.compiere.model.X_AD_CtxHelp; import org.compiere.util.CLogger; import org.compiere.util.Env; @@ -149,6 +156,9 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria } else layout.setPage(page); + + layout.addEventListener("onZoom", this); + layout.addEventListener(DrillEvent.ON_DRILL_DOWN, this); North n = new North(); layout.appendChild(n); @@ -306,8 +316,42 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria if (change) updateUI(); } + else if (event instanceof ZoomEvent) + { + Clients.clearBusy(); + ZoomEvent ze = (ZoomEvent) event; + if (ze.getData() != null && ze.getData() instanceof MQuery) { + AEnv.zoom((MQuery) ze.getData()); + } + } + + else if (event instanceof DrillEvent) + { + Clients.clearBusy(); + DrillEvent de = (DrillEvent) event; + if (de.getData() != null && de.getData() instanceof MQuery) { + MQuery query = (MQuery) de.getData(); + executeDrill(query); + } + } } + /** + * Execute Drill to Query + * @param query query + */ + private void executeDrill (MQuery query) + { + int AD_Table_ID = MTable.getTable_ID(query.getTableName()); + if (!MRole.getDefault().isCanReport(AD_Table_ID)) + { + FDialog.error(0, null, "AccessCannotReport", query.getTableName()); + return; + } + if (AD_Table_ID != 0) + new WReport(AD_Table_ID, query); + } // executeDrill + /** * * @param page diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java index 8888808de1..bd91144be4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java @@ -76,10 +76,12 @@ import org.zkoss.util.media.AMedia; import org.zkoss.util.media.Media; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.ext.render.DynamicMedia; +import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.A; import org.zkoss.zul.Borderlayout; import org.zkoss.zul.Center; @@ -190,20 +192,31 @@ public class ZkReportViewer extends Window implements EventListener, ITab this.onClose(); } m_isCanExport = MRole.getDefault().isCanExport(m_AD_Table_ID); - try - { - m_ctx = m_reportEngine.getCtx(); - init(); - dynInit(); - - if (!ArchiveEngine.isValid(m_reportEngine.getLayout())) - log.warning("Cannot archive Document"); - } - catch(Exception e) - { - log.log(Level.SEVERE, "", e); - FDialog.error(m_WindowNo, this, "LoadError", e.getLocalizedMessage()); - this.onClose(); + + setTitle(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Report") + ": " + m_reportEngine.getName() + " " + Env.getHeader(Env.getCtx(), 0))); + } + + + + @Override + public void onPageAttached(Page newpage, Page oldpage) { + super.onPageAttached(newpage, oldpage); + if (newpage != null) { + try + { + m_ctx = m_reportEngine.getCtx(); + init(); + dynInit(); + + if (!ArchiveEngine.isValid(m_reportEngine.getLayout())) + log.warning("Cannot archive Document"); + } + catch(Exception e) + { + log.log(Level.SEVERE, "", e); + FDialog.error(m_WindowNo, this, "LoadError", e.getLocalizedMessage()); + this.onClose(); + } } } @@ -351,6 +364,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab public void onEvent(Event event) throws Exception { if (event instanceof ZoomEvent) { + Clients.clearBusy(); ZoomEvent ze = (ZoomEvent) event; if (ze.getData() != null && ze.getData() instanceof MQuery) { AEnv.zoom((MQuery) ze.getData()); @@ -364,6 +378,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab public void onEvent(Event event) throws Exception { if (event instanceof DrillEvent) { + Clients.clearBusy(); DrillEvent de = (DrillEvent) event; if (de.getData() != null && de.getData() instanceof MQuery) { MQuery query = (MQuery) de.getData(); @@ -383,6 +398,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab public void onEvent(Event event) throws Exception { if (event instanceof DrillEvent) { + Clients.clearBusy(); DrillEvent de = (DrillEvent) event; if (de.getData() != null && de.getData() instanceof MQuery) { MQuery query = (MQuery) de.getData(); diff --git a/org.adempiere.ui.zk/js/report.js b/org.adempiere.ui.zk/js/report.js index d7bd767c94..35a0aca705 100644 --- a/org.adempiere.ui.zk/js/report.js +++ b/org.adempiere.ui.zk/js/report.js @@ -1,16 +1,19 @@ function zoom(cmpid, column, value){ + zAu.cmd0.showBusy(null); var widget = zk.Widget.$(cmpid); var event = new zk.Event(widget, 'onZoom', {data: [column, value]}, {toServer: true}); zAu.send(event); } function drillAcross(cmpid, column, value){ + zAu.cmd0.showBusy(null); var widget = zk.Widget.$(cmpid); var event = new zk.Event(widget, 'onDrillAcross', {data: [column, value]}, {toServer: true}); zAu.send(event); } function drillDown(cmpid, column, value){ + zAu.cmd0.showBusy(null); var widget = zk.Widget.$(cmpid); var event = new zk.Event(widget, 'onDrillDown', {data: [column, value]}, {toServer: true}); zAu.send(event);