Schema: Fix dimension schemas (#67935)

This commit is contained in:
Ryan McKinley 2023-05-05 12:16:31 -07:00 committed by GitHub
parent 0ce7f7eaf4
commit 854d497f94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 174 additions and 149 deletions

View File

@ -2652,8 +2652,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
"public/app/features/dimensions/types.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
"public/app/features/dimensions/utils.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],

View File

@ -52,19 +52,39 @@ export interface DataQuery {
}
export interface BaseDimensionConfig {
/**
* fixed: T -- will be added by each element
*/
field?: string;
fixed: (string | number);
}
export enum ScaleDimensionMode {
Linear = 'linear',
Quad = 'quad',
}
export interface ScaleDimensionConfig extends BaseDimensionConfig {
fixed?: number;
max: number;
min: number;
mode?: ScaleDimensionMode; // | *"linear"
}
/**
* This is actually an empty interface used mainly for naming?
*/
export interface ColorDimensionConfig extends BaseDimensionConfig {}
export interface ColorDimensionConfig extends BaseDimensionConfig {
fixed?: string; // color value
}
export enum ScalarDimensionMode {
Clamped = 'clamped',
Mod = 'mod',
}
export interface ScalarDimensionConfig extends BaseDimensionConfig {
fixed?: number;
max: number;
min: number;
mode?: ScalarDimensionMode;
}
export enum TextDimensionMode {
Field = 'field',
@ -72,6 +92,17 @@ export enum TextDimensionMode {
Template = 'template',
}
export interface TextDimensionConfig extends BaseDimensionConfig {
fixed?: string;
mode: TextDimensionMode;
}
export enum ResourceDimensionMode {
Field = 'field',
Fixed = 'fixed',
Mapping = 'mapping',
}
export interface MapLayerOptions {
/**
* Custom options depending on the type
@ -785,8 +816,12 @@ export interface DataSourceRef {
uid?: string;
}
export interface TextDimensionConfig extends BaseDimensionConfig {
mode: TextDimensionMode;
/**
* Links to a resource (image/svg path)
*/
export interface ResourceDimensionConfig extends BaseDimensionConfig {
fixed?: string;
mode: ResourceDimensionMode;
}
export interface FrameGeometrySource {

View File

@ -2,19 +2,32 @@ package common
BaseDimensionConfig: {
field?: string
fixed: string | number
// fixed: T -- will be added by each element
}@cuetsy(kind="interface")
ScaleDimensionMode: "linear" | "quad" @cuetsy(kind="enum")
ScaleDimensionConfig: {
BaseDimensionConfig
min: int32
max: int32
min: number
max: number
fixed?: number
mode?: ScaleDimensionMode // | *"linear"
}@cuetsy(kind="interface")
// This is actually an empty interface used mainly for naming?
ColorDimensionConfig: {
BaseDimensionConfig
_empty: _
fixed?: string // color value
}@cuetsy(kind="interface")
ScalarDimensionMode: "mod" | "clamped" @cuetsy(kind="enum")
ScalarDimensionConfig: {
BaseDimensionConfig
min: number
max: number
fixed?: number
mode?: ScalarDimensionMode
}@cuetsy(kind="interface")
TextDimensionMode: "fixed" | "field" | "template" @cuetsy(kind="enum")
@ -22,4 +35,15 @@ TextDimensionMode: "fixed" | "field" | "template" @cuetsy(kind="enum")
TextDimensionConfig: {
BaseDimensionConfig
mode: TextDimensionMode
fixed?: string
}@cuetsy(kind="interface")
ResourceDimensionMode: "fixed" | "field" | "mapping" @cuetsy(kind="enum")
// Links to a resource (image/svg path)
ResourceDimensionConfig: {
BaseDimensionConfig
mode: ResourceDimensionMode
fixed?: string
}@cuetsy(kind="interface")

View File

@ -23,10 +23,18 @@ export interface BaseDimensionConfig<T = string | number> extends Omit<raw.BaseD
export interface ScaleDimensionConfig extends BaseDimensionConfig<number>, Omit<raw.ScaleDimensionConfig, 'fixed'> {}
export interface ScalarDimensionConfig extends BaseDimensionConfig<number>, Omit<raw.ScalarDimensionConfig, 'fixed'> {}
export interface TextDimensionConfig extends BaseDimensionConfig<string>, Omit<raw.TextDimensionConfig, 'fixed'> {}
export interface ColorDimensionConfig extends BaseDimensionConfig<string>, Omit<raw.ColorDimensionConfig, 'fixed'> {}
export interface ColorDimensionConfig extends BaseDimensionConfig<string>, Omit<raw.ColorDimensionConfig, 'fixed'> {}
export interface ResourceDimensionConfig
extends BaseDimensionConfig<string>,
Omit<raw.ResourceDimensionConfig, 'fixed'> {}
export * from '../common/common.gen';
// TODO remove when https://github.com/grafana/cuetsy/issues/74 is fixed

View File

@ -2,9 +2,10 @@ import { ComponentType } from 'react';
import { RegistryItem } from '@grafana/data';
import { PanelOptionsSupplier } from '@grafana/data/src/panel/PanelPlugin';
import { ColorDimensionConfig, ScaleDimensionConfig } from '@grafana/schema';
import { config } from 'app/core/config';
import { DimensionContext, ColorDimensionConfig, ScaleDimensionConfig } from '../dimensions';
import { DimensionContext } from '../dimensions';
import { BackgroundConfig, Constraint, LineConfig, Placement } from './types';

View File

@ -1,10 +1,10 @@
import React, { PureComponent } from 'react';
import { PluginState } from '@grafana/data/src';
import { TextDimensionConfig } from '@grafana/schema';
import { Button } from '@grafana/ui';
import { DimensionContext } from 'app/features/dimensions/context';
import { TextDimensionEditor } from 'app/features/dimensions/editors/TextDimensionEditor';
import { TextDimensionConfig } from 'app/features/dimensions/types';
import { APIEditor, APIEditorConfig, callApi } from 'app/plugins/panel/canvas/editor/APIEditor';
import { CanvasElementItem, CanvasElementProps, defaultBgColor } from '../element';

View File

@ -2,8 +2,9 @@ import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ScalarDimensionConfig } from '@grafana/schema';
import { useStyles2 } from '@grafana/ui';
import { DimensionContext, ScalarDimensionConfig } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions';
import { ScalarDimensionEditor } from 'app/features/dimensions/editors';
import { CanvasElementItem, CanvasElementProps, defaultBgColor } from '../element';

View File

@ -2,8 +2,9 @@ import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ScalarDimensionConfig } from '@grafana/schema';
import { useStyles2 } from '@grafana/ui';
import { DimensionContext, ScalarDimensionConfig } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions';
import { ScalarDimensionEditor } from 'app/features/dimensions/editors';
import { CanvasElementItem, CanvasElementProps, defaultBgColor } from '../element';

View File

@ -2,8 +2,9 @@ import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ScalarDimensionConfig } from '@grafana/schema';
import { useStyles2 } from '@grafana/ui';
import { DimensionContext, ScalarDimensionConfig } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions';
import { ScalarDimensionEditor } from 'app/features/dimensions/editors';
import { CanvasElementItem, CanvasElementProps, defaultBgColor } from '../element';

View File

@ -2,13 +2,9 @@ import { css } from '@emotion/css';
import { isString } from 'lodash';
import React, { CSSProperties } from 'react';
import { ColorDimensionConfig, ResourceDimensionConfig, ResourceDimensionMode } from '@grafana/schema';
import { SanitizedSVG } from 'app/core/components/SVG/SanitizedSVG';
import {
ColorDimensionConfig,
ResourceDimensionConfig,
ResourceDimensionMode,
getPublicOrAbsoluteUrl,
} from 'app/features/dimensions';
import { getPublicOrAbsoluteUrl } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions/context';
import { ColorDimensionEditor, ResourceDimensionEditor } from 'app/features/dimensions/editors';
import { APIEditorConfig, callApi } from 'app/plugins/panel/canvas/editor/APIEditor';

View File

@ -4,9 +4,9 @@ import { useObservable } from 'react-use';
import { of } from 'rxjs';
import { DataFrame, FieldNamePickerConfigSettings, GrafanaTheme2, StandardEditorsRegistryItem } from '@grafana/data';
import { TextDimensionMode } from '@grafana/schema';
import { usePanelContext, useStyles2 } from '@grafana/ui';
import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker';
import { TextDimensionMode } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions/context';
import { ColorDimensionEditor } from 'app/features/dimensions/editors/ColorDimensionEditor';
import { TextDimensionEditor } from 'app/features/dimensions/editors/TextDimensionEditor';

View File

@ -2,8 +2,9 @@ import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ColorDimensionConfig, ScalarDimensionConfig } from '@grafana/schema';
import config from 'app/core/config';
import { ColorDimensionConfig, DimensionContext, ScalarDimensionConfig } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions';
import { ColorDimensionEditor, ScalarDimensionEditor } from 'app/features/dimensions/editors';
import { CanvasElementItem, CanvasElementProps } from '../../element';

View File

@ -2,8 +2,9 @@ import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ScalarDimensionConfig } from '@grafana/schema';
import { useStyles2 } from '@grafana/ui';
import { DimensionContext, ScalarDimensionConfig } from 'app/features/dimensions';
import { DimensionContext } from 'app/features/dimensions';
import { ScalarDimensionEditor } from 'app/features/dimensions/editors';
import { CanvasElementItem, CanvasElementProps, defaultBgColor } from '../element';

View File

@ -7,17 +7,17 @@ import Selecto from 'selecto';
import { AppEvents, GrafanaTheme2, PanelData } from '@grafana/data';
import { locationService } from '@grafana/runtime/src';
import { Portal, stylesFactory } from '@grafana/ui';
import { config } from 'app/core/config';
import { CanvasFrameOptions, DEFAULT_CANVAS_ELEMENT_CONFIG } from 'app/features/canvas';
import {
ColorDimensionConfig,
DimensionContext,
ResourceDimensionConfig,
ScalarDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
} from 'app/features/dimensions';
} from '@grafana/schema';
import { Portal, stylesFactory } from '@grafana/ui';
import { config } from 'app/core/config';
import { CanvasFrameOptions, DEFAULT_CANVAS_ELEMENT_CONFIG } from 'app/features/canvas';
import { DimensionContext } from 'app/features/dimensions';
import {
getColorDimensionFromData,
getResourceDimensionFromData,

View File

@ -1,5 +1,5 @@
import { LinkModel } from '@grafana/data/src';
import { ColorDimensionConfig, ResourceDimensionConfig, TextDimensionConfig } from 'app/features/dimensions/types';
import { ColorDimensionConfig, ResourceDimensionConfig, TextDimensionConfig } from '@grafana/schema';
export interface Placement {
top?: number;

View File

@ -6,8 +6,9 @@ import {
GrafanaTheme2,
getFieldConfigWithMinMax,
} from '@grafana/data';
import { ColorDimensionConfig } from '@grafana/schema';
import { ColorDimensionConfig, DimensionSupplier } from './types';
import { DimensionSupplier } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------

View File

@ -1,13 +1,13 @@
import { PanelData } from '@grafana/data/src';
import {
ColorDimensionConfig,
DimensionSupplier,
ResourceDimensionConfig,
ScalarDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
} from './types';
} from '@grafana/schema';
import { DimensionSupplier } from './types';
export interface DimensionContext {
getColor(color: ColorDimensionConfig): DimensionSupplier<string>;

View File

@ -2,11 +2,10 @@ import { css } from '@emotion/css';
import React, { useCallback } from 'react';
import { GrafanaTheme2, SelectableValue, StandardEditorProps } from '@grafana/data';
import { ColorDimensionConfig } from '@grafana/schema';
import { Select, ColorPicker, useStyles2 } from '@grafana/ui';
import { useFieldDisplayNames, useSelectOptions } from '@grafana/ui/src/components/MatchersUI/utils';
import { ColorDimensionConfig } from '../types';
const fixedColorOption: SelectableValue<string> = {
label: 'Fixed color',
value: '_____fixed_____',

View File

@ -1,17 +1,12 @@
import React, { useCallback } from 'react';
import { FieldNamePickerConfigSettings, StandardEditorProps, StandardEditorsRegistryItem } from '@grafana/data';
import { ResourceDimensionConfig, ResourceDimensionMode } from '@grafana/schema';
import { InlineField, InlineFieldRow, RadioButtonGroup } from '@grafana/ui';
import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker';
import { getPublicOrAbsoluteUrl, ResourceFolderName } from '..';
import {
MediaType,
ResourceDimensionConfig,
ResourceDimensionMode,
ResourceDimensionOptions,
ResourcePickerSize,
} from '../types';
import { MediaType, ResourceDimensionOptions, ResourcePickerSize } from '../types';
import { ResourcePicker } from './ResourcePicker';

View File

@ -2,11 +2,12 @@ import { css } from '@emotion/css';
import React, { useCallback } from 'react';
import { FieldType, GrafanaTheme2, SelectableValue, StandardEditorProps } from '@grafana/data';
import { ScalarDimensionMode, ScalarDimensionConfig } from '@grafana/schema';
import { InlineField, InlineFieldRow, RadioButtonGroup, Select, useStyles2 } from '@grafana/ui';
import { useFieldDisplayNames, useSelectOptions } from '@grafana/ui/src/components/MatchersUI/utils';
import { NumberInput } from 'app/core/components/OptionsUI/NumberInput';
import { ScalarDimensionConfig, ScalarDimensionMode, ScalarDimensionOptions } from '../types';
import { ScalarDimensionOptions } from '../types';
const fixedValueOption: SelectableValue<string> = {
label: 'Fixed value',

View File

@ -2,12 +2,13 @@ import { css } from '@emotion/css';
import React, { useCallback, useMemo } from 'react';
import { GrafanaTheme2, SelectableValue, StandardEditorProps } from '@grafana/data';
import { ScaleDimensionConfig } from '@grafana/schema';
import { InlineField, InlineFieldRow, Select, useStyles2 } from '@grafana/ui';
import { useFieldDisplayNames, useSelectOptions } from '@grafana/ui/src/components/MatchersUI/utils';
import { NumberInput } from 'app/core/components/OptionsUI/NumberInput';
import { validateScaleOptions, validateScaleConfig } from '../scale';
import { ScaleDimensionConfig, ScaleDimensionOptions } from '../types';
import { ScaleDimensionOptions } from '../types';
const fixedValueOption: SelectableValue<string> = {
label: 'Fixed value',

View File

@ -6,11 +6,12 @@ import {
StandardEditorsRegistryItem,
StringFieldConfigSettings,
} from '@grafana/data';
import { TextDimensionConfig, TextDimensionMode } from '@grafana/schema';
import { Button, InlineField, InlineFieldRow, RadioButtonGroup } from '@grafana/ui';
import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker';
import { StringValueEditor } from 'app/core/components/OptionsUI/string';
import { TextDimensionConfig, TextDimensionMode, TextDimensionOptions } from '../types';
import { TextDimensionOptions } from '../types';
const textOptions = [
{ label: 'Fixed', value: TextDimensionMode.Fixed, description: 'Fixed value' },

View File

@ -1,5 +1,6 @@
import { ResourceDimensionMode } from '@grafana/schema';
import { getResourceDimension } from './resource';
import { ResourceDimensionMode } from './types';
describe('getResourceDimension', () => {
const publicPath = '/public/';

View File

@ -1,6 +1,7 @@
import { DataFrame } from '@grafana/data';
import { ResourceDimensionConfig, ResourceDimensionMode } from '@grafana/schema';
import { DimensionSupplier, ResourceDimensionConfig, ResourceDimensionMode } from './types';
import { DimensionSupplier } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------

View File

@ -1,9 +1,8 @@
import { DataFrame, FieldType } from '@grafana/data';
import { ScalarDimensionMode } from '@grafana/schema';
import { getScalarDimension } from './scalar';
import { ScalarDimensionMode } from '.';
describe('scalar dimensions', () => {
it('handles string field', () => {
const values = ['-720', '10', '540', '90', '-210'];

View File

@ -1,6 +1,7 @@
import { DataFrame, Field } from '@grafana/data';
import { ScalarDimensionConfig, ScalarDimensionMode } from '@grafana/schema';
import { DimensionSupplier, ScalarDimensionConfig, ScalarDimensionMode } from './types';
import { DimensionSupplier } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------

View File

@ -1,11 +1,10 @@
import { DataFrame, Field } from '@grafana/data';
import { getMinMaxAndDelta } from '@grafana/data/src/field/scale';
import { ScaleDimensionConfig, ScaleDimensionMode } from '@grafana/schema';
import { ScaleDimensionConfig, DimensionSupplier, ScaleDimensionOptions } from './types';
import { DimensionSupplier, ScaleDimensionOptions } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
import { ScaleDimensionMode } from '.';
//---------------------------------------------------------
// Scale dimension
//---------------------------------------------------------
@ -43,7 +42,7 @@ export function getScaledDimensionForField(
}
let scaled = (percent: number) => config.min + percent * delta;
if (mode === ScaleDimensionMode.Quadratic) {
if (mode === ScaleDimensionMode.Quad) {
const maxArea = Math.PI * (config.max / 2) ** 2;
const minArea = Math.PI * (config.min / 2) ** 2;
const deltaArea = maxArea - minArea;

View File

@ -1,6 +1,7 @@
import { DataFrame, Field, FieldType, formattedValueToString } from '@grafana/data';
import { TextDimensionConfig, TextDimensionMode } from '@grafana/schema';
import { DimensionSupplier, TextDimensionConfig, TextDimensionMode } from './types';
import { DimensionSupplier } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------

View File

@ -1,9 +1,5 @@
import { Field } from '@grafana/data';
export interface BaseDimensionConfig<T = any> {
fixed: T;
field?: string;
}
import { TextDimensionConfig, TextDimensionMode } from '@grafana/schema';
export interface DimensionSupplier<T = any> {
/**
@ -32,17 +28,6 @@ export interface DimensionSupplier<T = any> {
get: (index: number) => T;
}
export enum ScaleDimensionMode {
Linear = 'linear',
Quadratic = 'quad',
}
/** This will map the field value% to a scaled value within the range */
export interface ScaleDimensionConfig extends BaseDimensionConfig<number> {
min: number;
max: number;
}
/** Places that use the value */
export interface ScaleDimensionOptions {
min: number;
@ -51,16 +36,6 @@ export interface ScaleDimensionOptions {
hideRange?: boolean; // false
}
export enum ScalarDimensionMode {
Mod = 'mod',
Clamped = 'clamped',
}
export interface ScalarDimensionConfig extends BaseDimensionConfig<number> {
mode: ScalarDimensionMode;
min: number;
max: number;
}
export interface ScalarDimensionOptions {
min: number;
max: number;
@ -70,25 +45,12 @@ export interface TextDimensionOptions {
// anything?
}
export enum TextDimensionMode {
Fixed = 'fixed',
Field = 'field',
Template = 'template',
}
export interface TextDimensionConfig extends BaseDimensionConfig<string> {
mode: TextDimensionMode;
}
export const defaultTextConfig: TextDimensionConfig = Object.freeze({
fixed: '',
mode: TextDimensionMode.Field,
field: '',
});
/** Use the color value from field configs */
export interface ColorDimensionConfig extends BaseDimensionConfig<string> {}
/** Places that use the value */
export interface ResourceDimensionOptions {
resourceType: MediaType;
@ -99,18 +61,6 @@ export interface ResourceDimensionOptions {
showSourceRadio?: boolean;
}
export enum ResourceDimensionMode {
Fixed = 'fixed',
Field = 'field',
Mapping = 'mapping',
// pattern? uses field in the pattern
}
/** Get the path to a resource (URL) */
export interface ResourceDimensionConfig extends BaseDimensionConfig<string> {
mode: ResourceDimensionMode;
}
export enum ResourceFolderName {
Icon = 'img/icons/unicons',
IOT = 'img/icons/iot',

View File

@ -1,16 +1,18 @@
import { DataFrame, PanelData, Field, getFieldDisplayName, ReducerID } from '@grafana/data';
import { config } from '@grafana/runtime';
import {
ResourceDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
ColorDimensionConfig,
ScalarDimensionConfig,
} from '@grafana/schema';
import {
getColorDimension,
getScaledDimension,
getTextDimension,
getResourceDimension,
ColorDimensionConfig,
DimensionSupplier,
ResourceDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
ScalarDimensionConfig,
} from 'app/features/dimensions';
import { getScalarDimension } from './scalar';

View File

@ -2,10 +2,11 @@ import { css } from '@emotion/css';
import React, { useState } from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { ResourceDimensionMode } from '@grafana/schema';
import { Portal, useTheme2 } from '@grafana/ui';
import { Scene } from 'app/features/canvas/runtime/scene';
import { MediaType, ResourceDimensionMode, ResourceFolderName } from '../../../features/dimensions';
import { MediaType, ResourceFolderName } from '../../../features/dimensions';
import { ResourcePickerPopover } from '../../../features/dimensions/editors/ResourcePickerPopover';
import { AnchorPoint } from './types';

View File

@ -4,6 +4,13 @@ import { useObservable } from 'react-use';
import { Observable, of } from 'rxjs';
import { FieldConfigPropertyItem, StandardEditorProps, StandardEditorsRegistryItem } from '@grafana/data';
import {
ScaleDimensionConfig,
ResourceDimensionConfig,
ColorDimensionConfig,
TextDimensionConfig,
ScalarDimensionConfig,
} from '@grafana/schema';
import {
ColorPicker,
Field,
@ -22,15 +29,7 @@ import {
ScalarDimensionEditor,
TextDimensionEditor,
} from 'app/features/dimensions/editors';
import {
ScaleDimensionConfig,
ResourceDimensionConfig,
ColorDimensionConfig,
ResourceFolderName,
TextDimensionConfig,
defaultTextConfig,
ScalarDimensionConfig,
} from 'app/features/dimensions/types';
import { ResourceFolderName, defaultTextConfig, MediaType } from 'app/features/dimensions/types';
import { defaultStyleConfig, GeometryTypeId, StyleConfig, TextAlignment, TextBaseline } from '../style/types';
import { styleUsesText } from '../style/utils';
@ -197,7 +196,7 @@ export const StyleEditor = ({ value, context, onChange, item }: Props) => {
item={
{
settings: {
resourceType: 'icon',
resourceType: MediaType.Icon,
folderName: ResourceFolderName.Marker,
placeholderText: hasTextLabel ? 'Select a symbol' : 'Select a symbol or add a text label',
placeholderValue: defaultStyleConfig.symbol.fixed,

View File

@ -10,10 +10,11 @@ import {
import Map from 'ol/Map';
import * as layer from 'ol/layer';
import { getLocationMatchers } from 'app/features/geo/utils/location';
import { ScaleDimensionConfig, getScaledDimension } from 'app/features/dimensions';
import { getScaledDimension } from 'app/features/dimensions';
import { ScaleDimensionEditor } from 'app/features/dimensions/editors';
import { FrameVectorSource } from 'app/features/geo/utils/frameVectorSource';
import { Point } from 'ol/geom';
import { ScaleDimensionConfig } from '@grafana/schema';
// Configuration options for Heatmap overlays
export interface HeatmapConfig {

View File

@ -11,7 +11,7 @@ import {
DataTransformerConfig,
DataTransformerID,
} from '@grafana/data';
import { ResourceDimensionMode } from 'app/features/dimensions';
import { ResourceDimensionMode } from '@grafana/schema';
import { defaultMarkersConfig, MarkersConfig } from './layers/data/markersLayer';
import { getMarkerAsPath } from './style/markers';

View File

@ -2,14 +2,14 @@ import { Style } from 'ol/style';
import {
ColorDimensionConfig,
DimensionSupplier,
ResourceDimensionConfig,
ResourceDimensionMode,
ScaleDimensionConfig,
ScalarDimensionConfig,
ScalarDimensionMode,
TextDimensionConfig,
} from 'app/features/dimensions';
} from '@grafana/schema';
import { DimensionSupplier } from 'app/features/dimensions';
export enum GeometryTypeId {
Point = 'point',

View File

@ -1,4 +1,4 @@
import { ResourceDimensionMode } from 'app/features/dimensions';
import { ResourceDimensionMode } from '@grafana/schema';
import { StyleConfig } from './types';
import { getStyleConfigState } from './utils';

View File

@ -1,5 +1,5 @@
import { config } from '@grafana/runtime';
import { TextDimensionMode } from 'app/features/dimensions';
import { TextDimensionMode } from '@grafana/schema';
import { getMarkerMaker } from './markers';
import { defaultStyleConfig, StyleConfig, StyleConfigFields, StyleConfigState } from './types';

View File

@ -1,21 +1,23 @@
import React, { Component } from 'react';
import { PanelProps } from '@grafana/data';
import {
ColorDimensionConfig,
ResourceDimensionConfig,
ScalarDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
} from '@grafana/schema';
import { HorizontalConstraint, VerticalConstraint } from 'app/features/canvas';
import { iconItem } from 'app/features/canvas/elements/icon';
import { ElementState } from 'app/features/canvas/runtime/element';
import {
ColorDimensionConfig,
DimensionContext,
getColorDimensionFromData,
getResourceDimensionFromData,
getScalarDimensionFromData,
getScaleDimensionFromData,
getTextDimensionFromData,
ResourceDimensionConfig,
ScalarDimensionConfig,
ScaleDimensionConfig,
TextDimensionConfig,
} from 'app/features/dimensions';
import { PanelOptions } from './models.gen';

View File

@ -5,7 +5,7 @@
import { CanvasElementOptions } from 'app/features/canvas';
import { IconConfig } from 'app/features/canvas/elements/icon';
import { ResourceDimensionMode } from 'app/features/dimensions';
import { ResourceDimensionMode } from '@grafana/schema';
export interface PanelOptions {
root: Omit<CanvasElementOptions<IconConfig>, 'type' | 'name'>; // type is forced

View File

@ -6,12 +6,12 @@ import {
HideableFieldConfig,
AxisConfig,
AxisPlacement,
} from '@grafana/schema';
import {
ColorDimensionConfig,
DimensionSupplier,
ScaleDimensionConfig,
TextDimensionConfig,
} from '@grafana/schema';
import {
DimensionSupplier,
} from 'app/features/dimensions';
// export enum ScatterLineMode {

View File

@ -13,15 +13,17 @@ import {
} from '@grafana/data';
import { alpha } from '@grafana/data/src/themes/colorManipulator';
import { config } from '@grafana/runtime';
import { AxisPlacement, ScaleDirection, ScaleOrientation, VisibilityMode } from '@grafana/schema';
import { UPlotConfigBuilder } from '@grafana/ui';
import { FacetedData, FacetSeries } from '@grafana/ui/src/components/uPlot/types';
import {
findFieldIndex,
getScaledDimensionForField,
AxisPlacement,
ScaleDirection,
ScaleOrientation,
VisibilityMode,
ScaleDimensionConfig,
ScaleDimensionMode,
} from 'app/features/dimensions';
} from '@grafana/schema';
import { UPlotConfigBuilder } from '@grafana/ui';
import { FacetedData, FacetSeries } from '@grafana/ui/src/components/uPlot/types';
import { findFieldIndex, getScaledDimensionForField } from 'app/features/dimensions';
import { pointWithin, Quadtree, Rect } from '../barchart/quadtree';
@ -142,7 +144,7 @@ function getScatterSeries(
const s = getScaledDimensionForField(
frame.fields[dims.pointSizeIndex!],
dims.pointSizeConfig!,
ScaleDimensionMode.Quadratic
ScaleDimensionMode.Quad
);
const vals = Array(frame.length);
for (let i = 0; i < frame.length; i++) {