forked from p81075629/datagear
图表、看板展示支持请求参数传入,将所有传入参数加入页面的dashboard.renderContext.attributes内
This commit is contained in:
parent
605d37cdd6
commit
ca6de9d0a5
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
package org.datagear.web.controller;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
|
@ -37,6 +38,7 @@ import org.datagear.analysis.support.DefaultRenderContext;
|
|||
import org.datagear.analysis.support.html.HtmlTplDashboard;
|
||||
import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr;
|
||||
import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr.WebContext;
|
||||
import org.datagear.analysis.support.html.HtmlTplDashboardWidgetRenderer;
|
||||
import org.datagear.util.StringUtil;
|
||||
import org.datagear.web.util.WebUtils;
|
||||
|
||||
|
@ -65,6 +67,73 @@ public class AbstractDataAnalysisController extends AbstractController
|
|||
this.dataSetParamValueConverter = dataSetParamValueConverter;
|
||||
}
|
||||
|
||||
protected RenderContext createHtmlRenderContext(HttpServletRequest request, HttpServletResponse response,
|
||||
HtmlTplDashboardRenderAttr renderAttr,
|
||||
WebContext webContext, HtmlTplDashboardWidgetRenderer htmlTplDashboardWidgetRenderer) throws IOException
|
||||
{
|
||||
RenderContext renderContext = new DefaultRenderContext(resolveParamValues(request));
|
||||
|
||||
Writer out = response.getWriter();
|
||||
RenderStyle renderStyle = resolveRenderStyle(request);
|
||||
renderAttr.inflate(renderContext, out, webContext);
|
||||
renderAttr.setRenderStyle(renderContext, renderStyle);
|
||||
|
||||
DashboardTheme dashboardTheme = htmlTplDashboardWidgetRenderer.inflateDashboardTheme(renderContext, renderAttr,
|
||||
renderStyle);
|
||||
|
||||
renderAttr.setIgnoreRenderAttrs(renderContext,
|
||||
Arrays.asList(renderAttr.getHtmlWriterName(), renderAttr.getHtmlTitleHandlerName(),
|
||||
renderAttr.getIgnoreRenderAttrsName(), HtmlTplDashboardRenderAttr.ATTR_NAME));
|
||||
|
||||
setDashboardThemeAttribute(request.getSession(), dashboardTheme);
|
||||
|
||||
return renderContext;
|
||||
}
|
||||
|
||||
protected HtmlTplDashboardRenderAttr createHtmlTplDashboardRenderAttr()
|
||||
{
|
||||
return new HtmlTplDashboardRenderAttr();
|
||||
}
|
||||
|
||||
protected void setDashboardThemeAttribute(HttpSession session, DashboardTheme theme)
|
||||
{
|
||||
session.setAttribute(AbstractDataAnalysisController.class.getSimpleName(), theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取{@linkplain DashboardTheme},没有则返回{@code null}。
|
||||
*
|
||||
* @param session
|
||||
* @return
|
||||
*/
|
||||
protected DashboardTheme getDashboardThemeAttribute(HttpSession session)
|
||||
{
|
||||
return (DashboardTheme) session.getAttribute(AbstractDataAnalysisController.class.getSimpleName());
|
||||
}
|
||||
|
||||
protected Map<String, ?> resolveParamValues(HttpServletRequest request)
|
||||
{
|
||||
Map<String, Object> paramValues = new HashMap<String, Object>();
|
||||
|
||||
Map<String, String[]> origin = request.getParameterMap();
|
||||
|
||||
for (Map.Entry<String, String[]> entry : origin.entrySet())
|
||||
{
|
||||
String name = entry.getKey();
|
||||
String[] values = entry.getValue();
|
||||
|
||||
if (values == null || values.length == 0)
|
||||
continue;
|
||||
|
||||
if (values.length == 1)
|
||||
paramValues.put(name, values[0]);
|
||||
else
|
||||
paramValues.put(name, values);
|
||||
}
|
||||
|
||||
return paramValues;
|
||||
}
|
||||
|
||||
protected RenderStyle resolveRenderStyle(HttpServletRequest request)
|
||||
{
|
||||
String style = request.getParameter("renderStyle");
|
||||
|
@ -95,41 +164,6 @@ public class AbstractDataAnalysisController extends AbstractController
|
|||
return RenderStyle.LIGHT;
|
||||
}
|
||||
|
||||
protected RenderContext createHtmlRenderContext(HttpServletRequest request, HtmlTplDashboardRenderAttr renderAttr,
|
||||
Writer out, WebContext webContext, RenderStyle renderStyle)
|
||||
{
|
||||
RenderContext renderContext = new DefaultRenderContext();
|
||||
renderAttr.inflate(renderContext, out, webContext);
|
||||
renderAttr.setRenderStyle(renderContext, renderStyle);
|
||||
|
||||
renderAttr.setIgnoreRenderAttrs(renderContext,
|
||||
Arrays.asList(renderAttr.getHtmlWriterName(), renderAttr.getHtmlTitleHandlerName(),
|
||||
renderAttr.getIgnoreRenderAttrsName(), HtmlTplDashboardRenderAttr.ATTR_NAME));
|
||||
|
||||
return renderContext;
|
||||
}
|
||||
|
||||
protected HtmlTplDashboardRenderAttr createHtmlTplDashboardRenderAttr()
|
||||
{
|
||||
return new HtmlTplDashboardRenderAttr();
|
||||
}
|
||||
|
||||
protected void setDashboardThemeAttribute(HttpSession session, DashboardTheme theme)
|
||||
{
|
||||
session.setAttribute(AbstractDataAnalysisController.class.getSimpleName(), theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取{@linkplain DashboardTheme},没有则返回{@code null}。
|
||||
*
|
||||
* @param session
|
||||
* @return
|
||||
*/
|
||||
protected DashboardTheme getDashboardThemeAttribute(HttpSession session)
|
||||
{
|
||||
return (DashboardTheme) session.getAttribute(AbstractDataAnalysisController.class.getSimpleName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析展示看板请求路径的看板资源名。
|
||||
* <p>
|
||||
|
|
|
@ -6,7 +6,6 @@ package org.datagear.web.controller;
|
|||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Writer;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
@ -16,10 +15,8 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.datagear.analysis.ChartPluginManager;
|
||||
import org.datagear.analysis.DashboardTheme;
|
||||
import org.datagear.analysis.DataSetResult;
|
||||
import org.datagear.analysis.RenderContext;
|
||||
import org.datagear.analysis.RenderStyle;
|
||||
import org.datagear.analysis.TemplateDashboardWidgetResManager;
|
||||
import org.datagear.analysis.support.html.HtmlChartPlugin;
|
||||
import org.datagear.analysis.support.html.HtmlTplDashboard;
|
||||
|
@ -384,18 +381,12 @@ public class ChartController extends AbstractChartPluginAwareController implemen
|
|||
response.setContentType(CONTENT_TYPE_HTML);
|
||||
|
||||
HtmlTplDashboardRenderAttr renderAttr = createHtmlTplDashboardRenderAttr();
|
||||
Writer out = response.getWriter();
|
||||
RenderStyle renderStyle = resolveRenderStyle(request);
|
||||
RenderContext renderContext = createHtmlRenderContext(request, renderAttr, out, createWebContext(request),
|
||||
renderStyle);
|
||||
DashboardTheme dashboardTheme = getChartShowHtmlTplDashboardWidgetHtmlRenderer()
|
||||
.inflateDashboardTheme(renderContext, renderAttr, renderStyle);
|
||||
RenderContext renderContext = createHtmlRenderContext(request, response, renderAttr, createWebContext(request),
|
||||
getChartShowHtmlTplDashboardWidgetHtmlRenderer());
|
||||
AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler(
|
||||
getMessage(request, "chart.show.htmlTitlePrefix", getMessage(request, "app.name")));
|
||||
renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler);
|
||||
|
||||
setDashboardThemeAttribute(request.getSession(), dashboardTheme);
|
||||
|
||||
HtmlTplDashboard dashboard = dashboardWidget.render(renderContext);
|
||||
|
||||
SessionHtmlTplDashboardManager dashboardManager = getSessionHtmlTplDashboardManagerNotNull(request);
|
||||
|
|
|
@ -10,7 +10,6 @@ import java.io.InputStream;
|
|||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
@ -27,7 +26,6 @@ import org.datagear.analysis.ChartTheme;
|
|||
import org.datagear.analysis.DashboardTheme;
|
||||
import org.datagear.analysis.DataSetResult;
|
||||
import org.datagear.analysis.RenderContext;
|
||||
import org.datagear.analysis.RenderStyle;
|
||||
import org.datagear.analysis.TemplateDashboardWidgetResManager;
|
||||
import org.datagear.analysis.support.ChartWidget;
|
||||
import org.datagear.analysis.support.ChartWidgetSource;
|
||||
|
@ -707,18 +705,13 @@ public class DashboardController extends AbstractDataAnalysisController implemen
|
|||
response.setContentType(CONTENT_TYPE_HTML);
|
||||
|
||||
HtmlTplDashboardRenderAttr renderAttr = createHtmlTplDashboardRenderAttr();
|
||||
Writer out = response.getWriter();
|
||||
RenderStyle renderStyle = resolveRenderStyle(request);
|
||||
RenderContext renderContext = createHtmlRenderContext(request, renderAttr, out, createWebContext(request),
|
||||
renderStyle);
|
||||
DashboardTheme dashboardTheme = getHtmlTplDashboardWidgetEntityService().getHtmlTplDashboardWidgetRenderer()
|
||||
.inflateDashboardTheme(renderContext, renderAttr, renderStyle);
|
||||
RenderContext renderContext = createHtmlRenderContext(request, response, renderAttr,
|
||||
createWebContext(request),
|
||||
getHtmlTplDashboardWidgetEntityService().getHtmlTplDashboardWidgetRenderer());
|
||||
AddPrefixHtmlTitleHandler htmlTitleHandler = new AddPrefixHtmlTitleHandler(
|
||||
getMessage(request, "dashboard.show.htmlTitlePrefix", getMessage(request, "app.name")));
|
||||
renderAttr.setHtmlTitleHandler(renderContext, htmlTitleHandler);
|
||||
|
||||
setDashboardThemeAttribute(request.getSession(), dashboardTheme);
|
||||
|
||||
HtmlTplDashboard dashboard = dashboardWidget.render(renderContext, template);
|
||||
|
||||
SessionHtmlTplDashboardManager dashboardManager = getSessionHtmlTplDashboardManagerNotNull(request);
|
||||
|
|
Loading…
Reference in New Issue