DS-365 Show cell execution start time and duration

GitOrigin-RevId: 9930321a64459060cc61e9508e49ca25ccf0f3e7
This commit is contained in:
Olga.Lavrichenko
2023-01-10 21:51:59 +00:00
committed by intellij-monorepo-bot
parent 5ad829802c
commit 03cd549b47
3 changed files with 28 additions and 14 deletions

View File

@@ -22,16 +22,17 @@ interface NotebookEditorAppearanceSizes {
val LINE_NUMBERS_MARGIN: Int
// TODO Do the pixel constants need JBUI.scale?
val COMMAND_MODE_CELL_LEFT_LINE_WIDTH : Int
val EDIT_MODE_CELL_LEFT_LINE_WIDTH : Int
val CODE_AND_CODE_TOP_GRAY_HEIGHT : Int
val CODE_AND_CODE_BOTTOM_GRAY_HEIGHT : Int
val INNER_CELL_TOOLBAR_HEIGHT : Int
val CELL_BORDER_HEIGHT : Int
val SPACER_HEIGHT : Int
val SPACE_BELOW_CELL_TOOLBAR : Int
val CELL_TOOLBAR_TOTAL_HEIGHT : Int
val PROGRESS_STATUS_HEIGHT : Int
val COMMAND_MODE_CELL_LEFT_LINE_WIDTH: Int
val EDIT_MODE_CELL_LEFT_LINE_WIDTH: Int
val CODE_AND_CODE_TOP_GRAY_HEIGHT: Int
val CODE_AND_CODE_BOTTOM_GRAY_HEIGHT: Int
val INNER_CELL_TOOLBAR_HEIGHT: Int
val CELL_BORDER_HEIGHT: Int
val SPACER_HEIGHT: Int
val EXECUTION_TIME_HEIGHT: Int
val SPACE_BELOW_CELL_TOOLBAR: Int
val CELL_TOOLBAR_TOTAL_HEIGHT: Int
val PROGRESS_STATUS_HEIGHT: Int
val JUPYTER_CELL_SPACERS_INLAY_PRIORITY: Int
val JUPYTER_BELOW_OUTPUT_CELL_SPACERS_INLAY_PRIORITY: Int
@@ -88,6 +89,7 @@ object DefaultNotebookEditorAppearanceSizes: NotebookEditorAppearanceSizes {
override val INNER_CELL_TOOLBAR_HEIGHT = 25
override val CELL_BORDER_HEIGHT = 20
override val SPACER_HEIGHT = CELL_BORDER_HEIGHT / 2
override val EXECUTION_TIME_HEIGHT = SPACER_HEIGHT * 3
override val SPACE_BELOW_CELL_TOOLBAR = 12
override val CELL_TOOLBAR_TOTAL_HEIGHT = INNER_CELL_TOOLBAR_HEIGHT + SPACE_BELOW_CELL_TOOLBAR
override val PROGRESS_STATUS_HEIGHT = 2

View File

@@ -44,12 +44,14 @@ class NotebookAboveCodeCellGutterLineMarkerRenderer(private val highlighter: Ran
}
}
class NotebookBelowCellCellGutterLineMarkerRenderer(private val highlighter: RangeHighlighter, inlayId: Long) : NotebookLineMarkerRenderer(inlayId) {
class NotebookBelowCellCellGutterLineMarkerRenderer(private val highlighter: RangeHighlighter,
inlayId: Long,
private val customHeight: Int) : NotebookLineMarkerRenderer(inlayId) {
override fun paint(editor: Editor, g: Graphics, r: Rectangle) {
editor as EditorImpl
val lines = IntRange(editor.document.getLineNumber(highlighter.startOffset), editor.document.getLineNumber(highlighter.endOffset))
val inlayBounds = getInlayBounds(editor, lines) ?: return
paintNotebookCellBackgroundGutter(editor, g, r, lines, inlayBounds.y, editor.notebookAppearance.SPACER_HEIGHT)
paintNotebookCellBackgroundGutter(editor, g, r, lines, inlayBounds.y, customHeight)
}
}
@@ -131,7 +133,8 @@ class NotebookTextCellBackgroundLineMarkerRenderer(private val highlighter: Rang
}
}
class NotebookCellToolbarGutterLineMarkerRenderer(private val highlighter: RangeHighlighter, inlayId: Long) : NotebookLineMarkerRenderer(inlayId) {
class NotebookCellToolbarGutterLineMarkerRenderer(private val highlighter: RangeHighlighter, inlayId: Long) : NotebookLineMarkerRenderer(
inlayId) {
override fun paint(editor: Editor, g: Graphics, r: Rectangle) {
editor as EditorImpl
val lines = IntRange(editor.document.getLineNumber(highlighter.startOffset), editor.document.getLineNumber(highlighter.endOffset))

View File

@@ -9,6 +9,7 @@ import org.jetbrains.annotations.Nls
import org.jetbrains.plugins.notebooks.visualization.r.ui.UiCustomizer
import java.awt.BorderLayout
import java.awt.Color
import java.time.LocalDateTime
import javax.swing.*
private val TEXT_BORDER = JBUIScale.scale(5)
@@ -18,7 +19,15 @@ enum class ProgressStatus {
RUNNING, STOPPED_OK, STOPPED_ERROR
}
data class InlayProgressStatus(val progress: ProgressStatus, @Nls val statusText: String = "")
/**
* @param previousStatusDateTime - date time, when previous status was set
* @param statusStartDateTime - date time, when status was set
*/
data class StatusDateTimeStamp(val previousStatusDateTime: LocalDateTime? = null, val statusStartDateTime: LocalDateTime)
data class InlayProgressStatus(val progress: ProgressStatus,
@Nls val statusText: String = "",
val statusDateTimeStamp: StatusDateTimeStamp? = null)
fun buildProgressStatusComponent(progressStatus: InlayProgressStatus, editor: Editor): JComponent? {
if (progressStatus.progress == ProgressStatus.STOPPED_OK && progressStatus.statusText.isEmpty()) return null