From 3dbc3f104b3f7b633e5cd033f7636c8e243da1d9 Mon Sep 17 00:00:00 2001 From: hengsin Date: Sat, 5 Oct 2024 19:01:35 +0800 Subject: [PATCH 1/2] IDEMPIERE-6211 Dashboard Goal - Chart doesn't work. (#2476) --- .../src/org/adempiere/webui/desktop/DashboardController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 7909c35c4c..a9b0169c48 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 @@ -39,6 +39,7 @@ import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.BusyDialog; +import org.adempiere.webui.apps.DesktopRunnable; import org.adempiere.webui.apps.WReport; import org.adempiere.webui.apps.graph.IChartRendererService; import org.adempiere.webui.apps.graph.WGraph; @@ -337,7 +338,7 @@ protected void doRun() { } } }; - Adempiere.getThreadPoolExecutor().submit(cr); + Adempiere.getThreadPoolExecutor().submit(new DesktopRunnable(cr, parent.getDesktop())); } } @@ -647,7 +648,7 @@ protected void doRun() { } } }; - Adempiere.getThreadPoolExecutor().submit(cr); + Adempiere.getThreadPoolExecutor().submit(new DesktopRunnable(cr, parent.getDesktop())); } } From 8e065a5e9ae50cd794ef315475b34addcb978927 Mon Sep 17 00:00:00 2001 From: hengsin Date: Sat, 5 Oct 2024 19:14:06 +0800 Subject: [PATCH 2/2] IDEMPIERE-6242 Info window, image fieldtype doesn't work (#2473) * IDEMPIERE-6242 Info window, image fieldtype doesn't work * IDEMPIERE-6242 Info window, image fieldtype doesn't work - Fixed model generator and type description - Fixed hover image sometime not remove * IDEMPIERE-6242 Info window, image fieldtype doesn't work - Fix use of web URL for AD_Form, AD_InfoWindow and AD_InfoProcess - Fix font icon support for AD_Form and AD_InfoWindow * IDEMPIERE-6242 Info window, image fieldtype doesn't work - Fixed size of image for info window process button - Fixed web url support for DPView * IDEMPIERE-6242 Info window, image fieldtype doesn't work - add no-image css class for no image place holder customization. --- .../webui/adwindow/GridTabRowRenderer.java | 40 +++++++++++++------ .../adempiere/webui/editor/WImageEditor.java | 13 +++++- .../webui/editor/WImageURLEditor.java | 2 +- .../org/adempiere/webui/info/InfoWindow.java | 2 + 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java index b9591ae73d..0829952385 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java @@ -70,6 +70,7 @@ import org.zkoss.zul.Row; import org.zkoss.zul.RowRenderer; import org.zkoss.zul.RowRendererExt; +import org.zkoss.zul.Span; import org.zkoss.zul.impl.XulElement; /** @@ -339,17 +340,23 @@ private Component getDisplayComponent(int rowIndex, Object value, GridField grid editor.addActionListener(buttonListener); component = editor.getComponent(); } else if (gridField.getDisplayType() == DisplayType.Image) { - WImageEditor editor = new WImageEditor(gridField); - editor.setReadWrite(false); - editor.setValue(value); - Image image = editor.getComponent(); - if (image.getContent() != null) { - image.setWidth(MSysConfig.getIntValue(MSysConfig.ZK_THUMBNAIL_IMAGE_WIDTH, 100, Env.getAD_Client_ID(Env.getCtx()))+"px"); - image.setHeight(MSysConfig.getIntValue(MSysConfig.ZK_THUMBNAIL_IMAGE_HEIGHT, 100, Env.getAD_Client_ID(Env.getCtx()))+"px"); - image.setClientAttribute("onmouseenter", "idempiere.showFullSizeImage(event)"); - image.setClientAttribute("onmouseleave", "idempiere.hideFullSizeImage(event)"); + if (value != null) { + WImageEditor editor = new WImageEditor(gridField); + editor.setReadWrite(false); + editor.setValue(value); + Image image = editor.getComponent(); + if (image.getContent() != null) { + image.setWidth(MSysConfig.getIntValue(MSysConfig.ZK_THUMBNAIL_IMAGE_WIDTH, 100, Env.getAD_Client_ID(Env.getCtx()))+"px"); + image.setHeight(MSysConfig.getIntValue(MSysConfig.ZK_THUMBNAIL_IMAGE_HEIGHT, 100, Env.getAD_Client_ID(Env.getCtx()))+"px"); + image.setClientAttribute("onmouseenter", "idempiere.showFullSizeImage(event)"); + image.setClientAttribute("onmouseleave", "idempiere.hideFullSizeImage(event)"); + } + component = image; + } else { + Span span = new Span(); + span.setSclass("no-image"); + component = span; } - component = image; } else { String text = getDisplayText(value, gridField, rowIndex, isForceGetValue); WEditor editor = getEditorCell(gridField); @@ -359,8 +366,17 @@ private Component getDisplayComponent(int rowIndex, Object value, GridField grid component = label; }else{ component = editor.getDisplayComponent(); - if (component instanceof Html){ - ((Html)component).setContent(text); + if (component instanceof Html html){ + if (Util.isEmpty(text) && value == null) { + String nullText = editor.getDisplayTextForGridView(value); + if (!Util.isEmpty(nullText)) { + html.setContent(nullText); + } else { + html.setContent(text); + } + } else { + html.setContent(text); + } }else{ throw new UnsupportedOperationException("Only implemented for Html component."); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java index c1a5101556..793850f34a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java @@ -32,6 +32,7 @@ import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Cell; +import org.zkoss.zul.Html; import org.zkoss.zul.Image; /** @@ -178,8 +179,8 @@ public void setValue(Object value) @Override public String getDisplayTextForGridView(Object value) { - if (value == null) { - return ""; + if (value == null || (value instanceof Integer && (Integer)value == 0)) { + return ""; } else { return "..."; } @@ -231,4 +232,12 @@ public void onEvent(Event event) throws Exception { public void fillHorizontal() { } + @Override + public Component getDisplayComponent() { + if (m_mImage == null) + return new Html(); + else + return null; + } + } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageURLEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageURLEditor.java index b8ac73270b..e7af78e543 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageURLEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WImageURLEditor.java @@ -231,7 +231,7 @@ public String getDisplayTextForGridView(GridRowCtx gridRowCtx, Object value) { .append("onmouseenter='idempiere.showFullSizeImage(event)' onmouseleave='idempiere.hideFullSizeImage(event)'/>"); return builder.toString(); } else { - return ""; + return ""; } } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java index 31c667c4ca..f9d09b7258 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java @@ -1596,6 +1596,8 @@ protected void prepareTable(ColumnInfo[] layout, String from, String where, image.setClientAttribute("onmouseenter", "idempiere.showFullSizeImage(event)"); image.setClientAttribute("onmouseleave", "idempiere.hideFullSizeImage(event)"); } + if (t.value == null) + LayoutUtils.addSclass("no-image", editor.getComponent()); return editor; }); }