Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
5a19d2e6
V
VisualDL
项目概览
PaddlePaddle
/
VisualDL
1 年多 前同步成功
通知
88
Star
4655
Fork
642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
5
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VisualDL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
5
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
5a19d2e6
编写于
9月 08, 2020
作者:
P
Peter Pan
提交者:
GitHub
9月 08, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: prevent empty runs selection when routing between pages (#800)
上级
fe666692
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
35 deletion
+47
-35
frontend/packages/core/src/hooks/useTagFilter.ts
frontend/packages/core/src/hooks/useTagFilter.ts
+47
-35
未找到文件。
frontend/packages/core/src/hooks/useTagFilter.ts
浏览文件 @
5a19d2e6
...
...
@@ -3,6 +3,7 @@ import {color, colorAlt} from '~/utils/chart';
import
{
useCallback
,
useEffect
,
useMemo
,
useReducer
}
from
'
react
'
;
import
groupBy
from
'
lodash/groupBy
'
;
import
intersection
from
'
lodash/intersection
'
;
import
intersectionBy
from
'
lodash/intersectionBy
'
;
import
uniq
from
'
lodash/uniq
'
;
import
useGlobalState
from
'
~/hooks/useGlobalState
'
;
...
...
@@ -85,61 +86,72 @@ const attachRunColor = (runs: string[]): Run[] =>
const
reducer
=
(
state
:
State
,
action
:
Action
):
State
=>
{
switch
(
action
.
type
)
{
case
ActionType
.
initRuns
:
case
ActionType
.
initRuns
:
{
const
initRuns
=
action
.
payload
;
const
initRunsGlobalRuns
=
state
.
globalRuns
.
length
?
state
.
globalRuns
:
initRuns
;
const
initRunsRuns
=
attachRunColor
(
initRuns
);
const
initRunsSelectedRuns
=
state
.
globalRuns
.
length
?
initRunsRuns
.
filter
(
run
=>
initRunsGlobalRuns
.
includes
(
run
.
label
))
:
initRunsRuns
;
const
initRunsTags
=
groupTags
(
initRunsSelectedRuns
,
state
.
initTags
);
const
validGlobalRuns
=
initRuns
.
length
?
intersection
(
initRuns
,
state
.
globalRuns
)
:
state
.
globalRuns
;
const
globalRuns
=
validGlobalRuns
.
length
?
validGlobalRuns
:
initRuns
;
const
runs
=
attachRunColor
(
initRuns
);
const
selectedRuns
=
runs
.
filter
(
run
=>
globalRuns
.
includes
(
run
.
label
));
const
tags
=
groupTags
(
selectedRuns
,
state
.
initTags
);
return
{
...
state
,
initRuns
,
globalRuns
:
initRunsGlobalRuns
,
runs
:
initRunsRuns
,
selectedRuns
:
initRunsSelectedRuns
,
tags
:
initRunsTags
,
selectedTags
:
initRunsT
ags
globalRuns
,
runs
,
selectedRuns
,
tags
,
selectedTags
:
t
ags
};
case
ActionType
.
setRuns
:
const
setRunsSelectedRuns
=
intersectionBy
(
state
.
selectedRuns
,
action
.
payload
,
r
=>
r
.
label
);
const
setRunsTags
=
groupTags
(
setRunsSelectedRuns
,
state
.
initTags
);
}
case
ActionType
.
setRuns
:
{
const
runs
=
action
.
payload
;
const
selectedRuns
=
intersectionBy
(
state
.
selectedRuns
,
runs
,
r
=>
r
.
label
);
const
tags
=
groupTags
(
selectedRuns
,
state
.
initTags
);
return
{
...
state
,
runs
:
action
.
payload
,
selectedRuns
:
setRunsSelectedRuns
,
tags
:
setRunsTags
,
selectedTags
:
setRunsT
ags
runs
,
selectedRuns
,
tags
,
selectedTags
:
t
ags
};
case
ActionType
.
setSelectedRuns
:
const
setSelectedRunsTags
=
groupTags
(
action
.
payload
,
state
.
initTags
);
}
case
ActionType
.
setSelectedRuns
:
{
const
selectedRuns
=
action
.
payload
;
const
globalRuns
=
selectedRuns
.
map
(
run
=>
run
.
label
);
const
tags
=
groupTags
(
selectedRuns
,
state
.
initTags
);
return
{
...
state
,
globalRuns
:
action
.
payload
.
map
(
run
=>
run
.
label
)
,
selectedRuns
:
action
.
payload
,
tags
:
setSelectedRunsTags
,
selectedTags
:
setSelectedRunsT
ags
globalRuns
,
selectedRuns
,
tags
,
selectedTags
:
t
ags
};
case
ActionType
.
initTags
:
const
initTagsTags
=
groupTags
(
state
.
selectedRuns
,
action
.
payload
);
}
case
ActionType
.
initTags
:
{
const
initTags
=
action
.
payload
;
const
tags
=
groupTags
(
state
.
selectedRuns
,
initTags
);
return
{
...
state
,
initTags
:
action
.
payload
,
tags
:
initTagsTags
,
selectedTags
:
initTagsT
ags
initTags
,
tags
,
selectedTags
:
t
ags
};
case
ActionType
.
setTags
:
}
case
ActionType
.
setTags
:
{
const
tags
=
action
.
payload
;
return
{
...
state
,
tags
:
action
.
payload
,
selectedTags
:
action
.
payload
tags
,
selectedTags
:
tags
};
case
ActionType
.
setSelectedTags
:
}
case
ActionType
.
setSelectedTags
:
{
const
selectedTags
=
action
.
payload
;
return
{
...
state
,
selectedTags
:
action
.
payload
selectedTags
};
}
default
:
throw
new
Error
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录