From 71851812cc430d54ab48a00df905f5d7e4c7cfeb Mon Sep 17 00:00:00 2001 From: datagear Date: Tue, 16 Feb 2021 16:58:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=99=84=E4=BB=B6=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Roadmap.txt | 2 +- .../org/datagear/analysis/ChartDataSet.java | 23 +++- .../html/HtmlChartScriptObjectWriter.java | 1 + .../HtmlChartWidgetEntityServiceImpl.java | 14 +++ .../org/datagear/management/ddl/datagear.sql | 2 + .../mapper/HtmlChartWidgetEntityMapper.xml | 7 +- .../AbstractChartPluginAwareController.java | 1 + .../org/datagear/web/i18n/message.properties | 8 +- .../datagear/web/i18n/message_en.properties | 6 +- .../org/datagear/web/static/css/common.css | 44 ++++--- .../static/script/datagear-chartSupport.js | 105 ++++++++++++++-- .../templates/analysis/chart/chart_form.ftl | 114 +++++++++++------- 12 files changed, 247 insertions(+), 80 deletions(-) diff --git a/Roadmap.txt b/Roadmap.txt index dcbfc3eb..789b0496 100644 --- a/Roadmap.txt +++ b/Roadmap.txt @@ -3,7 +3,7 @@ ok 驱动程序导入页面添加注意事项:要上传驱动所有依赖库; 看板页面i18n; ok 全局看板资源管理功能; - 附件图表数据集: + ok 附件图表数据集: 图表关联数据集时,可以将其标记为附件数据集,附件图表数据集不会用于绘制图表, 而仅作为用户扩展图表使用(比如构建服务端分页表格图表时需要的总记录数); 集成发布包添加默认为空的lib/扩展库加载目录,便于用户添加扩展库(比如变更至MySQL数据库需要的JDBC驱动库); diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java b/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java index beb2804f..1ed8f8dd 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/ChartDataSet.java @@ -30,7 +30,10 @@ public class ChartDataSet private Map> propertySigns = Collections.EMPTY_MAP; /** 数据集别名 */ - private String alias; + private String alias = ""; + + /** 是否附件数据集,不用作渲染图表 */ + private boolean attachment = false; /** 数据集参数值映射表 */ @SuppressWarnings("unchecked") @@ -91,6 +94,24 @@ public class ChartDataSet this.alias = alias; } + /** + * 是否作为附件。 + *

+ * 附件数据集不用作渲染图表,不需设置数据标记,仅作为图表的附件,通常用于扩展图表功能。 + *

+ * + * @return + */ + public boolean isAttachment() + { + return attachment; + } + + public void setAttachment(boolean attachment) + { + this.attachment = attachment; + } + public Map getParamValues() { return paramValues; diff --git a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java index e80c49c2..d731507b 100644 --- a/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java +++ b/datagear-analysis/src/main/java/org/datagear/analysis/support/html/HtmlChartScriptObjectWriter.java @@ -137,6 +137,7 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter super(new DataSetJson(chartDataSet.getDataSet())); setPropertySigns(chartDataSet.getPropertySigns()); setAlias(chartDataSet.getAlias()); + setAttachment(chartDataSet.isAttachment()); setParamValues(chartDataSet.getParamValues()); } diff --git a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java index e6dcd4d4..768b6719 100644 --- a/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java +++ b/datagear-management/src/main/java/org/datagear/management/service/impl/HtmlChartWidgetEntityServiceImpl.java @@ -303,6 +303,7 @@ public class HtmlChartWidgetEntityServiceImpl ChartDataSetVO chartDataSet = new ChartDataSetVO(dataSet); chartDataSet.setPropertySigns(toPropertySigns(relation.getPropertySignsJson())); chartDataSet.setAlias(relation.getAlias()); + chartDataSet.setAttachment(relation.isAttachment()); chartDataSet.setParamValues(toParamValues(relation.getParamValuesJson())); return chartDataSet; @@ -390,6 +391,7 @@ public class HtmlChartWidgetEntityServiceImpl i + 1); relation.setPropertySignsJson(propertySignsJson); relation.setAlias(chartDataSet.getAlias()); + relation.setAttachment(chartDataSet.isAttachment()); relation.setParamValuesJson(paramValuesJson); list.add(relation); @@ -408,6 +410,8 @@ public class HtmlChartWidgetEntityServiceImpl private String alias; + private boolean attachment; + private String paramValuesJson; private int order; @@ -465,6 +469,16 @@ public class HtmlChartWidgetEntityServiceImpl this.alias = alias; } + public boolean isAttachment() + { + return attachment; + } + + public void setAttachment(boolean attachment) + { + this.attachment = attachment; + } + public String getParamValuesJson() { return paramValuesJson; diff --git a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql index b6ddc8e5..fcbadd85 100644 --- a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql +++ b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql @@ -755,3 +755,5 @@ ALTER TABLE DATAGEAR_VERSION DROP COLUMN VERSION_BUILD; --version[2.3.0], DO NOT EDIT THIS LINE! ----------------------------------------- +--添加图表数据集附件列 +ALTER TABLE DATAGEAR_HCW_DS ADD COLUMN DS_ATTACHMENT VARCHAR(20); diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml index ce90736a..3965a1ea 100644 --- a/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/HtmlChartWidgetEntityMapper.xml @@ -19,11 +19,13 @@ INSERT INTO DATAGEAR_HCW_DS ( - HCW_ID, DS_ID, DS_PROPERTY_SIGNS, DS_ALIAS, DS_PARAM_VALUES, DS_ORDER + HCW_ID, DS_ID, DS_PROPERTY_SIGNS, DS_ALIAS, DS_ATTACHMENT, + DS_PARAM_VALUES, DS_ORDER ) VALUES ( - #{widgetId}, #{dataSetId}, #{propertySignsJson, jdbcType=VARCHAR}, #{alias, jdbcType=VARCHAR}, #{paramValuesJson, jdbcType=VARCHAR}, #{order} + #{widgetId}, #{dataSetId}, #{propertySignsJson, jdbcType=VARCHAR}, #{alias, jdbcType=VARCHAR}, #{attachment, jdbcType=VARCHAR}, + #{paramValuesJson, jdbcType=VARCHAR}, #{order} ) @@ -71,6 +73,7 @@ DS_ID AS ${_iq_}dataSetId${_iq_}, DS_PROPERTY_SIGNS AS ${_iq_}propertySignsJson${_iq_}, DS_ALIAS AS ${_iq_}alias${_iq_}, + DS_ATTACHMENT AS ${_iq_}attachment${_iq_}, DS_PARAM_VALUES AS ${_iq_}paramValuesJson${_iq_}, DS_ORDER AS ${_iq_}order${_iq_} FROM diff --git a/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java b/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java index b78e1540..01194ff0 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/AbstractChartPluginAwareController.java @@ -304,6 +304,7 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont setDataSet(ProfileDataSet.valueOf(chartDataSet.getDataSet())); setPropertySigns(chartDataSet.getPropertySigns()); setAlias(chartDataSet.getAlias()); + setAttachment(chartDataSet.isAttachment()); setParamValues(chartDataSet.getParamValues()); } diff --git a/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties b/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties index dd9bb939..672b1c72 100644 --- a/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties +++ b/datagear-web/src/main/resources/org/datagear/web/i18n/message.properties @@ -760,7 +760,7 @@ chart.htmlChartPlugin=图表类型 chart.chartDataSets=数据集 chart.chartDataSets.desc=设置图表使用的一个或多个数据集,图表将使用它们的数据绘制内容,一个数据集通常对应图表的一个系列 chart.updateInterval=更新间隔 -chart.updateInterval.desc=设置图表展示时,多久自动刷新一次数据 +chart.updateInterval.desc=设置图表展示时,页面多久自动刷新一次图表数据 chart.createUser=创建用户 chart.createTime=创建时间 chart.addDataSign=添加数据标记 @@ -775,8 +775,10 @@ chart.updateInterval.interval=间隔 chart.updateIntervalUnit=毫秒 chart.updateIntervalWithUnit={0}毫秒 chart.auth.resouceTypeLabel=图表 -chart.chartDataSet.alias=数据集别名 -chart.chartDataSet.alias.desc=定义图表展示时的数据集别名 +chart.chartDataSet.alias=别名 +chart.chartDataSet.alias.desc=图表展示时的数据集别名 +chart.chartDataSet.attachment=附件 +chart.chartDataSet.attachment.desc=数据集不用作渲染图表,不需设置数据标记,仅作为图表的附件,通常用于扩展图表功能 chart.chartDataSet.paramValue=参数值 chart.setDataSetParamValue=设置数据集参数值 chart.chartDataSet.clearParamValueTip=清除数据集参数值,可在图表展示时设置 diff --git a/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties b/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties index a2b17e9c..5feaa7f7 100644 --- a/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties +++ b/datagear-web/src/main/resources/org/datagear/web/i18n/message_en.properties @@ -775,8 +775,10 @@ chart.updateInterval.interval=Interval chart.updateIntervalUnit=ms chart.updateIntervalWithUnit={0} ms chart.auth.resouceTypeLabel=Chart -chart.chartDataSet.alias=Data set alias -chart.chartDataSet.alias.desc=Define the data set alias when chart is shown +chart.chartDataSet.alias=Alias +chart.chartDataSet.alias.desc=Data set alias when chart shown +chart.chartDataSet.attachment=Attachment +chart.chartDataSet.attachment.desc=Data set is not for rendering chart, only as attachment chart.chartDataSet.paramValue=Parameter chart.setDataSetParamValue=Set parameter value chart.chartDataSet.clearParamValueTip=Clear parameter value, can be set later when chart is shown diff --git a/datagear-web/src/main/resources/org/datagear/web/static/css/common.css b/datagear-web/src/main/resources/org/datagear/web/static/css/common.css index 96de87cb..4c7580bd 100644 --- a/datagear-web/src/main/resources/org/datagear/web/static/css/common.css +++ b/datagear-web/src/main/resources/org/datagear/web/static/css/common.css @@ -2632,15 +2632,17 @@ table.dataTable tbody tr td select{ width: 60%; height: 100%; min-height: 10em; - padding: 0.3em 0.3em; + padding: 0.41em 0.41em; overflow: auto; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } .page-form-chart .data-set-wrapper .data-set-item{ - padding: 0.3em 0.3em; - margin-top: 0.5em; + padding: 0.41em 0.41em; + margin-top: 0.6em; + border-bottom-width: 3px; + border-right-width: 3px; } .page-form-chart .data-set-wrapper .data-set-item:first-child{ margin-top: 0; @@ -2652,31 +2654,39 @@ table.dataTable tbody tr td select{ .page-form-chart .data-set-wrapper .data-set-item .item-head{ padding: 0.2em 0.2em; } -.page-form-chart .data-set-wrapper .data-set-item .item-alias{ +.page-form-chart .data-set-wrapper .data-set-item .item-setting{ padding: 0.4em 0.2em; - margin-bottom: 0.5em; + margin-top: 0.5em; + border-top-width: 1px; border-left-width: 0; - border-top-width: 0; border-right-width: 0; - border-bottom-width: 1px; + border-bottom-width: 0; + position: relative; } -.page-form-chart .data-set-wrapper .data-set-item .item-alias .alias-label{ +.page-form-chart .data-set-wrapper .data-set-item .item-setting .setting-item{ + padding-top: 0.2em; + padding-bottom: 0.2em; +} +.page-form-chart .data-set-wrapper .data-set-item .item-setting .setting-item > label{ display: inline-block; - padding-left: 0.2em; - width: 30%; + padding-left: 1em; + width: 25%; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } -.page-form-chart .data-set-wrapper .data-set-item .item-alias input{ - width: 40%!important; +.page-form-chart .data-set-wrapper .data-set-item .item-setting .setting-item > input, +.page-form-chart .data-set-wrapper .data-set-item .item-setting .setting-item > .input{ + width: 30% !important; } -.page-form-chart .data-set-wrapper .data-set-item .item-alias button{ - float: right; +.page-form-chart .data-set-wrapper .data-set-item .item-setting .ui-checkboxradio-label.ui-button{ + padding: 0.2em 1em; +} +.page-form-chart .data-set-wrapper .data-set-item .item-setting .dataSetParamValueButton{ + position: absolute; + right: 0.1em; + top: 0.6em; border: 0; - padding-top: 0.2em; - padding-bottom: 0.2em; - margin-right: 0.3em; } .page-form-chart .data-set-wrapper .data-set-item .item-signs{ margin-top: 0.3em; diff --git a/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartSupport.js b/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartSupport.js index 3c8d0d08..a96411bd 100644 --- a/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartSupport.js +++ b/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartSupport.js @@ -150,6 +150,11 @@ || dataType == chartSupport.DataSetPropertyDataType.DECIMAL); }; + chartSupport.isChartDataSetAttachment = function(chartDataSet) + { + return (chartDataSet && chartDataSet.attachment); + }; + /** * 提取对象/对象数组的指定属性值。 * @@ -637,6 +642,10 @@ for(var i=0; i").appendTo($head); - var $aliasDiv = $("
").appendTo($item); - $("
").html("<@spring.message code='chart.chartDataSet.alias' />") - .attr("title", "<@spring.message code='chart.chartDataSet.alias.desc' />").appendTo($aliasDiv); - $("") - .attr("value", (chartDataSet.alias || "")).appendTo($aliasDiv); - - if(dataSet.params && dataSet.params.length > 0) - { - var $pvButton = $("") - .appendTo($aliasDiv); - $pvButton.data("dataSetParams", dataSet.params).data("paramValues", (chartDataSet.paramValues || {})); - - $pvButton.click(function(event) - { - var $this = $(this); - po.showDataSetParamValuePanel($this, - { - submit: function(formData) - { - $this.data("paramValues", formData); - po.element(".data-set-param-value-panel").hide(); - }, - readonly: <#if readonly>true<#else>false, - render: function() - { - $("select, input, textarea", this).addClass("ui-widget ui-widget-content"); - $("button", this).addClass("ui-button ui-corner-all ui-widget"); - - <#if !readonly> - var $foot = chartFactory.chartSetting.getDataSetParamValueFormFoot(this); - var $button = $(" ") + .appendTo($settingDiv); + $pvButton.data("dataSetParams", dataSet.params).data("paramValues", (chartDataSet.paramValues || {})); + + $pvButton.click(function(event) + { + var $this = $(this); + po.showDataSetParamValuePanel($this, + { + submit: function(formData) + { + $this.data("paramValues", formData); + po.element(".data-set-param-value-panel").hide(); + }, + readonly: <#if readonly>true<#else>false, + render: function() + { + $("select, input, textarea", this).addClass("ui-widget ui-widget-content"); + $("button", this).addClass("ui-button ui-corner-all ui-widget"); + + <#if !readonly> + var $foot = chartFactory.chartSetting.getDataSetParamValueFormFoot(this); + var $button = $("