Page MenuHomeSealhub

number.ts
No OneTemporary

number.ts

import { is, predicates } from "@sealcode/ts-predicates";
import { Context } from "koa";
import { FormDataValue } from "../form";
import { FieldParseResult, FormField } from "./field";
export class NumberField<
DefaultValue extends number | null = null
> extends FormField<number | DefaultValue> {
constructor(required = false, public default_value: DefaultValue) {
super(required);
}
public async isValueValid(_: Context, value: unknown) {
if (
(is(value, predicates.string) &&
!isNaN(parseFloat(value)) &&
parseFloat(value).toString() == value.trim()) ||
is(value, predicates.number) ||
((is(value, predicates.undefined) || value == "") && !this.required)
) {
return { valid: true, message: "" };
}
return { valid: false, message: "Proszę wprowadzić liczbę" };
}
async parse(
_: Context,
value: FormDataValue
): Promise<FieldParseResult<number>> {
if (
(is(value, predicates.string) &&
!isNaN(parseFloat(value)) &&
parseFloat(value).toString() == value.trim()) ||
is(value, predicates.number)
) {
return {
parsable: true,
parsed_value: parseFloat(value.toString()),
error: null,
};
} else {
return {
parsable: false,
parsed_value: null,
error: "Please enter a number",
};
}
}
public getEmptyValue(): DefaultValue {
return this.default_value;
}
}

File Metadata

Mime Type
text/x-java
Expires
Sun, Jul 13, 04:30 (23 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
806229
Default Alt Text
number.ts (1 KB)

Event Timeline