Live Platform
  • Introduction
  • Release Notes
    • Live 3
      • 3.59.0
      • 3.58.0
      • 3.57.0
      • 3.56.0
      • 3.55.0
      • 3.54.0
      • 3.53.0
      • 3.52.0
      • 3.51.0
      • 3.50.0
      • 3.49.0
      • 3.48.0
      • 3.47.0
      • 3.46.0
      • 3.45.0
      • 3.44.0
      • 3.43.0
      • 3.42.0
      • 3.41.0
      • 3.40.0
      • 3.39.0
      • 3.38.0
      • 3.37.0
      • 3.36.0
      • 3.35.0
      • 3.34.0
      • 3.33.0
      • 3.32.0
      • 3.31.0
      • 3.30.0
      • 3.29.0
      • 3.28.0
      • 3.27.0
      • 3.26.0
      • 3.25.0
      • 3.24.0
      • 3.23.0
      • 3.22.0
      • 3.21.0
      • 3.20.0
      • 3.19.0
      • 3.18.0
      • 3.17.0
      • 3.16.0
      • 3.15.0
      • 3.14.0
      • 3.13.0
      • 3.12.0
      • 3.11.0
      • 3.10.0
      • 3.9.0
      • 3.8.0
      • 3.7.0
      • 3.6.0
      • 3.5.0
      • 3.4.0
      • 3.3.0
      • 3.2.0
      • 3.1.0
      • 3.0.0
    • Live 2
  • Articles
    • Creating an aggregation
    • Creating a pipe
  • Theoretical Background
    • Fundamentals
    • Key Advantages
  • Platform Architecture
    • Introduction
    • Queries
    • Glossary
  • Featured plugins
    • Annotations
    • Groovy support
    • Messenger
    • Microsoft Teams
    • MongoDB
    • MongoDB Timeseries
    • MongoDB Kit
    • Purge plugin
    • SQL
    • TCP Input
    • TimescaleDB
  • Data visualization
    • Pipes widgets
      • Temporal
      • Cartesian
      • Multi-value snapshot
      • Single-value snapshot
      • Tables
      • Heatmap
      • JSX Widgets
      • Lollipop
      • Histogram
      • State Timeline
      • Boxplot
    • Pipes modifiers on Pipes charts
  • Alerts and notifications
    • Pipes modifiers on rules
  • Pipes Queries
    • Introduction
    • Dynamic filters
    • Meta parameters
    • Reducer
      • Uniform compress
      • PIP
    • Storage Hints
    • Execution Context
    • Event flow modifiers
  • Developers
    • Plugins
    • Packages
    • Backend API
      • Lookup Tables
      • Extensions
      • Settings
      • Storage Providers
      • Web Services
      • Web Setup
      • Entity Audit
    • Web application
      • Services
        • Point service
        • Menu service
      • Browser Compatibility
      • Runtime modules
        • Core Javascript modules
        • Library modules
        • Adding modules to runtime
      • Localization (i18n)
      • Date formatting
      • Dashboard and Widgets
        • Widget API
        • Custom widget editors
        • Live Event Types
        • Live Widget Configuration
        • Live Widget Packaging
        • Widget Request Interceptors
      • React Contexts
        • Dashboard
        • Dashboard widget
      • Registering Home Page options
    • Python application
    • Subscribing to Live Events
  • Administration
    • Configuration
      • Home Page Customization
      • live.properties
    • Infrastructure Monitoring
    • Storage Monitoring
    • Queries Monitoring
    • Logs Monitoring
    • Data Purging
  • Features
    • Access Permission
    • Datasources
    • Export Dashboard
    • Partial Indexes
    • WebApp Metrics
    • Entity Audit
Powered by GitBook
On this page
  • Context value
  • Dashboard Actions
  • Usage
  • Other Dashboard Types

Was this helpful?

  1. Developers
  2. Web application
  3. React Contexts

Dashboard

The Dashboard context keeps the dashboard store state as well as its actions that changes the dashboard state.

Context value

type DashboardContext = {
    dashboard: LiveDashboard
    theme: LiveDashboardTheme
    params: {
        span: string,
        mode: LiveDashboardModes
    }
    highlightLock: boolean
    setHighlightLock: (lock: boolean) => void
    highlightedWidgetId?: number
    setHighlightedWidgetId: (id: number) => void
    actions: DashboardActions
    state: LiveDashboardState
}

Dashboard Actions

declare type DashboardActions = {
    fetchDashboard(id: string, restartSubscriber: boolean): void,
    setDashboard(data: Dashboard): void,
    saveDashboard(object: Dashboard): void,
    saveWidget(widget: LiveWidget, requestIndex: ?number, cb?: Function): void,
    changeMode(mode: $PropertyType<DashboardQueryParams, 'mode'>): void,
    duplicateWidget(widget: LiveWidget, cb?: Function): void,
    removeWidget(id: string): void,
    start(requestIndex: number): void,
    stop(requestIndex: string): void,
    setFilterConfig(config: FilterConfig): void,
    setInactiveFilterConfig(): void,
    setFilterValues(values: { [string]: string }): void,
    setTimespan(span: string, requestIndex: number, restart: boolean): void,
    updateSpan(action: 'apply' | void, span: string, requestIndex: number, percentage: number): void,
    setOrChangeTheme(theme: LiveDashboardTheme): void,
    attachOrDetach(requestIndex: number): void,
    detachedInViewMode(widgetId: string): void,
    resetDetachedInViewMode(widgetId: string): void,
    updateWidgetLayoutOptions(requestIndex: number, property: string, value: mixed): void,
    resizeLayout(): void,
    forceResizeLayout(): void,
    resetDefaults(): void,
    resizeWidgets(): void,
    disableTip(type: string): void,
    toggleWidgetError(requestIndex: number, event: Object): void,
    updateWidgetViewConfig(id: string, config: LiveWidgetConfig, sideEffects: { updateQuery: boolean }): void,
    restoreWidgetViewConfig(id: string): void,
    toggleWidgetConfigApprove(id: string, approved: boolean): void,
    updateWidgetUI(id: string, type: string, config: Object): void,
    updateUserLayout(layout: LayoutConfig): void,
    updateLayoutConfig(config: LayoutConfig): void,
    setDeviceType(device: Device): void,
    applyLayoutTo(allOrCurrent: 'all' | 'current'): void,
    setHiddenWidgets(hiddenWidgets: number[]): void,
    updateHiddenWidgets(id: string): void,
    hideLayoutAlert(): void,
    changeSpanPickerConfig(id: string, type: string, config: Object): void
}

Usage

import React, { useContext } from 'react'
import { DashboardContext } from 'live/context/dashboard'

export default () => {
    const context = useContext(DashboardContext)

    function updateSpan() {
        context.actions.updateSpan('apply', {
            start: 1,
            end: 100
        }, 0)
    }
    return <a onClick={updateSpan}>change span</a>
}

Warning: The dashboard context won't be available in the widget editor. It'll only be available in the dashboard

Other Dashboard Types

declare type LiveDashboardTheme = 'light' | 'dark'
declare type LiveDashboardModes = 'view' | 'edit' | 'fullscreen'
declare type LiveDashboardState = {
    object: LiveDashboard,
    warning?: string,
    canEdit: boolean,
    spanLabel: string,
    running: boolean,
    storage: {
        items: { [id: string]: any },
        keys: { [id: string]: any }
    },
    params: {
        span: string,
        mode: LiveDashboardModes
    },
    filterValues: LiveFilterValues,
    currentFilterValues: LiveFilterValues,
    progress?: number,
    progressTotal?: number,
    progressETA?: number,
    progressObj: {
        current: number,
        total: number,
        estimate: boolean,
        rate: number,
        message: string
    },
    loading: boolean,
    globalLoading: boolean,
    selectSpan: boolean,
    lastUpdate: number,
    showLayoutAlert: boolean,
    showFilterAlert: boolean,
    layoutPreferencesChanged: boolean,
    savingDashboard: boolean,
    currentSpan: string, // same as params.span
    currentDevice: LiveDeviceType,
    deviceEditType: LiveDeviceType,
    applyLayoutTo: 'all' | 'current'
}
PreviousReact ContextsNextDashboard widget

Last updated 4 years ago

Was this helpful?