diff --git a/client/src/components/column.tsx b/client/src/components/column.tsx index c53a4e8..8f9e437 100644 --- a/client/src/components/column.tsx +++ b/client/src/components/column.tsx @@ -295,7 +295,7 @@ export function ActionsColumn(actionsFn: (record: Obj) => Ac } interface SpoolIconColumnProps extends FilteredQueryColumnProps { - color: (record: Obj) => string | undefined; + color: (record: Obj) => string | string[] | undefined; } export function SpoolIconColumn(props: SpoolIconColumnProps) { diff --git a/client/src/components/spoolIcon.css b/client/src/components/spoolIcon.css new file mode 100644 index 0000000..7dc205a --- /dev/null +++ b/client/src/components/spoolIcon.css @@ -0,0 +1,23 @@ +.spool-icon { + display: flex; + flex-direction: column; + width: 1.5em; + height: 2.5em; + gap: 2px; + margin: 0 0.5em; +} + +.spool-icon * { + flex: 1 1 0px; + border-radius: 2px; +} + +.spool-icon *:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.spool-icon *:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} diff --git a/client/src/components/spoolIcon.tsx b/client/src/components/spoolIcon.tsx index 26bc286..f9a5324 100644 --- a/client/src/components/spoolIcon.tsx +++ b/client/src/components/spoolIcon.tsx @@ -1,15 +1,18 @@ -import Icon from "@ant-design/icons"; -import SpoolSVG from "../icon_spool.svg?react"; +import "./spoolIcon.css"; + +export default function SpoolIcon(props: { color: string | string[] }) { + const cols = Array.isArray(props.color) ? props.color : [props.color]; -export default function SpoolIcon(props: { color: string }) { return ( - +
+ {cols.map((col) => ( +
+ ))} +
); } diff --git a/client/src/pages/filaments/list.tsx b/client/src/pages/filaments/list.tsx index 7379c3a..cd944a5 100644 --- a/client/src/pages/filaments/list.tsx +++ b/client/src/pages/filaments/list.tsx @@ -240,7 +240,8 @@ export const FilamentList: React.FC = () => { ...commonProps, id: "name", i18ncat: "filament", - color: (record: IFilamentCollapsed) => record.color_hex, + color: (record: IFilamentCollapsed) => + record.multi_color_hexes ? record.multi_color_hexes.split(",") : record.color_hex, filterValueQuery: useSpoolmanFilamentNames(), }), FilteredQueryColumn({ diff --git a/client/src/pages/filaments/model.tsx b/client/src/pages/filaments/model.tsx index 2ebb728..b21c709 100644 --- a/client/src/pages/filaments/model.tsx +++ b/client/src/pages/filaments/model.tsx @@ -16,6 +16,8 @@ export interface IFilament { settings_extruder_temp?: number; settings_bed_temp?: number; color_hex?: string; + multi_color_hexes?: string; + multi_color_direction?: string; external_id?: string; extra: { [key: string]: string }; } diff --git a/client/src/pages/spools/list.tsx b/client/src/pages/spools/list.tsx index c9ef500..35a8570 100644 --- a/client/src/pages/spools/list.tsx +++ b/client/src/pages/spools/list.tsx @@ -342,7 +342,10 @@ export const SpoolList: React.FC = () => { ...commonProps, id: "filament.combined_name", i18nkey: "spool.fields.filament_name", - color: (record: ISpoolCollapsed) => record.filament.color_hex, + color: (record: ISpoolCollapsed) => + record.filament.multi_color_hexes + ? record.filament.multi_color_hexes.split(",") + : record.filament.color_hex, dataId: "filament.combined_name", filterValueQuery: useSpoolmanFilamentFilter(), }),