Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
mindinsight
提交
41034372
M
mindinsight
项目概览
MindSpore
/
mindinsight
通知
8
Star
4
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindinsight
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
41034372
编写于
4月 20, 2020
作者:
M
mindspore-ci-bot
提交者:
Gitee
4月 20, 2020
浏览文件
操作
浏览文件
下载
差异文件
!45 UI support histogram visualization(2nd commit)
Merge pull request !45 from 潘慧/master_ph
上级
1f2f8584
cfe41195
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
309 addition
and
521 deletion
+309
-521
mindinsight/ui/src/components/header.vue
mindinsight/ui/src/components/header.vue
+1
-0
mindinsight/ui/src/locales/zh-cn.json
mindinsight/ui/src/locales/zh-cn.json
+16
-2
mindinsight/ui/src/router.js
mindinsight/ui/src/router.js
+4
-0
mindinsight/ui/src/services/request-service.js
mindinsight/ui/src/services/request-service.js
+7
-0
mindinsight/ui/src/views/train-manage/scalar-compare.vue
mindinsight/ui/src/views/train-manage/scalar-compare.vue
+47
-3
mindinsight/ui/src/views/train-manage/scalar.vue
mindinsight/ui/src/views/train-manage/scalar.vue
+234
-516
未找到文件。
mindinsight/ui/src/components/header.vue
浏览文件 @
41034372
...
@@ -38,6 +38,7 @@ limitations under the License.
...
@@ -38,6 +38,7 @@ limitations under the License.
<div
class=
"cl-header-right"
<div
class=
"cl-header-right"
v-if=
"this.$route.path.indexOf('/scalar') > 0
v-if=
"this.$route.path.indexOf('/scalar') > 0
|| this.$route.path.indexOf('/image') > 0
|| this.$route.path.indexOf('/image') > 0
|| this.$route.path.indexOf('/histogram') > 0
|| this.$route.path.indexOf('/training-dashboard') > 0"
>
|| this.$route.path.indexOf('/training-dashboard') > 0"
>
<!-- automatic refresh switch -->
<!-- automatic refresh switch -->
<el-switch
v-model=
"isTimeReload"
<el-switch
v-model=
"isTimeReload"
...
...
mindinsight/ui/src/locales/zh-cn.json
浏览文件 @
41034372
...
@@ -7,7 +7,8 @@
...
@@ -7,7 +7,8 @@
"reset"
:
"重置"
,
"reset"
:
"重置"
,
"tagFilterPlaceHolder"
:
"请输入需要的标签(支持正则表达式)"
,
"tagFilterPlaceHolder"
:
"请输入需要的标签(支持正则表达式)"
,
"dataError"
:
"获取到的数据异常"
,
"dataError"
:
"获取到的数据异常"
,
"regIllegal"
:
"请输入正确的检索条件"
"regIllegal"
:
"请输入正确的检索条件"
,
"stayTuned"
:
"敬请期待"
},
},
"symbols"
:
{
"symbols"
:
{
"leftbracket"
:
"("
,
"leftbracket"
:
"("
,
...
@@ -99,6 +100,18 @@
...
@@ -99,6 +100,18 @@
"setBright"
:
"亮度调整"
,
"setBright"
:
"亮度调整"
,
"setContrast"
:
"对比度调整"
"setContrast"
:
"对比度调整"
},
},
"histogram"
:
{
"titleText"
:
"参数分布图"
,
"xAxisTitle"
:
"水平轴"
,
"viewType"
:
"直方图模式"
,
"centerValue"
:
"中心值"
,
"step"
:
"步骤"
,
"relativeTime"
:
"相对时间"
,
"absoluteTime"
:
"绝对时间"
,
"overlay"
:
"覆盖"
,
"offset"
:
"偏移"
,
"fullScreen"
:
"切换全屏"
},
"dataMap"
:
{
"dataMap"
:
{
"titleText"
:
"数据图可视"
"titleText"
:
"数据图可视"
},
},
...
@@ -146,11 +159,12 @@
...
@@ -146,11 +159,12 @@
"50545002"
:
"请求API的HTTP方法错误"
,
"50545002"
:
"请求API的HTTP方法错误"
,
"50545005"
:
"训练作业不存在"
,
"50545005"
:
"训练作业不存在"
,
"50545007"
:
"Summary数据正在被加载,请等待Summary数据加载结束"
,
"50545007"
:
"Summary数据正在被加载,请等待Summary数据加载结束"
,
"50545009"
:
"查询的节点不在图中"
,
"50545009"
:
"查询的节点不在图中
,请刷新
"
,
"5054500A"
:
"训练作业ID进行URL解码失败"
,
"5054500A"
:
"训练作业ID进行URL解码失败"
,
"5054500C"
:
"计算图不存在,请刷新"
,
"5054500C"
:
"计算图不存在,请刷新"
,
"5054500D"
:
"图片数据不存在,请刷新"
,
"5054500D"
:
"图片数据不存在,请刷新"
,
"5054500E"
:
"标量数据不存在,请刷新"
,
"5054500E"
:
"标量数据不存在,请刷新"
,
"5054500F"
:
"参数分布图数据不存在,请刷新"
,
"50542082"
:
"模型名称缺失"
,
"50542082"
:
"模型名称缺失"
,
"50542085"
:
"模型名称不合法"
,
"50542085"
:
"模型名称不合法"
,
...
...
mindinsight/ui/src/router.js
浏览文件 @
41034372
...
@@ -46,6 +46,10 @@ export default new Router({
...
@@ -46,6 +46,10 @@ export default new Router({
path
:
'
/train-manage/image
'
,
path
:
'
/train-manage/image
'
,
component
:
()
=>
import
(
'
./views/train-manage/image.vue
'
),
component
:
()
=>
import
(
'
./views/train-manage/image.vue
'
),
},
},
{
path
:
'
/train-manage/histogram
'
,
component
:
()
=>
import
(
'
./views/train-manage/histogram.vue
'
),
},
{
{
path
:
'
/train-manage/graph
'
,
path
:
'
/train-manage/graph
'
,
component
:
()
=>
import
(
'
./views/train-manage/graph.vue
'
),
component
:
()
=>
import
(
'
./views/train-manage/graph.vue
'
),
...
...
mindinsight/ui/src/services/request-service.js
浏览文件 @
41034372
...
@@ -114,4 +114,11 @@ export default {
...
@@ -114,4 +114,11 @@ export default {
params
:
params
,
params
:
params
,
});
});
},
},
getHistogramData
(
params
)
{
return
axios
({
method
:
'
get
'
,
url
:
'
/v1/mindinsight/datavisual/histograms
'
,
params
:
params
,
});
},
};
};
mindinsight/ui/src/views/train-manage/scalar-compare.vue
浏览文件 @
41034372
...
@@ -809,16 +809,60 @@ export default {
...
@@ -809,16 +809,60 @@ export default {
_this
.
$t
(
'
scalar.absoluteTime
'
)
+
_this
.
$t
(
'
scalar.absoluteTime
'
)
+
'
</td></tr>
'
;
'
</td></tr>
'
;
let
strBody
=
''
;
let
strBody
=
''
;
const
runArr
=
[];
const
detialArr
=
[];
let
curStep
=
null
;
let
dataCount
=
0
;
let
dataCount
=
0
;
params
.
forEach
((
parma
)
=>
{
params
.
forEach
((
parma
)
=>
{
if
(
parma
.
componentIndex
%
2
===
0
)
{
if
(
parma
.
componentIndex
%
2
===
0
)
{
let
addFlag
=
true
;
const
curIndex
=
parseInt
(
parma
.
componentIndex
/
2
);
const
curIndex
=
parseInt
(
parma
.
componentIndex
/
2
);
let
curSerieOriData
;
const
curSerieOriData
=
_this
.
charData
[
curIndex
]
?
_this
.
charData
[
curIndex
].
valueData
:
null
;
if
(
_this
.
charData
[
curIndex
])
{
if
(
!
curSerieOriData
)
{
curSerieOriData
=
_this
.
charData
[
curIndex
].
valueData
;
return
;
}
if
(
curStep
===
null
)
{
curStep
=
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
0
];
}
else
{
if
(
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
0
]
===
curStep
)
{
const
sameRunIndex
=
[];
runArr
.
forEach
((
runName
,
index
)
=>
{
if
(
parma
.
seriesName
===
runName
)
{
sameRunIndex
.
push
(
index
);
}
});
if
(
sameRunIndex
.
length
)
{
sameRunIndex
.
forEach
((
sameIndex
)
=>
{
if
(
detialArr
[
sameIndex
]
&&
detialArr
[
sameIndex
].
value
===
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
1
]
&&
detialArr
[
sameIndex
].
wallTime
===
curSerieOriData
.
absData
[
parma
.
dataIndex
][
0
]
)
{
addFlag
=
false
;
}
});
}
}
else
{
addFlag
=
false
;
}
}
if
(
addFlag
)
{
dataCount
++
;
dataCount
++
;
runArr
.
push
(
parma
.
seriesName
);
detialArr
.
push
({
value
:
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
1
],
step
:
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
0
],
wallTime
:
curSerieOriData
.
absData
[
parma
.
dataIndex
][
0
],
dataIndex
:
parma
.
dataIndex
,
});
strBody
+=
strBody
+=
`<td style="border-radius:50%;width:15px;height:15px;vertical-align: middle;`
+
`<td style="border-radius:50%;width:15px;height:15px;vertical-align: middle;`
+
`margin-right: 5px;background-color:`
+
`margin-right: 5px;background-color:`
+
...
...
mindinsight/ui/src/views/train-manage/scalar.vue
浏览文件 @
41034372
...
@@ -34,72 +34,10 @@ limitations under the License.
...
@@ -34,72 +34,10 @@ limitations under the License.
<!--operation area -->
<!--operation area -->
<div
class=
"cl-eval-operate-content"
<div
class=
"cl-eval-operate-content"
v-show=
"!compare"
>
v-show=
"!compare"
>
<!-- tag select -->
<multiselectGroupComponents
ref=
"multiselectGroupComponents"
<div
class=
"tag-select-content"
>
:checkListArr=
"tagOperateList"
<div
class=
"title mr24"
>
{{
$t
(
"
scalar.tagSelectTitle
"
)
}}
</div>
@
selectedChange=
"tagSelectedChanged"
<!-- Select All -->
></multiselectGroupComponents>
<div
class=
"select-all mr24"
@
click=
"tagSelectAll"
>
<span
class=
"multiCheckBox-border multi-check-border"
:class=
"tagOperateSelectAll ? 'checkbox-checked' : 'checkbox-unchecked'"
></span>
<span
class=
"label-item select-disable"
>
{{
$t
(
'
scalar.selectAll
'
)
}}
</span>
</div>
<!-- tag search -->
<el-input
class=
"w261"
v-model=
"tagInput"
@
input=
"filterByTagName"
v-if=
"headTagFullScreen"
:placeholder=
"$t('public.tagFilterPlaceHolder')"
></el-input>
<!-- tag list -->
<div
class=
"select-item-content"
v-if=
"!headTagFullScreen"
ref=
"tagSelectItemContent"
>
<div
class=
"select-item"
v-for=
"(tagItem, tagIndex) in tagOperateList"
:key=
"tagIndex"
@
click=
"tagItemClick(tagItem)"
v-show=
"tagItem.show"
>
<span
class=
"multiCheckBox-border multi-check-border"
:class=
"tagItem.checked ? 'checkbox-checked' : 'checkbox-unchecked'"
></span>
<span
class=
"label-item"
>
<el-tooltip
effect=
"dark"
popper-class=
"tooltip-show-content"
:content=
"tagItem.label"
placement=
"top"
>
<span
class=
"select-disable"
>
{{
tagItem
.
label
}}
</span>
</el-tooltip>
</span>
</div>
</div>
<!-- tag Expand/Collapse -->
<div
class=
"run-select-content-open"
@
click=
"toggleHeadTagFullScreen"
v-if=
"tagOverRowFlag || tagInput"
v-show=
"!headTagFullScreen"
>
{{
$t
(
"
scalar.open
"
)
}}
</div>
<div
class=
"run-select-content-open"
@
click=
"toggleHeadTagFullScreen"
v-if=
"tagOverRowFlag || headTagFullScreen"
v-show=
"headTagFullScreen"
>
{{
$t
(
"
scalar.close
"
)
}}
</div>
</div>
<div
class=
"run-select-content-all"
v-if=
"headTagFullScreen"
>
<div
class=
"select-item"
v-for=
"(tagItem, tagIndex) in tagOperateList"
:key=
"tagIndex"
@
click=
"tagItemClick(tagItem)"
v-show=
"tagItem.show"
>
<span
class=
"multiCheckBox-border multi-check-border"
:class=
"tagItem.checked ? 'checkbox-checked' : 'checkbox-unchecked'"
></span>
<span
class=
"label-item"
>
<el-tooltip
effect=
"dark"
popper-class=
"tooltip-show-content"
:content=
"tagItem.label"
placement=
"top"
>
<span
class=
"select-disable"
>
{{
tagItem
.
label
}}
</span>
</el-tooltip>
</span>
</div>
</div>
</div>
</div>
<!-- Slider -->
<!-- Slider -->
<div
class=
"cl-eval-slider-operate-content"
<div
class=
"cl-eval-slider-operate-content"
...
@@ -119,7 +57,13 @@ limitations under the License.
...
@@ -119,7 +57,13 @@ limitations under the License.
:step=
"0.01"
:step=
"0.01"
:max=
"0.99"
:max=
"0.99"
@
input=
"updataInputValue"
@
input=
"updataInputValue"
show-input
></el-slider>
></el-slider>
<el-input
v-model=
"smoothValueNumber"
class=
"w60"
@
input=
"smoothValueChange"
@
blur=
"smoothValueBlur"
></el-input>
</div>
</div>
<!-- Content display -->
<!-- Content display -->
<div
class=
"cl-eval-show-data-content"
<div
class=
"cl-eval-show-data-content"
...
@@ -170,7 +114,7 @@ limitations under the License.
...
@@ -170,7 +114,7 @@ limitations under the License.
:current-page=
"pageIndex + 1"
:current-page=
"pageIndex + 1"
:page-size=
"pageNum"
:page-size=
"pageNum"
layout=
"total, prev, pager, next, jumper"
layout=
"total, prev, pager, next, jumper"
:total=
"curFilter
TagIndexArr
.length"
>
:total=
"curFilter
Samples
.length"
>
</el-pagination>
</el-pagination>
</div>
</div>
...
@@ -190,30 +134,27 @@ import echarts from 'echarts';
...
@@ -190,30 +134,27 @@ import echarts from 'echarts';
import
RequestService
from
'
../../services/request-service
'
;
import
RequestService
from
'
../../services/request-service
'
;
import
CommonProperty
from
'
../../common/common-property
'
;
import
CommonProperty
from
'
../../common/common-property
'
;
import
ScalarCompare
from
'
./scalar-compare
'
;
import
ScalarCompare
from
'
./scalar-compare
'
;
import
multiselectGroupComponents
from
'
../../components/multiselectGroup.vue
'
;
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
trainingJobId
:
''
,
firstNum
:
0
,
// First time
firstNum
:
0
,
// First time
isActive
:
0
,
// Horizontal axis selected value
isActive
:
0
,
// Horizontal axis selected value
initOver
:
false
,
// Indicates whether the initialization is complete.
initOver
:
false
,
// Indicates whether the initialization is complete.
autoUpdateTimer
:
null
,
// Automatic refresh timer
autoUpdateTimer
:
null
,
// Automatic refresh timer
tagInput
:
''
,
// tag input value
valiableTagInput
:
''
,
// Last valid input for tag retrieval.
tagInputTimer
:
''
,
// tag Filtering Timing
charResizeTimer
:
null
,
// Delay after the window size is changed
charResizeTimer
:
null
,
// Delay after the window size is changed
multiSelectedTagNames
:
{},
// selected tag name
multiSelectedTagNames
:
{},
// selected tag name
curFilterTagIndexArr
:
[],
// Chart subscript
curFilterSamples
:
[],
// list of chart that meet the current filter criteria
headTagFullScreen
:
false
,
// Indicates whether tag is expanded
tagOperateSelectAll
:
true
,
// tag selectAll
tagOperateList
:
[],
// Array selected by tag
tagOperateList
:
[],
// Array selected by tag
tagPropsList
:
[],
// tag props
tagPropsList
:
[],
// tag props
propsList
:
[],
// dataList props
propsList
:
[],
// dataList props
smoothValue
:
0
,
// Initial smoothness of the slider
smoothValue
:
0
,
// Initial smoothness of the slider
smoothValueNumber
:
0
,
smoothSliderValueTimer
:
null
,
// Smoothness slider timer
smoothSliderValueTimer
:
null
,
// Smoothness slider timer
DomIdIndex
:
0
,
// DomId num
DomIdIndex
:
0
,
// DomId num
originDataArr
:
[],
// Original data
originDataArr
:
[],
// Original data
oriDataDictionaries
:
{},
// Dictionary that contains all the current tags
curPageArr
:
[],
// data of the current page
curPageArr
:
[],
// data of the current page
pageIndex
:
0
,
// Current page number
pageIndex
:
0
,
// Current page number
pageNum
:
6
,
// Number of records per page
pageNum
:
6
,
// Number of records per page
...
@@ -225,8 +166,7 @@ export default {
...
@@ -225,8 +166,7 @@ export default {
compare
:
false
,
// Comparison Page
compare
:
false
,
// Comparison Page
scalarCompare
:
this
.
$t
(
'
scalar
'
)[
'
comparison
'
],
scalarCompare
:
this
.
$t
(
'
scalar
'
)[
'
comparison
'
],
abort
:
false
,
// charts that have not been drawn.
abort
:
false
,
// charts that have not been drawn.
tagOverRowFlag
:
false
,
// the value of tag is greater than one line
trainingJobId
:
this
.
$route
.
query
.
train_id
,
// ID of the current training job
perSelectItemMarginBottom
:
1
,
// bottom of each selection box
};
};
},
},
computed
:
{
computed
:
{
...
@@ -296,12 +236,6 @@ export default {
...
@@ -296,12 +236,6 @@ export default {
this
.
smoothSliderValueTimer
=
null
;
this
.
smoothSliderValueTimer
=
null
;
}
}
// Delete the response delay of removing the tag input box
if
(
this
.
tagInputTimer
)
{
clearTimeout
(
this
.
tagInputTimer
);
this
.
tagInputTimer
=
null
;
}
// Remove Chart Calculation Delay
// Remove Chart Calculation Delay
if
(
this
.
charResizeTimer
)
{
if
(
this
.
charResizeTimer
)
{
clearTimeout
(
this
.
charResizeTimer
);
clearTimeout
(
this
.
charResizeTimer
);
...
@@ -315,16 +249,8 @@ export default {
...
@@ -315,16 +249,8 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
this
.
$nextTick
(()
=>
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
train_id
)
{
this
.
trainingJobId
=
this
.
$route
.
query
.
train_id
;
}
else
{
this
.
trainingJobId
=
''
;
this
.
$message
.
error
(
this
.
$t
(
'
trainingDashboard.invalidId
'
));
return
;
}
// Adding a Listener
// Adding a Listener
this
.
getCharMainContentwidth
(
);
window
.
addEventListener
(
'
resize
'
,
this
.
resizeCallback
,
false
);
// Initializing Data
// Initializing Data
this
.
getScalarsList
();
this
.
getScalarsList
();
...
@@ -335,7 +261,6 @@ export default {
...
@@ -335,7 +261,6 @@ export default {
if
(
this
.
isTimeReload
)
{
if
(
this
.
isTimeReload
)
{
this
.
autoUpdateSamples
();
this
.
autoUpdateSamples
();
}
}
});
},
},
methods
:
{
methods
:
{
/**
/**
...
@@ -364,15 +289,15 @@ export default {
...
@@ -364,15 +289,15 @@ export default {
const
data
=
res
.
data
.
train_jobs
[
0
];
const
data
=
res
.
data
.
train_jobs
[
0
];
const
runNmeColor
=
CommonProperty
.
commonColorArr
[
0
];
const
runNmeColor
=
CommonProperty
.
commonColorArr
[
0
];
data
.
tags
.
forEach
((
tagObj
)
=>
{
data
.
tags
.
forEach
((
tagObj
)
=>
{
if
(
!
this
.
oriDataDictionaries
[
tagObj
])
{
this
.
oriDataDictionaries
[
tagObj
]
=
true
;
// Add the tag list
// Add the tag list
this
.
multiSelectedTagNames
[
tagObj
]
=
true
;
tempTagList
.
push
({
tempTagList
.
push
({
label
:
tagObj
,
label
:
tagObj
,
checked
:
true
,
checked
:
true
,
show
:
true
,
show
:
true
,
});
});
const
sampleIndex
=
dataList
.
length
;
const
sampleIndex
=
dataList
.
length
;
this
.
curFilterTagIndexArr
.
push
(
sampleIndex
);
// Adding Chart Data
// Adding Chart Data
dataList
.
push
({
dataList
.
push
({
...
@@ -400,6 +325,7 @@ export default {
...
@@ -400,6 +325,7 @@ export default {
colors
:
''
,
colors
:
''
,
});
});
this
.
DomIdIndex
++
;
this
.
DomIdIndex
++
;
}
});
});
this
.
tagOperateList
=
tempTagList
;
this
.
tagOperateList
=
tempTagList
;
this
.
tagPropsList
=
JSON
.
parse
(
JSON
.
stringify
(
tempTagList
));
this
.
tagPropsList
=
JSON
.
parse
(
JSON
.
stringify
(
tempTagList
));
...
@@ -411,16 +337,12 @@ export default {
...
@@ -411,16 +337,12 @@ export default {
this
.
initOver
=
true
;
this
.
initOver
=
true
;
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
resizeCallback
();
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
});
if
(
dataList
.
length
)
{
// Obtains data on the current page
// Obtains data on the current page
this
.
getCurPageDataArr
();
this
.
updateTagInPage
();
this
.
resizeCallback
();
// Refresh the chart data on the current page
});
this
.
freshCurPageData
();
}
},
this
.
requestErrorCallback
)
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
.
catch
((
e
)
=>
{
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
...
@@ -429,15 +351,13 @@ export default {
...
@@ -429,15 +351,13 @@ export default {
/**
/**
* Obtains data on a specified page
* Obtains data on a specified page
* @param {Boolen} fresh // Refresh Data
* @param {Boolen} newPageData // new chart on the current page
* @param {Boolen} noPageIndexChange // The page number does not change
* @param {Boolen} noPageIndexChange // The page number does not change
*/
*/
getCurPageDataArr
(
fresh
,
newPageData
,
noPageIndexChange
)
{
getCurPageDataArr
(
noPageIndexChange
)
{
if
(
!
noPageIndexChange
)
{
if
(
!
noPageIndexChange
)
{
this
.
curPageArr
.
forEach
((
sample
Object
)
=>
{
this
.
curPageArr
.
forEach
((
sample
Item
)
=>
{
sample
Object
.
show
=
false
;
sample
Item
.
show
=
false
;
});
});
}
}
const
startIndex
=
this
.
pageIndex
*
this
.
pageNum
;
const
startIndex
=
this
.
pageIndex
*
this
.
pageNum
;
...
@@ -445,66 +365,50 @@ export default {
...
@@ -445,66 +365,50 @@ export default {
const
curPageArr
=
[];
const
curPageArr
=
[];
for
(
let
i
=
startIndex
;
i
<
endIndex
;
i
++
)
{
for
(
let
i
=
startIndex
;
i
<
endIndex
;
i
++
)
{
const
sampleI
ndex
=
this
.
curFilterTagIndexArr
[
i
];
const
sampleI
tem
=
this
.
curFilterSamples
[
i
];
if
(
sampleI
ndex
!==
undefined
&&
this
.
originDataArr
[
sampleIndex
]
)
{
if
(
sampleI
tem
)
{
this
.
originDataArr
[
sampleIndex
].
updateFlag
=
true
;
sampleItem
.
updateFlag
=
true
;
this
.
originDataArr
[
sampleIndex
].
show
=
true
;
sampleItem
.
show
=
true
;
curPageArr
.
push
(
this
.
originDataArr
[
sampleIndex
]
);
curPageArr
.
push
(
sampleItem
);
}
}
}
}
this
.
curPageArr
=
curPageArr
;
if
(
fresh
)
{
this
.
curPageArr
=
curPageArr
;
this
.
$nextTick
(()
=>
{
this
.
updateCurPageSamples
();
this
.
freshCurPageData
(
newPageData
);
});
}
},
},
/**
/**
* Updates data in a specified tag
* Load the data on the current page
* @param {Number} sampleIndex Chart subscript
*/
*/
updateCurPageSamples
()
{
updateSampleData
(
sampleIndex
)
{
this
.
curPageArr
.
forEach
((
sampleObject
)
=>
{
const
sampleObject
=
this
.
originDataArr
[
sampleIndex
]
;
const
sampleIndex
=
sampleObject
.
sampleIndex
;
if
(
!
sampleObject
)
{
if
(
!
sampleObject
)
{
return
;
return
;
}
}
sampleObject
.
updateFlag
=
true
;
sampleObject
.
updateFlag
=
true
;
const
promiseArr
=
[];
const
params
=
{
const
params
=
{
train_id
:
this
.
trainingJobId
,
train_id
:
this
.
trainingJobId
,
tag
:
sampleObject
.
tagName
,
tag
:
sampleObject
.
tagName
,
};
};
promiseArr
.
push
(
this
.
addPromise
(
params
));
RequestService
.
getScalarsSample
(
params
).
then
((
res
)
=>
{
Promise
.
all
(
promiseArr
.
map
(
function
(
promiseItem
)
{
return
promiseItem
.
catch
(
function
(
err
)
{
return
err
;
});
}))
.
then
((
res
)
=>
{
// error
// error
if
(
!
res
||
!
res
.
length
)
{
if
(
!
res
||
!
res
.
data
||
!
res
.
data
.
metadatas
)
{
return
;
if
(
sampleObject
.
charObj
)
{
}
let
scalarIndex
=
0
;
let
hasInvalidData
=
false
;
for
(
let
i
=
0
;
i
<
res
.
length
;
i
++
)
{
if
(
!
res
[
i
]
||
!
res
[
i
].
data
)
{
sampleObject
.
charObj
.
clear
();
sampleObject
.
charObj
.
clear
();
}
return
;
return
;
}
}
let
hasInvalidData
=
false
;
if
(
sampleObject
.
charObj
)
{
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
showLoading
();
sampleObject
.
charObj
.
showLoading
();
}
}
const
resData
=
res
[
i
]
.
data
;
const
resData
=
res
.
data
;
const
tempObject
=
{
const
tempObject
=
{
valueData
:
{
valueData
:
{
...
@@ -549,16 +453,17 @@ export default {
...
@@ -549,16 +453,17 @@ export default {
]);
]);
});
});
sampleObject
.
charData
.
oriData
[
scalarIndex
]
=
tempObject
;
sampleObject
.
charData
.
oriData
[
0
]
=
tempObject
;
scalarIndex
++
;
}
if
(
hasInvalidData
)
{
if
(
hasInvalidData
)
{
this
.
$set
(
this
.
originDataArr
[
sampleIndex
]
,
'
invalidData
'
,
true
);
this
.
$set
(
sampleObject
,
'
invalidData
'
,
true
);
}
}
sampleObject
.
charData
.
charOption
=
this
.
formateCharOption
(
sampleObject
.
charData
.
charOption
=
this
.
formateCharOption
(
sampleIndex
,
sampleIndex
,
);
);
this
.
$forceUpdate
();
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
if
(
sampleObject
.
charObj
)
{
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
hideLoading
();
sampleObject
.
charObj
.
hideLoading
();
...
@@ -571,33 +476,15 @@ export default {
...
@@ -571,33 +476,15 @@ export default {
this
.
abort
=
true
;
this
.
abort
=
true
;
}
}
});
});
})
}).
catch
((
e
)
=>
{
.
catch
((
error
)
=>
{});
if
(
sampleObject
.
charObj
)
{
},
sampleObject
.
charObj
.
clear
();
/**
* add promise
* @param {Object}
* @return {Object} response || error
*/
addPromise
(
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
RequestService
.
getScalarsSample
(
params
)
.
then
((
res
)
=>
{
if
(
res
)
{
res
.
params
=
params
;
resolve
(
res
);
}
})
.
catch
((
error
)
=>
{
if
(
error
)
{
reject
(
error
);
}
}
});
});
});
});
},
},
/**
/**
* Formatting Chart Data
* Formatting Chart Data
* @param {Number} sampleIndex Chart subscript
* @param {Number} sampleIndex Chart subscript
...
@@ -1014,130 +901,25 @@ export default {
...
@@ -1014,130 +901,25 @@ export default {
},
0
);
},
0
);
},
},
/**
* tag select All
*/
tagSelectAll
()
{
this
.
tagOperateSelectAll
=
!
this
.
tagOperateSelectAll
;
this
.
multiSelectedTagNames
=
{};
// Sets the tag option status.
if
(
this
.
tagOperateSelectAll
)
{
this
.
tagOperateList
.
forEach
((
tagItem
)
=>
{
if
(
tagItem
.
show
)
{
tagItem
.
checked
=
true
;
this
.
multiSelectedTagNames
[
tagItem
.
label
]
=
true
;
}
});
}
else
{
this
.
tagOperateList
.
forEach
((
tagItem
)
=>
{
if
(
tagItem
.
show
)
{
tagItem
.
checked
=
false
;
}
});
}
// Update Chart
this
.
updateTagInPage
();
},
/**
* Tag filtering
*/
filterByTagName
()
{
if
(
this
.
tagInputTimer
)
{
clearTimeout
(
this
.
tagInputTimer
);
this
.
tagInputTimer
=
null
;
}
this
.
tagInputTimer
=
setTimeout
(()
=>
{
let
reg
;
try
{
reg
=
new
RegExp
(
this
.
tagInput
);
}
catch
(
e
)
{
this
.
$message
.
warning
(
this
.
$t
(
'
public.regIllegal
'
));
return
;
}
this
.
valiableTagInput
=
this
.
tagInput
;
this
.
multiSelectedTagNames
=
{};
let
tagSelectAll
=
true
;
// Tag filter
this
.
tagOperateList
.
forEach
((
tagItem
)
=>
{
if
(
reg
.
test
(
tagItem
.
label
))
{
tagItem
.
show
=
true
;
if
(
tagItem
.
checked
)
{
this
.
multiSelectedTagNames
[
tagItem
.
label
]
=
true
;
}
else
{
tagSelectAll
=
false
;
}
}
else
{
tagItem
.
show
=
false
;
}
});
// Refresh the Select All button
this
.
tagOperateSelectAll
=
tagSelectAll
;
// Update Chart
this
.
updateTagInPage
();
},
500
);
},
/**
* tag click
* @param {Object} tagItem Current tag
*/
tagItemClick
(
tagItem
)
{
if
(
!
tagItem
)
{
return
;
}
tagItem
.
checked
=
!
tagItem
.
checked
;
// refreshes the tag selection count
if
(
tagItem
.
checked
)
{
this
.
multiSelectedTagNames
[
tagItem
.
label
]
=
true
;
}
else
{
if
(
this
.
multiSelectedTagNames
[
tagItem
.
label
])
{
delete
this
.
multiSelectedTagNames
[
tagItem
.
label
];
}
}
// Refresh the Select All button
let
tagSellectAll
=
true
;
this
.
tagOperateList
.
some
((
curTagItem
)
=>
{
if
(
curTagItem
.
show
&&
!
curTagItem
.
checked
)
{
tagSellectAll
=
false
;
return
true
;
}
});
this
.
tagOperateSelectAll
=
tagSellectAll
;
// Update Chart
this
.
updateTagInPage
();
},
/**
/**
* Update Chart by tag
* Update Chart by tag
* @param {Boolean} noPageDataNumChange No new data is added or deleted
*/
*/
updateTagInPage
()
{
updateTagInPage
(
noPageDataNumChange
)
{
// Reset to the first page
const
curFilterSamples
=
[];
this
.
pageIndex
=
0
;
const
curFilterTagIndexArr
=
[];
if
(
JSON
.
stringify
(
this
.
multiSelectedTagNames
)
!==
'
{}
'
)
{
// Obtains the chart subscript
// Obtains the chart subscript
this
.
originDataArr
.
forEach
((
sampleObject
)
=>
{
this
.
originDataArr
.
forEach
((
sampleItem
)
=>
{
if
(
this
.
multiSelectedTagNames
[
sampleObject
.
tagName
])
{
if
(
this
.
multiSelectedTagNames
[
sampleItem
.
tagName
])
{
curFilterTagIndexArr
.
push
(
sampleObject
.
sampleIndex
);
curFilterSamples
.
push
(
sampleItem
);
}
}
});
});
}
this
.
curFilter
TagIndexArr
=
curFilterTagIndexArr
;
this
.
curFilter
Samples
=
curFilterSamples
;
// Obtains data on the current page
// Obtains data on the current page
this
.
getCurPageDataArr
(
true
,
tru
e
);
this
.
getCurPageDataArr
(
noPageDataNumChang
e
);
},
},
/**
/**
...
@@ -1218,39 +1000,31 @@ export default {
...
@@ -1218,39 +1000,31 @@ export default {
this
.
pageIndex
=
pageIndex
-
1
;
this
.
pageIndex
=
pageIndex
-
1
;
// Load the data on the current page
// Load the data on the current page
this
.
getCurPageDataArr
(
true
,
true
);
this
.
getCurPageDataArr
();
},
},
/**
/**
*
Load the data on the current page
*
the selected label is changed
* @param {
Boolen} newPageData new chart data exists on the current page
* @param {
Object} selectedItemDict Dictionary containing the selected tags
*/
*/
freshCurPageData
(
newPageData
)
{
tagSelectedChanged
(
selectedItemDict
)
{
this
.
curPageArr
.
forEach
((
sampleObject
)
=>
{
if
(
!
selectedItemDict
)
{
if
(
sampleObject
.
charObj
&&
!
newPageData
)
{
return
;
this
.
updateOrCreateChar
(
sampleObject
.
sampleIndex
);
}
else
{
this
.
updateSampleData
(
sampleObject
.
sampleIndex
);
}
}
});
this
.
multiSelectedTagNames
=
selectedItemDict
;
// Reset to the first page
this
.
pageIndex
=
0
;
this
.
updateTagInPage
();
},
},
/**
/**
*window resize
*window resize
*/
*/
resizeCallback
()
{
resizeCallback
()
{
if
(
!
this
.
compare
)
{
if
(
!
this
.
compare
)
{
// Expand/Collapse show
const
tagSelectItemContent
=
this
.
$refs
.
tagSelectItemContent
;
if
(
tagSelectItemContent
)
{
this
.
tagOverRowFlag
=
tagSelectItemContent
.
clientHeight
<
tagSelectItemContent
.
scrollHeight
-
this
.
perSelectItemMarginBottom
;
}
if
(
this
.
charResizeTimer
)
{
if
(
this
.
charResizeTimer
)
{
clearTimeout
(
this
.
charResizeTimer
);
clearTimeout
(
this
.
charResizeTimer
);
this
.
charResizeTimer
=
null
;
this
.
charResizeTimer
=
null
;
...
@@ -1266,26 +1040,17 @@ export default {
...
@@ -1266,26 +1040,17 @@ export default {
}
}
},
},
/**
* Add Listening
*/
getCharMainContentwidth
()
{
window
.
addEventListener
(
'
resize
'
,
this
.
resizeCallback
,
false
);
},
/**
/**
* Clear data
* Clear data
*/
*/
clearAllData
()
{
clearAllData
()
{
this
.
multiSelectedTagNames
=
{};
this
.
multiSelectedTagNames
=
{};
this
.
curFilterTagIndexArr
=
[];
this
.
curFilterSamples
=
[];
this
.
tagOperateSelectAll
=
true
;
this
.
tagOperateList
=
[];
this
.
tagOperateList
=
[];
this
.
pageIndex
=
0
;
this
.
pageIndex
=
0
;
this
.
originDataArr
=
[];
this
.
originDataArr
=
[];
this
.
oriDataDictionaries
=
{};
this
.
curPageArr
=
[];
this
.
curPageArr
=
[];
this
.
tagPropsList
=
[];
this
.
tagPropsList
=
[];
this
.
propsList
=
[];
this
.
propsList
=
[];
...
@@ -1316,18 +1081,6 @@ export default {
...
@@ -1316,18 +1081,6 @@ export default {
}
}
},
},
/**
*
* Expand or collapse the tag list
*/
toggleHeadTagFullScreen
()
{
this
.
headTagFullScreen
=
!
this
.
headTagFullScreen
;
if
(
!
this
.
headTagFullScreen
)
{
this
.
resizeCallback
();
}
},
/**
/**
* Delete the data that does not exist
* Delete the data that does not exist
* @param {Object} oriData Original run and tag data
* @param {Object} oriData Original run and tag data
...
@@ -1337,21 +1090,17 @@ export default {
...
@@ -1337,21 +1090,17 @@ export default {
if
(
!
oriData
)
{
if
(
!
oriData
)
{
return
false
;
return
false
;
}
}
const
tagList
=
[];
// tag list
const
newTagDictionaries
=
{};
// Index of the tag in the new data
let
dataRemoveFlag
=
false
;
let
dataRemoveFlag
=
false
;
// Obtains the current tag and run list
oriData
.
tags
.
forEach
((
tagName
)
=>
{
oriData
.
tags
.
forEach
((
tagObj
)
=>
{
newTagDictionaries
[
tagName
]
=
true
;
let
sameTagIndex
=
tagList
.
indexOf
(
tagObj
);
if
(
sameTagIndex
===
-
1
)
{
sameTagIndex
=
tagList
.
length
;
tagList
.
push
(
tagObj
);
}
});
});
// Delete the tag that does not exist
// Delete the tag that does not exist
const
oldTagListLength
=
this
.
tagOperateList
.
length
;
const
oldTagListLength
=
this
.
tagOperateList
.
length
;
for
(
let
i
=
oldTagListLength
-
1
;
i
>=
0
;
i
--
)
{
for
(
let
i
=
oldTagListLength
-
1
;
i
>=
0
;
i
--
)
{
if
(
tagList
.
indexOf
(
this
.
tagOperateList
[
i
].
label
)
===
-
1
)
{
if
(
!
newTagDictionaries
[
this
.
tagOperateList
[
i
].
label
]
)
{
dataRemoveFlag
=
true
;
dataRemoveFlag
=
true
;
delete
this
.
oriDataDictionaries
[
this
.
tagOperateList
[
i
].
label
];
this
.
tagOperateList
.
splice
(
i
,
1
);
this
.
tagOperateList
.
splice
(
i
,
1
);
}
}
}
}
...
@@ -1361,17 +1110,9 @@ export default {
...
@@ -1361,17 +1110,9 @@ export default {
for
(
let
i
=
oldSampleLength
-
1
;
i
>=
0
;
i
--
)
{
for
(
let
i
=
oldSampleLength
-
1
;
i
>=
0
;
i
--
)
{
const
oldSample
=
this
.
originDataArr
[
i
];
const
oldSample
=
this
.
originDataArr
[
i
];
if
(
!
newTagDictionaries
[
oldSample
.
tagName
])
{
const
sameTagIndex
=
tagList
.
indexOf
(
oldSample
.
tagName
);
if
(
sameTagIndex
===
-
1
)
{
this
.
originDataArr
.
splice
(
i
,
1
);
dataRemoveFlag
=
true
;
dataRemoveFlag
=
true
;
const
loopLength
=
this
.
originDataArr
.
length
;
this
.
originDataArr
.
splice
(
i
,
1
);
for
(
let
loopStart
=
i
;
loopStart
<
loopLength
;
loopStart
++
)
{
if
(
this
.
originDataArr
[
loopStart
])
{
this
.
originDataArr
[
loopStart
].
sampleIndex
=
loopStart
;
}
}
}
}
}
}
...
@@ -1388,17 +1129,10 @@ export default {
...
@@ -1388,17 +1129,10 @@ export default {
return
false
;
return
false
;
}
}
let
dataAddFlag
=
false
;
let
dataAddFlag
=
false
;
// oriData.forEach((runObj) => {
const
runColor
=
CommonProperty
.
commonColorArr
[
0
];
const
runColor
=
CommonProperty
.
commonColorArr
[
0
];
oriData
.
tags
.
forEach
((
tagObj
)
=>
{
oriData
.
tags
.
forEach
((
tagObj
)
=>
{
let
sameTagIndex
=
-
1
;
if
(
!
this
.
oriDataDictionaries
[
tagObj
])
{
this
.
tagOperateList
.
some
((
tagItem
,
tagIndex
)
=>
{
this
.
oriDataDictionaries
[
tagObj
]
=
true
;
if
(
tagItem
.
label
===
tagObj
)
{
sameTagIndex
=
tagIndex
;
return
true
;
}
});
if
(
sameTagIndex
===
-
1
)
{
this
.
tagOperateList
.
push
({
this
.
tagOperateList
.
push
({
label
:
tagObj
,
label
:
tagObj
,
checked
:
true
,
checked
:
true
,
...
@@ -1432,46 +1166,7 @@ export default {
...
@@ -1432,46 +1166,7 @@ export default {
},
},
/**
/**
* Update the run and tag selection status and select all status
* Update all data
* obtain the charts that meet the conditions
*
*/
updateRunAndTagSelectStateAndFilterResult
()
{
this
.
multiSelectedTagNames
=
{};
// Update the tag selection status and select all status
let
tagReg
;
try
{
tagReg
=
new
RegExp
(
this
.
tagInput
);
}
catch
(
e
)
{
tagReg
=
new
RegExp
(
this
.
valiableTagInput
);
}
let
tagSelectAll
=
true
;
this
.
tagOperateList
.
forEach
((
tagItem
)
=>
{
if
(
tagReg
.
test
(
tagItem
.
label
))
{
tagItem
.
show
=
true
;
if
(
tagItem
.
checked
)
{
this
.
multiSelectedTagNames
[
tagItem
.
label
]
=
true
;
}
else
{
tagSelectAll
=
false
;
}
}
else
{
tagItem
.
show
=
false
;
}
});
this
.
tagOperateSelectAll
=
tagSelectAll
;
// Update the charts that meet the filter criteria
this
.
curFilterTagIndexArr
=
[];
this
.
originDataArr
.
forEach
((
sampleObject
)
=>
{
if
(
this
.
multiSelectedTagNames
[
sampleObject
.
tagName
])
{
this
.
curFilterTagIndexArr
.
push
(
sampleObject
.
sampleIndex
);
}
});
},
/**
* Updating Sliding Block Data
* @param {Boolean} ignoreError whether ignore error tip
* @param {Boolean} ignoreError whether ignore error tip
*/
*/
...
@@ -1503,15 +1198,12 @@ export default {
...
@@ -1503,15 +1198,12 @@ export default {
const
tagAddFlag
=
this
.
checkNewDataAndComplete
(
data
);
const
tagAddFlag
=
this
.
checkNewDataAndComplete
(
data
);
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
this
.
updateTagInPage
(
!
tagRemoveFlag
&&
!
tagAddFlag
);
this
.
resizeCallback
();
this
.
resizeCallback
();
});
});
// Update the run and tag selection status and select all status
// obtain the charts that meet the conditions
this
.
updateRunAndTagSelectStateAndFilterResult
();
const
tagNumChange
=
tagRemoveFlag
||
tagAddFlag
;
const
tempTagList
=
[];
const
tempTagList
=
[];
const
propsList
=
[];
const
propsList
=
[];
...
@@ -1533,7 +1225,6 @@ export default {
...
@@ -1533,7 +1225,6 @@ export default {
});
});
this
.
tagPropsList
=
tempTagList
;
this
.
tagPropsList
=
tempTagList
;
this
.
propsList
=
propsList
;
this
.
propsList
=
propsList
;
this
.
getCurPageDataArr
(
true
,
true
,
!
tagNumChange
);
},
this
.
requestErrorCallback
)
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
.
catch
((
e
)
=>
{
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
...
@@ -1575,6 +1266,7 @@ export default {
...
@@ -1575,6 +1266,7 @@ export default {
if
(
this
.
firstNum
===
0
)
{
if
(
this
.
firstNum
===
0
)
{
return
;
return
;
}
}
this
.
smoothValueNumber
=
Number
(
val
);
if
(
this
.
smoothSliderValueTimer
)
{
if
(
this
.
smoothSliderValueTimer
)
{
clearTimeout
(
this
.
smoothSliderValueTimer
);
clearTimeout
(
this
.
smoothSliderValueTimer
);
this
.
smoothSliderValueTimer
=
null
;
this
.
smoothSliderValueTimer
=
null
;
...
@@ -1585,6 +1277,30 @@ export default {
...
@@ -1585,6 +1277,30 @@ export default {
},
500
);
},
500
);
},
},
smoothValueChange
(
val
)
{
if
(
!
isNaN
(
val
))
{
if
(
Number
(
val
)
===
0
)
{
this
.
smoothValue
=
0
;
}
if
(
Number
(
val
)
<
0
)
{
this
.
smoothValue
=
0
;
this
.
smoothValueNumber
=
0
;
}
if
(
Number
(
val
)
>
0
)
{
if
(
Number
(
val
)
>
0.99
)
{
this
.
smoothValue
=
0.99
;
this
.
smoothValueNumber
=
0.99
;
}
else
{
this
.
smoothValue
=
Number
(
val
);
}
}
}
},
smoothValueBlur
()
{
this
.
smoothValueNumber
=
this
.
smoothValue
;
},
/**
/**
* Format Absolute Time
* Format Absolute Time
* @param {String} time string
* @param {String} time string
...
@@ -1781,6 +1497,7 @@ export default {
...
@@ -1781,6 +1497,7 @@ export default {
components
:
{
components
:
{
ScalarButton
,
ScalarButton
,
ScalarCompare
,
ScalarCompare
,
multiselectGroupComponents
,
},
},
};
};
</
script
>
</
script
>
...
@@ -1788,8 +1505,9 @@ export default {
...
@@ -1788,8 +1505,9 @@ export default {
.cl-scalar-manage
{
.cl-scalar-manage
{
height
:
100%
;
height
:
100%
;
.w261
{
.w60
{
width
:
261px
;
width
:
60px
;
margin-left
:
20px
;
}
}
.scalar-btn
{
.scalar-btn
{
...
@@ -1941,7 +1659,7 @@ export default {
...
@@ -1941,7 +1659,7 @@ export default {
flex-shrink
:
0
;
flex-shrink
:
0
;
}
}
.el-slider
{
.el-slider
{
width
:
5
00px
;
width
:
4
00px
;
flex-shrink
:
0
;
flex-shrink
:
0
;
.el-input.el-input--small
{
.el-input.el-input--small
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录