11import * as React from "react"
22
3- import { styled } from '@mui/material/styles' ;
43import TextField from "@mui/material/TextField"
54import { Parameter as ParameterT } from "./types"
65import { ShowAdvancedCtx } from "."
7- import { IconButton , Tooltip } from "@mui/material"
6+ import {
7+ IconButton ,
8+ Tooltip ,
9+ Grid
10+ } from "@mui/material"
811import { Delete } from "@mui/icons-material"
9-
10- const PREFIX = 'Parameter' ;
11-
12- const classes = {
13- parameter : `${ PREFIX } -parameter`
14- } ;
15-
16- const Root = styled ( 'section' ) ( (
17- {
18- theme
19- }
20- ) => ( {
21- [ `&.${ classes . parameter } ` ] : {
22- display : "flex" ,
23- "&> *" : {
24- flexGrow : 1 ,
25- } ,
26- "&> :not(:first-child)" : {
27- marginLeft : theme . spacing ( 1 ) ,
28- } ,
29- }
30- } ) ) ;
12+ import TimestampPicker from "./TimestampPicker"
13+ import { TimestampScope } from "@/constants"
3114
3215interface Props {
3316 parameter : ParameterT
17+ idx : number
3418 setParamName : ( name : string ) => void
3519 setParamValue : ( value : string ) => void
20+ setParamTimestamp : ( idx : number , value : number | undefined ) => void
3621 removeParam : ( ) => void
22+ allowTimestampOverride : boolean
3723}
3824
3925const Parameter : React . FC < Props > = ( {
4026 parameter,
27+ idx,
4128 setParamName,
4229 setParamValue,
30+ setParamTimestamp,
4331 removeParam,
32+ allowTimestampOverride,
4433} ) => {
45-
4634 const showAdvanced = React . useContext ( ShowAdvancedCtx )
4735
4836 const [ name , setName ] = React . useState ( parameter . name )
4937 const [ value , setValue ] = React . useState ( parameter . value || "" )
38+ const [ timestamp , setTimestamp ] = React . useState (
39+ parameter . timestamp_micros ?. toString ( ) || ""
40+ )
41+
42+ React . useEffect ( ( ) => {
43+ const num = parseInt ( timestamp , 10 )
44+ setParamTimestamp ( idx , isNaN ( num ) ? undefined : num )
45+ } , [ timestamp , setParamTimestamp , idx ] )
5046
5147 const inputs = (
52- < Root className = { classes . parameter } >
53- < TextField
54- id = { `#/events/0/params/${ name } ` }
55- variant = "outlined"
56- size = "small"
57- value = { name }
58- onChange = { e => setName ( e . target . value ) }
59- onBlur = { ( ) => setParamName ( name ) }
60- label = "name"
61- />
62- < TextField
63- variant = "outlined"
64- size = "small"
65- value = { value || "" }
66- InputLabelProps = { {
67- ...( parameter . exampleValue === undefined ? { } : { shrink : true } ) ,
68- } }
69- onChange = { e => setValue ( e . target . value ) }
70- onBlur = { ( ) => setParamValue ( value ) }
71- label = { `${ parameter . type } value` }
72- placeholder = { parameter . exampleValue ?. toString ( ) }
73- />
74- </ Root >
48+ < Grid container spacing = { 1 } >
49+ < Grid item xs >
50+ < TextField
51+ id = { `#/events/0/params/${ name } ` }
52+ variant = "outlined"
53+ size = "small"
54+ value = { name }
55+ onChange = { e => setName ( e . target . value ) }
56+ onBlur = { ( ) => setParamName ( name ) }
57+ label = "name"
58+ fullWidth
59+ />
60+ </ Grid >
61+ < Grid item xs >
62+ < TextField
63+ variant = "outlined"
64+ size = "small"
65+ value = { value || "" }
66+ InputLabelProps = { {
67+ ...( parameter . exampleValue === undefined ? { } : { shrink : true } ) ,
68+ } }
69+ onChange = { e => setValue ( e . target . value ) }
70+ onBlur = { ( ) => setParamValue ( value ) }
71+ label = { `${ parameter . type } value` }
72+ placeholder = { parameter . exampleValue ?. toString ( ) }
73+ fullWidth
74+ />
75+ </ Grid >
76+ { allowTimestampOverride && (
77+ < Grid item xs = { 12 } >
78+ < TimestampPicker
79+ timestamp = { timestamp }
80+ scope = { TimestampScope . USER_PROPERTY }
81+ setTimestamp = { setTimestamp }
82+ />
83+ </ Grid >
84+ ) }
85+ </ Grid >
7586 )
7687 if ( showAdvanced ) {
7788 return (
78- < section /* className={formClasses.trashRow} */ >
79- < Tooltip title = "remove parameter" >
80- < IconButton onClick = { removeParam } >
81- < Delete />
82- </ IconButton >
83- </ Tooltip >
84- { inputs }
85- </ section >
89+ < Grid container spacing = { 1 } alignItems = "flex-start" >
90+ < Grid item >
91+ < Tooltip title = "remove parameter" >
92+ < IconButton onClick = { removeParam } >
93+ < Delete />
94+ </ IconButton >
95+ </ Tooltip >
96+ </ Grid >
97+ < Grid item xs >
98+ { inputs }
99+ </ Grid >
100+ </ Grid >
86101 )
87102 }
88103 return inputs
89104}
90105
91- export default Parameter
106+ export default Parameter
0 commit comments