Skip to content

Dashboard Developer Notes

This document is generated from dashboard-related source files. It summarizes evidence-backed user behavior, toolbar actions, dialogs, state handling, and widget configuration structure.

  • Scope: user_dashboards
  • Generated At: 2026-05-14T14:21:48.447Z
  • Files Scanned: app=3, dashboards=160, shared=0, api=15, backend=48
  • Dashboards (/dashboards) [confidence: high] [source: app]
  • Dashboards (/dashboards) [confidence: high] [source: dashboards]

Controls

  • Add Widget [button] in toolbar [confidence: high] [source: dashboards]
  • Save [button] in toolbar [confidence: high] [source: dashboards]
  • Overview [tab] in toolbar [confidence: high] [source: dashboards]
  • Default [tab] in toolbar [confidence: high] [source: dashboards]
  • Create Dashboard [button] in dashboard_list [confidence: high] [source: dashboards]

States

  • Dashboard state: Overview | Default [confidence: high] [source: dashboards]

Dialogs

  • Widget configuration [widget_config] | actions: Save, Cancel [confidence: high] [source: dashboards]
  • Create Dashboard [dashboard_config] | actions: Save [confidence: high] [source: dashboards]

Flows

  • Add widget: Click Add Widget. -> The widget configuration dialog opens. -> Save the changes. [confidence: high]
  • Create dashboard: Open the Dashboards area. -> Click Create Dashboard. -> Enter the dashboard details. -> Save the dashboard. [confidence: high]
  • Save dashboard changes: Make changes to the dashboard. -> Click Save. [confidence: high]
  • Switch dashboard state: Use the dashboard state options Overview and Default. -> Switch between the available dashboard states. [confidence: high]

Constraints

  • Dashboard changes require an explicit save action when editing is available. [save_required] [confidence: high] [source: dashboards]

Tables

  • dashboard-list-table: Name, Created [confidence: high] [source: dashboards]

Forms

  • create-dashboard-form: Name, Type [confidence: high] [source: dashboards]

Widget Configs

  • Alarm Summary Widget: Title, Status, Severity, Acknowledgement State, Limit, Compact, Show Severity Breakdown | defaults: Title="Alarm Summary", Status=["ACTIVE"], Severity=["CRITICAL", "MAJOR", "MINOR", "WARNING"], Acknowledgement State="ALL", Limit=200, Compact=true, Show Severity Breakdown=true [confidence: high] [source: dashboards]
  • Alarm Widget: Status, Severity, Acknowledgement State, Show Counters, Auto Refresh, Refresh Interval, Limit, Page Size, Visible Columns, Sticky Active First, Critical Sound, Browser Notification, Device Filter Mode, Device Type, Target State ID, Device Type Options, State Options | defaults: Status=["ACTIVE"], Severity=["CRITICAL", "MAJOR", "MINOR", "WARNING"], Acknowledgement State="ALL", Show Counters=true, Auto Refresh=true, Refresh Interval=5000, Limit=50, Page Size=10, Visible Columns=DEFAULT_VISIBLE_COLUMNS, Sticky Active First=true, Critical Sound=false, Browser Notification=false, Device Filter Mode="ALL", Device Type="", Target State ID="default" [confidence: high] [source: dashboards]
  • Analog Meter Widget: Alias, Devices, Selected Device Ids, Items, Title, Decimals, Columns, Compact, Show Title, Show Device Name, Show Key, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Title="Analog Meter", Decimals=1, Columns=2, Compact=true, Show Title=true, Show Device Name=true, Show Key=true [confidence: high] [source: dashboards]
  • Anomaly Insights Widget: Alias, Devices, Selected Device Ids, Key, Title, Above, Below, Stale After MS, Show Latest Value, Show Last Seen, Show Only Issues, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Key="", Title="Anomaly Insights", Above=null, Below=null, Stale After MS=null, Show Latest Value=true, Show Last Seen=true [confidence: high] [source: dashboards]
  • Asset Admin Table Widget: Title, Asset Type, Relation Filter, Search Text, Page Size, Show Header, Show Search, Show Status, Show Type, Show Last Activity, Show Devices Preview, Open ON Row Click, Next Patch | defaults: Title="Assets", Asset Type="", Relation Filter="all", Search Text="", Page Size=8, Show Header=true, Show Search=true, Show Status=true, Show Type=true, Show Last Activity=true, Show Devices Preview=true, Open ON Row Click=true [confidence: high] [source: dashboards]
  • Attribute Control Card Widget: Devices, Attribute Keys, Alias, Selected Device ID [confidence: high] [source: dashboards]
  • Bar Chart Widget: Alias, Devices, Selected Device Ids, Items, Title, Layout, Decimals, Bar Size, Show Grid, Show Title, Global Keys, Loading Devices, Loading Keys, Device Ids, Y Axis Min, Next Patch, Y Axis Max | defaults: Alias=null, Selected Device Ids=[], Title="Bar Chart", Layout="vertical", Decimals=2, Bar Size=28, Show Grid=true, Show Title=true [confidence: high] [source: dashboards]
  • Battery Indicator Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Charging Key, Unit, Decimals, Value Mode, Layout Mode, Min Voltage, Max Voltage, Critical Threshold, Low Threshold, Medium Threshold, Show Device Name, Show Metric Name, Show Timestamp, Show Status Text, Show Charging, Compact, Timestamp Mode, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Battery", Show Title=true, Key="level", Charging Key="", Unit="%", Decimals=1, Min Voltage=3.0, Max Voltage=4.2, Critical Threshold=15, Low Threshold=30, Medium Threshold=60, Show Device Name=true, Show Metric Name=true, Show Timestamp=true, Show Status Text=true, Show Charging=true, Compact=true [confidence: high] [source: dashboards]
  • Code Widget: Alias, Devices, Selected Device Ids, Title, Code Type, Source Mode, Telemetry Key, Telemetry Keys Text, Template, Static Value, QR Size, Barcode Height, Barcode Font Size, Compact, Show Header, Show Device Name, Show Encoded Text, Show Key Label, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Telemetry Keys | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Code Type="qr", Source Mode="template", Telemetry Key="", Template="{deviceId}", Static Value="", QR Size=132) || 132, 240, Barcode Height=56) || 56, 120, Barcode Font Size=11) || 11, 20, Compact=true, Show Header=true, Show Device Name=true, Show Encoded Text=true [confidence: high] [source: dashboards]
  • Delta Comparison Widget: Alias, Devices, Selected Device Ids, Key, Title, Aggregation, Decimals, Show Percent, Good Direction, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Key="", Title="Delta Comparison", Aggregation="avg", Decimals=2, Show Percent=true, Good Direction="neutral" [confidence: high] [source: dashboards]
  • Device Alarm Widget: Title, Alias, Limit, Status, Severity, Acknowledgement State, Devices, Selected Device Ids, Loading Devices, Device Ids | defaults: Title="", Alias=null, Limit=10, Status=DEFAULT_STATUS, Severity=DEFAULT_SEVERITY, Acknowledgement State="ALL", Selected Device Ids=[] [confidence: high] [source: dashboards]
  • Device Count Widget: Title, Subtitle, Status Filter, Device Type, Target Dashboard ID, Target State ID, Show Subtitle, Show Border, Device Types, Loading Types, Dashboard Options, State Options, Loading Dashboards, Next Patch | defaults: Title="Devices", Subtitle="", Status Filter="all", Device Type="", Target Dashboard ID="", Target State ID="default", Show Subtitle=true, Show Border=true [confidence: high] [source: dashboards]
  • Device Data Card Widget: Devices, Loading Suggestions, Telemetry Suggestions, Attribute Suggestions, Alias, Selected Device ID [confidence: high] [source: dashboards]
  • Device Health Widget: Alias, Devices, Selected Device Ids, Key, Title, Stale After MS, Decimals, Show Last Seen, Show Freshness, Show Only Stale, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Key="", Title="Device Health", Stale After MS=60000, Decimals=2, Show Last Seen=true, Show Freshness=true [confidence: high] [source: dashboards]
  • Device Table Widget: Title, Status Filter, Device Type, Search Text, Page Size, Show Header, Show Search, Show Status, Show Type, Show Last Activity, Open ON Row Click, Device Types, Loading Types, Next Patch | defaults: Title="Devices", Status Filter="all", Device Type="", Search Text="", Page Size=8, Show Header=true, Show Search=true, Show Status=true, Show Type=true, Show Last Activity=true, Open ON Row Click=true [confidence: high] [source: dashboards]
  • Digital Round Gauge Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Min Max, Show Device Name, Show Badge, Blink ON Critical, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=config.minValue === null || config.minValue === undefined ? 0 : Number(config.minValue, Max Value=config.maxValue === null || config.maxValue === undefined ? 100 : Number(config.maxValue, Warning Value=config.warningValue === null || config.warningValue === undefined ? null : Number(config.warningValue, Critical Value=config.criticalValue === null || config.criticalValue === undefined ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Show Min Max=true, Show Device Name=true, Show Badge=true [confidence: high] [source: dashboards]
  • Digital Vertical Bar Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Min Max, Show Device Name, Show Badge, Blink ON Critical, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=config.minValue === null || config.minValue === undefined ? 0 : Number(config.minValue, Max Value=config.maxValue === null || config.maxValue === undefined ? 100 : Number(config.maxValue, Warning Value=config.warningValue === null || config.warningValue === undefined ? null : Number(config.warningValue, Critical Value=config.criticalValue === null || config.criticalValue === undefined ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Show Min Max=true, Show Device Name=true, Show Badge=true [confidence: high] [source: dashboards]
  • Doughnut Widget: Alias, Devices, Selected Device ID, Items, Title, Decimals, Inner Radius, Outer Radius, Show Legend, Show Labels, Show Title, Show Center Total, Center Label, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids | defaults: Alias=null, Selected Device ID="", Title="Doughnut", Decimals=2, Inner Radius=50, Outer Radius=80, Show Legend=true, Show Labels=true, Show Title=true, Show Center Total=true, Center Label="Total" [confidence: high] [source: dashboards]
  • Dual Axis Chart Widget: Alias, Devices, Device Ids, Keys, Global Keys, Series Config | defaults: Alias=null [confidence: high] [source: dashboards]
  • Ecg Strip Widget: Title, Show Title, Alias, Selected Device ID, Selected Metric, Paper Style, Max Samples, Remove DC, Gain, Stroke Width, Devices, Global Keys, Loading Devices, Loading Keys, Device, Metric, Telemetry Keys | defaults: Title="", Show Title=true, Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || "", Paper Style="monitor", Max Samples=1200, Remove DC=true, Gain=1, Stroke Width=1.6 [confidence: high] [source: dashboards]
  • Gauge Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Track Color, Normal Color, Warning Color, Critical Color, Show Min Max, Show Device Name, Blink ON Critical, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=config.minValue === null || config.minValue === undefined ? 0 : Number(config.minValue, Max Value=config.maxValue === null || config.maxValue === undefined ? 100 : Number(config.maxValue, Warning Value=config.warningValue === null || config.warningValue === undefined ? null : Number(config.warningValue, Critical Value=config.criticalValue === null || config.criticalValue === undefined ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Track Color="#e5e7eb", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Show Min Max=true, Show Device Name=true [confidence: high] [source: dashboards]
  • Gpio Control Widget: Alias, Devices, Selected Device Ids, Items, Title, Columns, Compact, Confirm Before Toggle, Retries, Retry Interval MS, Show Header, Show Device Name, Show Channel Number, Show Raw Value, Loading Devices, Device ID, Device Ids, Math | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Columns=2, Compact=true, Show Header=true, Show Device Name=true, Show Channel Number=true, Show Raw Value=true [confidence: high] [source: dashboards]
  • Gpio Status Widget: Alias, Devices, Selected Device Ids, Items, Title, Columns, Compact, Show Header, Show Device Name, Show Channel Number, Show Value, Show Last Update, Loading Devices, Device ID, Device Ids | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Columns=2, Compact=true, Show Header=true, Show Device Name=true, Show Channel Number=true, Show Value=true [confidence: high] [source: dashboards]
  • Image Panel Widget: Title, Show Title, Image Url, Alt, Object Fit, Link Url, Open IN New Tab | defaults: Title="", Show Title=true, Image Url="", Alt="", Object Fit="contain", Link Url="", Open IN New Tab=true [confidence: high] [source: dashboards]
  • Indoor Environment Widget: Alias, Devices, Device Ids, Items, Global Keys, Title, Columns, Compact, Show Title, Show Device Name, Show Window Label, Show Timestamp | defaults: Alias=null [confidence: high] [source: dashboards]
  • Latest Value Card Widget: Alias, Devices, Selected Device Ids, Selected Items, Global Keys, Title, Display Mode, Decimals, Show Timestamp, Timestamp Mode, Unit Mode, Null Text, Grid Columns, Loading Devices, Loading Keys, Device Ids, Items, Telemetry Keys, Aggregation | defaults: Alias=null, Selected Device Ids=[], Title="", Display Mode="grid", Decimals=2, Show Timestamp=true, Timestamp Mode="relative", Unit Mode="auto", Null Text="—", Grid Columns=2 [confidence: high] [source: dashboards]
  • Led Widget: Alias, Devices, Selected Device Ids, Items, Title, Columns, Compact, Show Device Name, Show Status Text, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Title="", Columns=2, Compact=true, Show Status Text=true [confidence: high] [source: dashboards]
  • Map Widget: Alias, Devices, Selected Device Ids, Title, Show Title, Location Mode, Latitude Key, Longitude Key, GPS Key, State Key, Status Key, Heading Key, Speed Key, Timestamp Key, Popup Keys, Marker Mode, Default Zoom, Default Lat, Default Lon, Auto Fit, Allow Zero Coordinates, Map Style Url, Items, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Title="", Show Title=true, Location Mode="separate", Latitude Key="lat", Longitude Key="lon", GPS Key="gps", State Key="", Status Key="", Heading Key="", Speed Key="", Timestamp Key="", Popup Keys=[], Marker Mode="asset", Default Zoom=4, Default Lat=20.5937, Default Lon=78.9629, Auto Fit=true, Map Style Url="" [confidence: high] [source: dashboards]
  • Markdown Panel Widget: Title, Show Title, Content, Font Size, Text Align | defaults: Show Title=true [confidence: high] [source: dashboards]
  • Mimic Overlay Widget: Alias, Devices, Selected Device Ids, Items, Title, Show Title, Image Url, Object Fit, Show Labels, Global Keys, Loading Devices, Loading Keys, Device Ids, Next Patch | defaults: Alias=null, Selected Device Ids=[], Title="", Show Title=true, Image Url="", Object Fit=config.objectFit === "fill" ? config.objectFit : "contain", Show Labels=true [confidence: high] [source: dashboards]
  • Mini Led Widget: Alias, Devices, Selected Device Ids, Items, Title, Flow, Led Size, Gap, Item Width, Show Title, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Title="", Flow="wrap", Led Size=14, Gap=10, Item Width=56, Show Title=true [confidence: high] [source: dashboards]
  • Mini Switch Widget: Alias, Devices, Selected Device Ids, Items, Title, Flow, Gap, Item Width, Show Title, Confirm Before Toggle, Retries, Retry Interval MS, Loading Devices, Device ID, Device Ids, Math | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Flow="wrap", Gap=10, Item Width=72, Show Title=true [confidence: high] [source: dashboards]
  • Motor Status Widget: Alias, Devices, Selected Device ID, Status Key, Speed Key, Current Key, Fault Key, Max Rpm, Global Keys, Device ID, Device Ids, Key, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Status Key="", Speed Key="", Current Key="", Fault Key="", Max Rpm=3000 [confidence: high] [source: dashboards]
  • Multi Device Comparison Widget: Title, Alias, Devices, Selected Device Ids, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Title, Show Device Name, Show Rank, Show Value, Show Mini Bar, Show Timestamp, Compact, Sort Order, Max Items, Global Keys, Loading Devices, Loading Keys, Device Ids, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=0, Max Value=100, Warning Value=config.warningValue === undefined || config.warningValue === null ? null : Number(config.warningValue, Critical Value=config.criticalValue === undefined || config.criticalValue === null ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Show Title=true, Show Device Name=true, Show Rank=true, Show Value=true, Show Mini Bar=true, Compact=true, Max Items=8 [confidence: high] [source: dashboards]
  • Multi Gauge Widget: Alias, Devices, Selected Device Ids, Selected Items, Title, Decimals, Show Timestamp, Timestamp Mode, Unit Mode, Unit Override, Null Text, Grid Columns, Display Mode, Default Min Value, Default Max Value, Threshold Enabled, Threshold Direction, Warning Threshold, Critical Threshold, Show Status Badge, Global Keys, Loading Devices, Loading Keys, Device Ids, Items, Min Value, Max Value, Thresholds, Enabled, Direction, Warning, Critical, Aggregation | defaults: Alias=null, Selected Device Ids=[], Title="", Decimals=2, Show Timestamp=true, Timestamp Mode="relative", Unit Mode="auto", Unit Override="", Null Text="—", Grid Columns=2, Default Min Value=0, Default Max Value=100, Threshold Enabled=false, Threshold Direction="above", Show Status Badge=true [confidence: high] [source: dashboards]
  • Multi Timeseries Widget: Alias, Devices, Device Ids, Keys, Global Keys, Series Config | defaults: Alias=null [confidence: high] [source: dashboards]
  • Navigation Button Widget: Title, Label, Target Type, Target State ID, Target Dashboard ID, Url, Variant, Open IN New Tab, Require Selected Entity, Show Title, Next Patch, Alias, Device ID, Device Ids, Key, Metric, Telemetry Keys, Show Device Name | defaults: Title="Navigation Button", Label="Navigate", Target Type="dashboardState", Target State ID="default", Target Dashboard ID="", Url="", Variant="primary", Show Title=true [confidence: high] [source: dashboards]
  • Neon Round Gauge Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Min Max, Show Device Name, Show Badge, Blink ON Critical, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=config.minValue === null || config.minValue === undefined ? 0 : Number(config.minValue, Max Value=config.maxValue === null || config.maxValue === undefined ? 100 : Number(config.maxValue, Warning Value=config.warningValue === null || config.warningValue === undefined ? null : Number(config.warningValue, Critical Value=config.criticalValue === null || config.criticalValue === undefined ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Normal Color="#46ffb2", Warning Color="#ffd84d", Critical Color="#ff4d6d", Show Min Max=true, Show Device Name=true, Show Badge=true [confidence: high] [source: dashboards]
  • Neon Vertical Bar Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Min Max, Show Device Name, Show Badge, Blink ON Critical, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=config.minValue === null || config.minValue === undefined ? 0 : Number(config.minValue, Max Value=config.maxValue === null || config.maxValue === undefined ? 100 : Number(config.maxValue, Warning Value=config.warningValue === null || config.warningValue === undefined ? null : Number(config.warningValue, Critical Value=config.criticalValue === null || config.criticalValue === undefined ? null : Number(config.criticalValue, Decimals=1) || 1, Unit="", Normal Color="#46ffb2", Warning Color="#ffd84d", Critical Color="#ff4d6d", Show Min Max=true, Show Device Name=true, Show Badge=true [confidence: high] [source: dashboards]
  • Pie Chart Widget: Alias, Devices, Selected Device Ids, Items, Title, Decimals, Inner Radius, Outer Radius, Show Legend, Show Labels, Show Title, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Title="Pie Chart", Decimals=2, Inner Radius=0, Outer Radius=80, Show Legend=true, Show Labels=true, Show Title=true [confidence: high] [source: dashboards]
  • Process Instrument Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Unit, Decimals, Instrument Type, Min Value, Max Value, Warning Value, Critical Value, Show Device Name, Show Metric Name, Show Timestamp, Timestamp Mode, Compact, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Process Instrument", Show Title=true, Key="level", Unit="", Decimals=1, Min Value=0, Max Value=100, Warning Value="", Critical Value="", Show Device Name=true, Show Metric Name=true, Show Timestamp=true, Compact=true [confidence: high] [source: dashboards]
  • Progress Bar Widget: Alias, Devices, Selected Device Ids, Title, Telemetry Key, Min Value, Max Value, Decimals, Suffix, Stroke Height, Status Mode, Compact, Show Header, Show Device Name, Show Value, Show Min Max, Show Percent, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Metric, Key, Telemetry Keys | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Telemetry Key=config.metric || config.key || config.telemetryKeys?.[0] || "", Suffix="", Status Mode="normal", Compact=true, Show Header=true, Show Device Name=true, Show Value=true, Show Min Max=true, Show Percent=true [confidence: high] [source: dashboards]
  • Pump Status Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Flow Key, Pressure Key, Fault Key, Flow Unit, Pressure Unit, Show Device Name, Show Timestamp, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, IS Dashboard State Alias, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Pump Status", Show Title=true, Key="status", Flow Key="flow", Pressure Key="pressure", Fault Key="fault", Flow Unit="L/min", Pressure Unit="bar", Show Device Name=true, Show Timestamp=true [confidence: high] [source: dashboards]
  • Radar Telemetry Widget: Title, Show Title, Alias, Selected Device ID, Selected Keys, Radar Max, Devices, Loading Devices, Global Keys, Loading Keys, Device, Metric, Telemetry Keys, Keys | defaults: Title="", Show Title=true, Alias=null, Selected Device ID="", Radar Max=config.radarMax === undefined || config.radarMax === null ? null : Number(config.radarMax [confidence: high] [source: dashboards]
  • Range Chart Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Threshold Mode, Normal Threshold, Warning Threshold, Critical Threshold, Line Width, Line Color, Normal Color, Warning Color, Critical Color, Curve Type, Show Points, Show Threshold Lines, Summary Metrics, Y Axis Min, Y Axis Max, Global Keys, Loading Devices, Loading Keys | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || "", Threshold Mode="").trim().toLowerCase() === "descending" ? "descending" : "ascending", Normal Threshold=config.normalThreshold === null || config.normalThreshold === undefined ? null : Number(config.normalThreshold, Warning Threshold=config.warningThreshold === null || config.warningThreshold === undefined ? null : Number(config.warningThreshold, Critical Threshold=config.criticalThreshold === null || config.criticalThreshold === undefined ? null : Number(config.criticalThreshold, Line Width=2) || 2, 8, Line Color="#1677ff", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Curve Type="monotone") as CurveType, Show Threshold Lines=true, Y Axis Min=config.yAxisMin === null || config.yAxisMin === undefined ? null : Number(config.yAxisMin, Y Axis Max=config.yAxisMax === null || config.yAxisMax === undefined ? null : Number(config.yAxisMax [confidence: high] [source: dashboards]
  • Route Map Widget: Alias, Devices, Selected Device ID, Title, Show Title, Location Mode, Latitude Key, Longitude Key, GPS Key, Heading Key, Speed Key, Timestamp Key, Default Zoom, Default Lat, Default Lon, Auto Fit, Show Start Marker, Show End Marker, Show Live Marker, Allow Zero Coordinates, Max Points, Route Color, Route Opacity, Line Width, Map Style Url, Loading Devices, Loading Keys, Global Keys, Device ID, Device Ids, Telemetry Keys, Metric | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Route Map", Show Title=true, Latitude Key="lat", Longitude Key="lon", GPS Key="gps", Heading Key="", Speed Key="", Timestamp Key="", Default Zoom=4, Default Lat=20.5937, Default Lon=78.9629, Auto Fit=true, Show Start Marker=true, Show End Marker=true, Show Live Marker=true, Max Points=1500, Route Color="#2563eb", Route Opacity=0.9, Line Width=4, Map Style Url="" [confidence: high] [source: dashboards]
  • RPC Widget: Alias, Devices, Selected Device Ids, Title, Actions, Columns, Compact, Show Execution Log, Max Log Entries, Retries, Retry Interval MS, Loading Devices, Active Action Tab, Device ID, Device Ids, Patch | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Columns=1, Show Execution Log=true, Active Action Tab="" [confidence: high] [source: dashboards]
  • Scatter Telemetry Widget: Title, Alias, Selected Device ID, X Key, Y Key, Devices, Global Keys, Loading Devices, Loading Keys, Device, Metric, Telemetry Keys, Keys | defaults: Title="", Alias=null, Selected Device ID="", X Key=config.keys?.[0] || config.metric || "", Y Key=config.keys?.[1] || "" [confidence: high] [source: dashboards]
  • Signal Strength Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Secondary Key, Unit, Secondary Unit, Decimals, Secondary Decimals, Value Mode, Display Mode, Min Rssi, Max Rssi, Critical Threshold, Low Threshold, Medium Threshold, Show Device Name, Show Metric Name, Show Timestamp, Show Status Text, Show Secondary, Compact, Timestamp Mode, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Signal Strength", Show Title=true, Key="level", Secondary Key="", Unit="%", Secondary Unit="", Decimals=1, Secondary Decimals=1, Min Rssi=-110, Max Rssi=-50, Critical Threshold=15, Low Threshold=30, Medium Threshold=60, Show Device Name=true, Show Metric Name=true, Show Timestamp=true, Show Status Text=true, Show Secondary=true, Compact=true [confidence: high] [source: dashboards]
  • Slider Control Widget: Alias, Devices, Selected Device Ids, Title, Key, Key Options, Global Keys, Minimum, Maximum, Step, Unit, Decimals, Show Value, Show Device Name, Compact, Send Mode, Retries, Retry Interval MS, Loading Devices, Loading Keys, Device ID, Device Ids, Metric, Telemetry Keys, Math | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Key="", Unit="", Show Value=true, Show Device Name=true [confidence: high] [source: dashboards]
  • State Timeline Widget: Alias, Devices, Selected Device Ids, Selected Items, Title, Row Height, Show Current State, Global Keys, Loading Devices, Loading Keys, Device Ids, Items, Aggregation | defaults: Alias=null, Selected Device Ids=[], Title="", Row Height=22, Show Current State=true [confidence: high] [source: dashboards]
  • Status Matrix Widget: Alias, Devices, Device Ids, Title, Keys, Key Options, Columns, Compact, Show Title, Show Device Name, Show Key Label, Show Timestamp, Stale After MS, Loading Devices, Loading Keys, Device ID, Telemetry Keys, Key, Metric | defaults: Alias=null, Title="", Compact=true, Show Title=true, Show Device Name=true, Show Key Label=true, Show Timestamp=true [confidence: high] [source: dashboards]
  • Status Panel Widget: Alias, Devices, Selected Device ID, Items, Title, Show Title, Show Device Name, Show Timestamp, Timestamp Mode, Decimals, Null Text, Compact, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Telemetry Keys, Metric, Next Patch | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Status Panel", Show Title=true, Show Device Name=true, Show Timestamp=true, Decimals=1, Null Text="—", Compact=true [confidence: high] [source: dashboards]
  • Switch Widget: Alias, Devices, Selected Device Ids, Items, Title, Columns, Compact, Confirm Before Toggle, Retries, Retry Interval MS, Loading Devices, Device ID, Device Ids, Math | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Columns=1 [confidence: high] [source: dashboards]
  • Tank Level Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Unit, Decimals, Value Mode, Min Value, Max Value, Low Low, Low, High, High High, Show Thresholds, Show Scale, Show Value, Show Min Max, Show Device Name, Show Metric Name, Show Timestamp, Timestamp Mode, Color Mode, Fill Color, Animate Fill, Tank Shape, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Tank Level", Show Title=true, Key="level", Unit="%", Decimals=1, Min Value=0, Max Value=100, Low Low=10, Low=25, High=75, High High=90, Show Thresholds=true, Show Scale=true, Show Value=true, Show Min Max=true, Show Device Name=true, Show Metric Name=true, Show Timestamp=true, Fill Color="#2563eb" [confidence: high] [source: dashboards]
  • Threshold Breach Widget: Alias, Devices, Selected Device Ids, Key, Title, Above, Below, Min Duration MS, Show Times, Show Latest Value, Show Only Active, Global Keys, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Key="", Title="Threshold Breach", Above=null, Below=null, Min Duration MS=0, Show Times=true, Show Latest Value=true [confidence: high] [source: dashboards]
  • Timeseries Table Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Page Size, Decimals, Null Text, Timestamp Format, Sort Order, Show Header, Show Search, Show Timestamp, Show Index, Show Latest Badge, Dense, Bordered, Summary Metrics, Y Axis Min, Y Axis Max, Global Keys, Loading Devices, Loading Keys, Device, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="Timeseries Table", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || "", Page Size=10) || 10, 100, Decimals=2) || 2, 8, Null Text="—", Timestamp Format="datetime") as TimestampFormat, Sort Order="desc").toLowerCase() === "asc" ? "asc" : "desc") as "asc" | "desc", Show Header=true, Show Search=true, Show Timestamp=true, Show Latest Badge=true, Bordered=true, Y Axis Min=config.yAxisMin === null || config.yAxisMin === undefined ? null : Number(config.yAxisMin, Y Axis Max=config.yAxisMax === null || config.yAxisMax === undefined ? null : Number(config.yAxisMax [confidence: high] [source: dashboards]
  • Timeseries Widget: Title, Alias, Devices, Selected Device ID, Selected Metric, Line Width, Line Color, Curve Type, Show Points, Summary Metrics, Y Axis Min, Y Axis Max, Global Keys, Loading Devices, Loading Keys, Device, Metric, Telemetry Keys, Color, Aggregation | defaults: Title="", Alias=null, Selected Device ID="", Selected Metric=config.telemetryKeys?.[0] || "", Line Width=2) || 2, 8, Line Color="#1677ff", Curve Type="monotone") as CurveType, Y Axis Min=config.yAxisMin === null || config.yAxisMin === undefined ? null : Number(config.yAxisMin, Y Axis Max=config.yAxisMax === null || config.yAxisMax === undefined ? null : Number(config.yAxisMax [confidence: high] [source: dashboards]
  • Toggle Button Widget: Alias, Devices, Selected Device Ids, Title, Control Mode, Channel, Key, ON Label, Off Label, ON Value Text, Off Value Text, Compact, Confirm Before Toggle, Show Device Name, Full Width, Danger When Off, Active Button Type, Retries, Retry Interval MS, Loading Devices, Loading Keys, Global Keys, Device ID, Device Ids, Telemetry Key, Metric, Telemetry Keys, Next Control Mode, ON Value, Off Value, Math | defaults: Alias=null, Selected Device Ids=(config.deviceId ? [config.deviceId] : [], Title="", Channel=1) || 1, Key=config.telemetryKey || config.metric || "", ON Label="ON", Off Label="OFF", ON Value Text=1, Off Value Text=0, Show Device Name=true, Full Width=true, Retries=0) || 0, 10, Retry Interval MS=1000) || 1000, 60000 [confidence: high] [source: dashboards]
  • Top N Widget: Title, Alias, Devices, Selected Device Ids, Selected Metric, Min Value, Max Value, Warning Value, Critical Value, Decimals, Unit, Normal Color, Warning Color, Critical Color, Show Title, Show Rank, Show Device Name, Show Value, Show Bar, Show Timestamp, Compact, Mode, Item Count, Global Keys, Loading Devices, Loading Keys, Device Ids, Metric, Key, Telemetry Keys, Aggregation | defaults: Title="", Alias=null, Selected Metric=config.telemetryKeys?.[0] || config.key || "", Min Value=0, Max Value=100, Warning Value=config.warningValue === undefined || config.warningValue === null ? null : Number(config.warningValue, Critical Value=config.criticalValue === undefined || config.criticalValue === null ? null : Number(config.criticalValue, Decimals=1, Unit="", Normal Color="#22c55e", Warning Color="#f59e0b", Critical Color="#ef4444", Show Title=true, Show Rank=true, Show Device Name=true, Show Value=true, Show Bar=true, Compact=true, Item Count=5 [confidence: high] [source: dashboards]
  • Trend Direction Widget: Alias, Devices, Selected Device Ids, Key, Title, Decimals, Show First Last, Show Delta, Show Percent, Good Direction, Loading Devices, Loading Keys, Device Ids | defaults: Alias=null, Selected Device Ids=[], Key="", Title="Trend Direction", Decimals=2, Show First Last=true, Show Delta=true, Show Percent=true, Good Direction="neutral" [confidence: high] [source: dashboards]
  • Valve Position Widget: Alias, Devices, Selected Device ID, Title, Show Title, Key, Unit, Open Threshold, Closed Threshold, Show Device Name, Show Timestamp, Show Animation, Global Keys, Loading Devices, Loading Keys, Device ID, Device Ids, Next Patch, Metric, Telemetry Keys | defaults: Alias=null, Selected Device ID=config.deviceIds?.[0] || "").trim(, Title="Valve Position", Show Title=true, Key="position", Unit="%", Open Threshold=80, Closed Threshold=20, Show Device Name=true, Show Timestamp=true, Show Animation=true [confidence: high] [source: dashboards]

Unknowns

  • None verified

c:/autoconnecto/frontend/src/app/layout/AppLayout.tsx

text
ome" }, { key: "/solutions", icon: <BulbOutlined />, label: "Solutions" }, { key: "/dashboards", icon: <DashboardOutlined />, label: "Dashboards" }, { key: "/devices", icon: <ApiOutlined />, label: "Devices" }, { key: "/assets", icon: <ApartmentOutlined />, label: "Assets" }, { key: "/device-profiles", icon: <ClusterOutlined />, label: "Device Profiles", }, { key: "/alarms", icon:

c:/autoconnecto/frontend/src/features/dashboards/components/AliasManagerModal.tsx

text
/../../api/assets.api"; import { fetchDeviceProfiles } from "../../../api/deviceProfiles.api"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; const { Text } = Typography; interface Props { open: boolean; onClose: () => void; dashboard: any; } type AliasType = | "device" | "asset" | "deviceProfile" | "manualGroup" | "dashboardState" | "deviceTyp

c:/autoconnecto/frontend/src/features/dashboards/components/WidgetConfigModal.tsx

text
mber, ColorPicker, Divider, } from "antd"; import { useState, useEffect } from "react"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; import { getWidgetDefinition } from "../registry/widgetRegistry"; import { normalizeWidgetConfig } from "../utils/normalizeWidgetConfig"; interface Props { open: boolean; widget: any; onClose: () => void; onSave: (config: an

c:/autoconnecto/frontend/src/features/dashboards/components/WidgetGrid.tsx

text
dgetContainer from "./WidgetContainer"; import WidgetConfigModal from "./WidgetConfigModal"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; import "react-grid-layout/css/styles.css"; import "react-resizable/css/styles.css"; interface Widget { id?: string; widgetId?: string; type: string; name?: string; x?: number; y?: number; w?: number; h?: number

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
ed, SaveOutlined, } from "@ant-design/icons"; import { useNavigate } from "react-router-dom"; import { dashboardsApi } from "../../api/dashboards.api"; import { createSolution } from "../../api/solutions.api"; import { getCurrentUserEmail } from "../../auth/services/auth.service"; import { isAllowedPlatformAdminEmail } from "../platform-admin/platformAdminAccess"; const { Title, Text } = Typography; const { TextArea } = Input; interface Das

c:/autoconnecto/frontend/src/features/dashboards/DashboardPage.tsx

text
ined, CompressOutlined, DownloadOutlined, FilePdfOutlined, } from "@ant-design/icons"; import { dashboardsApi } from "../../api/dashboards.api"; import DashboardToolbar from "./components/DashboardToolbar"; import AliasManagerModal from "./components/AliasManagerModal"; import WidgetGrid from "./components/WidgetGrid"; import { DashboardProvider, useDashboard, } from "./context/DashboardContext"; import { DashboardClockProvid

c:/autoconnecto/frontend/src/features/dashboards/widgets/AlarmDetailsDrawer.tsx

text
Close: () => void; }; export default function AlarmDetailsDrawer({ open, alarmId, onClose, }: Props) { const navigate = useNavigate(); const [loading, setLoading] = useState(false); const [alarm, setAlarm] = useState<any>(null); const [events, setEvents] = useState<any[]>([]); useEffect(() => { const safeAlarmId = String(alarmId || "").trim(); if (!open || !safeAlarmId) { setAlarm(null); setEvents(

c:/autoconnecto/frontend/src/features/dashboards/widgets/AlarmWidget.tsx

text
Id(record.alarm_id); } function handleNavigateToAlarmContext(record: AlarmRecord) { if (!dashboardId) return; navigate(`/dashboards/${dashboardId}`, { state: { dashboardStateId: config.targetStateId || "default", entityId: record.device_id, entityType: "DEVICE", entityName: resolveDeviceLabel(record), alarmId: record.alarm_id, }, }); } const allColumns: ColumnsType<

c:/autoconnecto/frontend/src/features/dashboards/widgets/AnomalyInsightsWidget.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert } from "antd"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { getDeviceName } from "../../../stores/deviceStore"; import { resolveWidgetConfig } from "../utils/widgetResolver"; import WidgetStateView from "../components/

c:/autoconnecto/frontend/src/features/dashboards/widgets/AssetAdminTableWidget.tsx

text
if (!dashboardId) { message.info("No dashboard and state has been selected for this asset"); return; } navigate(`/dashboards/${dashboardId}`, { state: { dashboardStateId: targetStateId, entityId: record.assetId, entityType: "asset", entityName: record.name || record.assetId, assetAdminTableFilter: effectiveFilter, source: "asset-admin-table-widget", }, });

c:/autoconnecto/frontend/src/features/dashboards/widgets/AttributeControlCardWidget.tsx

text
message, Tag, Alert, } from "antd"; import { SaveOutlined } from "@ant-design/icons"; import { dashboardsApi } from "../../../api/dashboards.api"; import { getSocket } from "../../../realtime/socket"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { useDashboard } from "../context/DashboardContext"; import { getDeviceName } from "../../../stores/deviceStore"; import { resolveWidgetConfig } from "../utils/widg

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmWidgetConfig.tsx

text
h, Typography, Divider, } from "antd"; import { useParams } from "react-router-dom"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; const ALL_COLUMNS = [ { label: "Device", value: "device" }, { label: "Alarm", value: "alarm" }, { label: "Severity", value: "severity" }, { label: "Status", value: "status" }, { label: "Acknowledge", value: "ack" }, { label: "Started At", value: "st

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnalogMeterWidgetConfig.tsx

text
utton, Divider, Input, InputNumber, Select, Space, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type MeterItem = { id: string; deviceId: string; label: string; key: string; unit: string; min: number; max: number; warning: number | null; critical: number | null; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnomalyInsightsWidgetConfig.tsx

text
} from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function AnomalyInsightsWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<a

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AttributeControlCardWidgetConfig.tsx

text
m "react"; import { Button, Input, Select, Typography, Alert, Space, Divider } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; type Scope = "shared" | "client" | "server"; type AttributePairItem = { id: string; label?: string; writeScope: Scope; writeKey: string; readScope: Scope; readKey: string; }; type Props = { config: any; aliases: any[]; onChange: (cfg

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BarChartWidgetConfig.tsx

text
InputNumber, Switch, Divider, Space, Alert, Radio, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type BarItem = { id: string; deviceId: string; label: string; key: string; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [ { label: "Blue", value: "#3b82f6" }, { label: "Green", value: "#22c55e" }, { label: "Amber", value

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BatteryIndicatorWidgetConfig.tsx

text
Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type ValueMode = "percent" | "normalized" | "voltage"; type LayoutMode = "horizontal" | "vertical"; function uniqueStrings(values: any[]) { return Array.from( new Set( (Array.isArray(value

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/CodeWidgetConfig.tsx

text
port { Select, Input, Switch, Alert, Divider, InputNumber, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function normalizeTelemetryKeys(input: any): string[] { if (!Array.isArray(input)) return []; return Array.from( new Set( input

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeltaComparisonWidgetConfig.tsx

text
} from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DeltaComparisonWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<a

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceAlarmWidgetConfig.tsx

text
om "react"; import { Checkbox, Input, InputNumber, Select, Typography, Alert } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; const DEFAULT_STATUS = ["ACTIVE"]; const DEFAULT_SEVERITY = ["CRITICAL", "MAJOR", "MINOR", "WARNING"]; type Props = { widget?: any; config?: any; aliases?: any[]; onChange: (cfg: any) => void; }; export default function DeviceAlarmWidgetConfig({

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceCountWidgetConfig.tsx

text
ce, Switch } from "antd"; import { fetchDeviceTypes } from "../../../../api/devices.api"; import { dashboardsApi } from "../../../../api/dashboards.api"; type StatusFilter = "all" | "active" | "inactive"; const STATUS_OPTIONS = [ { label: "All Devices", value: "all" }, { label: "Active Devices", value: "active" }, { label: "Inactive Devices", value: "inactive" }, ]; function normalizeArray(value: any) { if (Array.isArray(value)) r

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceDataCardWidgetConfig.tsx

text
er, Input, InputNumber, Select, Space, Switch, Typography, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; import { useDashboard } from "../../context/DashboardContext"; const { Text } = Typography; type ItemSource = "telemetry" | "attribute"; type AttributeScope = "SERVER" | "SHARED" | "CLIENT"; type ControlType = "text" | "number" | "switch" | "select"; type DisplayType = "value" | "tag" | "swi

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceHealthWidgetConfig.tsx

text
} from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DeviceHealthWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<any[

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalRoundGaugeWidgetConfig.tsx

text
from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DigitalRoundGaugeWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [a

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalVerticalBarWidgetConfig.tsx

text
from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DigitalVerticalBarWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DoughnutWidgetConfig.tsx

text
Input, InputNumber, Switch, Divider, Space, Alert, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type DoughnutItem = { id: string; deviceId: string; label: string; key: string; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [ { label: "Blue", value: "#3b82f6" }, { label: "Green", value: "#22c55e" }, { label: "Amber",

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DualAxisChartWidgetConfig.tsx

text
InputNumber, Divider, Space, Alert, Switch, Input, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; type CurveType = | "linear" | "monotone" | "natural" | "stepAfter" | "stepBefore"; type AxisSide = "left" | "right"; type SeriesStyleConfig = { color?: string; lineWidth?: number; showPoints?: bool

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/EcgStripWidgetConfig.tsx

text
o, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const PAPER_OPTIONS = [ { label: "Monitor (green on dark)", value: "monitor" }, { label: "Classic (dark trace on pink grid)", value: "classic" }, ]; export default function EcgStripWidgetConfig({ config, aliase

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GaugeWidgetConfig.tsx

text
from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function GaugeWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [alias, setAli

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioControlWidgetConfig.tsx

text
elect, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type GpioItem = { id: string; label: string; channel: number; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function makeItem(index: number): GpioItem { return { id: `gpio-c

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioStatusWidgetConfig.tsx

text
elect, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type GpioItem = { id: string; label: string; channel: number; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function makeItem(index: number): GpioItem { return { id: `gpio-s

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/IndoorEnvironmentWidgetConfig.tsx

text
Switch, } from "antd"; import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; import { dashboardsApi } from "../../../../api/dashboards.api"; type ParameterKind = | "temperature" | "humidity" | "co2" | "tvoc" | "pm25" | "pm10" | "pressure" | "light" | "noise" | "occupancy"; type ThresholdDirection = "above" | "below"; type TileThresholds = { enabled?: boolean; direction?: ThresholdDirection; w

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LatestValueCardWidgetConfig.tsx

text
Select, InputNumber, Input, Switch, Alert, Divider, Card, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function encodeItem(deviceId: string, key: string) { return `${deviceId}__${key}`; } function decodeItem(value: string) { const idx = value.indexOf("__"); if (idx === -1) return { deviceId: "",

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LedWidgetConfig.tsx

text
elect, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type LedItem = { id: string; deviceId: string; label: string; key: string; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [ { label: "Gr

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MapWidgetConfig.tsx

text
Select, InputNumber, Input, Alert, Divider, Radio, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type MarkerMode = "simple" | "asset" | "fleet"; type LocationMode = "separate" | "combined"; type MapItem = { id: string; deviceId: string; label: string; }; //const DASHBOARD_STATE_DEVICE =

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MimicOverlayWidgetConfig.tsx

text
lect, InputNumber, Input, Switch, Alert, Divider, Button, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type DisplayMode = "led" | "value" | "chip"; type MimicItem = { id: string; deviceId: string; label: string; key: string; xPct: number; yPct: number; displayMode: DisplayMode; decimals: number; co

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniLedWidgetConfig.tsx

text
InputNumber, Input, Alert, Divider, Button, Radio, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type LedItem = { id: string; deviceId: string; label: string; key: string; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [ { label: "Gr

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniSwitchWidgetConfig.tsx

text
InputNumber, Input, Switch, Alert, Divider, Button, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type SwitchItem = { id: string; label: string; channel: number; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function makeItem(index: number): SwitchItem { return { id: `mi

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MotorStatusWidgetConfig.tsx

text
ect, useMemo, useState } from "react"; import { Divider, InputNumber, Select } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function MotorStatusWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<any[]

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MultiDeviceComparisonWidgetConfig.tsx

text
t { Alert, Input, InputNumber, Select, Switch, Typography, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function normalizeResolvedDevice(device: any) { if (typeof device === "string") { return { label: device, value: device, }; } const value =

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MultiGaugeWidgetConfig.tsx

text
port { Select, InputNumber, Input, Switch, Alert, Divider, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function encodeSelection(deviceId: string, key: string) { return JSON.stringify([deviceId, key]); } function decodeSelection(value: string) {

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MultiTimeseriesWidgetConfig.tsx

text
Select, InputNumber, Divider, Space, Alert, Switch, Input, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; type CurveType = | "linear" | "monotone" | "natural" | "stepAfter" | "stepBefore"; type SeriesStyleConfig = { color?: string; lineWidth?: number; showPoints?: boolean; curveType?: CurveType; sum

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/NeonRoundGaugeWidgetConfig.tsx

text
from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function NeonRoundGaugeWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [alia

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/NeonVerticalBarWidgetConfig.tsx

text
from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function NeonVerticalBarWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [ali

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/PieChartWidgetConfig.tsx

text
Input, InputNumber, Switch, Divider, Space, Alert, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type PieItem = { id: string; deviceId: string; label: string; key: string; color: string; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; const COLOR_OPTIONS = [ { label: "Blue", value: "#3b82f6" }, { label: "Green", value: "#22c55e" }, { label: "Amber", value

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ProcessInstrumentWidgetConfig.tsx

text
Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type InstrumentType = "thermometer" | "pressureGauge"; export default function ProcessInstrumentWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ProgressBarWidgetConfig.tsx

text
port { Select, InputNumber, Input, Switch, Alert, Divider, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function toFiniteNumber(value: any, fallback: number) { const parsed = Number(value); return Number.isFinite(parsed) ? parsed : fallback; } e

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/PumpStatusWidgetConfig.tsx

text
rom "react"; import { Alert, Divider, Input, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function PumpStatusWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<any[]>

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/RadarTelemetryWidgetConfig.tsx

text
o, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function parseKeysFromConfig(cfg: any): string[] { if (Array.isArray(cfg.keys) && cfg.keys.length) { return Array.from( new Set(cfg.keys.map((k: any) => String(k || "").trim()).filter(Boolean)) );

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/RangeChartWidgetConfig.tsx

text
from "react"; import { Select, InputNumber, Typography, Alert, Input, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; type CurveType = | "linear" | "monotone" | "natural" | "stepAfter" | "stepBefore"; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; type ThresholdMode = "ascending" | "descending"; interface Props { config: any; alias

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/RouteMapWidgetConfig.tsx

text
Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type LocationMode = "separate" | "combined"; function uniqueStrings(values: any[]) { return Array.from( new Set( (Array.isArray(values) ? values : []) .map((value) => String(value

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/RPCWidgetConfig.tsx

text
lert, Button, Divider, Input, InputNumber, Select, Switch, Tabs, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; // ========================================================= // TYPES // ========================================================= interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type RPCAction = { id: string; label: string; method: string; params: Recor

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ScatterTelemetryWidgetConfig.tsx

text
t { useEffect, useMemo, useState } from "react"; import { Alert, Input, Select } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function ScatterTelemetryWidgetConfig({ config, aliases, onChange, }: Props) { const [title, setTitle] = useState(config.title || ""); const [alias, setAlias] = useState(config.alias || null

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/SignalStrengthWidgetConfig.tsx

text
Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type ValueMode = "percent" | "normalized" | "rssi"; type DisplayMode = "bars" | "bars+value" | "value-only"; export default function SignalStrengthWidgetConfig({ config, aliases, onChange, }: P

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/SliderControlWidgetConfig.tsx

text
ct, Switch, Segmented, } from "antd"; import api from "../../../../api/apiClient"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function toFiniteNumber(value: any, fallback: number) { const parsed = Number(value); return Number.isFinite(parsed) ? parsed : fallback; } e

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/StateTimelineWidgetConfig.tsx

text
} from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function encodeSelection(deviceId: string, key: string) { return JSON.stringify([deviceId, key]); } function decodeSelection(value: string) {

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/StatusMatrixWidgetConfig.tsx

text
rt { Alert, Divider, Input, InputNumber, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function toFiniteNumber(value: any, fallback: number) { const parsed = Number(value); return Number.isFinite(parsed) ? parsed : fallback; } export default function StatusMatrixWidgetConfig({ con

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/StatusPanelWidgetConfig.tsx

text
Switch, } from "antd"; import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type PanelItemType = "state" | "boolean" | "value" | "badge"; function uniqueStrings(values: any[]) { return Array.from( new Set( (Array.isArray(values) ? values : []) .map((value)

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/SwitchWidgetConfig.tsx

text
elect, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type SwitchItem = { id: string; label: string; channel: number; }; const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function makeItem(index: number): SwitchItem { return { id: `it

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/TankLevelWidgetConfig.tsx

text
Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type ValueMode = "percent" | "normalized" | "absolute"; type ColorMode = "threshold" | "single"; type TankShape = "rounded" | "rect"; function uniqueStrings(values: any[]) { return Array.from( n

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ThresholdBreachWidgetConfig.tsx

text
} from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function ThresholdBreachWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<a

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/TimeseriesTableWidgetConfig.tsx

text
from "react"; import { Select, InputNumber, Typography, Alert, Input, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; type TimestampFormat = "datetime" | "timeOnly" | "dateOnly" | "iso"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const SUMMARY_METRIC_OPTIONS =

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/TimeseriesWidgetConfig.tsx

text
from "react"; import { Select, InputNumber, Typography, Alert, Input, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; type CurveType = | "linear" | "monotone" | "natural" | "stepAfter" | "stepBefore"; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; }

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ToggleButtonWidgetConfig.tsx

text
port { Select, Input, Switch, Alert, Divider, InputNumber, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashboardState__"; function normalizeScalar(value: any, fallback: any) { if (value === null || value === undefined || value === "") return fallback; if (typeof va

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/TopNWidgetConfig.tsx

text
t { Alert, Input, InputNumber, Select, Switch, Typography, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function normalizeTelemetryKeysResponse(input: any): string[] { if (!input) return []; const mapItems = (arr: any[]) => arr .map((item) => { if (t

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/TrendDirectionWidgetConfig.tsx

text
} from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function TrendDirectionWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<an

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ValvePositionWidgetConfig.tsx

text
port { Alert, Divider, Input, InputNumber, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function ValvePositionWidgetConfig({ config, aliases, onChange, }: Props) { const [alias, setAlias] = useState(config.alias ?? null); const [devices, setDevices] = useState<any

c:/autoconnecto/frontend/src/features/dashboards/widgets/DeviceCountWidget.tsx

text
if (!targetDashboardId) { message.info("No target dashboard selected for this count widget"); return; } navigate(`/dashboards/${targetDashboardId}`, { state: { dashboardStateId: targetStateId, deviceTableFilter: { statusFilter, deviceType, searchText: "", }, source: "device-count-widget", }, }); } return ( <div onClick={open

c:/autoconnecto/frontend/src/features/dashboards/widgets/DeviceTableWidget.tsx

text
if (!dashboardId) { message.info("No dashboard and state has been selected for this device"); return; } navigate(`/dashboards/${dashboardId}`, { state: { dashboardStateId: targetStateId, entityId: record.deviceId, entityType: "device", entityName: record.name || record.deviceId, source: "device-table-widget", }, }); } return ( <div style={{

c:/autoconnecto/frontend/src/features/dashboards/widgets/MarkerPlacementWidget.tsx

text
ned, SaveOutlined, } from "@ant-design/icons"; import api from "../../../api/apiClient"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { getDeviceName } from "../../../stores/deviceStore"; const { Text } = Typography; type Mode = "device" | "asset"; type Coords = { lat: number; lon: number; }; type DeviceRow = { deviceId: string; n

c:/autoconnecto/frontend/src/features/dashboards/widgets/MiniSwitchWidget.tsx

text
al, Spin, Switch, message } from "antd"; import { useEffect, useMemo, useState } from "react"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { resolveWidgetConfig } from "../utils/widgetResolver"; import WidgetStateView from "../components/WidgetStateView"; type SwitchItem = { id: string; l

c:/autoconnecto/frontend/src/features/dashboards/widgets/NavigationButtonWidget.tsx

text
NT_STATE", currentState: targetStateId, }); return; } if (targetType === "dashboard") { navigate(`/dashboards/${targetDashboardId}`, { state: { dashboardStateId: targetStateId || "default", entityId: selectedEntity?.id, entityType: selectedEntity?.type, entityName: selectedEntity?.name, alarmId: selectedEntity?.alarmId, }, }); re

c:/autoconnecto/frontend/src/features/dashboards/widgets/RPCWidget.tsx

text
, } from "@ant-design/icons"; import { useCallback, useEffect, useMemo, useState } from "react"; import { dashboardsApi } from "../../../api/dashboards.api"; import { getDeviceName } from "../../../stores/deviceStore"; import { useDashboard } from "../context/DashboardContext"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { resolveWidgetConfig } from "../utils/widgetResolver"; import WidgetStateView from "../components/Widge

c:/autoconnecto/frontend/src/features/dashboards/widgets/SliderControlWidget.tsx

text
, Slider, Spin, message } from "antd"; import { useEffect, useMemo, useState } from "react"; import { dashboardsApi } from "../../../api/dashboards.api"; import { getDeviceName } from "../../../stores/deviceStore"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { useDashboard } from "../context/DashboardContext"; import WidgetStateView from "../components/WidgetStateView"; import { resolveWidgetConfig } from "../utils

c:/autoconnecto/frontend/src/features/dashboards/widgets/SwitchWidget.tsx

text
al, Spin, Switch, message } from "antd"; import { useEffect, useMemo, useState } from "react"; import { dashboardsApi } from "../../../api/dashboards.api"; import { getDeviceName } from "../../../stores/deviceStore"; import { useDashboard } from "../context/DashboardContext"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { resolveWidgetConfig } from "../utils/widgetResolver"; import WidgetStateView from "../component

c:/autoconnecto/frontend/src/features/dashboards/widgets/ThresholdBreachWidget.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert } from "antd"; import { dashboardsApi } from "../../../api/dashboards.api"; import { useDashboard } from "../context/DashboardContext"; import { useDashboardTheme } from "../../../theme/useDashboardTheme"; import { getDeviceName } from "../../../stores/deviceStore"; import { resolveWidgetConfig } from "../utils/widgetResolver"; import WidgetStateView from "../components/

c:/autoconnecto/frontend/src/features/dashboards/components/DashboardToolbar.tsx

text
type="primary" icon={<AppstoreOutlined />} onClick={() => setWidgetLibraryOpen(true)} > Add Widget </Button> </Col> )} {isEditMode && ( <> <Col> <Button icon={<CloseOutlined />} onClick={onCancelLayout} disabled={!layoutDirty || layoutSaving}

c:/autoconnecto/frontend/src/features/dashboards/components/WidgetConfigModal.tsx

text
lizeWidgetConfig } from "../utils/normalizeWidgetConfig"; interface Props { open: boolean; widget: any; onClose: () => void; onSave: (config: any) => void; } function buildSavedWidgetShape(baseWidget: any, draftConfig: any, aliasId?: string | null) { return { ...baseWidget, config: { ...(baseWidget?.config || {}), ...(draftConfig || {}), }, aliases: aliasId ? [aliasId] : [], }; } export default

c:/autoconnecto/frontend/src/features/dashboards/components/DashboardToolbar.tsx

text
ate?.(name); setNewStateName(""); setStateModalOpen(false); } const canDeleteCurrentState = !!currentStateId && currentStateId !== "default" && (states?.length || 0) > 1; return ( <> <Row gutter={[10, 10]} align="middle" wrap style={{ marginBottom: 0, padding: "8px 14px", background: isDark ? "#1f3c5a" : "#0b5499", border: isDar

c:/autoconnecto/frontend/src/features/dashboards/components/DashboardToolbar.tsx

text
etNewStateName(""); setStateModalOpen(false); } const canDeleteCurrentState = !!currentStateId && currentStateId !== "default" && (states?.length || 0) > 1; return ( <> <Row gutter={[10, 10]} align="middle" wrap style={{ marginBottom: 0, padding: "8px 14px", background: isDark ? "#1f3c5a" : "#0b5499", border: isDark ? "1px solid #355

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
<Button type="primary" icon={<PlusOutlined />} onClick={() => setCreateOpen(true)} > Create Dashboard </Button> </Space> </Space> {loading ? ( <Spin /> ) : ( <Table rowKey="dashboardId" columns={columns} dataSource={dashboards} pagination={{ pageSize: 10 }} onRow={(record)

c:/autoconnecto/frontend/src/features/dashboards/components/WidgetConfigModal.tsx

text
gistry"; import { normalizeWidgetConfig } from "../utils/normalizeWidgetConfig"; interface Props { open: boolean; widget: any; onClose: () => void; onSave: (config: any) => void; } function buildSavedWidgetShape(baseWidget: any, draftConfig: any, aliasId?: string | null) { return { ...baseWidget, config: { ...(baseWidget?.config || {}), ...(draftConfig || {}), }, aliases: aliasId ? [aliasId] : [],

c:/autoconnecto/frontend/src/features/dashboards/components/WidgetConfigModal.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/components/WidgetConfigModal.tsx

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
Id}`), style: { cursor: "pointer" }, })} /> )} {/* Create Modal */} <Modal title="Create Dashboard" open={createOpen} onOk={handleCreate} confirmLoading={creating} onCancel={() => setCreateOpen(false)} > <Input placeholder="Dashboard Name" value={newName} onChange={(e) => setNewName(e.target.value)}

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
style: { cursor: "pointer" }, })} /> )} {/* Create Modal */} <Modal title="Create Dashboard" open={createOpen} onOk={handleCreate} confirmLoading={creating} onCancel={() => setCreateOpen(false)} > <Input placeholder="Dashboard Name" value={newName} onChange={(e) => setNewName(e.target.value)} />

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
any) { message.error(err?.message || "Failed to save as solution"); } finally { setPublishing(false); } }; const columns = [ { title: "Name", dataIndex: "name", }, { title: "Created", dataIndex: "createdAt", render: (value: string) => value ? new Date(value).toLocaleString() : "-", }, { title: "Actions", render: (_: any, record: Dashboard) =>

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
import { useEffect, useState } from "react"; import { Button, Table, Space, Typography, Spin, Modal, Input, message, Popconfirm, } from "antd"; import { PlusOutlined, EditOutlined, DeleteOutlined, UploadOutlined, SaveOutlined, } from "@ant-design/icons"; import { useNavigate } from "react-router-dom"; import { dashboardsApi } from "../../api/dashboards.api"; import { createSolution

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
onOk={handleCreate} confirmLoading={creating} onCancel={() => setCreateOpen(false)} > <Input placeholder="Dashboard Name" value={newName} onChange={(e) => setNewName(e.target.value)} /> </Modal> {/* Save as Solution Modal */} <Modal title="Save as Solution" open={publishOpen} onOk={handlePublishSolution} confirmLoading={p

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
ading={creating} onCancel={() => setCreateOpen(false)} > <Input placeholder="Dashboard Name" value={newName} onChange={(e) => setNewName(e.target.value)} /> </Modal> {/* Save as Solution Modal */} <Modal title="Save as Solution" open={publishOpen} onOk={handlePublishSolution} confirmLoading={publishing} onCancel={closePubli

c:/autoconnecto/frontend/src/features/dashboards/DashboardListPage.tsx

text
const { Title, Text } = Typography; const { TextArea } = Input; interface Dashboard { dashboardId: string; name: string; type: "STATIC" | "CONTEXT_DEVICE"; createdAt?: string; } export default function DashboardListPage() { const navigate = useNavigate(); const [dashboards, setDashboards] = useState<Dashboard[]>([]); const [loading, setLoading] = useState(true); const [canPublish, setCanPublish] = useState(false); c

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmSummaryWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmSummaryWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmSummaryWidgetConfig.tsx

text
import { useEffect, useState } from "react"; import { Input, Select, Switch, InputNumber, Typography } from "antd"; const { Text } = Typography; export default function AlarmSummaryWidgetConfig({ config, onChange, }: any) { const cfg = config || {}; const [title, setTitle] = useState(cfg.title || "Alarm Summary");

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmSummaryWidgetConfig.tsx

text
tus] = useState<string[]>( cfg.status || ["ACTIVE"] ); const [severity, setSeverity] = useState<string[]>( cfg.severity || ["CRITICAL", "MAJOR", "MINOR", "WARNING"] ); const [ackState, setAckState] = useState<string>( cfg.ackState || "ALL" ); const [limit, setLimit] = useState<number>(cfg.limit ?? 200); const [compact, setCompact] = useState<boolean>(cfg.compact !== false); const [showSeverityBreakdown, setShowSeverit

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Checkbox, InputNumber, Select, Switch, Typography, Divider, } from "antd"; import { useParams } from "react-router-dom"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; const ALL_COLUMNS = [ { label: "Device",

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AlarmWidgetConfig.tsx

text
tus] = useState<string[]>( cfg.status || ["ACTIVE"] ); const [severity, setSeverity] = useState<string[]>( cfg.severity || ["CRITICAL", "MAJOR", "MINOR", "WARNING"] ); const [ackState, setAckState] = useState<string>( cfg.ackState || "ALL" ); const [showCounters, setShowCounters] = useState<boolean>( cfg.showCounters ?? true ); const [autoRefresh, setAutoRefresh] = useState<boolean>( cfg.autoRefresh ?? true

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnalogMeterWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnalogMeterWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnalogMeterWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Button, Divider, Input, InputNumber, Select, Space, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type MeterItem = { id: string; deviceId: string; label: string; key: string; unit: string; m

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnomalyInsightsWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnomalyInsightsWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AnomalyInsightsWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function AnomalyInsightsWidgetConfig({ co

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AssetAdminTableWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AssetAdminTableWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AssetAdminTableWidgetConfig.tsx

text
import { useEffect, useState } from "react"; import { Input, InputNumber, Select, Space, Switch, Divider, Alert, } from "antd"; type AssetRelationFilter = "all" | "withDevices" | "withoutDevices"; const RELATION_OPTIONS = [ { label: "All Assets", value: "all" }, { label: "With Devices", value: "withDevic

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AssetAdminTableWidgetConfig.tsx

text
t"; import { Input, InputNumber, Select, Space, Switch, Divider, Alert, } from "antd"; type AssetRelationFilter = "all" | "withDevices" | "withoutDevices"; const RELATION_OPTIONS = [ { label: "All Assets", value: "all" }, { label: "With Devices", value: "withDevices" }, { label: "Without Devices", value: "withoutDevices" }, ]; export default function AssetAdminTableWidgetConfig({ config, onChange, }: any) {

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AttributeControlCardWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AttributeControlCardWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/AttributeControlCardWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Button, Input, Select, Typography, Alert, Space, Divider } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; type Scope = "shared" | "client" | "server"; type AttributePairItem = { id: string; label?: string; w

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BarChartWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BarChartWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BarChartWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, Input, InputNumber, Switch, Divider, Space, Alert, Radio, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type BarItem = { id: string; deviceId: string; label: string; key: string; color: str

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BatteryIndicatorWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BatteryIndicatorWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/BatteryIndicatorWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Divider, Input, InputNumber, Radio, Select, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type ValueMode = "percent" |

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/CodeWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/CodeWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/CodeWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, Input, Switch, Alert, Divider, InputNumber, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const DASHBOARD_STATE_DEVICE = "__dashb

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeltaComparisonWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeltaComparisonWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeltaComparisonWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DeltaComparisonWidgetConfig({ co

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceAlarmWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceAlarmWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceAlarmWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Checkbox, Input, InputNumber, Select, Typography, Alert } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; const DEFAULT_STATUS = ["ACTIVE"]; const DEFAULT_SEVERITY = ["CRITICAL", "MAJOR", "MINOR", "WARNING"]; type Pr

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceAlarmWidgetConfig.tsx

text
i } from "../../../../api/dashboards.api"; const { Text } = Typography; const DEFAULT_STATUS = ["ACTIVE"]; const DEFAULT_SEVERITY = ["CRITICAL", "MAJOR", "MINOR", "WARNING"]; type Props = { widget?: any; config?: any; aliases?: any[]; onChange: (cfg: any) => void; }; export default function DeviceAlarmWidgetConfig({ widget, config, aliases = [], onChange, }: Props) { const cfg = config || widget?.config || {};

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceCountWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceCountWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceCountWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Divider, Input, Select, Space, Switch } from "antd"; import { fetchDeviceTypes } from "../../../../api/devices.api"; import { dashboardsApi } from "../../../../api/dashboards.api"; type StatusFilter = "all" | "active" | "inactive"; const STATUS_OPTIONS = [ { label:

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceCountWidgetConfig.tsx

text
Types } from "../../../../api/devices.api"; import { dashboardsApi } from "../../../../api/dashboards.api"; type StatusFilter = "all" | "active" | "inactive"; const STATUS_OPTIONS = [ { label: "All Devices", value: "all" }, { label: "Active Devices", value: "active" }, { label: "Inactive Devices", value: "inactive" }, ]; function normalizeArray(value: any) { if (Array.isArray(value)) return value; if (Array.isArray(value?.items))

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceDataCardWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceDataCardWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceDataCardWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Button, Divider, Input, InputNumber, Select, Space, Switch, Typography, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; import { useDashboard } from "../../context/DashboardContext"; const { Text } = Typography;

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceHealthWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceHealthWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceHealthWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Divider, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function DeviceHealthWidgetConfig({ confi

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceTableWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceTableWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceTableWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Input, InputNumber, Select, Space, Switch, Divider, Alert, } from "antd"; import { fetchDeviceTypes } from "../../../../api/devices.api"; type StatusFilter = "all" | "active" | "inactive"; const STATUS_OPTIONS = [ { label: "All Devices", value: "all"

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DeviceTableWidgetConfig.tsx

text
ch, Divider, Alert, } from "antd"; import { fetchDeviceTypes } from "../../../../api/devices.api"; type StatusFilter = "all" | "active" | "inactive"; const STATUS_OPTIONS = [ { label: "All Devices", value: "all" }, { label: "Active Devices", value: "active" }, { label: "Inactive Devices", value: "inactive" }, ]; export default function DeviceTableWidgetConfig({ config, onChange, }: any) { const [title, setTitle] = use

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalRoundGaugeWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalRoundGaugeWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalRoundGaugeWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalVerticalBarWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalVerticalBarWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DigitalVerticalBarWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DoughnutWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DoughnutWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DoughnutWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, Input, InputNumber, Switch, Divider, Space, Alert, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type DoughnutItem = { id: string; deviceId: string; label: string; key: string; color: string;

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DualAxisChartWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DualAxisChartWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/DualAxisChartWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Divider, Space, Alert, Switch, Input, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; type SummaryMetric = "first" | "last" | "avg" | "min" | "max" | "sum"; type CurveType = | "linear" | "mo

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/EcgStripWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/EcgStripWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/EcgStripWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } const PAPER_OPTIONS = [ { label: "Monitor (green on dark)", value: "monitor"

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GaugeWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GaugeWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GaugeWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Input, InputNumber, Select, Switch, Typography } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; const { Text } = Typography; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } export default function

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioControlWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioControlWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioControlWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type GpioItem = { id: str

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioStatusWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioStatusWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/GpioStatusWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type GpioItem = { id: str

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ImagePanelWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ImagePanelWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/ImagePanelWidgetConfig.tsx

text
import { useEffect, useState } from "react"; import { Alert, Input, Select, Switch } from "antd"; interface Props { config: any; onChange: (cfg: any) => void; } export default function ImagePanelWidgetConfig({ config, onChange }: Props) { const [title, setTitle] = useState(config.title || ""); const [showTitle, setShowTitle] = u

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/IndoorEnvironmentWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/IndoorEnvironmentWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/IndoorEnvironmentWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Alert, Button, Card, Divider, Input, InputNumber, Select, Space, Switch, } from "antd"; import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; import { dashboardsApi } from "../../../../api/dashboards.api"; type ParameterKind = | "tempera

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LatestValueCardWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LatestValueCardWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LatestValueCardWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Card, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } function encodeItem(deviceId:

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LedWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LedWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/LedWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Button, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type LedItem = { id: stri

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MapWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MapWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MapWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Alert, Divider, Radio, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type MarkerMode = "simple" |

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MarkdownPanelWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MarkdownPanelWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MarkdownPanelWidgetConfig.tsx

text
import { useEffect, useState } from "react"; import { Input, InputNumber, Select, Switch, Alert } from "antd"; interface Props { config: any; onChange: (cfg: any) => void; } const DEFAULT_CONTENT = [ "# Welcome", "", "Edit this widget to add **notes**, _instructions_, or links for your team.", "", "- Supports

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MimicOverlayWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MimicOverlayWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MimicOverlayWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Button, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type DisplayMode = "led" | "value" |

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniLedWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniLedWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniLedWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Alert, Divider, Button, Radio, Switch, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type LedItem = {

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniSwitchWidgetConfig.tsx

text
Detected file: c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniSwitchWidgetConfig.tsx

c:/autoconnecto/frontend/src/features/dashboards/widgets/config/MiniSwitchWidgetConfig.tsx

text
import { useEffect, useMemo, useState } from "react"; import { Select, InputNumber, Input, Switch, Alert, Divider, Button, Radio, } from "antd"; import { dashboardsApi } from "../../../../api/dashboards.api"; interface Props { config: any; aliases: any[]; onChange: (cfg: any) => void; } type SwitchItem =

support@autoconnecto.in · founder@autoconnecto.in · +91 92121 00555 · app.autoconnecto.in