diff --git a/client/src/pages/spools/create.tsx b/client/src/pages/spools/create.tsx index ba6299c..4a1dd44 100644 --- a/client/src/pages/spools/create.tsx +++ b/client/src/pages/spools/create.tsx @@ -1,12 +1,13 @@ import React from "react"; import { IResourceComponentsProps, useTranslate } from "@refinedev/core"; import { Create, useForm, useSelect } from "@refinedev/antd"; -import { Form, Input, DatePicker, Select, InputNumber, Radio } from "antd"; +import { Form, Input, DatePicker, Select, InputNumber } from "antd"; import dayjs from "dayjs"; import TextArea from "antd/es/input/TextArea"; import { IFilament } from "../filaments/model"; import { ISpool } from "./model"; import { numberFormatter, numberParser } from "../../utils/parsing"; +import { useSavedState } from "../../utils/saveload"; interface CreateOrCloneProps { mode: "create" | "clone"; @@ -49,120 +50,16 @@ export const SpoolCreate: React.FC a.label.localeCompare(b.label, undefined, { sensitivity: "base" })); - const selected_filament = Form.useWatch('filament_id', form); - const weight_to_use = Form.useWatch('weight_to_use', form); - const used_weight = Form.useWatch('used_weight', form); - const remaining_weight = Form.useWatch('remaining_weight', form); - const measured_weight = Form.useWatch('measured_weight', form); + const [used_weight, set_used_weight] = useSavedState("create-used_weight", 0); - const handle_weight = () => { - if (selected_filament) - { - let filament_weight = filamentOptions.find(obj => {return obj.value === selected_filament}).weight; - let spool_weight = filamentOptions.find(obj => {return obj.value === selected_filament}).spool_weight || 0; - if (weight_to_use == 1) - { - form.setFieldsValue( - { - remaining_weight: filament_weight - (used_weight || 0), - measured_weight: filament_weight - (used_weight || 0) + spool_weight - }); - return [true, false, false]; - } - else if (weight_to_use == 2) - { - form.setFieldsValue( - { - used_weight: filament_weight - (remaining_weight || 0), - measured_weight: (remaining_weight || 0) + spool_weight - }); - return [false, true, false]; - } - else if (weight_to_use == 3) - { - form.setFieldsValue( - { - used_weight: filament_weight - ((measured_weight || 0) - spool_weight), - remaining_weight: (measured_weight || 0) - spool_weight - }); - return [false, false, true]; - } -// if (weight_to_use == 0) -// { -// if (used_weight > 0) -// { -// weight_to_use = 1; -// form.setFieldsValue( -// { -// remaining_weight: filament_weight-used_weight -// }); -// return [true, false]; -// } -// else if (remaining_weight > 0) -// { -// form.setFieldsValue( -// { -// used_weight: filament_weight-remaining_weight -// }); -// weight_to_use = 2; -// return [false, true]; -// } -// else -// { -// weight_to_use = 0; -// return [true, true]; -// } -// } -// else if (weight_to_use == 1) -// { -// if (used_weight > 0) -// { -// form.setFieldsValue( -// { -// remaining_weight: filament_weight-used_weight -// }); -// return [true, false]; -// } -// else -// { -// weight_to_use = 0; -// return [true, true]; -// } -// } -// else if (weight_to_use == 2) -// { -// if (used_weight > 0) -// { -// form.setFieldsValue( -// { -// used_weight: filament_weight-remaining_weight -// }); -// return [false, true]; -// } -// else -// { -// weight_to_use = 0; -// return [true, true]; -// } -// } - - } - return [false, false, false]; - } - - const has_spool_weight = () => { - if (selected_filament) - { - return filamentOptions.find(obj => {return obj.value === selected_filament}).spool_weight - } - return false; - } + const selected_filament_id = Form.useWatch('filament_id', form); + const selected_filament = filamentOptions?.find(obj => {return obj.value === selected_filament_id}); return ( - + - + { + set_used_weight(value ?? 0); + form.setFieldsValue( + { + used_weight: value ?? 0 + }); + }} + /> - + { + set_used_weight((selected_filament?.weight || 0) - (value ?? 0)); + form.setFieldsValue( + { + used_weight: (selected_filament?.weight || 0) - (value ?? 0) + }); + }} + /> - + { + set_used_weight((selected_filament?.weight || 0) - ((value ?? 0) - (selected_filament?.spool_weight || 0))); + form.setFieldsValue( + { + used_weight: (selected_filament?.weight || 0) - ((value ?? 0) - (selected_filament?.spool_weight || 0)) + }); + }} + />