diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5336914..6b54db0 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,30 +6,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -63,7 +43,7 @@
@@ -346,7 +326,7 @@
"Vitest.replaceText function (regexp mode).should return the original text when passed an invalid regexp.executor": "Run",
"Vitest.replaceText function.executor": "Run",
"Vitest.timeBetweenDates.executor": "Run",
- "git-widget-placeholder": "#209 on fork/AshAnand34/tools-filtering",
+ "git-widget-placeholder": "#218 on fork/AshAnand34/tool/random-generators",
"ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "C:/Users/Ibrahima/IdeaProjects/omni-tools",
@@ -402,7 +382,7 @@
-
+
@@ -476,8 +456,8 @@
-
+
diff --git a/src/pages/tools/number/index.ts b/src/pages/tools/number/index.ts
index 38faf14..fa4facc 100644
--- a/src/pages/tools/number/index.ts
+++ b/src/pages/tools/number/index.ts
@@ -8,5 +8,7 @@ export const numberTools = [
numberSum,
numberGenerate,
numberArithmeticSequence,
+ numberRandomPortGenerator,
+ numberRandomNumberGenerator,
...genericCalcTools
];
diff --git a/src/pages/tools/number/random-number-generator/index.tsx b/src/pages/tools/number/random-number-generator/index.tsx
index ec988a2..ae4f471 100644
--- a/src/pages/tools/number/random-number-generator/index.tsx
+++ b/src/pages/tools/number/random-number-generator/index.tsx
@@ -1,10 +1,10 @@
-import { Box, Alert, Chip } from '@mui/material';
+import { Alert, Box } from '@mui/material';
import { useState } from 'react';
import ToolContent from '@components/ToolContent';
import { ToolComponentProps } from '@tools/defineTool';
import ToolTextResult from '@components/result/ToolTextResult';
import { GetGroupsType } from '@components/options/ToolOptions';
-import { generateRandomNumbers, validateInput, formatNumbers } from './service';
+import { formatNumbers, generateRandomNumbers, validateInput } from './service';
import { InitialValuesType, RandomNumberResult } from './types';
import { useTranslation } from 'react-i18next';
import TextFieldWithDesc from '@components/options/TextFieldWithDesc';
@@ -24,7 +24,7 @@ export default function RandomNumberGenerator({
title,
longDescription
}: ToolComponentProps) {
- const { t } = useTranslation();
+ const { t } = useTranslation('number');
const [result, setResult] = useState(null);
const [error, setError] = useState(null);
const [formattedResult, setFormattedResult] = useState('');
@@ -55,7 +55,7 @@ export default function RandomNumberGenerator({
setFormattedResult(formatted);
} catch (err) {
console.error('Random number generation failed:', err);
- setError(t('number:randomNumberGenerator.error.generationFailed'));
+ setError(t('randomNumberGenerator.error.generationFailed'));
}
};
@@ -64,7 +64,7 @@ export default function RandomNumberGenerator({
updateField
}) => [
{
- title: t('number:randomNumberGenerator.options.range.title'),
+ title: t('randomNumberGenerator.options.range.title'),
component: (
updateField('count', parseInt(value) || 10)}
description={t(
- 'number:randomNumberGenerator.options.generation.countDescription'
+ 'randomNumberGenerator.options.generation.countDescription'
)}
inputProps={{
type: 'number',
@@ -116,48 +116,48 @@ export default function RandomNumberGenerator({
updateField('allowDecimals', value)}
description={t(
- 'number:randomNumberGenerator.options.generation.allowDecimals.description'
+ 'randomNumberGenerator.options.generation.allowDecimals.description'
)}
/>
updateField('allowDuplicates', value)}
description={t(
- 'number:randomNumberGenerator.options.generation.allowDuplicates.description'
+ 'randomNumberGenerator.options.generation.allowDuplicates.description'
)}
/>
updateField('sortResults', value)}
description={t(
- 'number:randomNumberGenerator.options.generation.sortResults.description'
+ 'randomNumberGenerator.options.generation.sortResults.description'
)}
/>
)
},
{
- title: t('number:randomNumberGenerator.options.output.title'),
+ title: t('randomNumberGenerator.options.output.title'),
component: (
updateField('separator', value)}
description={t(
- 'number:randomNumberGenerator.options.output.separatorDescription'
+ 'randomNumberGenerator.options.output.separatorDescription'
)}
inputProps={{
'data-testid': 'separator-input'
@@ -183,52 +183,17 @@ export default function RandomNumberGenerator({
)}
{result && (
-
-
-
-
-
-
- {result.hasDuplicates && (
-
- )}
- {result.isSorted && (
-
- )}
-
-
+
)}
}
toolInfo={{
- title: t('number:randomNumberGenerator.info.title'),
+ title: t('randomNumberGenerator.info.title'),
description:
- longDescription || t('number:randomNumberGenerator.info.description')
+ longDescription || t('randomNumberGenerator.info.description')
}}
/>
);
diff --git a/src/pages/tools/number/random-port-generator/index.tsx b/src/pages/tools/number/random-port-generator/index.tsx
index 6621f79..338fa91 100644
--- a/src/pages/tools/number/random-port-generator/index.tsx
+++ b/src/pages/tools/number/random-port-generator/index.tsx
@@ -1,22 +1,20 @@
-import { Box, Alert, Chip } from '@mui/material';
+import { Alert, Box } from '@mui/material';
import { useState } from 'react';
import ToolContent from '@components/ToolContent';
import { ToolComponentProps } from '@tools/defineTool';
import ToolTextResult from '@components/result/ToolTextResult';
import { GetGroupsType } from '@components/options/ToolOptions';
import {
- generateRandomPorts,
- validateInput,
formatPorts,
+ generateRandomPorts,
getPortRangeInfo,
- isCommonPort,
- getPortService
+ validateInput
} from './service';
import { InitialValuesType, RandomPortResult } from './types';
import { useTranslation } from 'react-i18next';
import TextFieldWithDesc from '@components/options/TextFieldWithDesc';
import CheckboxWithDesc from '@components/options/CheckboxWithDesc';
-import RadioWithTextField from '@components/options/RadioWithTextField';
+import SimpleRadio from '@components/options/SimpleRadio';
const initialValues: InitialValuesType = {
portRange: 'registered',
@@ -32,7 +30,7 @@ export default function RandomPortGenerator({
title,
longDescription
}: ToolComponentProps) {
- const { t } = useTranslation();
+ const { t } = useTranslation('number');
const [result, setResult] = useState(null);
const [error, setError] = useState(null);
const [formattedResult, setFormattedResult] = useState('');
@@ -59,40 +57,43 @@ export default function RandomPortGenerator({
setFormattedResult(formatted);
} catch (err) {
console.error('Random port generation failed:', err);
- setError(t('number:randomPortGenerator.error.generationFailed'));
+ setError(t('randomPortGenerator.error.generationFailed'));
}
};
-
+ const portOptions = [
+ {
+ value: 'well-known',
+ label: t('randomPortGenerator.options.range.wellKnown')
+ },
+ {
+ value: 'registered',
+ label: t('randomPortGenerator.options.range.registered')
+ },
+ {
+ value: 'dynamic',
+ label: t('randomPortGenerator.options.range.dynamic')
+ },
+ {
+ value: 'custom',
+ label: t('randomPortGenerator.options.range.custom')
+ }
+ ] as const;
const getGroups: GetGroupsType | null = ({
values,
updateField
}) => [
{
- title: t('number:randomPortGenerator.options.range.title'),
+ title: t('randomPortGenerator.options.range.title'),
component: (
- updateField('portRange', value)}
- options={[
- {
- value: 'well-known',
- label: t('number:randomPortGenerator.options.range.wellKnown')
- },
- {
- value: 'registered',
- label: t('number:randomPortGenerator.options.range.registered')
- },
- {
- value: 'dynamic',
- label: t('number:randomPortGenerator.options.range.dynamic')
- },
- {
- value: 'custom',
- label: t('number:randomPortGenerator.options.range.custom')
- }
- ]}
- />
+ {portOptions.map((option) => (
+ updateField('portRange', option.value)}
+ />
+ ))}
{values.portRange === 'custom' && (
@@ -102,7 +103,7 @@ export default function RandomPortGenerator({
updateField('minPort', parseInt(value) || 1024)
}
description={t(
- 'number:randomPortGenerator.options.range.minPortDescription'
+ 'randomPortGenerator.options.range.minPortDescription'
)}
inputProps={{
type: 'number',
@@ -117,7 +118,7 @@ export default function RandomPortGenerator({
updateField('maxPort', parseInt(value) || 49151)
}
description={t(
- 'number:randomPortGenerator.options.range.maxPortDescription'
+ 'randomPortGenerator.options.range.maxPortDescription'
)}
inputProps={{
type: 'number',
@@ -140,14 +141,14 @@ export default function RandomPortGenerator({
)
},
{
- title: t('number:randomPortGenerator.options.generation.title'),
+ title: t('randomPortGenerator.options.generation.title'),
component: (
updateField('count', parseInt(value) || 5)}
description={t(
- 'number:randomPortGenerator.options.generation.countDescription'
+ 'randomPortGenerator.options.generation.countDescription'
)}
inputProps={{
type: 'number',
@@ -159,37 +160,37 @@ export default function RandomPortGenerator({
updateField('allowDuplicates', value)}
description={t(
- 'number:randomPortGenerator.options.generation.allowDuplicates.description'
+ 'randomPortGenerator.options.generation.allowDuplicates.description'
)}
/>
updateField('sortResults', value)}
description={t(
- 'number:randomPortGenerator.options.generation.sortResults.description'
+ 'randomPortGenerator.options.generation.sortResults.description'
)}
/>
)
},
{
- title: t('number:randomPortGenerator.options.output.title'),
+ title: t('randomPortGenerator.options.output.title'),
component: (
updateField('separator', value)}
description={t(
- 'number:randomPortGenerator.options.output.separatorDescription'
+ 'randomPortGenerator.options.output.separatorDescription'
)}
inputProps={{
'data-testid': 'separator-input'
@@ -215,80 +216,17 @@ export default function RandomPortGenerator({
)}
{result && (
-
-
-
-
-
-
- {result.hasDuplicates && (
-
- )}
- {result.isSorted && (
-
- )}
-
-
- {result.ports.length > 0 && (
-
-
- {t('number:randomPortGenerator.result.portDetails')}:
-
-
- {result.ports.slice(0, 10).map((port, index) => (
-
- ))}
- {result.ports.length > 10 && (
-
- )}
-
-
- )}
-
+
)}
}
toolInfo={{
- title: t('number:randomPortGenerator.info.title'),
+ title: t('randomPortGenerator.info.title'),
description:
- longDescription || t('number:randomPortGenerator.info.description')
+ longDescription || t('randomPortGenerator.info.description')
}}
/>
);
diff --git a/src/pages/tools/number/random-port-generator/meta.ts b/src/pages/tools/number/random-port-generator/meta.ts
index d914b3d..580de1a 100644
--- a/src/pages/tools/number/random-port-generator/meta.ts
+++ b/src/pages/tools/number/random-port-generator/meta.ts
@@ -6,7 +6,8 @@ export const tool = defineTool('number', {
name: 'number:randomPortGenerator.title',
description: 'number:randomPortGenerator.description',
shortDescription: 'number:randomPortGenerator.shortDescription',
- longDescription: 'number:randomPortGenerator.longDescription'
+ longDescription: 'number:randomPortGenerator.longDescription',
+ userTypes: ['developers']
},
path: 'random-port-generator',
icon: 'mdi:network',