From f3d23ad9feee8abce2bbf43b9ab4fb5d3422231d Mon Sep 17 00:00:00 2001 From: Donkie Date: Tue, 28 May 2024 20:21:36 +0200 Subject: [PATCH] Added client edit support for multi colors --- client/src/pages/filaments/edit.tsx | 82 ++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/client/src/pages/filaments/edit.tsx b/client/src/pages/filaments/edit.tsx index aa36fc2..18b42a4 100644 --- a/client/src/pages/filaments/edit.tsx +++ b/client/src/pages/filaments/edit.tsx @@ -1,7 +1,7 @@ import React, { useState } from "react"; import { HttpError, IResourceComponentsProps, useTranslate } from "@refinedev/core"; import { Edit, useForm, useSelect } from "@refinedev/antd"; -import { Form, Input, DatePicker, Select, InputNumber, ColorPicker, message, Alert, Typography } from "antd"; +import { Form, Input, DatePicker, Select, InputNumber, ColorPicker, message, Alert, Typography, Radio } from "antd"; import dayjs from "dayjs"; import TextArea from "antd/es/input/TextArea"; import { numberFormatter, numberParser } from "../../utils/parsing"; @@ -11,6 +11,7 @@ import { EntityType, useGetFields } from "../../utils/queryFields"; import { ExtraFieldFormItem, StringifiedExtras } from "../../components/extraFields"; import { ParsedExtras } from "../../components/extraFields"; import { getCurrencySymbol, useCurrency } from "../../utils/settings"; +import { MultiColorPicker } from "../../components/multiColorPicker"; /* The API returns the extra fields as JSON values, but we need to parse them into their real types @@ -25,6 +26,7 @@ export const FilamentEdit: React.FC = () => { const [hasChanged, setHasChanged] = useState(false); const extraFields = useGetFields(EntityType.filament); const currency = useCurrency(); + const [colorType, setColorType] = React.useState<"single" | "multi">("single"); const { formProps, saveButtonProps } = useForm({ liveMode: "manual", @@ -49,6 +51,16 @@ export const FilamentEdit: React.FC = () => { formProps.initialValues = ParsedExtras(formProps.initialValues); } + // Update colorType state + React.useEffect(() => { + console.log(formProps.initialValues?.multi_color_hexes); + if (formProps.initialValues?.multi_color_hexes) { + setColorType("multi"); + } else { + setColorType("single"); + } + }, [formProps.initialValues?.multi_color_hexes]); + // Override the form's onFinish method to stringify the extra fields const originalOnFinish = formProps.onFinish; formProps.onFinish = (allValues: IFilamentParsedExtras) => { @@ -132,20 +144,62 @@ export const FilamentEdit: React.FC = () => { } /> - { - return e?.toHex(); - }} - > - + + { + setColorType(value.target.value); + }} + defaultValue={colorType} + value={colorType} + > + {t("filament.fields.single_color")} + {t("filament.fields.multi_color")} + + {colorType == "single" && ( + { + return e?.toHex(); + }} + > + + + )} + {colorType == "multi" && ( + + + {t("filament.fields.coaxial")} + {t("filament.fields.longitudinal")} + + + )} + {colorType == "multi" && ( + + + + )}