Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张小浪
vue项目使用D3js实现3D饼图
提交
867acc1f
V
vue项目使用D3js实现3D饼图
项目概览
张小浪
/
vue项目使用D3js实现3D饼图
与 Fork 源项目一致
Fork自
inscode / VueJS
通知
2
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue项目使用D3js实现3D饼图
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
867acc1f
编写于
5月 08, 2023
作者:
6
64584ef1ecd7b40dc29f18f5
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto commit
上级
79d81088
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
104 addition
and
2 deletion
+104
-2
src/components/Pie3D.vue
src/components/Pie3D.vue
+1
-1
src/utils/pie.js
src/utils/pie.js
+103
-1
未找到文件。
src/components/Pie3D.vue
浏览文件 @
867acc1f
...
@@ -14,7 +14,7 @@ let config = reactive({
...
@@ -14,7 +14,7 @@ let config = reactive({
sfShowLabel
:
true
,
//是否显示文本标线
sfShowLabel
:
true
,
//是否显示文本标线
sfLegend
:
true
,
//是否显示图例
sfLegend
:
true
,
//是否显示图例
legendOrient
:
'
horizontal
'
,
//图例,横向、纵向
legendOrient
:
'
horizontal
'
,
//图例,横向、纵向
legendType
:
'
plain
'
,
//图例类型,普通图例plain还是 scroll翻页图例
legendType
:
'
scroll
'
,
//图例类型,普通图例plain还是 scroll翻页图例
})
})
//基础数据
//基础数据
const
salesData
=
[
const
salesData
=
[
...
...
src/utils/pie.js
浏览文件 @
867acc1f
...
@@ -203,7 +203,109 @@ export default function pie(id, width, height, data, x, y, rx, ry, h, config,ir=
...
@@ -203,7 +203,109 @@ export default function pie(id, width, height, data, x, y, rx, ry, h, config,ir=
if
(
config
.
legendOrient
===
'
horizontal
'
){
if
(
config
.
legendOrient
===
'
horizontal
'
){
//判断是普通图例还是翻页图例
//判断是普通图例还是翻页图例
if
(
config
.
legendType
===
'
scroll
'
){
if
(
config
.
legendType
===
'
scroll
'
){
console
.
log
(
'
scroll
'
)
legendSvg
.
attr
(
'
width
'
,
700
-
80
);
//计算每一个图例的距离
let
list
=
[]
let
left
=
0
legend
.
each
(
function
(){
left
+=
d3
.
select
(
this
).
node
().
getBBox
().
width
+
10
list
.
push
(
left
)
})
legend
.
attr
(
'
transform
'
,
function
(
d
,
i
){
if
(
i
===
0
){
return
'
translate(0,0)
'
}
else
{
return
`translate(
${
list
[
i
-
1
]}
,0)`
}
})
//图例宽度大于盒子宽度
if
(
legendSvg
.
node
().
getBBox
().
width
>
(
700
-
80
)){
//获取总页数
let
legendNumLength
=
0
let
totalPage
=
1
//总页数
let
curPage
=
1
//翻页定义当前页数
let
transitionX
=
0
//需要移动图例整体所占的距离
let
lineList
=
[]
//如果是普通图例判断一行显示多少个
legend
.
each
(
function
(
d
,
i
){
legendNumLength
+=
d3
.
select
(
this
).
node
().
getBBox
().
width
+
10
if
(
legendNumLength
>
(
700
-
80
-
(
d3
.
select
(
this
).
node
().
getBBox
().
width
+
10
))){
legendNumLength
=
0
//避免移动到最后一页多加一夜
if
(
data
.
length
-
1
!==
i
){
lineList
.
push
(
i
)
totalPage
++
}
}
})
//定义横向翻页的svg
const
legendPageSvg
=
d3
.
select
(
id
)
.
append
(
'
svg
'
)
.
attr
(
'
width
'
,
100
)
.
attr
(
'
height
'
,
20
)
.
style
(
'
position
'
,
'
absolute
'
)
.
style
(
'
top
'
,
400
-
30
)
.
style
(
'
left
'
,
700
-
80
);
let
sym
=
d3
.
symbol
().
type
(
d3
.
symbolTriangle
).
size
(
100
);
const
pageBox
=
legendPageSvg
.
append
(
'
g
'
)
.
attr
(
'
id
'
,
'
legend_page
'
)
.
attr
(
'
transform
'
,
'
translate(15,8)
'
);
//定义左侧翻页符号
pageBox
.
append
(
'
path
'
)
.
attr
(
'
d
'
,
sym
)
.
attr
(
'
fill
'
,
'
green
'
)
.
attr
(
'
transform
'
,
'
rotate(30)
'
)
.
style
(
'
cursor
'
,
'
pointer
'
)
.
on
(
'
click
'
,
function
(){
if
(
curPage
>
1
){
let
legendNumLength
=
0
let
curLength
=
0
legend
.
each
(
function
(
d
,
i
){
legendNumLength
+=
d3
.
select
(
this
).
node
().
getBBox
().
width
+
10
if
(
legendNumLength
<=
700
-
80
){
curLength
=
legendNumLength
}
})
transitionX
-=
curLength
legendBox
.
transition
()
.
duration
(
500
)
.
attr
(
'
transform
'
,
`translate(-
${
transitionX
}
, 0)`
);
curPage
--
legendText
.
text
(
`
${
curPage
}
/
${
totalPage
}
`
)
}
});
//页码
const
legendText
=
pageBox
.
append
(
'
text
'
)
.
text
(
`
${
curPage
}
/
${
totalPage
}
`
)
.
attr
(
'
fill
'
,
'
red
'
)
.
attr
(
'
font-size
'
,
12
)
.
attr
(
'
transform
'
,
'
translate(10,5)
'
);
//右侧翻页按钮
pageBox
.
append
(
'
path
'
)
.
attr
(
'
d
'
,
sym
)
.
attr
(
'
fill
'
,
'
green
'
)
.
attr
(
'
transform
'
,
'
translate(40,0) rotate(-30)
'
)
.
style
(
'
cursor
'
,
'
pointer
'
)
.
on
(
'
click
'
,
function
(){
if
(
curPage
<
totalPage
){
let
legendNumLength
=
0
let
curLength
=
0
legend
.
each
(
function
(
d
,
i
){
legendNumLength
+=
d3
.
select
(
this
).
node
().
getBBox
().
width
+
10
if
(
legendNumLength
<=
700
-
80
){
curLength
=
legendNumLength
}
});
transitionX
+=
curLength
legendBox
.
transition
()
.
duration
(
500
)
.
attr
(
'
transform
'
,
`translate(-
${
transitionX
}
, 0)`
);
curPage
++
legendText
.
text
(
`
${
curPage
}
/
${
totalPage
}
`
)
}
});
}
}
else
{
}
else
{
//类型是普通图例
//类型是普通图例
legendSvg
.
attr
(
'
width
'
,
700
-
20
);
legendSvg
.
attr
(
'
width
'
,
700
-
20
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录