diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java index 402b93ae..a6b9d6d3 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRenderer.java @@ -437,11 +437,14 @@ public class HtmlTplDashboardWidgetHtmlRenderer ext protected void writeHtmlTplDashboardScript(T renderContext, HtmlTplDashboard dashboard, DashboardInfo dashboardInfo) throws IOException { - String dashboardVar = dashboardInfo.getDashboardVar(); - if (StringUtil.isEmpty(dashboardVar)) - dashboardVar = getDefaultDashboardVar(); + String globalDashboardVar = dashboardInfo.getDashboardVar(); + if (StringUtil.isEmpty(globalDashboardVar)) + globalDashboardVar = getDefaultDashboardVar(); - dashboard.setVarName(dashboardVar); + String tmpRenderContextVarName = HtmlRenderAttributes.generateRenderContextVarName(renderContext); + String localDashboardVarName = HtmlRenderAttributes.generateDashboardVarName(renderContext); + + dashboard.setVarName(localDashboardVarName); Writer out = renderContext.getWriter(); @@ -451,13 +454,13 @@ public class HtmlTplDashboardWidgetHtmlRenderer ext out.write("(function(){"); writeNewLine(out); - writeHtmlTplDashboardJSVar(renderContext, out, dashboard); + writeHtmlTplDashboardJSVar(renderContext, out, dashboard, tmpRenderContextVarName); writeHtmlChartScripts(renderContext, dashboard, dashboardInfo); writeHtmlTplDashboardJSInit(out, dashboard); writeHtmlTplDashboardJSFactoryInit(out, dashboard, dashboardInfo.getDashboardFactoryVar()); - out.write("window." + dashboardVar + "=" + dashboardVar + ";"); + out.write("window." + globalDashboardVar + "=" + localDashboardVarName + ";"); writeNewLine(out); writeNewLine(out); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRenderer.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRenderer.java index 1ba99c31..593c5bdf 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRenderer.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetRenderer.java @@ -789,24 +789,28 @@ public abstract class HtmlTplDashboardWidgetRenderer - * var dashboard = {...}; + * + *
+	 * var [tmpRenderContextVarName] = {...};
+	 * var [dashboardVarName] = {...};
+	 * 
+ *
*

* * @param renderContext * @param out * @param dashboard + * @param tmpRenderContextVarName * @throws IOException */ - protected void writeHtmlTplDashboardJSVar(HtmlRenderContext renderContext, Writer out, HtmlTplDashboard dashboard) + protected void writeHtmlTplDashboardJSVar(HtmlRenderContext renderContext, Writer out, HtmlTplDashboard dashboard, + String tmpRenderContextVarName) throws IOException { if (StringUtil.isEmpty(dashboard.getVarName())) throw new IllegalArgumentException(); - String tmpRenderContextVarName = HtmlRenderAttributes - .generateRenderContextVarName(Long.toHexString(System.currentTimeMillis())); getHtmlRenderContextScriptObjectWriter().writeNoAttributes(out, renderContext, tmpRenderContextVarName); - getHtmlTplDashboardScriptObjectWriter().write(out, dashboard, tmpRenderContextVarName); } diff --git a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java index 5bc46222..a4111b0d 100644 --- a/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java +++ b/datagear-analysis/src/test/java/org/datagear/analysis/support/html/HtmlTplDashboardWidgetHtmlRendererTest.java @@ -108,8 +108,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var myDashboard")); - Assert.assertTrue(html.contains("myDashboardFactory.init(myDashboard);")); + Assert.assertTrue(html.contains("var dataGearDashboard2")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); } // 看板属性,无引号 @@ -134,8 +135,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var myDashboard")); - Assert.assertTrue(html.contains("myDashboardFactory.init(myDashboard);")); + Assert.assertTrue(html.contains("var dataGearDashboard2")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); } // 看板属性,单引号 @@ -160,8 +162,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var myDashboard")); - Assert.assertTrue(html.contains("myDashboardFactory.init(myDashboard);")); + Assert.assertTrue(html.contains("var dataGearDashboard2")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); } // 看板属性,多个导入排除值 @@ -186,8 +189,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertFalse(html.contains(IMPORT_CONTENT_THEME)); Assert.assertFalse(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var myDashboard")); - Assert.assertTrue(html.contains("myDashboardFactory.init(myDashboard);")); + Assert.assertTrue(html.contains("var dataGearDashboard2")); + Assert.assertTrue(html.contains("myDashboardFactory.init(dataGearDashboard2);")); + Assert.assertTrue(html.contains("window.myDashboard=dataGearDashboard2;")); } // 看板属性,默认 @@ -211,8 +215,9 @@ public class HtmlTplDashboardWidgetHtmlRendererTest Assert.assertTrue(html.contains(IMPORT_CONTENT_UTIL)); Assert.assertTrue(html.contains(IMPORT_CONTENT_THEME)); Assert.assertTrue(html.contains(IMPORT_CONTENT_STYLE)); - Assert.assertTrue(html.contains("var dashboard")); - Assert.assertTrue(html.contains("dashboardFactory.init(dashboard);")); + Assert.assertTrue(html.contains("var dataGearDashboard2")); + Assert.assertTrue(html.contains("dashboardFactory.init(dataGearDashboard2);")); + Assert.assertTrue(html.contains("window.dashboard=dataGearDashboard2;")); } // 图表属性