Symbol 引用
diff --git a/frontend/src/styles/deicon/iconfont.css b/frontend/src/styles/deicon/iconfont.css
index 800a45892e..7b087d8ab3 100644
--- a/frontend/src/styles/deicon/iconfont.css
+++ b/frontend/src/styles/deicon/iconfont.css
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2459092 */
- src: url('iconfont.woff2?t=1623984849135') format('woff2'),
- url('iconfont.woff?t=1623984849135') format('woff'),
- url('iconfont.ttf?t=1623984849135') format('truetype');
+ src: url('iconfont.woff2?t=1625198204132') format('woff2'),
+ url('iconfont.woff?t=1625198204132') format('woff'),
+ url('iconfont.ttf?t=1625198204132') format('truetype');
}
.iconfont {
@@ -13,6 +13,62 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon-font-weight-bold:before {
+ content: "\e659";
+}
+
+.icon-letter_spacing:before {
+ content: "\e601";
+}
+
+.icon-letter-spacing:before {
+ content: "\e679";
+}
+
+.icon-zimua:before {
+ content: "\e60e";
+}
+
+.icon-format_letter_spacing_:before {
+ content: "\e6c3";
+}
+
+.icon-font_size:before {
+ content: "\e710";
+}
+
+.icon-align-center:before {
+ content: "\e972";
+}
+
+.icon-juyou:before {
+ content: "\e608";
+}
+
+.icon-juzuo:before {
+ content: "\e688";
+}
+
+.icon-solid_line:before {
+ content: "\e64a";
+}
+
+.icon-huabi:before {
+ content: "\e640";
+}
+
+.icon-dianxian:before {
+ content: "\e614";
+}
+
+.icon-xuxian:before {
+ content: "\e617";
+}
+
+.icon-beijingse1:before {
+ content: "\e600";
+}
+
.icon-juxing:before {
content: "\e648";
}
diff --git a/frontend/src/styles/deicon/iconfont.js b/frontend/src/styles/deicon/iconfont.js
index 515bb2ce73..6051c0d209 100644
--- a/frontend/src/styles/deicon/iconfont.js
+++ b/frontend/src/styles/deicon/iconfont.js
@@ -1 +1 @@
-!(function(c) { var h; var a; var l; var v; var t; var o; var i = '
'; var e = (e = document.getElementsByTagName('script'))[e.length - 1].getAttribute('data-injectcss'); if (e && !c.__iconfont__svg__cssinject__) { c.__iconfont__svg__cssinject__ = !0; try { document.write('') } catch (c) { console && console.log(c) } } function z() { t || (t = !0, l()) }h = function() { var c, h, a; (a = document.createElement('div')).innerHTML = i, i = null, (h = a.getElementsByTagName('svg')[0]) && (h.setAttribute('aria-hidden', 'true'), h.style.position = 'absolute', h.style.width = 0, h.style.height = 0, h.style.overflow = 'hidden', c = h, (a = document.body).firstChild ? (h = a.firstChild).parentNode.insertBefore(c, h) : a.appendChild(c)) }, document.addEventListener ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState) ? setTimeout(h, 0) : (a = function() { document.removeEventListener('DOMContentLoaded', a, !1), h() }, document.addEventListener('DOMContentLoaded', a, !1)) : document.attachEvent && (l = h, v = c.document, t = !1, (o = function() { try { v.documentElement.doScroll('left') } catch (c) { return void setTimeout(o, 50) }z() })(), v.onreadystatechange = function() { v.readyState == 'complete' && (v.onreadystatechange = null, z()) }) }(window))
+!function(h){var c,a,l,v,t,o,i='
',z=(z=document.getElementsByTagName("script"))[z.length-1].getAttribute("data-injectcss");if(z&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}function s(){t||(t=!0,l())}c=function(){var h,c,a;(a=document.createElement("div")).innerHTML=i,i=null,(c=a.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",h=c,(a=document.body).firstChild?(c=a.firstChild).parentNode.insertBefore(h,c):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(l=c,v=h.document,t=!1,(o=function(){try{v.documentElement.doScroll("left")}catch(h){return void setTimeout(o,50)}s()})(),v.onreadystatechange=function(){"complete"==v.readyState&&(v.onreadystatechange=null,s())})}(window);
\ No newline at end of file
diff --git a/frontend/src/styles/deicon/iconfont.json b/frontend/src/styles/deicon/iconfont.json
index e9ce984096..7cdb309758 100644
--- a/frontend/src/styles/deicon/iconfont.json
+++ b/frontend/src/styles/deicon/iconfont.json
@@ -5,6 +5,104 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
+ {
+ "icon_id": "4283405",
+ "name": "font-weight-bold",
+ "font_class": "font-weight-bold",
+ "unicode": "e659",
+ "unicode_decimal": 58969
+ },
+ {
+ "icon_id": "9356145",
+ "name": "letter_spacing",
+ "font_class": "letter_spacing",
+ "unicode": "e601",
+ "unicode_decimal": 58881
+ },
+ {
+ "icon_id": "13169265",
+ "name": "letter-spacing",
+ "font_class": "letter-spacing",
+ "unicode": "e679",
+ "unicode_decimal": 59001
+ },
+ {
+ "icon_id": "7620139",
+ "name": "字体颜色",
+ "font_class": "zimua",
+ "unicode": "e60e",
+ "unicode_decimal": 58894
+ },
+ {
+ "icon_id": "13016621",
+ "name": "format_letter_spacing_2",
+ "font_class": "format_letter_spacing_",
+ "unicode": "e6c3",
+ "unicode_decimal": 59075
+ },
+ {
+ "icon_id": "18354433",
+ "name": "font_size",
+ "font_class": "font_size",
+ "unicode": "e710",
+ "unicode_decimal": 59152
+ },
+ {
+ "icon_id": "3717684",
+ "name": "居中",
+ "font_class": "align-center",
+ "unicode": "e972",
+ "unicode_decimal": 59762
+ },
+ {
+ "icon_id": "14764786",
+ "name": "居右",
+ "font_class": "juyou",
+ "unicode": "e608",
+ "unicode_decimal": 58888
+ },
+ {
+ "icon_id": "22405859",
+ "name": "居左",
+ "font_class": "juzuo",
+ "unicode": "e688",
+ "unicode_decimal": 59016
+ },
+ {
+ "icon_id": "20374711",
+ "name": "实线",
+ "font_class": "solid_line",
+ "unicode": "e64a",
+ "unicode_decimal": 58954
+ },
+ {
+ "icon_id": "930673",
+ "name": "画笔",
+ "font_class": "huabi",
+ "unicode": "e640",
+ "unicode_decimal": 58944
+ },
+ {
+ "icon_id": "15952264",
+ "name": "点线",
+ "font_class": "dianxian",
+ "unicode": "e614",
+ "unicode_decimal": 58900
+ },
+ {
+ "icon_id": "15952269",
+ "name": "虚线",
+ "font_class": "xuxian",
+ "unicode": "e617",
+ "unicode_decimal": 58903
+ },
+ {
+ "icon_id": "19990890",
+ "name": "背景色‘",
+ "font_class": "beijingse1",
+ "unicode": "e600",
+ "unicode_decimal": 58880
+ },
{
"icon_id": "2404485",
"name": "矩形",
diff --git a/frontend/src/styles/deicon/iconfont.ttf b/frontend/src/styles/deicon/iconfont.ttf
index ecd3c9b6b1..2f49c335f5 100644
Binary files a/frontend/src/styles/deicon/iconfont.ttf and b/frontend/src/styles/deicon/iconfont.ttf differ
diff --git a/frontend/src/styles/deicon/iconfont.woff b/frontend/src/styles/deicon/iconfont.woff
index 05fa75f07e..92677ec498 100644
Binary files a/frontend/src/styles/deicon/iconfont.woff and b/frontend/src/styles/deicon/iconfont.woff differ
diff --git a/frontend/src/styles/deicon/iconfont.woff2 b/frontend/src/styles/deicon/iconfont.woff2
index ed0a74539d..edeb69851c 100644
Binary files a/frontend/src/styles/deicon/iconfont.woff2 and b/frontend/src/styles/deicon/iconfont.woff2 differ
diff --git a/frontend/src/styles/index.scss b/frontend/src/styles/index.scss
index b3a814f0ae..93ee1c8c13 100644
--- a/frontend/src/styles/index.scss
+++ b/frontend/src/styles/index.scss
@@ -102,8 +102,7 @@ div:focus {
}
.de-style-dialog {
- min-width: 500px !important;
- width: 300px !important;
+ width: 600px !important;
.el-dialog__header{
// background-color: #f4f4f5;
@@ -286,3 +285,7 @@ div:focus {
bottom:20px;
}
+
+.tox-tinymce-aux {
+ z-index: 10000 !important;
+}
diff --git a/frontend/src/views/Tinymce/RectangleAttr.vue b/frontend/src/views/Tinymce/RectangleAttr.vue
new file mode 100644
index 0000000000..b1eb53a695
--- /dev/null
+++ b/frontend/src/views/Tinymce/RectangleAttr.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/Tinymce/TextAttr.vue b/frontend/src/views/Tinymce/TextAttr.vue
new file mode 100644
index 0000000000..969fe15e9b
--- /dev/null
+++ b/frontend/src/views/Tinymce/TextAttr.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/Tinymce/index.vue b/frontend/src/views/Tinymce/index.vue
new file mode 100644
index 0000000000..a665dac663
--- /dev/null
+++ b/frontend/src/views/Tinymce/index.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/frontend/src/views/chart/chart/chart.js b/frontend/src/views/chart/chart/chart.js
index 3ba43ccc4b..66cce7fb14 100644
--- a/frontend/src/views/chart/chart/chart.js
+++ b/frontend/src/views/chart/chart/chart.js
@@ -20,7 +20,7 @@ export const DEFAULT_SIZE = {
lineSmooth: false,
lineArea: false,
pieInnerRadius: 0,
- pieOuterRadius: 60,
+ pieOuterRadius: 80,
pieRoseType: 'radius',
pieRoseRadius: 5,
funnelWidth: 80,
@@ -45,7 +45,10 @@ export const DEFAULT_LABEL = {
color: '#909399',
fontSize: '10',
formatter: '{c}',
- gaugeFormatter: '{value}'
+ gaugeFormatter: '{value}',
+ labelLine: {
+ show: true
+ }
}
export const DEFAULT_TOOLTIP = {
show: true,
@@ -81,6 +84,10 @@ export const DEFAULT_XAXIS_STYLE = {
show: true,
position: 'bottom',
name: '',
+ nameTextStyle: {
+ color: '#333333',
+ fontSize: 12
+ },
axisLabel: {
show: true,
color: '#333333',
@@ -101,6 +108,10 @@ export const DEFAULT_YAXIS_STYLE = {
show: true,
position: 'left',
name: '',
+ nameTextStyle: {
+ color: '#333333',
+ fontSize: 12
+ },
axisLabel: {
show: true,
color: '#333333',
diff --git a/frontend/src/views/chart/chart/common/common.js b/frontend/src/views/chart/chart/common/common.js
index 0cdef5b2e6..0e095abf05 100644
--- a/frontend/src/views/chart/chart/common/common.js
+++ b/frontend/src/views/chart/chart/common/common.js
@@ -28,6 +28,7 @@ export function componentStyle(chart_option, chart) {
chart_option.xAxis.name = customStyle.xAxis.name
chart_option.xAxis.axisLabel = customStyle.xAxis.axisLabel
chart_option.xAxis.splitLine = customStyle.xAxis.splitLine
+ chart_option.xAxis.nameTextStyle = customStyle.xAxis.nameTextStyle
}
if (customStyle.yAxis && (chart.type.includes('bar') || chart.type.includes('line'))) {
chart_option.yAxis.show = customStyle.yAxis.show
@@ -35,6 +36,7 @@ export function componentStyle(chart_option, chart) {
chart_option.yAxis.name = customStyle.yAxis.name
chart_option.yAxis.axisLabel = customStyle.yAxis.axisLabel
chart_option.yAxis.splitLine = customStyle.yAxis.splitLine
+ chart_option.yAxis.nameTextStyle = customStyle.yAxis.nameTextStyle
}
if (customStyle.background) {
chart_option.backgroundColor = hexColorToRGBA(customStyle.background.color, customStyle.background.alpha)
diff --git a/frontend/src/views/chart/chart/pie/pie.js b/frontend/src/views/chart/chart/pie/pie.js
index 8188bffab7..0b8bb92469 100644
--- a/frontend/src/views/chart/chart/pie/pie.js
+++ b/frontend/src/views/chart/chart/pie/pie.js
@@ -29,6 +29,7 @@ export function basePieOption(chart_option, chart) {
// label
if (customAttr.label) {
chart_option.series[0].label = customAttr.label
+ chart_option.series[0].labelLine = customAttr.label.labelLine
}
const valueArr = chart.data.series[0].data
for (let i = 0; i < valueArr.length; i++) {
diff --git a/frontend/src/views/chart/components/component-style/XAxisSelector.vue b/frontend/src/views/chart/components/component-style/XAxisSelector.vue
index e09920ce16..c4f59bd473 100644
--- a/frontend/src/views/chart/components/component-style/XAxisSelector.vue
+++ b/frontend/src/views/chart/components/component-style/XAxisSelector.vue
@@ -24,6 +24,14 @@
+
+
+
+
+
+
+
+
{{ $t('chart.axis_show') }}
@@ -112,6 +120,9 @@ export default {
if (!this.axisForm.splitLine) {
this.axisForm.splitLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine))
}
+ if (!this.axisForm.nameTextStyle) {
+ this.axisForm.nameTextStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.nameTextStyle))
+ }
}
}
}
diff --git a/frontend/src/views/chart/components/component-style/YAxisSelector.vue b/frontend/src/views/chart/components/component-style/YAxisSelector.vue
index 2614d39d2e..3a337923b0 100644
--- a/frontend/src/views/chart/components/component-style/YAxisSelector.vue
+++ b/frontend/src/views/chart/components/component-style/YAxisSelector.vue
@@ -24,6 +24,14 @@
+
+
+
+
+
+
+
+
{{ $t('chart.axis_show') }}
@@ -112,6 +120,9 @@ export default {
if (!this.axisForm.splitLine) {
this.axisForm.splitLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine))
}
+ if (!this.axisForm.nameTextStyle) {
+ this.axisForm.nameTextStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.nameTextStyle))
+ }
}
}
}
diff --git a/frontend/src/views/chart/components/shape-attr/LabelSelector.vue b/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
index b72b29c882..a370f053f6 100644
--- a/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
+++ b/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
@@ -12,6 +12,9 @@
+
+ {{ $t('chart.pie_label_line_show') }}
+
@@ -21,13 +24,9 @@
-
- {{ $t('chart.inside') }}
- {{ $t('chart.text_pos_top') }}
- {{ $t('chart.text_pos_bottom') }}
- {{ $t('chart.text_pos_left') }}
- {{ $t('chart.text_pos_right') }}
-
+
+
+
@@ -35,7 +34,7 @@
{{ $t('chart.content_formatter') }}
- 字符串支持用 \n 换行
字符串模板 模板变量有:
{a}:系列名。
{b}:数据名。
{c}:数据值。
+ 字符串支持用 \n 换行
字符串模板 模板变量有:
{a}:系列名。
{b}:数据名。
{c}:数据值。
{d}:百分比(用于饼图等)。
@@ -97,7 +96,16 @@ export default {
return {
labelForm: JSON.parse(JSON.stringify(DEFAULT_LABEL)),
fontSize: [],
- isSetting: false
+ isSetting: false,
+ labelPosition: [
+ { name: this.$t('chart.inside'), value: 'inside' },
+ { name: this.$t('chart.outside'), value: 'outside' },
+ { name: this.$t('chart.center'), value: 'center' },
+ { name: this.$t('chart.text_pos_top'), value: 'top' },
+ { name: this.$t('chart.text_pos_bottom'), value: 'bottom' },
+ { name: this.$t('chart.text_pos_left'), value: 'left' },
+ { name: this.$t('chart.text_pos_right'), value: 'right' }
+ ]
}
},
watch: {
@@ -113,6 +121,9 @@ export default {
}
if (customAttr.label) {
this.labelForm = customAttr.label
+ if (!this.labelForm.labelLine) {
+ this.labelForm.labelLine = JSON.parse(JSON.stringify(DEFAULT_LABEL.labelLine))
+ }
}
}
}
diff --git a/frontend/src/views/chart/components/table/TableNormal.vue b/frontend/src/views/chart/components/table/TableNormal.vue
index c75e30a12b..7433c9f751 100644
--- a/frontend/src/views/chart/components/table/TableNormal.vue
+++ b/frontend/src/views/chart/components/table/TableNormal.vue
@@ -246,7 +246,7 @@ export default {
chartResize() {
// 指定图表的配置项和数据
- this.calcHeight()
+ this.calcHeightDelay()
},
initClass() {
diff --git a/frontend/src/views/dataset/common/DatasetChartDetail.vue b/frontend/src/views/dataset/common/DatasetChartDetail.vue
index dba44ef9ba..e9ff1644ba 100644
--- a/frontend/src/views/dataset/common/DatasetChartDetail.vue
+++ b/frontend/src/views/dataset/common/DatasetChartDetail.vue
@@ -68,6 +68,7 @@
{{ $t('datasource.type') }}
MySQL
SQL Server
+ Oracle
{{ $t('dataset.create_time') }}
diff --git a/frontend/src/views/panel/edit/index.vue b/frontend/src/views/panel/edit/index.vue
index f0dae96a71..5470248aaa 100644
--- a/frontend/src/views/panel/edit/index.vue
+++ b/frontend/src/views/panel/edit/index.vue
@@ -137,12 +137,13 @@
-
+
+
{{ $t('commons.confirm') }}
@@ -153,9 +154,12 @@
-
+
+
+
+
@@ -182,6 +186,7 @@ import AttrList from '@/components/canvas/components/AttrList'
import AttrListExtend from '@/components/canvas/components/AttrListExtend'
import elementResizeDetectorMaker from 'element-resize-detector'
import AssistComponent from '@/views/panel/AssistComponent'
+import PanelTextEditor from '@/components/canvas/custom-component/PanelTextEditor'
// 引入样式
import '@/components/canvas/assets/iconfont/iconfont.css'
@@ -193,6 +198,8 @@ import FilterDialog from '../filter/filterDialog'
import toast from '@/components/canvas/utils/toast'
import { commonStyle, commonAttr } from '@/components/canvas/custom-component/component-list'
import generateID from '@/components/canvas/utils/generateID'
+import RectangleAttr from '@/components/canvas/components/RectangleAttr'
+import TextAttr from '@/views/Tinymce/TextAttr'
export default {
name: 'PanelEdit',
@@ -210,7 +217,10 @@ export default {
Preview,
AttrList,
AttrListExtend,
- AssistComponent
+ AssistComponent,
+ PanelTextEditor,
+ RectangleAttr,
+ TextAttr
},
data() {
return {
@@ -447,12 +457,12 @@ export default {
this.$store.commit('recordSnapshot')
this.clearCurrentInfo()
- // 文字组件
- if (component.type === 'v-text' || component.type === 'rect-shape') {
- this.$store.commit('setCurComponent', { component: component, index: this.componentData.length })
- this.styleDialogVisible = true
- this.show = false
- }
+ // // 文字组件
+ // if (component.type === 'v-text') {
+ // this.$store.commit('setCurComponent', { component: component, index: this.componentData.length })
+ // this.styleDialogVisible = true
+ // this.show = false
+ // }
},
clearCurrentInfo() {
this.currentWidget = null
@@ -675,10 +685,10 @@ export default {
position: relative;
}
-.el-main >>> .el-drawer__wrapper{
+.el-main ::v-deep .el-drawer__wrapper{
width: 310px!important;
}
-.el-main >>> .el-drawer__body{
+.el-main ::v-deep .el-drawer__body{
overflow-y: auto;
}
.button-show{
@@ -708,4 +718,21 @@ export default {
transform: translateX(100%);
}
+.style-edit-dialog {
+ width: 300px!important;
+ height: 400px!important;
+
+ .el-dialog__header{
+ // background-color: #f4f4f5;
+ padding: 10px 20px !important;
+
+ .el-dialog__headerbtn {
+ top: 15px !important;
+ }
+ }
+ .el-dialog__body{
+ padding: 1px 15px !important;
+ }
+}
+
diff --git a/frontend/src/views/system/datasource/DsTree.vue b/frontend/src/views/system/datasource/DsTree.vue
index 599d3fee78..2f3681cf7e 100644
--- a/frontend/src/views/system/datasource/DsTree.vue
+++ b/frontend/src/views/system/datasource/DsTree.vue
@@ -154,6 +154,8 @@ export default {
return 'MySQL'
} else if (type === 'sqlServer') {
return 'SQL Server'
+ }else if (type === 'oracle') {
+ return 'Oracle'
}
},
diff --git a/frontend/src/views/system/datasource/form.vue b/frontend/src/views/system/datasource/form.vue
index 71b260931e..0d74dedcbf 100644
--- a/frontend/src/views/system/datasource/form.vue
+++ b/frontend/src/views/system/datasource/form.vue
@@ -31,6 +31,12 @@
+
+
+ {{ $t('datasource.oracle_sid') }}
+ {{ $t('datasource.oracle_service_name') }}
+
+
@@ -40,16 +46,6 @@
-
-