Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
Z
ZZDataAnalysis
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hlwu
ZZDataAnalysis
Commits
090f41a9
Commit
090f41a9
authored
Sep 20, 2023
by
liushuai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接csv数据源
parent
45762945
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
213 additions
and
34 deletions
+213
-34
charts.js
web/src/store/modules/charts.js
+11
-3
chartdataset.vue
web/src/views/chartcustomization/chartdataset.vue
+154
-0
chartedit.vue
web/src/views/chartcustomization/chartedit.vue
+2
-2
chart.vue
web/src/views/chartcustomization/components/chart.vue
+46
-29
No files found.
web/src/store/modules/charts.js
View file @
090f41a9
...
@@ -90,12 +90,12 @@ const state = () => ({
...
@@ -90,12 +90,12 @@ const state = () => ({
symbolSize
:
8
,
// 数据点符号的大小
symbolSize
:
8
,
// 数据点符号的大小
itemStyle
:
{
itemStyle
:
{
color
:
'#fff'
,
// 数据点符号的填充颜色
color
:
'#fff'
,
// 数据点符号的填充颜色
borderColor
:
'rgb(55, 124, 255)'
,
// 数据点符号的边框颜色
//
borderColor: 'rgb(55, 124, 255)', // 数据点符号的边框颜色
borderWidth
:
2
// 数据点符号的边框宽度
borderWidth
:
2
// 数据点符号的边框宽度
},
},
smooth
:
true
,
smooth
:
true
,
lineStyle
:{
lineStyle
:{
color
:
"rgb(55, 124, 255)"
,
//
color:"rgb(55, 124, 255)",
width
:
2
,
width
:
2
,
}
}
},
},
...
@@ -122,7 +122,11 @@ const state = () => ({
...
@@ -122,7 +122,11 @@ const state = () => ({
start
:
0
,
// 初始起始百分比
start
:
0
,
// 初始起始百分比
end
:
100
// 初始结束百分比
end
:
100
// 初始结束百分比
}
}
]
],
dataSet
:{
xAxis
:{},
yAxis
:[],
}
});
});
const
getters
=
{
const
getters
=
{
chartSettingsTitle
:
(
state
)
=>
state
.
chartSettingsTitle
,
chartSettingsTitle
:
(
state
)
=>
state
.
chartSettingsTitle
,
...
@@ -131,6 +135,7 @@ const getters = {
...
@@ -131,6 +135,7 @@ const getters = {
chartSettingsYAxis
:(
state
)
=>
state
.
chartSettingsYAxis
,
chartSettingsYAxis
:(
state
)
=>
state
.
chartSettingsYAxis
,
chartSettingsSeries
:(
state
)
=>
state
.
chartSettingsSeries
,
chartSettingsSeries
:(
state
)
=>
state
.
chartSettingsSeries
,
chartSettingsDataZoom
:(
state
)
=>
state
.
chartSettingsDataZoom
,
chartSettingsDataZoom
:(
state
)
=>
state
.
chartSettingsDataZoom
,
dataSet
:(
state
)
=>
state
.
dataSet
,
}
}
const
mutations
=
{
const
mutations
=
{
updateChartSettingsTitle
(
state
,
data
)
{
updateChartSettingsTitle
(
state
,
data
)
{
...
@@ -151,6 +156,9 @@ const mutations ={
...
@@ -151,6 +156,9 @@ const mutations ={
updateChartSettingsDataZoom
(
state
,
data
)
{
updateChartSettingsDataZoom
(
state
,
data
)
{
state
.
chartSettingsDataZoom
=
data
;
state
.
chartSettingsDataZoom
=
data
;
},
},
updateDataSet
(
state
,
data
)
{
state
.
dataSet
=
data
;
},
}
}
const
actions
=
{
const
actions
=
{
...
...
web/src/views/chartcustomization/chartdataset.vue
0 → 100644
View file @
090f41a9
<
template
>
<div
style=
"width: 15%"
>
<div
style=
"margin:8px"
><span>
选择分析的数据文件
</span></div>
<el-select
v-model=
"chooseFile"
@
change=
"getCSVData"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in fileList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
<div
style=
"margin-top: 20px"
>
<draggable
v-on:end=
"dragWidget($event)"
:sort=
"false"
>
<transition-group
tag=
"div"
>
<div
class=
"data-item"
v-for=
"element in dataList"
:data-name=
"element"
:key=
"element"
v-if=
"element !== '时间' && element !== '区域'"
>
{{
element
}}
</div>
</transition-group>
</draggable>
<!--
<template
v-for=
"(item,index) in dataList"
>
-->
<!--
<div
v-if=
"index!=0"
>
-->
<!--
<div
class=
"data-item"
>
{{
item
}}
</div>
-->
<!--
</div>
-->
<!--
</
template
>
-->
</div>
</div>
</template>
<
script
>
import
draggable
from
'vuedraggable'
import
{
getProject
,
getFileList
,
createProject
,
getDataHeader
}
from
'@/api/data'
import
{
mapState
}
from
"vuex"
;
export
default
{
name
:
"chartdataset"
,
components
:{
draggable
},
data
()
{
return
{
fileList
:[],
chooseFile
:
''
,
headerList
:[],
dataList
:[],
data
:[]
}
},
computed
:
{
...
mapState
(
'charts'
,
[
'chartSettingsTitle'
,
'chartSettingsLegend'
,
'chartSettingsXAxis'
,
'chartSettingsYAxis'
,
'chartSettingsSeries'
,
'chartSettingsDataZoom'
,
'dataSet'
]),
},
mounted
()
{
this
.
initFileList
()
},
watch
:{
dataSet
:{
deep
:
true
,
handler
:
function
(
newVal
){
let
data
=
[]
for
(
var
i
in
newVal
.
yAxis
){
data
.
push
(
newVal
.
yAxis
[
i
].
name
)
}
// console.log(data)
// console.log(this.dataList)
const
difference
=
this
.
headerList
.
filter
(
item
=>
!
data
.
includes
(
item
));
this
.
dataList
=
difference
// console.log(difference); // [1, 2]
}
},
},
methods
:{
initFileList
(){
getFileList
().
then
(
res
=>
{
this
.
fileList
=
res
.
data
;
}).
catch
(
err
=>
{
console
.
log
(
err
)
})
},
getCSVData
(){
if
(
this
.
chooseFile
!=
""
){
let
that
=
this
let
file
=
this
.
fileList
.
filter
(
d
=>
{
return
d
.
id
==
that
.
chooseFile
})[
0
]
let
data
=
{
"fId"
:
file
.
id
,
"name"
:
file
.
name
}
getDataHeader
(
data
).
then
(
res
=>
{
this
.
dataList
=
this
.
headerList
=
res
.
data
.
header
this
.
data
=
res
.
data
.
data
this
.
dataSet
.
xAxis
=
{}
this
.
dataSet
.
yAxis
=
[]
this
.
$store
.
commit
(
'charts/updateDataSet'
,
this
.
dataSet
);
}).
catch
(
err
=>
{
console
.
log
(
err
)
})
}
},
dragWidget
(
event
){
var
widgetX
=
event
.
originalEvent
.
clientX
;
let
widgetY
=
event
.
originalEvent
.
clientY
;
let
that
=
this
let
id
=
'chartDataList'
// console.log(id)
var
regionRect
=
document
.
getElementById
(
id
).
getBoundingClientRect
();
if
(
widgetX
>
regionRect
.
left
&&
widgetX
<
regionRect
.
left
+
regionRect
.
width
&&
widgetY
>
regionRect
.
top
&&
widgetY
<
regionRect
.
top
+
regionRect
.
height
){
let
name
=
event
.
item
.
getAttribute
(
"data-name"
)
let
res
=
that
.
dataSet
let
yAxis
=
{
"name"
:
name
,
"list"
:[]
}
let
xAxis
=
{
"name"
:
"时间"
,
"list"
:[]
}
for
(
var
i
in
that
.
data
){
let
item
=
that
.
data
[
i
]
let
value
=
item
[
name
]
let
time
=
item
[
xAxis
.
name
]
yAxis
.
list
.
push
(
value
)
xAxis
.
list
.
push
(
time
)
}
res
.
xAxis
=
xAxis
res
.
yAxis
.
push
(
yAxis
)
// console.log(res)
this
.
$store
.
commit
(
'charts/updateDataSet'
,
res
);
}
}
}
}
</
script
>
<
style
scoped
>
.data-item
{
padding
:
0
20px
;
font-size
:
12px
;
cursor
:
move
;
color
:
#6a6f77
;
line-height
:
20px
;
}
.data-item
:hover
{
background
:
#ccc
;
}
</
style
>
web/src/views/chartcustomization/chartedit.vue
View file @
090f41a9
<
template
>
<
template
>
<div
style=
"width:
20
%"
>
<div
style=
"width:
15
%"
>
<!--
<div
class=
"right_title"
>
表单选择与配置
</div>
-->
<!--
<div
class=
"right_title"
>
表单选择与配置
</div>
-->
<div
class=
"right_main"
>
<div
class=
"right_main"
>
<div
class=
"main_edit"
>
<div
class=
"main_edit"
>
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<chart-legend></chart-legend>
<chart-legend></chart-legend>
<chart-x-axis></chart-x-axis>
<chart-x-axis></chart-x-axis>
<chart-y-axis></chart-y-axis>
<chart-y-axis></chart-y-axis>
<chart-point></chart-point
>
<!--
<chart-point></chart-point>
--
>
<chart-line></chart-line>
<chart-line></chart-line>
<chart-data-zoom></chart-data-zoom>
<chart-data-zoom></chart-data-zoom>
</el-tab-pane>
</el-tab-pane>
...
...
web/src/views/chartcustomization/components/chart.vue
View file @
090f41a9
...
@@ -4,7 +4,15 @@
...
@@ -4,7 +4,15 @@
overflow: scroll;
overflow: scroll;
position: relative;
position: relative;
background: #fbfbfb;"
>
background: #fbfbfb;"
>
<div
ref=
"chart"
class=
"chart project"
style=
"min-height: 800px;"
></div>
<chartdataset></chartdataset>
<div
class=
"project"
>
<div
class=
"datalist"
id=
"chartDataList"
>
<template
v-for=
"item in dataSet.yAxis"
>
<el-tag
class=
"item-tag"
>
{{
item
.
name
}}
<i
class=
"el-icon-close"
@
click=
"deleteData(item)"
></i></el-tag>
</
template
>
</div>
<div
ref=
"chart"
class=
"chart"
style=
"min-height: 600px;"
></div>
</div>
<chartedit></chartedit>
<chartedit></chartedit>
</div>
</div>
...
@@ -15,13 +23,13 @@
...
@@ -15,13 +23,13 @@
import
*
as
echarts
from
'echarts'
;
import
*
as
echarts
from
'echarts'
;
import
{
getData
}
from
"@/api/data"
import
{
getData
}
from
"@/api/data"
import
Chartedit
from
"../chartedit.vue"
;
import
Chartedit
from
"../chartedit.vue"
;
import
Chartdataset
from
"../chartdataset"
;
export
default
{
export
default
{
name
:
'project'
,
name
:
'project'
,
components
:
{
Chartedit
},
components
:
{
Chart
dataset
,
Chart
edit
},
data
()
{
data
()
{
return
{
return
{
myChart
:
null
,
myChart
:
null
,
dataset
:[],
XAxis
:[],
XAxis
:[],
YAxis
:[],
YAxis
:[],
value
:[]
value
:[]
...
@@ -29,10 +37,15 @@
...
@@ -29,10 +37,15 @@
},
},
mounted
()
{
mounted
()
{
this
.
getdata
()
//
this.getdata()
// this.init()
},
},
watch
:{
watch
:{
dataSet
:
{
deep
:
true
,
handler
:
'init'
// 直接将方法名指定为 handler
},
chartSettingsTitle
:
{
chartSettingsTitle
:
{
deep
:
true
,
deep
:
true
,
handler
:
'init'
// 直接将方法名指定为 handler
handler
:
'init'
// 直接将方法名指定为 handler
...
@@ -59,23 +72,14 @@
...
@@ -59,23 +72,14 @@
},
},
},
},
computed
:
{
computed
:
{
...
mapState
(
'charts'
,
[
'chartSettingsTitle'
,
'chartSettingsLegend'
,
'chartSettingsXAxis'
,
'chartSettingsYAxis'
,
'chartSettingsSeries'
,
'chartSettingsDataZoom'
]),
...
mapState
(
'charts'
,
[
'chartSettingsTitle'
,
'chartSettingsLegend'
,
'chartSettingsXAxis'
,
'chartSettingsYAxis'
,
'chartSettingsSeries'
,
'chartSettingsDataZoom'
,
'dataSet'
]),
},
},
methods
:
{
methods
:
{
getdata
(){
deleteData
(
item
){
const
params
=
{
"name"
:
"国民总收入"
}
console
.
log
(
this
.
dataSet
.
yAxis
)
getData
(
params
).
then
(
res
=>
{
const
updatedList
=
this
.
dataSet
.
yAxis
.
filter
(
d
=>
d
.
name
!==
item
.
name
);
this
.
dataset
=
res
.
data
this
.
dataSet
.
yAxis
=
updatedList
let
XAxis
=
[]
this
.
$store
.
commit
(
'charts/updateDataSet'
,
this
.
dataSet
);
let
value
=
[]
for
(
var
i
in
res
.
data
){
XAxis
.
push
(
res
.
data
[
i
].
year
)
value
.
push
(
res
.
data
[
i
].
value
)
}
this
.
XAxis
=
XAxis
this
.
value
=
value
this
.
init
()
})
},
},
addPointSetting
(
series
){
addPointSetting
(
series
){
for
(
var
i
=
0
;
i
<
series
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
series
.
length
;
i
++
)
{
...
@@ -102,17 +106,17 @@
...
@@ -102,17 +106,17 @@
setOption
.
legend
=
this
.
chartSettingsLegend
setOption
.
legend
=
this
.
chartSettingsLegend
setOption
.
xAxis
=
this
.
chartSettingsXAxis
setOption
.
xAxis
=
this
.
chartSettingsXAxis
setOption
.
yAxis
=
this
.
chartSettingsYAxis
setOption
.
yAxis
=
this
.
chartSettingsYAxis
setOption
.
xAxis
.
data
=
this
.
XAxis
setOption
.
xAxis
.
data
=
this
.
dataSet
.
xAxis
.
list
// setOption.xAxis.data=['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
// setOption.xAxis.data=['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
setOption
.
dataZoom
=
this
.
chartSettingsDataZoom
setOption
.
dataZoom
=
this
.
chartSettingsDataZoom
let
data
=
this
.
dataSet
.
yAxis
setOption
.
series
=
[
for
(
var
i
in
data
){
{
data
[
i
].
data
=
data
[
i
].
list
name
:
'国民总收入'
,
data
[
i
].
type
=
'line'
type
:
'line'
,
}
data
:
this
.
value
},
setOption
.
series
=
data
]
if
(
this
.
chartSettingsSeries
.
showPoint
==
true
){
if
(
this
.
chartSettingsSeries
.
showPoint
==
true
){
this
.
addPointSetting
(
setOption
.
series
)
this
.
addPointSetting
(
setOption
.
series
)
}
else
{
}
else
{
...
@@ -143,7 +147,7 @@
...
@@ -143,7 +147,7 @@
}
}
.project
{
.project
{
width
:
8
0%
;
width
:
7
0%
;
background-color
:
white
;
background-color
:
white
;
}
}
...
@@ -212,4 +216,17 @@
...
@@ -212,4 +216,17 @@
line-height
:
50px
;
line-height
:
50px
;
text-align
:
right
;
text-align
:
right
;
}
}
.datalist
{
padding
:
10px
;
height
:
80px
;
/*width: 100%;*/
margin-top
:
15px
;
margin-bottom
:
15px
;
margin-right
:
20px
;
margin-left
:
20px
;
border
:
1px
dashed
#d8d8d8
;
}
.item-tag
{
}
</
style
>
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment