Add TooltipFieldTemplate for enhanced user experience in forms
- Integrated TooltipFieldTemplate into PlotHistoricalManager, PlotManager, and Dashboard components to provide contextual tooltips for form fields. - Updated templates in various forms to include the new TooltipFieldTemplate alongside the existing LayoutObjectFieldTemplate. - Enhanced TooltipFieldTemplate with theme-aware colors and improved styling for better readability. - Adjusted system state to enable connection and updated the last update timestamp.
This commit is contained in:
parent
dec3a49836
commit
76c6743537
File diff suppressed because it is too large
Load Diff
|
@ -45,6 +45,7 @@ import Form from '@rjsf/chakra-ui'
|
|||
import validator from '@rjsf/validator-ajv8'
|
||||
import allWidgets from './widgets/AllWidgets'
|
||||
import LayoutObjectFieldTemplate from './rjsf/LayoutObjectFieldTemplate'
|
||||
import TooltipFieldTemplate from './rjsf/TooltipFieldTemplate'
|
||||
import PlotHistoricalSession from './PlotHistoricalSession'
|
||||
import { useVariableContext } from '../contexts/VariableContext'
|
||||
import * as api from '../services/api'
|
||||
|
@ -232,7 +233,10 @@ function CollapsiblePlotItemsForm({ data, schema, uiSchema, onSave, title, icon,
|
|||
formData={item}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onChange={(e) => {
|
||||
const newFormData = [...formData]
|
||||
newFormData[index] = e.formData
|
||||
|
|
|
@ -39,6 +39,7 @@ import Form from '@rjsf/chakra-ui'
|
|||
import validator from '@rjsf/validator-ajv8'
|
||||
import allWidgets from './widgets/AllWidgets'
|
||||
import LayoutObjectFieldTemplate from './rjsf/LayoutObjectFieldTemplate'
|
||||
import TooltipFieldTemplate from './rjsf/TooltipFieldTemplate'
|
||||
import PlotRealtimeSession from './PlotRealtimeSession'
|
||||
import { useVariableContext } from '../contexts/VariableContext'
|
||||
import * as api from '../services/api'
|
||||
|
@ -558,7 +559,10 @@ function CollapsiblePlotItemsForm({ data, schema, uiSchema, onSave, title, icon,
|
|||
formData={item}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onChange={({ formData: newItemData }) => updateItem(index, newItemData)}
|
||||
>
|
||||
<div></div> {/* Prevents form buttons from showing */}
|
||||
|
@ -624,7 +628,10 @@ function CollapsiblePlotItemsForm({ data, schema, uiSchema, onSave, title, icon,
|
|||
formData={item}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onChange={({ formData: newItemData }) => updateItem(index, newItemData)}
|
||||
>
|
||||
<div></div> {/* Prevents form buttons from showing */}
|
||||
|
@ -1176,7 +1183,10 @@ export default function PlotManager() {
|
|||
formData={selectedPlotVars}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onSubmit={({ formData }) => {
|
||||
const updatedConfig = updateSelectedPlotVariables(formData)
|
||||
savePlotVariables(updatedConfig).then(() => {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react'
|
||||
import { Box, FormControl, FormErrorMessage, Tooltip as ChakraTooltip } from '@chakra-ui/react'
|
||||
import { Box, FormControl, FormErrorMessage, Tooltip as ChakraTooltip, useColorModeValue } from '@chakra-ui/react'
|
||||
|
||||
/**
|
||||
* Custom RJSF Field Template with integrated tooltips
|
||||
|
@ -21,6 +21,11 @@ export default function TooltipFieldTemplate(props) {
|
|||
uiSchema
|
||||
} = props
|
||||
|
||||
// Theme-aware colors for tooltips
|
||||
// Both light and dark themes use dark backgrounds with light text for better readability
|
||||
const tooltipBg = useColorModeValue('gray.700', 'gray.600')
|
||||
const tooltipColor = useColorModeValue('white', 'white')
|
||||
|
||||
if (hidden) {
|
||||
return <div style={{ display: 'none' }}>{children}</div>
|
||||
}
|
||||
|
@ -36,6 +41,17 @@ export default function TooltipFieldTemplate(props) {
|
|||
<ChakraTooltip
|
||||
label={tooltipContent}
|
||||
hasArrow
|
||||
bg={tooltipBg}
|
||||
color={tooltipColor}
|
||||
fontSize="sm"
|
||||
px={3}
|
||||
py={2}
|
||||
borderRadius="md"
|
||||
maxW="300px"
|
||||
textAlign="center"
|
||||
placement="top"
|
||||
openDelay={300}
|
||||
closeDelay={100}
|
||||
>
|
||||
<Box w="full">
|
||||
{children}
|
||||
|
|
|
@ -565,7 +565,10 @@ function CollapsibleArrayItemsForm({ data, schema, uiSchema, onSave, title, icon
|
|||
formData={item}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onChange={({ formData: newItemData }) => updateItem(index, newItemData)}
|
||||
>
|
||||
<div></div> {/* Prevents form buttons from showing */}
|
||||
|
@ -665,7 +668,10 @@ function CollapsibleArrayForm({ data, schema, uiSchema, onSave, title, icon, get
|
|||
formData={formData}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onSubmit={({ formData }) => onSave(formData)}
|
||||
onChange={({ formData }) => setFormData(formData)}
|
||||
>
|
||||
|
@ -1602,7 +1608,10 @@ function DatasetManager() {
|
|||
formData={selectedDatasetVars}
|
||||
validator={validator}
|
||||
widgets={allWidgets}
|
||||
templates={{ ObjectFieldTemplate: LayoutObjectFieldTemplate }}
|
||||
templates={{
|
||||
ObjectFieldTemplate: LayoutObjectFieldTemplate,
|
||||
FieldTemplate: TooltipFieldTemplate
|
||||
}}
|
||||
onSubmit={({ formData }) => {
|
||||
updateSelectedDatasetVariables(formData)
|
||||
saveVariables(variablesConfig).then(() => {
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"last_state": {
|
||||
"should_connect": false,
|
||||
"should_connect": true,
|
||||
"should_stream": false,
|
||||
"active_datasets": [
|
||||
"DAR"
|
||||
]
|
||||
},
|
||||
"auto_recovery_enabled": true,
|
||||
"last_update": "2025-08-27T12:43:58.812150",
|
||||
"last_update": "2025-08-27T12:48:41.182586",
|
||||
"plotjuggler_path": "C:\\Program Files\\PlotJuggler\\plotjuggler.exe"
|
||||
}
|
Loading…
Reference in New Issue