Files
omni-tools/src/pages/tools/number/generate/index.tsx

80 lines
2.5 KiB
TypeScript
Raw Normal View History

import { Box } from '@mui/material';
2024-06-27 18:39:55 +01:00
import React, { useState } from 'react';
2025-02-23 01:38:42 +01:00
import ToolTextResult from '@components/result/ToolTextResult';
import ToolOptions from '@components/options/ToolOptions';
2024-06-27 18:39:55 +01:00
import { listOfIntegers } from './service';
2025-02-23 01:38:42 +01:00
import ToolInputAndResult from '@components/ToolInputAndResult';
import TextFieldWithDesc from '@components/options/TextFieldWithDesc';
2024-06-27 18:39:55 +01:00
const initialValues = {
firstValue: '1',
numberOfNumbers: '10',
step: '1',
separator: '\\n'
};
export default function SplitText() {
const [result, setResult] = useState<string>('');
return (
<Box>
<ToolInputAndResult
result={<ToolTextResult title={'Total'} value={result} />}
/>
<ToolOptions
2024-06-27 21:52:41 +01:00
getGroups={({ values, updateField }) => [
2024-06-27 18:39:55 +01:00
{
title: 'Arithmetic sequence option',
component: (
<Box>
<TextFieldWithDesc
description={'Start sequence from this number.'}
value={values.firstValue}
2024-06-27 21:52:41 +01:00
onOwnChange={(val) => updateField('firstValue', val)}
2024-06-27 18:39:55 +01:00
type={'number'}
/>
<TextFieldWithDesc
description={'Increase each element by this amount'}
value={values.step}
2024-06-27 21:52:41 +01:00
onOwnChange={(val) => updateField('step', val)}
2024-06-27 18:39:55 +01:00
type={'number'}
/>
<TextFieldWithDesc
description={'Number of elements in sequence.'}
value={values.numberOfNumbers}
2024-06-27 21:52:41 +01:00
onOwnChange={(val) => updateField('numberOfNumbers', val)}
2024-06-27 18:39:55 +01:00
type={'number'}
/>
</Box>
)
},
{
title: 'Separator',
component: (
<TextFieldWithDesc
description={
'Separate elements in the arithmetic sequence by this character.'
}
value={values.separator}
2024-06-27 21:52:41 +01:00
onOwnChange={(val) => updateField('separator', val)}
2024-06-27 18:39:55 +01:00
/>
)
}
]}
compute={(optionsValues) => {
const { firstValue, numberOfNumbers, separator, step } =
optionsValues;
setResult(
listOfIntegers(
Number(firstValue),
Number(numberOfNumbers),
Number(step),
separator
)
);
}}
initialValues={initialValues}
/>
</Box>
);
2024-06-25 22:09:17 +01:00
}