Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
94317e38
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
94317e38
编写于
7月 30, 2020
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Show cell run progress for a minimum of 200ms
上级
cf1b3574
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
58 addition
and
33 deletion
+58
-33
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
+2
-2
src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts
...h/contrib/notebook/browser/view/renderers/cellRenderer.ts
+56
-31
未找到文件。
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
浏览文件 @
94317e38
...
...
@@ -19,7 +19,7 @@ import { Range } from 'vs/editor/common/core/range';
import
{
FindMatch
,
IReadonlyTextBuffer
,
ITextModel
}
from
'
vs/editor/common/model
'
;
import
{
ContextKeyExpr
,
RawContextKey
,
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
OutputRenderer
}
from
'
vs/workbench/contrib/notebook/browser/view/output/outputRenderer
'
;
import
{
CellLanguageStatusBarItem
,
TimerRenderer
}
from
'
vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer
'
;
import
{
CellLanguageStatusBarItem
,
RunStateRenderer
,
TimerRenderer
}
from
'
vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer
'
;
import
{
CellViewModel
,
IModelDecorationsChangeAccessor
,
NotebookViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel
'
;
import
{
NotebookCellTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookCellTextModel
'
;
import
{
CellKind
,
IProcessedOutput
,
IRenderOutput
,
NotebookCellMetadata
,
NotebookDocumentMetadata
,
INotebookKernelInfo
,
IEditor
,
INotebookKernelInfo2
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
...
...
@@ -489,7 +489,7 @@ export interface MarkdownCellRenderTemplate extends BaseCellRenderTemplate {
}
export
interface
CodeCellRenderTemplate
extends
BaseCellRenderTemplate
{
cellRunStat
usContainer
:
HTMLElement
;
cellRunStat
e
:
RunStateRenderer
;
cellStatusMessageContainer
:
HTMLElement
;
runToolbar
:
ToolBar
;
runButtonContainer
:
HTMLElement
;
...
...
src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts
浏览文件 @
94317e38
...
...
@@ -964,6 +964,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
const
statusBar
=
this
.
instantiationService
.
createInstance
(
CellEditorStatusBar
,
editorPart
);
const
timer
=
new
TimerRenderer
(
statusBar
.
durationContainer
);
const
cellRunState
=
new
RunStateRenderer
(
statusBar
.
cellRunStatusContainer
,
runToolbar
,
this
.
instantiationService
);
const
outputContainer
=
DOM
.
append
(
container
,
$
(
'
.output
'
));
...
...
@@ -986,7 +987,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
container
,
cellContainer
,
statusBarContainer
:
statusBar
.
statusBarContainer
,
cellRunStat
usContainer
:
statusBar
.
cellRunStatusContainer
,
cellRunStat
e
,
cellStatusMessageContainer
:
statusBar
.
cellStatusMessageContainer
,
languageStatusBarItem
:
statusBar
.
languageStatusBarItem
,
progressBar
,
...
...
@@ -1022,26 +1023,6 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
return
templateData
;
}
private
updateForRunState
(
runState
:
NotebookCellRunState
|
undefined
,
templateData
:
CodeCellRenderTemplate
):
void
{
if
(
typeof
runState
===
'
undefined
'
)
{
runState
=
NotebookCellRunState
.
Idle
;
}
if
(
runState
===
NotebookCellRunState
.
Running
)
{
templateData
.
progressBar
.
infinite
().
show
(
500
);
templateData
.
runToolbar
.
setActions
([
this
.
instantiationService
.
createInstance
(
CancelCellAction
)
]);
}
else
{
templateData
.
progressBar
.
hide
();
templateData
.
runToolbar
.
setActions
([
this
.
instantiationService
.
createInstance
(
ExecuteCellAction
)
]);
}
}
private
updateForOutputs
(
element
:
CodeCellViewModel
,
templateData
:
CodeCellRenderTemplate
):
void
{
if
(
element
.
outputs
.
length
)
{
DOM
.
show
(
templateData
.
focusSinkElement
);
...
...
@@ -1056,15 +1037,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
this
.
updateExecutionOrder
(
metadata
,
templateData
);
templateData
.
cellStatusMessageContainer
.
textContent
=
metadata
?.
statusMessage
||
''
;
if
(
metadata
.
runState
===
NotebookCellRunState
.
Success
)
{
templateData
.
cellRunStatusContainer
.
innerHTML
=
renderCodicons
(
'
$(check)
'
);
}
else
if
(
metadata
.
runState
===
NotebookCellRunState
.
Error
)
{
templateData
.
cellRunStatusContainer
.
innerHTML
=
renderCodicons
(
'
$(error)
'
);
}
else
if
(
metadata
.
runState
===
NotebookCellRunState
.
Running
)
{
templateData
.
cellRunStatusContainer
.
innerHTML
=
renderCodicons
(
'
$(sync~spin)
'
);
}
else
{
templateData
.
cellRunStatusContainer
.
innerHTML
=
''
;
}
templateData
.
cellRunState
.
renderState
(
element
.
metadata
?.
runState
);
if
(
metadata
.
runState
===
NotebookCellRunState
.
Running
)
{
if
(
metadata
.
runStartTime
)
{
...
...
@@ -1082,7 +1055,11 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
this
.
editorOptions
.
setGlyphMargin
(
metadata
.
breakpointMargin
);
}
this
.
updateForRunState
(
metadata
.
runState
,
templateData
);
if
(
metadata
.
runState
===
NotebookCellRunState
.
Running
)
{
templateData
.
progressBar
.
infinite
().
show
(
500
);
}
else
{
templateData
.
progressBar
.
hide
();
}
}
private
updateExecutionOrder
(
metadata
:
NotebookCellMetadata
,
templateData
:
CodeCellRenderTemplate
):
void
{
...
...
@@ -1141,6 +1118,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
this
.
updateForLayout
(
element
,
templateData
);
}));
templateData
.
cellRunState
.
clear
();
this
.
updateForMetadata
(
element
,
templateData
);
this
.
updateForHover
(
element
,
templateData
);
elementDisposables
.
add
(
element
.
onDidChangeState
((
e
)
=>
{
...
...
@@ -1230,3 +1208,50 @@ export class TimerRenderer {
return
`
${
seconds
}
.
${
tenths
}
s`
;
}
}
export
class
RunStateRenderer
{
private
static
readonly
MIN_SPINNER_TIME
=
200
;
private
spinnerTimer
:
NodeJS
.
Timeout
|
undefined
;
private
pendingNewState
:
NotebookCellRunState
|
undefined
;
constructor
(
private
readonly
element
:
HTMLElement
,
private
readonly
runToolbar
:
ToolBar
,
private
readonly
instantiationService
:
IInstantiationService
)
{
}
clear
()
{
if
(
this
.
spinnerTimer
)
{
clearTimeout
(
this
.
spinnerTimer
);
}
}
renderState
(
runState
:
NotebookCellRunState
=
NotebookCellRunState
.
Idle
)
{
if
(
this
.
spinnerTimer
)
{
this
.
pendingNewState
=
runState
;
return
;
}
if
(
runState
===
NotebookCellRunState
.
Running
)
{
this
.
runToolbar
.
setActions
([
this
.
instantiationService
.
createInstance
(
CancelCellAction
)]);
}
else
{
this
.
runToolbar
.
setActions
([
this
.
instantiationService
.
createInstance
(
ExecuteCellAction
)]);
}
if
(
runState
===
NotebookCellRunState
.
Success
)
{
this
.
element
.
innerHTML
=
renderCodicons
(
'
$(check)
'
);
}
else
if
(
runState
===
NotebookCellRunState
.
Error
)
{
this
.
element
.
innerHTML
=
renderCodicons
(
'
$(error)
'
);
}
else
if
(
runState
===
NotebookCellRunState
.
Running
)
{
this
.
element
.
innerHTML
=
renderCodicons
(
'
$(sync~spin)
'
);
this
.
spinnerTimer
=
setTimeout
(()
=>
{
this
.
spinnerTimer
=
undefined
;
if
(
this
.
pendingNewState
)
{
this
.
renderState
(
this
.
pendingNewState
);
this
.
pendingNewState
=
undefined
;
}
},
RunStateRenderer
.
MIN_SPINNER_TIME
);
}
else
{
this
.
element
.
innerHTML
=
''
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录