[java, compilation-charts] add color schema IDEA-353077

GitOrigin-RevId: b71aa9c734bc3c5bc0823a69ab564976d848cdc5
This commit is contained in:
Aleksey Dobrynin
2024-09-27 11:06:06 +02:00
committed by intellij-monorepo-bot
parent c6a9e0df14
commit 0795152b04
11 changed files with 303 additions and 102 deletions

View File

@@ -83,7 +83,7 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
})
border = JBUI.Borders.empty(1)
BoxLayout(this, BoxLayout.LINE_AXIS)
background = COLOR_BACKGROUND
background = Colors.Background.DEFAULT
}
}
@@ -93,7 +93,7 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
}
init {
border = JBUI.Borders.customLine(COLOR_LINE)
border = JBUI.Borders.customLine(Colors.LINE)
layout = BorderLayout()
// module name
@@ -117,7 +117,7 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
actionManager.getAction("CompilationChartsScrollToEndAction"),
)
val toolbar = actionManager.createActionToolbar(COMPILATION_CHARTS_TOOLBAR_ID, actionGroup, true).apply {
val toolbar = actionManager.createActionToolbar(Settings.Toolbar.ID, actionGroup, true).apply {
targetComponent = this@ActionPanel
}
addToRight(toolbar.component)
@@ -180,27 +180,27 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
val block = JBLabel().apply {
preferredSize = Dimension(10, 10)
isOpaque = true
background = COLOR_PRODUCTION_BLOCK
border = BorderFactory.createLineBorder(COLOR_PRODUCTION_BORDER, 1)
background = Colors.Production.ENABLED
border = BorderFactory.createLineBorder(Colors.Production.BORDER, 1)
}
add(block)
add(JBLabel(CompilationChartsBundle.message("charts.production.type")))
addMouseListener(object : MouseAdapter() {
override fun mouseEntered(e: MouseEvent) {
block.border = BorderFactory.createLineBorder(COLOR_PRODUCTION_BORDER_SELECTED, 1)
block.border = BorderFactory.createLineBorder(Colors.Production.SELECTED, 1)
}
override fun mouseExited(e: MouseEvent) {
block.border = BorderFactory.createLineBorder(COLOR_PRODUCTION_BORDER, 1)
block.border = BorderFactory.createLineBorder(Colors.Production.BORDER, 1)
}
override fun mouseClicked(e: MouseEvent) {
vm.filter.set(vm.filter.value.setProduction(!vm.filter.value.production))
if (vm.filter.value.production)
block.background = COLOR_PRODUCTION_BLOCK
block.background = Colors.Production.ENABLED
else
block.background = COLOR_PRODUCTION_BLOCK_DISABLED
block.background = Colors.Production.DISABLED
}
})
@@ -210,26 +210,26 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
val block = JBLabel().apply {
preferredSize = Dimension(10, 10)
isOpaque = true
background = COLOR_TEST_BLOCK
border = BorderFactory.createLineBorder(COLOR_TEST_BORDER)
background = Colors.Test.ENABLED
border = BorderFactory.createLineBorder(Colors.Test.BORDER)
}
add(block)
add(JBLabel(CompilationChartsBundle.message("charts.test.type")))
addMouseListener(object : MouseAdapter() {
override fun mouseEntered(e: MouseEvent) {
block.border = BorderFactory.createLineBorder(COLOR_TEST_BORDER_SELECTED, 1)
block.border = BorderFactory.createLineBorder(Colors.Test.SELECTED, 1)
}
override fun mouseExited(e: MouseEvent) {
block.border = BorderFactory.createLineBorder(COLOR_TEST_BORDER, 1)
block.border = BorderFactory.createLineBorder(Colors.Test.BORDER, 1)
}
override fun mouseClicked(e: MouseEvent) {
vm.filter.set(vm.filter.value.setTest(!vm.filter.value.test))
if (vm.filter.value.test)
block.background = COLOR_TEST_BLOCK
block.background = Colors.Test.ENABLED
else
block.background = COLOR_TEST_BLOCK_DISABLED
block.background = Colors.Test.DISABLED
}
})
})
@@ -238,7 +238,7 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
val block = JBLabel().apply {
preferredSize = Dimension(10, 2)
isOpaque = true
background = COLOR_MEMORY_BORDER
background = Colors.Memory.BORDER
}
val label = JBLabel(CompilationChartsBundle.message("charts.memory.type"))
add(block)
@@ -249,12 +249,12 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
when (vm.cpuMemory.value) {
CompilationChartsViewModel.CpuMemoryStatisticsType.MEMORY -> {
label.text = CompilationChartsBundle.message("charts.cpu.type")
block.background = COLOR_CPU_BORDER
block.background = Colors.Cpu.BORDER
vm.cpuMemory.set(CompilationChartsViewModel.CpuMemoryStatisticsType.CPU)
}
CompilationChartsViewModel.CpuMemoryStatisticsType.CPU -> {
label.text = CompilationChartsBundle.message("charts.memory.type")
block.background = COLOR_MEMORY_BORDER
block.background = Colors.Memory.BORDER
vm.cpuMemory.set(CompilationChartsViewModel.CpuMemoryStatisticsType.MEMORY)
}
}
@@ -264,8 +264,4 @@ class ActionPanel(private val project: Project, private val vm: CompilationChart
}
override fun actionPerformed(e: AnActionEvent) = Unit
}
companion object {
private const val COMPILATION_CHARTS_TOOLBAR_ID = "CompilationChartsToolbar"
}
}

View File

@@ -11,14 +11,12 @@ import com.intellij.openapi.editor.colors.EditorColorsManager
import com.intellij.openapi.editor.colors.EditorColorsScheme
import com.intellij.ui.components.JBPanelWithEmptyText
import com.intellij.ui.components.Magnificator
import com.intellij.ui.table.JBTable
import com.intellij.util.concurrency.AppExecutorUtil
import com.intellij.util.ui.UIUtil
import java.awt.*
import java.awt.geom.Rectangle2D
import java.awt.image.BufferedImage
import java.util.concurrent.ConcurrentSkipListSet
import java.util.concurrent.TimeUnit
import javax.swing.JButton
import javax.swing.JViewport
import javax.swing.SwingUtilities
@@ -30,10 +28,6 @@ class CompilationChartsDiagramsComponent(
private val zoom: Zoom,
private val viewport: JViewport,
) : JBPanelWithEmptyText(BorderLayout()) {
companion object {
val ROW_HEIGHT = JBTable().rowHeight * 1.5
}
val modules: CompilationChartsViewModel.ViewModules = CompilationChartsViewModel.ViewModules()
val stats: Map<CpuMemoryStatisticsType, MutableSet<CompilationChartsViewModel.StatisticData>> = mapOf(MEMORY to ConcurrentSkipListSet(), CPU to ConcurrentSkipListSet())
var cpu: MutableSet<CompilationChartsViewModel.StatisticData> = ConcurrentSkipListSet()
@@ -61,15 +55,15 @@ class CompilationChartsDiagramsComponent(
MEMORY to ChartUsage(zoom, "memory", UsageModel()).apply {
format = { stat -> "${stat.data / (1024 * 1024)} MB" }
color {
background = COLOR_MEMORY
border = COLOR_MEMORY_BORDER
background = Colors.Memory.BACKGROUND
border = Colors.Memory.BORDER
}
},
CPU to ChartUsage(zoom, "cpu", UsageModel()).apply {
format = { stat -> "${stat.data} %" }
color {
background = COLOR_CPU
border = COLOR_CPU_BORDER
background = Colors.Cpu.BACKGROUND
border = Colors.Cpu.BORDER
}
})
@@ -87,35 +81,35 @@ class CompilationChartsDiagramsComponent(
charts = charts(vm, zoom, { cleanCache() }) {
progress {
height = ROW_HEIGHT
height = Settings.Block.HEIGHT
block {
border = MODULE_BLOCK_BORDER
padding = MODULE_BLOCK_PADDING
color = { m -> if (m.target.isTest) COLOR_TEST_BLOCK else COLOR_PRODUCTION_BLOCK }
outline = { m -> if (m.target.isTest) COLOR_TEST_BORDER else COLOR_PRODUCTION_BORDER }
selected = { m -> if (m.target.isTest) COLOR_TEST_BORDER_SELECTED else COLOR_PRODUCTION_BORDER_SELECTED }
border = Settings.Block.BORDER
padding = Settings.Block.PADDING
color = { m -> Colors.getBlock(m.target.isTest).ENABLED }
outline = { m -> Colors.getBlock(m.target.isTest).BORDER }
selected = { m -> Colors.getBlock(m.target.isTest).SELECTED }
}
background {
color = { row -> if (row % 2 == 0) COLOR_BACKGROUND_EVEN else COLOR_BACKGROUND_ODD }
color = { row -> Colors.Background.getRowColor(row) }
}
}
usage = usages[MEMORY]!!
axis {
stroke = floatArrayOf(5f, 5f)
distance = AXIS_DISTANCE_PX
count = AXIS_MARKERS_COUNT
height = ROW_HEIGHT
padding = AXIS_TEXT_PADDING
distance = Settings.Axis.DISTANCE
count = Settings.Axis.MARKERS_COUNT
height = Settings.Block.HEIGHT
padding = Settings.Axis.TEXT_PADDING
}
settings {
font {
size = FONT_SIZE
color = COLOR_TEXT
size = Settings.Font.SIZE
color = Colors.TEXT
}
background = COLOR_BACKGROUND
background = Colors.Background.DEFAULT
line {
color = COLOR_LINE
color = Colors.LINE
}
mouse = CompilationChartsModuleInfo(vm, this@CompilationChartsDiagramsComponent)
}
@@ -130,7 +124,7 @@ class CompilationChartsDiagramsComponent(
})
AppExecutorUtil.createBoundedScheduledExecutorService("Compilation charts component", 1)
.scheduleWithFixedDelay({ if (hasNewData()) smartDraw() }, 0, REFRESH_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.scheduleWithFixedDelay({ if (hasNewData()) smartDraw() }, 0, Settings.Refresh.timeout, Settings.Refresh.unit)
}
internal fun cleanCache() {
@@ -194,15 +188,15 @@ class CompilationChartsDiagramsComponent(
g2d: ChartGraphics,
draw: (ChartGraphics) -> Unit,
) {
val start: Int = viewport.viewPosition.x / BUFFERED_IMAGE_WIDTH_PX
val end: Int = (viewport.viewPosition.x + viewport.width) / BUFFERED_IMAGE_WIDTH_PX + 1
val start: Int = viewport.viewPosition.x / Settings.Image.WIDTH
val end: Int = (viewport.viewPosition.x + viewport.width) / Settings.Image.WIDTH + 1
for (index in start..end) {
charts.clips(Rectangle2D.Double((index * BUFFERED_IMAGE_WIDTH_PX).toDouble(), viewport.y.toDouble(),
BUFFERED_IMAGE_WIDTH_PX.toDouble(), viewport.height.toDouble()))
charts.clips(Rectangle2D.Double((index * Settings.Image.WIDTH).toDouble(), viewport.y.toDouble(),
Settings.Image.WIDTH.toDouble(), viewport.height.toDouble()))
val area = Rectangle2D.Double((index * BUFFERED_IMAGE_WIDTH_PX).toDouble(), viewport.y.toDouble(),
BUFFERED_IMAGE_WIDTH_PX.toDouble(), charts.height())
val area = Rectangle2D.Double((index * Settings.Image.WIDTH).toDouble(), viewport.y.toDouble(),
Settings.Image.WIDTH.toDouble(), charts.height())
val image = images[index]
if (image != null && image.height() == area.height) {
@@ -214,7 +208,7 @@ class CompilationChartsDiagramsComponent(
}
else {
val counter = imageRequestCount.compute(index) { _, v -> (v ?: 0) + 1 } ?: 1
if (counter < IMAGE_CACHE_ACTIVATION_COUNT) {
if (counter < Settings.Image.CACHE_ACTIVATION_COUNT) {
draw(g2d)
}
else {

View File

@@ -8,7 +8,6 @@ import java.awt.event.AdjustmentListener
import java.awt.event.MouseWheelEvent
import java.awt.event.MouseWheelListener
import java.util.concurrent.ScheduledFuture
import java.util.concurrent.TimeUnit
import javax.swing.JViewport
internal class RightAdhesionScrollBarListener(
@@ -43,7 +42,7 @@ internal class RightAdhesionScrollBarListener(
private fun scheduleUpdateShouldScroll() {
updateShouldScrollTask?.cancel(false)
updateShouldScrollTask = executor.schedule(::updateShouldScroll, 100, TimeUnit.MILLISECONDS)
updateShouldScrollTask = executor.schedule(::updateShouldScroll, Settings.Scroll.timeout, Settings.Scroll.unit)
}
private fun adjustHorizontalScrollToRightIfNeeded() {
@@ -69,9 +68,9 @@ internal class RightAdhesionScrollBarListener(
shouldScroll.stop()
}
fun increase() = applyZoomTransformation(ZoomEvent.IN) { adjust(viewport, viewport.getMiddlePoint(), ZOOM_IN_MULTIPLIER) }
fun increase() = applyZoomTransformation(ZoomEvent.IN) { adjust(viewport, viewport.getMiddlePoint(), Settings.Zoom.IN) }
fun decrease() = applyZoomTransformation(ZoomEvent.OUT) { adjust(viewport, viewport.getMiddlePoint(), ZOOM_OUT_MULTIPLIER) }
fun decrease() = applyZoomTransformation(ZoomEvent.OUT) { adjust(viewport, viewport.getMiddlePoint(), Settings.Zoom.OUT) }
fun reset() = applyZoomTransformation(ZoomEvent.RESET) {
val shouldScrollAfterResetting = viewport.width >= viewport.viewSize.width
@@ -88,10 +87,5 @@ internal class RightAdhesionScrollBarListener(
}
private fun JViewport.getMiddlePoint(): Int = viewPosition.x + width / 2
companion object {
private const val ZOOM_IN_MULTIPLIER: Double = 1.25
private const val ZOOM_OUT_MULTIPLIER: Double = 0.8
}
}

View File

@@ -9,7 +9,7 @@ import kotlin.math.roundToInt
import kotlin.math.roundToLong
class Zoom {
private var scale = INITIAL_SCALE
private var scale = Settings.Zoom.SCALE
fun toPixels(duration: Long): Double = toPixels(duration.toDouble(), scale)
fun toPixels(duration: Double): Double = toPixels(duration, scale)
@@ -29,10 +29,10 @@ class Zoom {
}
fun reset(viewport: JViewport, xPosition: Int): Point? {
val delta = INITIAL_SCALE / scale
val isScaleAboveInitial = scale > INITIAL_SCALE
val delta = Settings.Zoom.SCALE / scale
val isScaleAboveInitial = scale > Settings.Zoom.SCALE
val newViewportPosition = adjust(viewport, xPosition, delta, isScaleAboveInitial)
scale = INITIAL_SCALE
scale = Settings.Zoom.SCALE
return if (isScaleAboveInitial) null else newViewportPosition
}
@@ -40,8 +40,4 @@ class Zoom {
private fun toDuration(pixels: Double, scale: Double): Long = secondsToNanos(pixels / scale).roundToLong()
private fun nanosToSeconds(time: Double): Double = time / TimeUnit.SECONDS.toNanos(1)
private fun secondsToNanos(time: Double): Double = time * TimeUnit.SECONDS.toNanos(1)
companion object {
private const val INITIAL_SCALE: Double = 24.0
}
}

View File

@@ -243,7 +243,7 @@ class ChartUsage(private val zoom: Zoom, private val name: String, internal val
fill(path)
}
g2d.withColor(color.border) {
g2d.withStroke(BasicStroke(USAGE_BORDER)) {
g2d.withStroke(BasicStroke(Settings.Usage.BORDER)) {
draw(border)
}
}
@@ -385,7 +385,7 @@ class ChartAxis(private val zoom: Zoom) : ChartComponent {
val from = (bracket.x.roundToInt() / distance) * distance
val to = from + bracket.width.roundToInt() + bracket.x.roundToInt() % distance
withColor(COLOR_LINE) {
withColor(Colors.LINE) {
for (x in from..to step distance) {
// big axis
withStroke(BasicStroke(1.5F, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0f, this@ChartAxis.stroke, 0.0f)) {

View File

@@ -1,45 +1,121 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.java.compiler.charts.ui
import com.intellij.ui.ColorUtil
import com.intellij.ui.JBColor
import com.intellij.ui.table.JBTable
import com.intellij.util.ui.UIUtil.FontSize
import java.awt.Color
import java.util.concurrent.TimeUnit
val COLOR_TEST_BLOCK: JBColor = JBColor(Color(0xc5e5cc), Color(0x375239))
val COLOR_TEST_BLOCK_DISABLED: JBColor = JBColor(Color(0xb6eedd), Color(0x26392b))
val COLOR_TEST_BORDER: JBColor = JBColor(Color(0x3b9954), Color(0x549159))
val COLOR_TEST_BORDER_SELECTED: JBColor = JBColor.GREEN
object Colors {
object Background {
val ODD: JBColor = exact("CompilationCharts.background.odd")
val EVEN: JBColor = exact("CompilationCharts.background.even")
val DEFAULT: JBColor = exact("CompilationCharts.background.default")
val COLOR_PRODUCTION_BLOCK: JBColor = JBColor(Color(0xc2d6fc), Color(0x2e436e))
val COLOR_PRODUCTION_BLOCK_DISABLED: JBColor = JBColor(Color(0xd7e4fd), Color(0x202e4d))
val COLOR_PRODUCTION_BORDER: JBColor = JBColor(Color(0x4781fa), Color(0x4978d6))
val COLOR_PRODUCTION_BORDER_SELECTED: JBColor = JBColor.BLUE
fun getRowColor(row: Int): JBColor = if (row % 2 == 0) EVEN else ODD
}
val COLOR_BACKGROUND: Color = JBColor.background()
val COLOR_BACKGROUND_ODD: JBColor = JBColor.WHITE
val COLOR_BACKGROUND_EVEN: JBColor = JBColor(Color(0xeeeeee), Color(0x3e4042))
@Suppress("PropertyName")
interface Block {
val ENABLED: JBColor
val DISABLED: JBColor
val BORDER: JBColor
val SELECTED: JBColor
}
val COLOR_TEXT: JBColor = JBColor(Color(0x1d1d1d), Color(0xbfbfbf))
val COLOR_LINE: JBColor = JBColor.LIGHT_GRAY
object Test : Block {
override val ENABLED: JBColor = exact("CompilationCharts.test.enabled")
override val DISABLED: JBColor = exact("CompilationCharts.test.disabled")
override val BORDER: JBColor = exact("CompilationCharts.test.border")
override val SELECTED: JBColor = exact("CompilationCharts.test.selected")
}
val COLOR_MEMORY: JBColor = JBColor.namedColor("Profiler.MemoryChart.inactiveBorderColor")
val COLOR_MEMORY_BORDER: JBColor = JBColor.namedColor("Profiler.MemoryChart.borderColor")
object Production : Block {
override val ENABLED: JBColor = exact("CompilationCharts.production.enabled")
override val DISABLED: JBColor = exact("CompilationCharts.production.disabled")
override val BORDER: JBColor = exact("CompilationCharts.production.border")
override val SELECTED: JBColor = exact("CompilationCharts.production.selected")
}
val COLOR_CPU: JBColor = JBColor.namedColor("Profiler.CpuChart.inactiveBorderColor")
val COLOR_CPU_BORDER: JBColor = JBColor.namedColor("Profiler.CpuChart.borderColor")
@Suppress("PropertyName")
interface Usage {
val BACKGROUND: JBColor
val BORDER: JBColor
}
object Memory: Usage {
override val BACKGROUND: JBColor = exact("CompilationCharts.memory.background")
override val BORDER: JBColor = exact("CompilationCharts.memory.border")
}
const val MODULE_BLOCK_PADDING: Double = 1.0
const val MODULE_BLOCK_BORDER: Double = 2.0
object Cpu: Usage {
override val BACKGROUND: JBColor = exact("CompilationCharts.cpu.background")
override val BORDER: JBColor = exact("CompilationCharts.cpu.border")
}
const val USAGE_BORDER: Float = 2.0f
val LINE: JBColor = exact("CompilationCharts.lineColor")
val TEXT: JBColor = exact("CompilationCharts.textColor")
val FONT_SIZE: FontSize = FontSize.NORMAL
fun getBlock(isTest: Boolean): Block = if (isTest) Test else Production
const val AXIS_DISTANCE_PX: Int = 250
const val AXIS_MARKERS_COUNT: Int = 10
const val AXIS_TEXT_PADDING: Int = 2
private fun exact(propertyName: String): JBColor {
return JBColor.namedColor(propertyName)
}
const val BUFFERED_IMAGE_WIDTH_PX = 512
const val IMAGE_CACHE_ACTIVATION_COUNT = 8
const val REFRESH_TIMEOUT_SECONDS = 1L
private fun JBColor.alpha(alpha: Double): JBColor {
return ColorUtil.withAlpha(this, alpha) as JBColor
}
}
object Settings {
object Block {
const val PADDING: Double = 1.0
const val BORDER: Double = 2.0
val HEIGHT = JBTable().rowHeight * 1.5
}
object Axis {
const val DISTANCE: Int = 250
const val MARKERS_COUNT: Int = 10
const val TEXT_PADDING: Int = 2
}
object Zoom {
const val SCALE: Double = 24.0
const val IN: Double = 1.25
const val OUT: Double = 0.8
}
object Usage {
const val BORDER: Float = 2.0f
}
object Font {
val SIZE: FontSize = FontSize.NORMAL
}
object Image {
const val CACHE_ACTIVATION_COUNT: Int = 8
const val WIDTH: Int = 512
}
interface Timeout {
val timeout: Long
val unit: TimeUnit
}
object Refresh: Timeout {
override val timeout: Long = 1L
override val unit: TimeUnit = TimeUnit.SECONDS
}
object Scroll: Timeout {
override val timeout: Long = 100L
override val unit: TimeUnit = TimeUnit.MILLISECONDS
}
object Toolbar {
const val ID = "CompilationChartsToolbar"
}
}

View File

@@ -599,6 +599,35 @@
"horizontalAxisColor": "#E6E6E6"
}
},
"CompilationCharts": {
"background":{
"odd": "#F7F8FA",
"even": "#EBECF0",
"default": "#F7F8FA"
},
"test": {
"enabled": "#89C398",
"disabled": "#E3F7E7",
"border": "#369650",
"selected": "#55A76A"
},
"production": {
"enabled": "#88ADF7",
"disabled": "#D4E2FF",
"border": "#3574F0",
"selected": "#4682FA"
},
"memory": {
"background": "#C2D6FC",
"border": "#4682FA"
},
"cpu": {
"background": "#C5E5CC",
"border": "#89C398"
},
"lineColor": "#D3D5DB",
"textColor": "#27282E"
},
"FlameGraph.Tooltip": {
"scaleBackground": "#555454",
"scaleColor": "#402FF6",

View File

@@ -954,6 +954,35 @@
"horizontalAxisColor": "#D1D1D1"
}
},
"CompilationCharts": {
"background":{
"odd": "#2B2D30",
"even": "#393B40",
"default": "#2B2D30"
},
"test": {
"enabled": "#375239",
"disabled": "#273828",
"border": "#57965C",
"selected": "#73BD79"
},
"production": {
"enabled": "#2E436E",
"disabled": "#25324D",
"border": "#3574F0",
"selected": "#548AF7"
},
"memory": {
"background": "#2E436E",
"border": "#548AF7"
},
"cpu": {
"background": "#375239",
"border": "#57965C"
},
"lineColor": "#393B40",
"textColor": "#B4B8BF"
},
"FlameGraph.Tooltip": {
"scaleBackground": "#363839",
"scaleColor": "#365880",

View File

@@ -1034,6 +1034,35 @@
"horizontalAxisColor": "Gray4"
}
},
"CompilationCharts": {
"background":{
"odd": "Gray2",
"even": "Gray3",
"default": "Gray2"
},
"test": {
"enabled": "Green3",
"disabled": "Green2",
"border": "Green6",
"selected": "Green8"
},
"production": {
"enabled": "Blue2",
"disabled": "Blue1",
"border": "Blue6",
"selected": "Blue8"
},
"memory": {
"background": "Blue2",
"border": "Blue8"
},
"cpu": {
"background": "Green3",
"border": "Green6"
},
"lineColor": "Gray3",
"textColor": "Gray10"
},
"FlameGraph.Tooltip": {
"scaleBackground": "#43454A",
"scaleColor": "#375FAD",

View File

@@ -1060,6 +1060,35 @@
"horizontalAxisColor": "Gray9"
}
},
"CompilationCharts": {
"background":{
"odd": "Gray13",
"even": "Gray12",
"default": "Gray13"
},
"test": {
"enabled": "Green7",
"disabled": "Green10",
"border": "Green5",
"selected": "Green6"
},
"production": {
"enabled": "Blue8",
"disabled": "Blue11",
"border": "Blue4",
"selected": "Blue5"
},
"memory": {
"background": "Blue10",
"border": "Blue5"
},
"cpu": {
"background": "Green9",
"border": "Green7"
},
"lineColor": "Gray10",
"textColor": "Gray2"
},
"FlameGraph.Tooltip": {
"scaleBackground": "#EBECF0",
"scaleColor": "#C2D6FC",

View File

@@ -1286,6 +1286,35 @@
"horizontalAxisColor": "#515151"
}
},
"CompilationCharts": {
"background":{
"odd": "#F7F8FA",
"even": "#EBECF0",
"default": "#F7F8FA"
},
"test": {
"enabled": "#89C398",
"disabled": "#E3F7E7",
"border": "#369650",
"selected": "#55A76A"
},
"production": {
"enabled": "#88ADF7",
"disabled": "#D4E2FF",
"border": "#3574F0",
"selected": "#4682FA"
},
"memory": {
"background": "#C2D6FC",
"border": "#4682FA"
},
"cpu": {
"background": "#C5E5CC",
"border": "#89C398"
},
"lineColor": "#D3D5DB",
"textColor": "#27282E"
},
"FlameGraph.Tooltip": {
"scaleBackground": "#EBEBEB",
"scaleColor": "#A7D1EC",