Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
1c254669
提交
1c254669
authored
2月 26, 2021
作者:
junjie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(视图): 视图组件编辑界面,echarts
上级
f62ca6b5
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
252 行增加
和
57 行删除
+252
-57
Chart.vue
frontend/src/business/components/chart/Chart.vue
+3
-2
Group.vue
frontend/src/business/components/chart/group/Group.vue
+3
-4
router.js
frontend/src/business/components/chart/router.js
+6
-0
ChartEdit.vue
frontend/src/business/components/chart/view/ChartEdit.vue
+226
-41
ViewTable.vue
frontend/src/business/components/dataset/data/ViewTable.vue
+7
-9
main.js
frontend/src/business/main.js
+2
-0
store.js
frontend/src/business/store.js
+5
-1
没有找到文件。
frontend/src/business/components/chart/Chart.vue
浏览文件 @
1c254669
...
@@ -34,12 +34,13 @@
...
@@ -34,12 +34,13 @@
.ms-aside-container
{
.ms-aside-container
{
height
:
calc
(
100vh
-
40px
);
height
:
calc
(
100vh
-
40px
);
padding
:
15px
;
padding
:
15px
;
min-width
:
30
0px
;
min-width
:
26
0px
;
max-width
:
50
0px
;
max-width
:
46
0px
;
}
}
.ms-main-container
{
.ms-main-container
{
height
:
calc
(
100vh
-
40px
);
height
:
calc
(
100vh
-
40px
);
padding
:
0px
;
}
}
</
style
>
</
style
>
frontend/src/business/components/chart/group/Group.vue
浏览文件 @
1c254669
...
@@ -253,12 +253,10 @@ export default {
...
@@ -253,12 +253,10 @@ export default {
mounted
()
{
mounted
()
{
this
.
groupTree
(
this
.
groupForm
);
this
.
groupTree
(
this
.
groupForm
);
this
.
chartTree
();
this
.
chartTree
();
this
.
$router
.
push
(
'/chart'
);
},
},
activated
()
{
activated
()
{
this
.
groupTree
(
this
.
groupForm
);
this
.
groupTree
(
this
.
groupForm
);
this
.
chartTree
();
this
.
chartTree
();
this
.
$router
.
push
(
'/chart'
);
},
},
watch
:
{},
watch
:
{},
methods
:
{
methods
:
{
...
@@ -494,8 +492,9 @@ export default {
...
@@ -494,8 +492,9 @@ export default {
createChart
()
{
createChart
()
{
console
.
log
(
this
.
table
);
console
.
log
(
this
.
table
);
this
.
selectTableFlag
=
false
;
this
.
selectTableFlag
=
false
;
// TODO
this
.
$store
.
commit
(
"setTableId"
,
null
);
this
.
$router
.
push
(
"/chart"
);
this
.
$store
.
commit
(
"setTableId"
,
this
.
table
.
id
);
this
.
$router
.
push
(
"/chart/chart-edit"
);
},
},
getTable
(
table
)
{
getTable
(
table
)
{
...
...
frontend/src/business/components/chart/router.js
浏览文件 @
1c254669
const
Chart
=
()
=>
import
(
'@/business/components/chart/Chart'
);
const
Chart
=
()
=>
import
(
'@/business/components/chart/Chart'
);
const
ChartHome
=
()
=>
import
(
'@/business/components/chart/data/ChartHome'
);
const
ChartHome
=
()
=>
import
(
'@/business/components/chart/data/ChartHome'
);
const
ChartEdit
=
()
=>
import
(
'@/business/components/chart/view/ChartEdit'
)
export
default
{
export
default
{
path
:
"/chart"
,
path
:
"/chart"
,
...
@@ -13,6 +14,11 @@ export default {
...
@@ -13,6 +14,11 @@ export default {
path
:
'home'
,
path
:
'home'
,
name
:
'home'
,
name
:
'home'
,
component
:
ChartHome
,
component
:
ChartHome
,
},
{
path
:
'chart-edit'
,
name
:
'chart-edit'
,
component
:
ChartEdit
,
}
}
]
]
}
}
frontend/src/business/components/chart/view/ChartEdit.vue
浏览文件 @
1c254669
<
template
>
<
template
>
<div>
<!--TODO 慢慢完善,写个DEMO-->
<div>
{{
drag
?
'拖拽中'
:
'拖拽停止'
}}
</div>
<el-row
style=
"height: 100%;overflow-y: hidden;width: 100%;"
>
<!--使用draggable组件-->
<span
v-show=
"false"
>
{{
tableId
}}
</span>
<draggable
v-model=
"myArray"
chosenClass=
"chosen"
forceFallback=
"true"
group=
"people"
animation=
"1000"
<el-row
style=
"height: 30px;"
>
@
start=
"onStart"
@
end=
"onEnd"
>
<span>
{{
tableId
}}
</span>
<transition-group>
<span
style=
"float: right;"
>
<div
class=
"item"
v-for=
"element in myArray"
:key=
"element.id"
>
{{
element
.
name
}}
</div>
<el-button
size=
"mini"
>
</transition-group>
取消
</draggable>
</el-button>
</div>
<el-button
type=
"primary"
size=
"mini"
>
确认
</el-button>
</span>
</el-row>
<el-row
style=
"display: flex;height: 100%"
>
<el-col
style=
"height: 100%;width: 20%;min-width: 180px;max-width:220px;border: 1px solid #E6E6E6;"
>
<div
style=
"height: 50%;border-bottom: 1px solid #E6E6E6;overflow:auto"
>
纬度
<draggable
v-model=
"arr1"
@
end=
"end1"
:options=
"
{group:{name: 'itxst',pull:'clone'},sort: true}" animation="300"
:move="onMove">
<transition-group>
<div
class=
"item"
v-for=
"item in arr1"
:key=
"item.id"
>
{{
item
.
name
}}
</div>
</transition-group>
</draggable>
</div>
<div
style=
"height: 50%;overflow:auto"
>
指标
<draggable
v-model=
"arr2"
@
end=
"end2"
group=
"itxst"
animation=
"300"
:move=
"onMove"
>
<transition-group>
<div
class=
"item"
v-for=
"item in arr2"
:key=
"item.id"
>
{{
item
.
name
}}
</div>
</transition-group>
</draggable>
</div>
</el-col>
<el-col
style=
"height: 100%;width: 25%;min-width: 200px;max-width:240px;border: 1px solid #E6E6E6;border-left: 0 solid;"
>
<div
style=
"border-bottom: 1px solid #E6E6E6;overflow-y:hidden;"
>
<el-row>
<span>
标题
</span>
<el-checkbox
v-model=
"checked"
style=
"float: right;"
>
显示
</el-checkbox>
</el-row>
<el-form>
<el-form-item
class=
"form-item"
>
<el-input
size=
"mini"
placeholder=
"标题"
prefix-icon=
"el-icon-search"
v-model=
"title"
clearable
>
</el-input>
</el-form-item>
</el-form>
</div>
<div
style=
"height: 30%;overflow:auto"
>
<span>
图标类型
</span>
<el-row>
<div
class=
"chart-type"
>
<el-radio
v-model=
"radio1"
label=
"1"
>
折线图
</el-radio>
<el-radio
v-model=
"radio1"
label=
"2"
>
柱状图
</el-radio>
</div>
</el-row>
</div>
<div
style=
"height: 50%;overflow:auto;border-top: 1px solid #e6e6e6"
>
<el-tabs
type=
"card"
>
<el-tab-pane
label=
"图形属性"
>
图形属性
</el-tab-pane>
<el-tab-pane
label=
"组件样式"
>
组件样式
</el-tab-pane>
</el-tabs>
</div>
<div
style=
"height: 50%;overflow:auto;border-top: 1px solid #e6e6e6"
>
<span>
结果过滤器
</span>
</div>
</el-col>
<el-col
style=
"height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;"
>
<el-row
style=
"width: 100%;height: 100%;"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
>
<el-form-item
label=
"横轴"
>
<el-input
v-model=
"form.x_axis"
size=
"mini"
></el-input>
</el-form-item>
<el-form-item
label=
"纵轴"
>
<el-input
v-model=
"form.y_axis"
size=
"mini"
></el-input>
</el-form-item>
</el-form>
<div
class=
"Echarts"
style=
"height: 100%;display: flex;"
>
<div
id=
"echart"
style=
"width: 100%;height: 80%"
>
</div>
</div>
</el-row>
</el-col>
</el-row>
</el-row>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -19,63 +103,164 @@ export default {
...
@@ -19,63 +103,164 @@ export default {
components
:
{
draggable
},
components
:
{
draggable
},
data
()
{
data
()
{
return
{
return
{
drag
:
false
,
form
:
{
list1
:
[
x_axis
:
''
,
{
name
:
"John"
,
id
:
1
},
y_axis
:
''
{
name
:
"Joao"
,
id
:
2
},
},
{
name
:
"Jean"
,
id
:
3
},
checked
:
true
,
{
name
:
"Gerard"
,
id
:
4
}
radio1
:
'2'
,
title
:
''
,
//定义要被拖拽对象的数组
arr1
:
[
{
id
:
1
,
name
:
'id'
},
{
id
:
2
,
name
:
'名称'
},
{
id
:
3
,
name
:
'类型'
},
{
id
:
5
,
name
:
'状态'
},
{
id
:
4
,
name
:
'指标指标指标'
}
],
],
list2
:
[
arr2
:
[
{
name
:
"Juan"
,
id
:
5
},
{
id
:
11
,
name
:
'容量'
},
{
name
:
"Edgard"
,
id
:
6
},
{
name
:
"Johnson"
,
id
:
7
}
],
],
myArray
:
[
moveId
:
-
1
{
people
:
'cn'
,
id
:
1
,
name
:
'www.itxst.com'
},
{
people
:
'cn'
,
id
:
2
,
name
:
'www.baidu.com'
},
{
people
:
'cn'
,
id
:
3
,
name
:
'www.taobao.com'
},
{
people
:
'us'
,
id
:
4
,
name
:
'www.google.com'
}
]
}
}
},
},
created
()
{
created
()
{
},
},
mounted
()
{
mounted
()
{
this
.
myEcharts
();
},
},
activated
()
{
activated
()
{
},
},
computed
:
{},
computed
:
{
tableId
()
{
console
.
log
(
this
.
$store
.
state
.
chart
.
tableId
);
return
this
.
$store
.
state
.
chart
.
tableId
;
},
},
methods
:
{
methods
:
{
//开始拖拽事件
//左边往右边拖动时的事件
onStart
(){
end1
(
e
)
{
this
.
drag
=
true
;
console
.
log
(
e
)
var
that
=
this
;
var
items
=
this
.
arr2
.
filter
(
function
(
m
)
{
return
m
.
id
==
that
.
moveId
})
//如果左边
if
(
items
.
length
<
2
)
return
;
this
.
arr2
.
splice
(
e
.
newDraggableIndex
,
1
)
},
//右边往左边拖动时的事件
end2
(
e
)
{
console
.
log
(
e
)
var
that
=
this
;
var
items
=
this
.
arr1
.
filter
(
function
(
m
)
{
return
m
.
id
==
that
.
moveId
})
//如果左边
if
(
items
.
length
<
2
)
return
;
this
.
arr1
.
splice
(
e
.
newDraggableIndex
,
1
)
},
},
//拖拽结束事件
//move回调方法
onEnd
()
{
onMove
(
e
,
originalEvent
)
{
this
.
drag
=
false
;
console
.
log
(
'onmove'
);
this
.
moveId
=
e
.
relatedContext
.
element
.
id
;
//不允许停靠
if
(
e
.
relatedContext
.
element
.
id
==
1
)
return
false
;
//不允许拖拽
if
(
e
.
draggedContext
.
element
.
id
==
4
)
return
false
;
if
(
e
.
draggedContext
.
element
.
id
==
11
)
return
false
;
return
true
;
},
},
myEcharts
()
{
// 基于准备好的dom,初始化echarts实例
var
myChart
=
this
.
$echarts
.
init
(
document
.
getElementById
(
'echart'
));
// 指定图表的配置项和数据
var
option
=
{
title
:
{
text
:
'ECharts示例'
},
tooltip
:
{},
legend
:
{
data
:
[
'销量'
]
},
xAxis
:
{
data
:
[
"衬衫"
,
"羊毛衫"
,
"雪纺衫"
,
"裤子"
,
"高跟鞋"
,
"袜子"
]
},
yAxis
:
{},
series
:
[{
name
:
'销量'
,
type
:
'bar'
,
data
:
[
5
,
20
,
36
,
10
,
10
,
20
]
}]
};
myChart
.
setOption
(
option
);
window
.
onresize
=
function
()
{
myChart
.
resize
();
}
}
},
},
watch
:
{}
watch
:
{}
}
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.form-item
{
.itxst
{
margin-bottom
:
6px
;
margin
:
10px
;
text-align
:
left
;
}
.col
{
width
:
40%
;
flex
:
1
;
padding
:
10px
;
border
:
solid
1px
#eee
;
border-radius
:
5px
;
float
:
left
;
}
.col
+
.col
{
margin-left
:
10px
;
}
}
/*被拖拽对象的样式*/
.item
{
.item
{
padding
:
6px
;
padding
:
2px
12px
;
margin
:
3px
10px
0px
10px
;
border
:
solid
1px
#eee
;
background-color
:
#f1f1f1
;
text-align
:
left
;
}
.item
+
.item
{
border-top
:
none
;
margin-top
:
3px
;
}
.item
:hover
{
background-color
:
#fdfdfd
;
background-color
:
#fdfdfd
;
cursor
:
pointer
;
}
.item2
{
padding
:
6px
12px
;
margin
:
0px
10px
0px
10px
;
border
:
solid
1px
#eee
;
border
:
solid
1px
#eee
;
margin-bottom
:
10px
;
background-color
:
pink
;
text-align
:
left
;
}
.item2
+
.item2
{
border-top
:
none
;
margin-top
:
6px
;
}
.item2
:hover
{
outline
:
solid
1px
#ddd
;
cursor
:
move
;
cursor
:
move
;
}
}
/*选中样式*/
.el-form-item
{
.chosen
{
margin-bottom
:
0
;
border
:
solid
2px
#3089dc
!important
;
}
}
</
style
>
</
style
>
frontend/src/business/components/dataset/data/ViewTable.vue
浏览文件 @
1c254669
...
@@ -10,9 +10,9 @@
...
@@ -10,9 +10,9 @@
<el-button
size=
"mini"
@
click=
"edit"
>
<el-button
size=
"mini"
@
click=
"edit"
>
{{
$t
(
'dataset.edit'
)
}}
{{
$t
(
'dataset.edit'
)
}}
</el-button>
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"createChart"
>
<!--
<el-button
size=
"mini"
type=
"primary"
@
click=
"createChart"
>
--
>
{{
$t
(
'dataset.create_view'
)
}}
<!--
{{
$t
(
'dataset.create_view'
)
}}
-->
</el-button
>
<!--
</el-button>
--
>
</el-row>
</el-row>
</el-row>
</el-row>
<el-divider/>
<el-divider/>
...
@@ -142,12 +142,10 @@ export default {
...
@@ -142,12 +142,10 @@ export default {
this
.
initTableFields
();
this
.
initTableFields
();
},
},
createChart
()
{
// createChart() {
console
.
log
(
this
.
table
);
// console.log(this.table);
this
.
createViewDialog
=
true
;
// this.createViewDialog = true;
// TODO
// },
this
.
$router
.
push
(
"/chart"
);
},
saveEdit
()
{
saveEdit
()
{
console
.
log
(
this
.
tableFields
);
console
.
log
(
this
.
tableFields
);
...
...
frontend/src/business/main.js
浏览文件 @
1c254669
...
@@ -23,7 +23,9 @@ import VueFab from 'vue-float-action-button'
...
@@ -23,7 +23,9 @@ import VueFab from 'vue-float-action-button'
import
{
left2RightDrag
,
bottom2TopDrag
,
right2LeftDrag
}
from
"../common/js/directive"
;
import
{
left2RightDrag
,
bottom2TopDrag
,
right2LeftDrag
}
from
"../common/js/directive"
;
import
JsonSchemaEditor
from
'./components/common/json-schema/schema/index'
;
import
JsonSchemaEditor
from
'./components/common/json-schema/schema/index'
;
import
JSONPathPicker
from
'vue-jsonpath-picker'
;
import
JSONPathPicker
from
'vue-jsonpath-picker'
;
import
echarts
from
'echarts'
Vue
.
prototype
.
$echarts
=
echarts
;
Vue
.
use
(
JsonSchemaEditor
);
Vue
.
use
(
JsonSchemaEditor
);
import
VuePapaParse
from
'vue-papa-parse'
import
VuePapaParse
from
'vue-papa-parse'
Vue
.
use
(
VuePapaParse
)
Vue
.
use
(
VuePapaParse
)
...
...
frontend/src/business/store.js
浏览文件 @
1c254669
...
@@ -21,7 +21,8 @@ const Dataset = {
...
@@ -21,7 +21,8 @@ const Dataset = {
const
Chart
=
{
const
Chart
=
{
state
:
{
state
:
{
chartSceneData
:
""
,
chartSceneData
:
""
,
chart
:
""
chart
:
""
,
tableId
:
""
},
},
mutations
:
{
mutations
:
{
setChartSceneData
(
state
,
chartSceneData
)
{
setChartSceneData
(
state
,
chartSceneData
)
{
...
@@ -29,6 +30,9 @@ const Chart = {
...
@@ -29,6 +30,9 @@ const Chart = {
},
},
setChart
(
state
,
chart
)
{
setChart
(
state
,
chart
)
{
state
.
chart
=
chart
;
state
.
chart
=
chart
;
},
setTableId
(
state
,
tableId
)
{
state
.
tableId
=
tableId
;
}
}
}
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论