@@ -66,62 +66,68 @@ export function Monitoring({instanceParams}: MonitoringParams) {
6666 < div >
6767 < div className = "flex justify-between" >
6868 < h1 className = "pb-6 text-3xl" > Status</ h1 >
69- < div >
70- < Label className = "ml-8 mr-2" > Metric:</ Label >
71- < Select
72- defaultValue = { selectedMetric . id }
73- onValueChange = { ( value ) => {
74- setSelectedMetric ( metrics . find ( ( m ) => m . id === value ) || metrics [ 0 ] ) ;
75- } } >
76- < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
77- < SelectValue />
78- </ SelectTrigger >
79- < SelectContent >
80- < SelectGroup >
81- { metrics . map ( ( m ) => {
82- let itemLabel = m . label ?? m . name ;
83- if ( m . path ) {
84- itemLabel += ` (${ m . path } )` ;
85- }
86- return < SelectItem key = { m . id } value = { m . id } > { itemLabel } </ SelectItem > ;
87- } ) }
88- </ SelectGroup >
89- </ SelectContent >
90- </ Select >
91- < Label className = "ml-8 mr-2" > Show last</ Label >
92- < Select
93- defaultValue = { timeWindow . value . toString ( ) }
94- onValueChange = { ( value ) => {
95- setTimeWindow ( windowOptions . find ( ( o ) => o . value === Number ( value ) ) ! ) ;
96- } } >
97- < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
98- < SelectValue />
99- </ SelectTrigger >
100- < SelectContent >
101- < SelectGroup >
102- { windowOptions . map ( ( o ) => {
103- return < SelectItem key = { o . value } value = { o . value . toString ( ) } > { o . label } </ SelectItem >
104- } ) }
105- </ SelectGroup >
106- </ SelectContent >
107- </ Select >
108- < Label className = "ml-8 mr-2" > Update every</ Label >
109- < Select
110- defaultValue = { updateInterval . value . toString ( ) }
111- onValueChange = { ( value ) => {
112- setUpdateInterval ( intervalOptions . find ( ( o ) => o . value === Number ( value ) ) ! ) ;
113- } } >
114- < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
115- < SelectValue />
116- </ SelectTrigger >
117- < SelectContent >
118- < SelectGroup >
119- { intervalOptions . map ( ( o ) => {
120- return < SelectItem key = { o . value } value = { o . value . toString ( ) } > { o . label } </ SelectItem >
121- } ) }
122- </ SelectGroup >
123- </ SelectContent >
124- </ Select >
69+ < div className = "justify-items-end grid grid-cols-1 lg:grid-cols-3 gap-4" >
70+ < div className = "flex flex-nowrap items-center" >
71+ < Label className = "ml-8 mr-2" > Metric:</ Label >
72+ < Select
73+ defaultValue = { selectedMetric . id }
74+ onValueChange = { ( value ) => {
75+ setSelectedMetric ( metrics . find ( ( m ) => m . id === value ) || metrics [ 0 ] ) ;
76+ } } >
77+ < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
78+ < SelectValue />
79+ </ SelectTrigger >
80+ < SelectContent >
81+ < SelectGroup >
82+ { metrics . map ( ( m ) => {
83+ let itemLabel = m . label ?? m . name ;
84+ if ( m . path ) {
85+ itemLabel += ` (${ m . path } )` ;
86+ }
87+ return < SelectItem key = { m . id } value = { m . id } > { itemLabel } </ SelectItem > ;
88+ } ) }
89+ </ SelectGroup >
90+ </ SelectContent >
91+ </ Select >
92+ </ div >
93+ < div className = "flex flex-nowrap items-center" >
94+ < Label className = "ml-8 mr-2" > Show last</ Label >
95+ < Select
96+ defaultValue = { timeWindow . value . toString ( ) }
97+ onValueChange = { ( value ) => {
98+ setTimeWindow ( windowOptions . find ( ( o ) => o . value === Number ( value ) ) ! ) ;
99+ } } >
100+ < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
101+ < SelectValue />
102+ </ SelectTrigger >
103+ < SelectContent >
104+ < SelectGroup >
105+ { windowOptions . map ( ( o ) => {
106+ return < SelectItem key = { o . value } value = { o . value . toString ( ) } > { o . label } </ SelectItem >
107+ } ) }
108+ </ SelectGroup >
109+ </ SelectContent >
110+ </ Select >
111+ </ div >
112+ < div className = "flex flex-nowrap items-center" >
113+ < Label className = "ml-8 mr-2" > Update every</ Label >
114+ < Select
115+ defaultValue = { updateInterval . value . toString ( ) }
116+ onValueChange = { ( value ) => {
117+ setUpdateInterval ( intervalOptions . find ( ( o ) => o . value === Number ( value ) ) ! ) ;
118+ } } >
119+ < SelectTrigger className = "inline-flex align-middle w-auto h-auto" >
120+ < SelectValue />
121+ </ SelectTrigger >
122+ < SelectContent >
123+ < SelectGroup >
124+ { intervalOptions . map ( ( o ) => {
125+ return < SelectItem key = { o . value } value = { o . value . toString ( ) } > { o . label } </ SelectItem >
126+ } ) }
127+ </ SelectGroup >
128+ </ SelectContent >
129+ </ Select >
130+ </ div >
125131 </ div >
126132 </ div >
127133 < MetricVisualization
0 commit comments