Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Five-菜鸟级
echarts
提交
35a15f8d
E
echarts
项目概览
Five-菜鸟级
/
echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
35a15f8d
编写于
5月 17, 2021
作者:
Y
Yi Shen
提交者:
GitHub
5月 17, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14966 from apache/fix-component-missing-error
fix(option): check the missing component before merge theme
上级
a50c9fac
b6c5ce3a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
17 deletion
+39
-17
src/model/Global.ts
src/model/Global.ts
+18
-10
test/ut/spec/model/componentMissing.test.ts
test/ut/spec/model/componentMissing.test.ts
+21
-7
未找到文件。
src/model/Global.ts
浏览文件 @
35a15f8d
...
...
@@ -137,6 +137,20 @@ const BUILTIN_CHARTS_MAP = {
const
componetsMissingLogPrinted
:
Record
<
string
,
boolean
>
=
{};
function
checkMissingComponents
(
option
:
ECUnitOption
)
{
each
(
option
,
function
(
componentOption
,
mainType
:
ComponentMainType
)
{
if
(
!
ComponentModel
.
hasClass
(
mainType
))
{
const
componentImportName
=
BUITIN_COMPONENTS_MAP
[
mainType
as
keyof
typeof
BUITIN_COMPONENTS_MAP
];
if
(
componentImportName
&&
!
componetsMissingLogPrinted
[
componentImportName
])
{
error
(
`Component
${
mainType
}
is used but not imported.
import {
${
componentImportName
}
} from 'echarts/components';
echarts.use([
${
componentImportName
}
]);`
);
componetsMissingLogPrinted
[
componentImportName
]
=
true
;
}
}
});
}
class
GlobalModel
extends
Model
<
ECUnitOption
>
{
// @readonly
option
:
ECUnitOption
;
...
...
@@ -238,6 +252,9 @@ class GlobalModel extends Model<ECUnitOption> {
if
(
!
type
||
type
===
'
recreate
'
)
{
const
baseOption
=
optionManager
.
mountOption
(
type
===
'
recreate
'
);
if
(
__DEV__
)
{
checkMissingComponents
(
baseOption
);
}
if
(
!
this
.
option
||
type
===
'
recreate
'
)
{
initBase
(
this
,
baseOption
);
...
...
@@ -308,16 +325,6 @@ class GlobalModel extends Model<ECUnitOption> {
}
if
(
!
ComponentModel
.
hasClass
(
mainType
))
{
if
(
__DEV__
)
{
const
componentImportName
=
BUITIN_COMPONENTS_MAP
[
mainType
as
keyof
typeof
BUITIN_COMPONENTS_MAP
];
if
(
componentImportName
&&
!
componetsMissingLogPrinted
[
componentImportName
])
{
error
(
`Component
${
mainType
}
is used but not imported.
import {
${
componentImportName
}
} from 'echarts/components';
echarts.use([
${
componentImportName
}
]);`
);
componetsMissingLogPrinted
[
componentImportName
]
=
true
;
}
}
// globalSettingTask.dirty();
option
[
mainType
]
=
option
[
mainType
]
==
null
?
clone
(
componentOption
)
...
...
@@ -990,6 +997,7 @@ function mergeTheme(option: ECUnitOption, theme: ThemeOption): void {
if
(
name
===
'
colorLayer
'
&&
notMergeColorLayer
)
{
return
;
}
// If it is component model mainType, the model handles that merge later.
// otherwise, merge them here.
if
(
!
ComponentModel
.
hasClass
(
name
))
{
...
...
test/ut/spec/model/componentMissing.test.ts
浏览文件 @
35a15f8d
...
...
@@ -32,7 +32,7 @@ use([PieChart, TitleComponent, CanvasRenderer]);
import
{
EChartsOption
}
from
'
../../../../src/export/option
'
;
function
createChart
():
EChartsType
{
function
createChart
(
theme
?:
object
):
EChartsType
{
const
el
=
document
.
createElement
(
'
div
'
);
Object
.
defineProperty
(
el
,
'
clientWidth
'
,
{
get
()
{
...
...
@@ -44,7 +44,7 @@ function createChart(): EChartsType {
return
400
;
}
});
const
chart
=
init
(
el
);
const
chart
=
init
(
el
,
theme
);
return
chart
;
};
...
...
@@ -61,11 +61,15 @@ echarts.use([${seriesImportName}]);`;
}
// !!!!IMPORTANTE NOTE:
// DO NOT test on the same component twice.
// Because error message will be cached. It will not report on the same component twice.
describe
(
'
model_componentMissing
'
,
function
()
{
const
oldConsoleErr
=
console
.
error
;
it
(
'
Should report grid component missing error
'
,
function
()
{
const
chart
=
createChart
();
const
oldConsoleErr
=
console
.
error
;
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({
xAxis
:
{},
...
...
@@ -81,7 +85,6 @@ describe('model_componentMissing', function () {
it
(
'
Should report dataZoom component missing error
'
,
function
()
{
const
chart
=
createChart
();
const
oldConsoleErr
=
console
.
error
;
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({
dataZoom
:
{}
...
...
@@ -95,7 +98,6 @@ describe('model_componentMissing', function () {
it
(
'
Should not report title component missing error
'
,
function
()
{
const
chart
=
createChart
();
const
oldConsoleErr
=
console
.
error
;
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({
title
:
{},
...
...
@@ -108,7 +110,6 @@ describe('model_componentMissing', function () {
it
(
'
Should report funnel series missing error
'
,
function
()
{
const
chart
=
createChart
();
const
oldConsoleErr
=
console
.
error
;
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({
series
:
[{
...
...
@@ -124,7 +125,6 @@ describe('model_componentMissing', function () {
it
(
'
Should not report pie series missing error
'
,
function
()
{
const
chart
=
createChart
();
const
oldConsoleErr
=
console
.
error
;
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({
series
:
[{
...
...
@@ -132,6 +132,20 @@ describe('model_componentMissing', function () {
}]
});
expect
(
console
.
error
).
not
.
toBeCalled
();
console
.
error
=
oldConsoleErr
;
});
it
(
'
Should not report visualMap component missing error when using theme
'
,
function
()
{
const
chart
=
createChart
({
visualMap
:
{
borderColor
:
'
#71708A
'
}
});
console
.
error
=
jest
.
fn
();
chart
.
setOption
<
EChartsOption
>
({});
expect
(
console
.
error
).
not
.
toBeCalled
();
console
.
error
=
oldConsoleErr
;
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录