diff --git a/datagear-web/src/main/resources/org/datagear/web/static/css/analysis.css b/datagear-web/src/main/resources/org/datagear/web/static/css/analysis.css index e9a8ab3a..4fd9a3e1 100644 --- a/datagear-web/src/main/resources/org/datagear/web/static/css/analysis.css +++ b/datagear-web/src/main/resources/org/datagear/web/static/css/analysis.css @@ -143,6 +143,24 @@ justify-content: space-between; } +/*下拉框图表*/ +.dg-chart-select{} +.dg-chart-select.dg-chart-select-fill{ + position: relative; +} +.dg-chart-select.dg-chart-select-fill .dg-chart-select-select{ + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + /*数据集参数值表单*/ .dg-dspv-form{} .dg-dspv-form .dg-dspv-form-content{ diff --git a/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartFactory.js b/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartFactory.js index 629024d0..b8eeabaa 100644 --- a/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartFactory.js +++ b/datagear-web/src/main/resources/org/datagear/web/static/script/datagear-chartFactory.js @@ -387,21 +387,6 @@ delete chart.resultDataFormat; }; - /** - * 获取/设置图表的内置扩展属性值。 - * chart.extValue()是允许用户级使用的,此函数应用于内置设置/获取操作,可避免属性名冲突。 - * - * @param chart 图表对象 - * @param name 扩展属性名 - * @param value 可选,要设置的扩展属性值,不设置则执行获取操作 - */ - chartFactory.extValueBuiltin = function(chart, name, value) - { - name = chartFactory.BUILT_IN_NAME_UNDERSCORE_PREFIX+"_" + name; - - return chart.extValue(name, value); - }; - //---------------------------------------- // chartBase start //---------------------------------------- @@ -3199,6 +3184,45 @@ // chartBase end //---------------------------------------- + /** + * 获取/设置图表的内置扩展属性值。 + * chart.extValue()是允许用户级使用的,此函数应用于内置设置/获取操作,可避免属性名冲突。 + * + * @param chart 图表对象 + * @param name 扩展属性名 + * @param value 可选,要设置的扩展属性值,不设置则执行获取操作 + */ + chartFactory.extValueBuiltin = function(chart, name, value) + { + name = chartFactory.BUILT_IN_NAME_UNDERSCORE_PREFIX+"_" + name; + + return chart.extValue(name, value); + }; + + /** + * 获取/设置指定对象的内置属性值。 + * + * @param obj 对象 + * @param name 内置属性名 + * @param value 可选,要设置的内置属性值,不设置则执行获取操作 + */ + chartFactory.builtinProperty = function(obj, name, value) + { + var wrapName = chartFactory.BUILT_IN_NAME_UNDERSCORE_PREFIX + "Builtin"; + + var bp = (obj == null ? null : obj[wrapName]); + + if(value === undefined) + return (bp == null ? undefined : bp[name]); + else + { + if(bp == null) + bp = (obj[wrapName] = {}); + + bp[name] = value; + } + }; + /** * 获取/设置渲染上下文的属性值。 * 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 4a8935c2..bc5325cb 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 @@ -4951,8 +4951,6 @@ { chartSupport.chartSignNameMap(chart, { name: nameSign, value: valueSign }); - var chartTheme = chart.theme(); - var chartEle = chart.elementJquery(); chartEle.addClass("dg-chart-select"); @@ -4985,19 +4983,29 @@ selected: undefined, //前置添加的条目项,格式同data元素,或者其数组,通常用于添加默认选中项 prepend: undefined, - //select框css样式 - selectStyle: - { - "color": chartTheme.color, - "background-color": chartTheme.backgroundColor, - "border-color": chartTheme.borderColor - }, + //是否美化多选时的滚动条(仅支持webkit内核浏览器) + beautifyScrollbar: true, + //下拉框是否填满父元素,"auto" 当是内联框时填满;true 是;false 否 + fillParent: "auto", + //select框css样式,格式为:{ ... } + selectStyle: undefined, //option选项整体css样式,格式为:{ ... } itemStyle: undefined }, options); - var $select = $("").appendTo(chartEle); if(options.name) $select.attr("name", options.name); @@ -5005,8 +5013,8 @@ $select.attr("multiple", "multiple"); if(options.size != null) $select.attr("size", options.size); - - chartFactory.setStyles($select, options.selectStyle); + if(options.selectStyle) + chartFactory.setStyles($select, options.selectStyle); chart.internal($select[0]); }; @@ -5104,7 +5112,7 @@ chartSupport.selectDestroy = function(chart) { var chartEle = chart.elementJquery(); - chartEle.removeClass("dg-chart-select"); + chartEle.removeClass("dg-chart-select dg-chart-select-dropdown dg-chart-beautify-scrollbar"); $(chart.internal()).remove(); }; @@ -5151,6 +5159,48 @@ chartSupport.setChartEventOriginalInfo(chart, chartEvent, chartData); }; + chartSupport.selectThemeStyleClassName = function(chart) + { + var chartTheme = chart.theme(); + var styleSheetId = chartSupport.chartThemeStyleSheetId(chartTheme, "selectChart"); + var styleClassName = chartSupport.chartThemeStyleClassName(chartTheme, "selectChart"); + + if(chartFactory.isStyleSheetCreated(styleSheetId)) + return styleClassName; + + var qualifier = "." + styleClassName + " .dg-chart-select-select"; + var qualifierDropdown = "." + styleClassName + ".dg-chart-select-dropdown .dg-chart-select-select"; + var qualifierBeautifyScrollbar = "." + styleClassName + ".dg-chart-beautify-scrollbar .dg-chart-select-select"; + + var cssText = + + qualifier + "{" + +" color:" + chartTheme.color +";" + +" background-color:" + chartTheme.backgroundColor +";" + +" border-color:" + chartTheme.borderColor +";" + +"}\n" + +qualifierDropdown + " option{" + +" color:" + chartTheme.color +";" + +" background-color:" + chart.gradualColor(0.1) +";" + +"}\n" + +qualifierBeautifyScrollbar + "::-webkit-scrollbar{" + + " width: 10px;" + + " height: 10px;" + +" }\n" + +qualifierBeautifyScrollbar + "::-webkit-scrollbar-thumb{" + + " border-radius: 10px;" + + " background: "+chart.gradualColor(0.3)+";" + +" }\n" + +qualifierBeautifyScrollbar + "::-webkit-scrollbar-track{" + + " background: "+chart.gradualColor(0.1)+";" + +" }\n" + ; + + chartFactory.createStyleSheet(styleSheetId, cssText, "beforeFirstScript"); + + return styleClassName; + }; + //自定义 chartSupport.customAsyncRender = function(chart) @@ -5890,6 +5940,32 @@ return re; }; + chartSupport.chartThemeStyleSheetId = function(chartTheme, name) + { + var styleSheetId = chartFactory.builtinProperty(chartTheme, name +"_styleSheetId"); + + if(!styleSheetId) + { + styleSheetId = chartFactory.nextElementId(); + chartFactory.builtinProperty(chartTheme, name +"_styleSheetId", styleSheetId); + } + + return styleSheetId; + }; + + chartSupport.chartThemeStyleClassName = function(chartTheme, name) + { + var styleClassName = chartFactory.builtinProperty(chartTheme, name +"_styleClassName"); + + if(!styleClassName) + { + styleClassName = chartFactory.nextElementId(); + chartFactory.builtinProperty(chartTheme, name +"_styleClassName", styleClassName); + } + + return styleClassName; + }; + //--------------------------------------------------------- // 公用函数结束 //---------------------------------------------------------