Client: Filament and vendor links in show pages

Resolves #70
This commit is contained in:
Donkie
2023-08-13 10:06:39 +02:00
parent 8b048d30b2
commit 373067bd09
2 changed files with 29 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ import dayjs from "dayjs";
import utc from "dayjs/plugin/utc"; import utc from "dayjs/plugin/utc";
import { IFilament } from "./model"; import { IFilament } from "./model";
import { enrichText } from "../../utils/parsing"; import { enrichText } from "../../utils/parsing";
import { IVendor } from "../vendors/model";
dayjs.extend(utc); dayjs.extend(utc);
@@ -20,10 +21,17 @@ export const FilamentShow: React.FC<IResourceComponentsProps> = () => {
const record = data?.data; const record = data?.data;
const formatVendor = (item: IVendor) => {
const URL = `/vendor/show/${item.id}`;
return <a href={URL}>{item.name}</a>;
};
return ( return (
<Show isLoading={isLoading}> <Show isLoading={isLoading}>
<Title level={5}>{t("filament.fields.id")}</Title> <Title level={5}>{t("filament.fields.id")}</Title>
<NumberField value={record?.id ?? ""} /> <NumberField value={record?.id ?? ""} />
<Title level={5}>{t("filament.fields.vendor")}</Title>
<TextField value={record?.vendor ? formatVendor(record?.vendor) : ""} />
<Title level={5}>{t("filament.fields.registered")}</Title> <Title level={5}>{t("filament.fields.registered")}</Title>
<DateField <DateField
value={dayjs.utc(record?.registered).local()} value={dayjs.utc(record?.registered).local()}

View File

@@ -7,6 +7,7 @@ import dayjs from "dayjs";
import utc from "dayjs/plugin/utc"; import utc from "dayjs/plugin/utc";
import { ISpool } from "./model"; import { ISpool } from "./model";
import { enrichText } from "../../utils/parsing"; import { enrichText } from "../../utils/parsing";
import { IFilament } from "../filaments/model";
dayjs.extend(utc); dayjs.extend(utc);
@@ -20,10 +21,30 @@ export const SpoolShow: React.FC<IResourceComponentsProps> = () => {
const record = data?.data; const record = data?.data;
const formatFilament = (item: IFilament) => {
let vendorPrefix = "";
if (item.vendor) {
vendorPrefix = `${item.vendor.name} - `;
}
let name = item.name;
if (!name) {
name = `ID: ${item.id}`;
}
let material = "";
if (item.material) {
material = ` - ${item.material}`;
}
const label = `${vendorPrefix}${name}${material}`;
const URL = `/filament/show/${item.id}`;
return <a href={URL}>{label}</a>;
};
return ( return (
<Show isLoading={isLoading}> <Show isLoading={isLoading}>
<Title level={5}>{t("spool.fields.id")}</Title> <Title level={5}>{t("spool.fields.id")}</Title>
<NumberField value={record?.id ?? ""} /> <NumberField value={record?.id ?? ""} />
<Title level={5}>{t("spool.fields.filament")}</Title>
<TextField value={record ? formatFilament(record?.filament) : ""} />
<Title level={5}>{t("spool.fields.registered")}</Title> <Title level={5}>{t("spool.fields.registered")}</Title>
<DateField <DateField
value={dayjs.utc(record?.registered).local()} value={dayjs.utc(record?.registered).local()}
@@ -44,12 +65,6 @@ export const SpoolShow: React.FC<IResourceComponentsProps> = () => {
title={dayjs.utc(record?.last_used).local().format()} title={dayjs.utc(record?.last_used).local().format()}
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
/> />
{/* <Title level={5}>{t("spool.fields.filament_id")}</Title>
{filamentIsLoading ? (
<>Loading...</>
) : (
<>{filamentData?.data?.id}</>
)} */}
<Title level={5}>{t("spool.fields.remaining_length")}</Title> <Title level={5}>{t("spool.fields.remaining_length")}</Title>
<NumberFieldUnit <NumberFieldUnit
value={record?.remaining_length ?? ""} value={record?.remaining_length ?? ""}