diff --git a/client/public/locales/en/common.json b/client/public/locales/en/common.json index 15cb28b..f24f0e7 100644 --- a/client/public/locales/en/common.json +++ b/client/public/locales/en/common.json @@ -9,6 +9,7 @@ "buttons": { "create": "Create", "save": "Save", + "saveAndAdd": "Save and Add", "logout": "Log out", "delete": "Delete", "edit": "Edit", diff --git a/client/src/pages/spools/create.tsx b/client/src/pages/spools/create.tsx index 79e1690..a4db0e9 100644 --- a/client/src/pages/spools/create.tsx +++ b/client/src/pages/spools/create.tsx @@ -1,13 +1,15 @@ import React, { useState } from "react"; import { IResourceComponentsProps, useTranslate } from "@refinedev/core"; import { Create, useForm, useSelect } from "@refinedev/antd"; -import { Form, Input, DatePicker, Select, InputNumber, Radio, Divider } from "antd"; +import { Form, Input, DatePicker, Select, InputNumber, Radio, Divider, Button } 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 { useSpoolmanLocations } from "../../components/otherModels"; +import { MinusOutlined, PlusOutlined } from "@ant-design/icons"; +import '../../utils/overrides.css' interface CreateOrCloneProps { mode: "create" | "clone"; @@ -16,8 +18,9 @@ interface CreateOrCloneProps { export const SpoolCreate: React.FC = (props) => { const t = useTranslate(); - const { form, formProps, saveButtonProps, formLoading } = useForm(); - + const { form, formProps, formLoading, onFinish, redirect } = useForm({ + redirect: false + }); if (props.mode === "clone" && formProps.initialValues) { // Clear out the values that we don't want to clone formProps.initialValues.first_used = null; @@ -28,6 +31,19 @@ export const SpoolCreate: React.FC { + let values = await form.validateFields(); + if (quantity > 1) { + let submit = Array(quantity).fill(values); + // queue multiple creates this way for now Refine doesn't seem to map Arrays to createMany or multiple creates like it says it does + submit.forEach(async r => await onFinish(r)); + redirect(redirectTo, (values as ISpool).id); + } else { + await onFinish(values); + redirect(redirectTo, (values as ISpool).id); + } + } + const { queryResult } = useSelect({ resource: "filament", }); @@ -100,11 +116,43 @@ export const SpoolCreate: React.FC { + setQuantity(quantity + 1); + } + + const decrementQty = () => { + setQuantity(quantity - 1); + } + return ( ( + <> + + + + } + addonAfter={ + + } + > + + + + + )} >