Skip to content

Commit 696a880

Browse files
Add FPS dropdown options
1 parent a886be4 commit 696a880

1 file changed

Lines changed: 28 additions & 15 deletions

File tree

apps/app/src/react/components/pages/homePage/deviceItem/DeviceItemContent.tsx

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { TextField } from '@mui/material'
1+
import { MenuItem, TextField } from '@mui/material'
22
import React, { useCallback, useContext, useEffect, useState } from 'react'
33
import { TextBtn } from '../../../../components/inputs/textBtn/TextBtn.js'
44
import { AtemOptions, CasparCGOptions, DeviceType, OBSOptions, OSCDeviceType } from 'timeline-state-resolver-types'
@@ -13,6 +13,17 @@ import { TSRDeviceId, unprotectString } from '@shared/models'
1313

1414
const MIN_PORT = 1
1515
const MAX_PORT = 65535
16+
const FPS_OPTIONS = [
17+
{ label: 'Auto (default)', value: '' },
18+
{ label: '23.98 (24000/1001)', value: 24000 / 1001 },
19+
{ label: '24', value: 24 },
20+
{ label: '25', value: 25 },
21+
{ label: '29.97 (30000/1001)', value: 30000 / 1001 },
22+
{ label: '30', value: 30 },
23+
{ label: '50', value: 50 },
24+
{ label: '59.94 (60000/1001)', value: 60000 / 1001 },
25+
{ label: '60', value: 60 },
26+
]
1627

1728
export const DeviceItemContent: React.FC<{
1829
bridge: Bridge
@@ -215,24 +226,26 @@ export const DeviceItemContent: React.FC<{
215226
<TextField
216227
label="FPS"
217228
value={fps}
229+
select
218230
size="small"
219231
margin="dense"
220-
type="number"
221-
InputProps={{ inputProps: { min: 1, max: 120, step: 0.01 } }}
222232
onChange={(event) => {
223-
const parsed = event.target.value === '' ? '' : parseFloat(event.target.value)
224-
setFps(Number.isNaN(parsed) ? '' : parsed)
233+
const raw = event.target.value
234+
const parsed = raw === '' ? '' : parseFloat(String(raw))
235+
const next = Number.isNaN(parsed) ? '' : parsed
236+
setFps(next)
237+
handleFpsChange(next)
225238
}}
226-
onBlur={() => {
227-
handleFpsChange(fps)
228-
}}
229-
onKeyUp={(e) => {
230-
if (e.key === 'Enter') {
231-
handleFpsChange(fps)
232-
;(document.activeElement as HTMLInputElement).blur()
233-
}
234-
}}
235-
/>
239+
>
240+
{FPS_OPTIONS.map((option) => (
241+
<MenuItem key={option.label} value={option.value}>
242+
{option.label}
243+
</MenuItem>
244+
))}
245+
{fps !== '' && !FPS_OPTIONS.some((option) => option.value === fps) && (
246+
<MenuItem value={fps}>Custom ({fps})</MenuItem>
247+
)}
248+
</TextField>
236249
</div>
237250
)}
238251
</>

0 commit comments

Comments
 (0)