diff --git a/ui/src/dashboards/constants/cellEditor.js b/ui/src/dashboards/constants/cellEditor.js index 03f97f934e..4530b2c671 100644 --- a/ui/src/dashboards/constants/cellEditor.js +++ b/ui/src/dashboards/constants/cellEditor.js @@ -1,5 +1,15 @@ import {DEFAULT_TABLE_OPTIONS} from 'src/shared/constants/tableGraph' import {stringifyColorValues} from 'src/shared/constants/colorOperations' +import { + CELL_TYPE_LINE, + CELL_TYPE_STACKED, + CELL_TYPE_STEPPLOT, + CELL_TYPE_BAR, + CELL_TYPE_LINE_PLUS_SINGLE_STAT, + CELL_TYPE_SINGLE_STAT, + CELL_TYPE_GAUGE, + CELL_TYPE_TABLE, +} from 'src/dashboards/graphics/graph' export const initializeOptions = cellType => { switch (cellType) { @@ -29,20 +39,20 @@ export const getCellTypeColors = ({ let colors = [] switch (cellType) { - case 'gauge': { + case CELL_TYPE_GAUGE: { colors = stringifyColorValues(gaugeColors) break } - case 'single-stat': - case 'table': { + case CELL_TYPE_SINGLE_STAT: + case CELL_TYPE_TABLE: { colors = stringifyColorValues(thresholdsListColors) break } - case 'bar': - case 'line': - case 'line-plus-single-stat': - case 'line-stacked': - case 'line-stepplot': { + case CELL_TYPE_BAR: + case CELL_TYPE_LINE: + case CELL_TYPE_LINE_PLUS_SINGLE_STAT: + case CELL_TYPE_STACKED: + case CELL_TYPE_STEPPLOT: { colors = stringifyColorValues(lineColors) } } diff --git a/ui/src/dashboards/constants/index.js b/ui/src/dashboards/constants/index.js index 20404f3497..c04452de38 100644 --- a/ui/src/dashboards/constants/index.js +++ b/ui/src/dashboards/constants/index.js @@ -1,4 +1,5 @@ import {DEFAULT_TABLE_OPTIONS} from 'src/shared/constants/tableGraph' +import {CELL_TYPE_LINE, UNTITLED_CELL_LINE} from 'src/dashboards/graphics/graph' export const EMPTY_DASHBOARD = { id: 0, @@ -9,7 +10,7 @@ export const EMPTY_DASHBOARD = { y: 0, queries: [], name: 'Loading...', - type: 'single-stat', + type: CELL_TYPE_LINE, }, ], } @@ -19,8 +20,8 @@ export const NEW_DEFAULT_DASHBOARD_CELL = { y: 0, w: 4, h: 4, - name: 'Untitled Cell', - type: 'line', + name: UNTITLED_CELL_LINE, + type: CELL_TYPE_LINE, queries: [], tableOptions: DEFAULT_TABLE_OPTIONS, } diff --git a/ui/src/dashboards/utils/cellGetters.js b/ui/src/dashboards/utils/cellGetters.js index 9fa4aa4c8c..f31c4d6716 100644 --- a/ui/src/dashboards/utils/cellGetters.js +++ b/ui/src/dashboards/utils/cellGetters.js @@ -1,4 +1,14 @@ import {NEW_DEFAULT_DASHBOARD_CELL} from 'src/dashboards/constants' +import { + CELL_TYPE_LINE, + CELL_TYPE_STACKED, + CELL_TYPE_STEPPLOT, + CELL_TYPE_BAR, + CELL_TYPE_LINE_PLUS_SINGLE_STAT, + CELL_TYPE_SINGLE_STAT, + CELL_TYPE_GAUGE, + CELL_TYPE_TABLE, +} from 'src/dashboards/graphics/graph' const getMostCommonValue = values => { const results = values.reduce( @@ -20,10 +30,56 @@ const getMostCommonValue = values => { return results.mostCommonValue } +export const UNTITLED_CELL_LINE = 'Untitled Line Graph' +export const UNTITLED_CELL_STACKED = 'Untitled Stacked Graph' +export const UNTITLED_CELL_STEPPLOT = 'Untitled Step-Plot Graph' +export const UNTITLED_CELL_BAR = 'Untitled Bar Graph' +export const UNTITLED_CELL_LINE_PLUS_SINGLE_STAT = + 'Untitled Line Graph + Single Stat' +export const UNTITLED_CELL_SINGLE_STAT = 'Untitled Single Stat' +export const UNTITLED_CELL_GAUGE = 'Untitled Gauge' +export const UNTITLED_CELL_TABLE = 'Untitled Table' + +const getNewTypedCellName = type => { + switch (type) { + case CELL_TYPE_LINE: + return UNTITLED_CELL_LINE + case CELL_TYPE_STACKED: + return UNTITLED_CELL_STACKED + case CELL_TYPE_STEPPLOT: + return UNTITLED_CELL_STEPPLOT + case CELL_TYPE_BAR: + return UNTITLED_CELL_BAR + case CELL_TYPE_LINE_PLUS_SINGLE_STAT: + return UNTITLED_CELL_LINE_PLUS_SINGLE_STAT + case CELL_TYPE_SINGLE_STAT: + return UNTITLED_CELL_SINGLE_STAT + case CELL_TYPE_GAUGE: + return UNTITLED_CELL_GAUGE + case CELL_TYPE_TABLE: + return UNTITLED_CELL_TABLE + } +} + +export const isCellUntitled = cellName => { + return ( + cellName === UNTITLED_CELL_LINE || + cellName === UNTITLED_CELL_STACKED || + cellName === UNTITLED_CELL_STEPPLOT || + cellName === UNTITLED_CELL_BAR || + cellName === UNTITLED_CELL_LINE_PLUS_SINGLE_STAT || + cellName === UNTITLED_CELL_SINGLE_STAT || + cellName === UNTITLED_CELL_GAUGE || + cellName === UNTITLED_CELL_TABLE + ) +} + export const getNewDashboardCell = (dashboard, cellType) => { + const type = cellType || CELL_TYPE_LINE const typedCell = { ...NEW_DEFAULT_DASHBOARD_CELL, - type: cellType || 'line', + type, + name: getNewTypedCellName(type), } if (dashboard.cells.length === 0) { diff --git a/ui/src/shared/components/LayoutCellHeader.js b/ui/src/shared/components/LayoutCellHeader.js index 23ecd25602..668cc19f0c 100644 --- a/ui/src/shared/components/LayoutCellHeader.js +++ b/ui/src/shared/components/LayoutCellHeader.js @@ -1,10 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' -import {NEW_DEFAULT_DASHBOARD_CELL} from 'src/dashboards/constants/index' +import {isCellUntitled} from 'src/dashboards/utils/cellGetters' const LayoutCellHeader = ({isEditable, cellName}) => { - const cellNameIsDefault = cellName === NEW_DEFAULT_DASHBOARD_CELL.name - const headingClass = `dash-graph--heading ${ isEditable ? 'dash-graph--draggable dash-graph--heading-draggable' : '' }` @@ -13,7 +11,7 @@ const LayoutCellHeader = ({isEditable, cellName}) => {