Skip to content

Commit 96f404d

Browse files
Make size inputs default to MB, not bytes
1 parent 4249cf9 commit 96f404d

3 files changed

Lines changed: 31 additions & 10 deletions

File tree

src/components/form.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,23 @@ export const TextInput = ({long, enabled=true, value, update, pending}) => (
2424
/>
2525
);
2626

27+
export const SizeInput = ({long, enabled=true, value, update, pending}) => (
28+
<input
29+
type="text"
30+
disabled={!enabled}
31+
className={classNames({'input-text': true, long, pending})}
32+
value={value}
33+
onChange={(e) => {
34+
const value = e.target.value;
35+
if (/^\s*[0-9]+(\.[0-9]+)?\s*$/.test(value)) {
36+
update(value, true, value + "MB");
37+
} else {
38+
update(value);
39+
}
40+
}}
41+
/>
42+
);
43+
2744
export const TextAreaInput = ({long=true, enabled=true, value, update, pending, rows=10, maxLength}) => (
2845
<textarea
2946
type="text"

src/pages/sessions/session.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
IntegerInput,
99
ReadOnly,
1010
CheckboxInput,
11+
SizeInput,
1112
} from "../../components/form.js";
1213
import { ModalContent } from "./modals.js";
1314
import {
@@ -71,15 +72,15 @@ const SessionInfo = ({ session, openModal, vprops, locked }) => {
7172
</Field>
7273
{session.overrideSize !== undefined && (
7374
<Field label="Override size limit">
74-
<TextInput {...vprops("overrideSize")} />
75+
<SizeInput {...vprops("overrideSize")} />
7576
<p className="details">
7677
A value of 0 MB will use the server-wide size limit of{" "}
7778
{(session.baseSize / (1024 * 1024)).toFixed(2)} MB.
7879
</p>
7980
</Field>
8081
)}
8182
<Field label="Autoreset threshold">
82-
<TextInput {...vprops("resetThreshold")} />
83+
<SizeInput {...vprops("resetThreshold")} />
8384
{session.effectiveResetThreshold && (
8485
<>
8586
{" effectively "}
@@ -705,15 +706,15 @@ export class SessionPage extends React.Component {
705706
this.setState({ session, locked: session._locked, error: null });
706707
}
707708

708-
updateSetting(key, value) {
709+
updateSetting(key, value, haveChangeValue, changeValue) {
709710
this.setState((d) => ({
710711
session: {
711712
...d.session,
712713
[key]: value,
713714
},
714715
changed: {
715716
...d.changed,
716-
[key]: value,
717+
[key]: haveChangeValue ? changeValue : value,
717718
},
718719
}));
719720

@@ -898,7 +899,8 @@ export class SessionPage extends React.Component {
898899
const { session, changed, error, modal, locked } = this.state;
899900
const vprops = (name, enabled = true) => ({
900901
value: session[name],
901-
update: (value) => this.updateSetting(name, value),
902+
update: (value, haveChangeValue, changeValue) =>
903+
this.updateSetting(name, value, haveChangeValue, changeValue),
902904
pending: changed[name] !== undefined,
903905
enabled: !locked && enabled,
904906
});

src/pages/settings/index.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
TextInput,
77
CheckboxInput,
88
TextAreaInput,
9+
SizeInput,
910
} from "../../components/form.js";
1011
import * as API from "../../api";
1112
import {
@@ -29,15 +30,15 @@ export default class extends React.Component {
2930

3031
debounceTimer = null;
3132

32-
updateSetting(key, value) {
33+
updateSetting(key, value, haveChangeValue, changeValue) {
3334
this.setState((d) => ({
3435
settings: {
3536
...d.settings,
3637
[key]: value,
3738
},
3839
changed: {
3940
...d.changed,
40-
[key]: value,
41+
[key]: haveChangeValue ? changeValue : value,
4142
},
4243
}));
4344

@@ -190,7 +191,8 @@ export default class extends React.Component {
190191
const changed = this.state.changed;
191192
const vprops = (name, enabled = true) => ({
192193
value: settings[name],
193-
update: (value) => this.updateSetting(name, value),
194+
update: (value, haveChangeValue, changeValue) =>
195+
this.updateSetting(name, value, haveChangeValue, changeValue),
194196
pending: changed[name] !== undefined,
195197
enabled: enabled && !locked,
196198
});
@@ -285,11 +287,11 @@ export default class extends React.Component {
285287
<TextInput {...vprops("sessionSizeLimit")} />
286288
</Field>
287289
<Field label="Default autoreset threshold">
288-
<TextInput {...vprops("autoResetThreshold")} />
290+
<SizeInput {...vprops("autoResetThreshold")} />
289291
</Field>
290292
{settings["minimumAutoResetThreshold"] !== undefined && (
291293
<Field label="Minimum autoreset threshold">
292-
<TextInput {...vprops("minimumAutoResetThreshold")} />
294+
<SizeInput {...vprops("minimumAutoResetThreshold")} />
293295
</Field>
294296
)}
295297
<Field label="Max simultaneous sessions">

0 commit comments

Comments
 (0)