Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
6b510da7
I
incubator-echarts
项目概览
x649585723
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6b510da7
编写于
5月 15, 2019
作者:
S
sushuang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix hover style on textStroke bug in custom series.
上级
e208f5df
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
102 addition
and
13 deletion
+102
-13
src/chart/custom.js
src/chart/custom.js
+42
-7
src/util/graphic.js
src/util/graphic.js
+13
-4
test/hoverStyle.html
test/hoverStyle.html
+47
-2
未找到文件。
src/chart/custom.js
浏览文件 @
6b510da7
...
...
@@ -25,6 +25,7 @@ import createListFromArray from './helper/createListFromArray';
import
{
getLayoutOnAxis
}
from
'
../layout/barGrid
'
;
import
DataDiffer
from
'
../data/DataDiffer
'
;
import
SeriesModel
from
'
../model/Series
'
;
import
Model
from
'
../model/Model
'
;
import
ChartView
from
'
../view/Chart
'
;
import
prepareCartesian2d
from
'
../coord/cartesian/prepareCustom
'
;
...
...
@@ -33,7 +34,7 @@ import prepareSingleAxis from '../coord/single/prepareCustom';
import
preparePolar
from
'
../coord/polar/prepareCustom
'
;
import
prepareCalendar
from
'
../coord/calendar/prepareCustom
'
;
var
CACHED_LABEL_STYLE_PROPERTIES
=
graphicUtil
.
CACHED_LABEL_STYLE_PROPERTIES
;
var
ITEM_STYLE_NORMAL_PATH
=
[
'
itemStyle
'
];
var
ITEM_STYLE_EMPHASIS_PATH
=
[
'
emphasis
'
,
'
itemStyle
'
];
var
LABEL_NORMAL
=
[
'
label
'
];
...
...
@@ -42,6 +43,7 @@ var LABEL_EMPHASIS = ['emphasis', 'label'];
// which will cause weird udpate animation.
var
GROUP_DIFF_PREFIX
=
'
e
\
0
\
0
'
;
/**
* To reduce total package size of each coordinate systems, the modules `prepareCustom`
* of each coordinate systems are not required by each coordinate systems directly, but
...
...
@@ -451,19 +453,24 @@ function makeRenderItem(customSeries, data, ecModel, api) {
var
opacity
=
data
.
getItemVisual
(
dataIndexInside
,
'
opacity
'
);
opacity
!=
null
&&
(
itemStyle
.
opacity
=
opacity
);
graphicUtil
.
setTextStyle
(
itemStyle
,
currLabelNormalModel
,
null
,
{
var
labelModel
=
extra
?
applyExtraBefore
(
extra
,
currLabelNormalModel
)
:
currLabelNormalModel
;
graphicUtil
.
setTextStyle
(
itemStyle
,
labelModel
,
null
,
{
autoColor
:
currVisualColor
,
isRectText
:
true
});
itemStyle
.
text
=
currLabelNorma
lModel
.
getShallow
(
'
show
'
)
itemStyle
.
text
=
labe
lModel
.
getShallow
(
'
show
'
)
?
zrUtil
.
retrieve2
(
customSeries
.
getFormattedLabel
(
dataIndexInside
,
'
normal
'
),
getDefaultLabel
(
data
,
dataIndexInside
)
)
:
null
;
extra
&&
zrUtil
.
extend
(
itemStyle
,
extra
);
extra
&&
applyExtraAfter
(
itemStyle
,
extra
);
return
itemStyle
;
}
...
...
@@ -478,11 +485,15 @@ function makeRenderItem(customSeries, data, ecModel, api) {
var
itemStyle
=
currItemModel
.
getModel
(
ITEM_STYLE_EMPHASIS_PATH
).
getItemStyle
();
graphicUtil
.
setTextStyle
(
itemStyle
,
currLabelEmphasisModel
,
null
,
{
var
labelModel
=
extra
?
applyExtraBefore
(
extra
,
currLabelEmphasisModel
)
:
currLabelEmphasisModel
;
graphicUtil
.
setTextStyle
(
itemStyle
,
labelModel
,
null
,
{
isRectText
:
true
},
true
);
itemStyle
.
text
=
currLabelEmphasis
Model
.
getShallow
(
'
show
'
)
itemStyle
.
text
=
label
Model
.
getShallow
(
'
show
'
)
?
zrUtil
.
retrieve3
(
customSeries
.
getFormattedLabel
(
dataIndexInside
,
'
emphasis
'
),
customSeries
.
getFormattedLabel
(
dataIndexInside
,
'
normal
'
),
...
...
@@ -490,7 +501,8 @@ function makeRenderItem(customSeries, data, ecModel, api) {
)
:
null
;
extra
&&
zrUtil
.
extend
(
itemStyle
,
extra
);
extra
&&
applyExtraAfter
(
itemStyle
,
extra
);
return
itemStyle
;
}
...
...
@@ -719,6 +731,29 @@ function processAddUpdate(newIndex, oldIndex) {
);
}
// `graphic#applyDefaultTextStyle` will cache
// textFill, textStroke, textStrokeWidth.
// We have to do this trick.
function
applyExtraBefore
(
extra
,
model
)
{
var
dummyModel
=
new
Model
({},
model
);
zrUtil
.
each
(
CACHED_LABEL_STYLE_PROPERTIES
,
function
(
stylePropName
,
modelPropName
)
{
if
(
extra
.
hasOwnProperty
(
stylePropName
))
{
dummyModel
.
option
[
modelPropName
]
=
extra
[
stylePropName
];
}
});
return
dummyModel
;
}
function
applyExtraAfter
(
itemStyle
,
extra
)
{
for
(
var
key
in
extra
)
{
if
(
extra
.
hasOwnProperty
(
key
)
||
!
CACHED_LABEL_STYLE_PROPERTIES
.
hasOwnProperty
(
key
)
)
{
itemStyle
[
key
]
=
extra
[
key
];
}
}
}
function
processRemove
(
oldIndex
)
{
var
context
=
this
.
context
;
var
child
=
context
.
oldChildren
[
oldIndex
];
...
...
src/util/graphic.js
浏览文件 @
6b510da7
...
...
@@ -312,12 +312,12 @@ function singleEnterEmphasis(el) {
// where properties of `emphasis` may not appear in `normal`. We previously use
// module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.
// But consider rich text and setOption in merge mode, it is impossible to cover
// all properties in merge. So we use merge mode when setting style here.
// all properties in merge. So we use merge mode when setting style here.
// But we choose the merge strategy that only properties that is not `null/undefined`.
// Because when making a textStyle (espacially rich text), it is not easy to distinguish
// Because when making a textStyle (espacially rich text), it is not easy to distinguish
// `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.
// But this strategy brings a trouble that `null/undefined` can not be used to remove
// style any more in `emphasis`. Users can both set properties directly on normal and
// But this strategy brings a trouble that `null/undefined` can not be used to remove
// style any more in `emphasis`. Users can both set properties directly on normal and
// emphasis to avoid this issue, or we might support `'none'` for this case if required.
targetStyle
.
extendFrom
(
hoverStl
);
...
...
@@ -902,6 +902,13 @@ function getAutoColor(color, opt) {
return
color
!==
'
auto
'
?
color
:
(
opt
&&
opt
.
autoColor
)
?
opt
.
autoColor
:
null
;
}
// key: label model property nane, value: style property name.
export
var
CACHED_LABEL_STYLE_PROPERTIES
=
{
color
:
'
textFill
'
,
textBorderColor
:
'
textStroke
'
,
textBorderWidth
:
'
textStrokeWidth
'
};
/**
* Give some default value to the input `textStyle` object, based on the current settings
* in this `textStyle` object.
...
...
@@ -943,6 +950,8 @@ function applyDefaultTextStyle(textStyle) {
)
)
)
{
// If intend to cache more properties here, modify the
// `CACHED_LABEL_STYLE_PROPERTIES`.
insideRollback
=
{
textFill
:
null
,
textStroke
:
textStyle
.
textStroke
,
...
...
test/hoverStyle.html
浏览文件 @
6b510da7
...
...
@@ -218,6 +218,51 @@ under the License.
data
:
[
[
212
,
331
],
[
215
,
131
],
[
265
,
531
]
]
},
{
type
:
'
scatter
'
,
symbol
:
'
rect
'
,
symbolSize
:
40
,
label
:
{
show
:
true
,
formatter
:
'
label stroke orange hover blue
\n
{c}
'
,
textBorderWidth
:
3
,
textBorderColor
:
'
orange
'
},
emphasis
:
{
label
:
{
formatter
:
'
hover become stroke blue
'
,
textBorderColor
:
'
blue
'
}
},
data
:
[
[
312
,
51
]
]
},
{
type
:
'
custom
'
,
renderItem
:
function
(
params
,
api
)
{
var
coords
=
api
.
coord
([
312
,
351
]);
return
{
type
:
'
rect
'
,
shape
:
{
x
:
coords
[
0
],
y
:
coords
[
1
],
width
:
50
,
height
:
50
},
// check api.style
style
:
api
.
style
({
text
:
'
label stroke orange hover blue
'
,
textStrokeWidth
:
2
,
textStroke
:
'
orange
'
}),
styleEmphasis
:
api
.
styleEmphasis
({
textStroke
:
'
blue
'
})
};
},
data
:
[
[
312
,
151
]
]
}]
};
...
...
@@ -343,7 +388,7 @@ under the License.
{
value
:
100
,
name
:
'
aa
'
,
x
:
100
,
y
:
200
},
{
value
:
150
,
name
:
'
bb
'
,
x
:
450
,
y
:
300
},
{
value
:
200
,
name
:
'
cc
'
,
x
:
200
,
y
:
100
},
{
value
:
250
,
name
:
'
dd
'
,
x
:
450
,
y
:
250
,
{
value
:
250
,
name
:
'
dd
'
,
x
:
450
,
y
:
250
,
emphasis
:
{
itemStyle
:
{
color
:
'
blue
'
...
...
@@ -373,7 +418,7 @@ under the License.
var
chart
=
testHelper
.
create
(
echarts
,
'
mainb4
'
,
{
title
:
[
'
normal style is **line: green dashed width 3, node: red**,
'
,
'
normal style is **line: green dashed width 3, node: red**,
'
,
'
should become **line: orange solid width 8, node: only "dd" blue** when hovered
'
],
option
:
option
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录