Skip to content

Commit 6adc861

Browse files
committed
chore: added training graphs
1 parent f9202a4 commit 6adc861

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed

frontend/src/app/routes/models/model-details.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export const ModelDetailsPage = () => {
6666
>
6767
<ModelDetailsProperties
6868
trainingId={data?.published_training as number}
69-
thumbnailURL={data?.thumbnail_url}
69+
datasetId={data?.dataset}
7070
/>
7171
</ModelDetailsSection>
7272
<div className="flex md:hidden">
@@ -95,6 +95,7 @@ export const ModelDetailsPage = () => {
9595
modelId={data?.id as string}
9696
trainingId={data?.published_training as number}
9797
modelOwner={data?.user.username as string}
98+
datasetId={data?.dataset as number}
9899
/>
99100
</ModelDetailsSection>
100101
</div>

frontend/src/features/models/components/dialogs/training-details-dialog.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ type TrainingDetailsDialogProps = {
66
isOpened: boolean;
77
closeDialog: () => void;
88
trainingId: number;
9+
datasetId:number
910
};
1011

1112
const TrainingDetailsDialog: React.FC<TrainingDetailsDialogProps> = ({
1213
isOpened,
1314
closeDialog,
14-
trainingId,
15+
trainingId,datasetId
1516
}) => {
1617
const isMobile = useDevice();
1718

@@ -22,7 +23,7 @@ const TrainingDetailsDialog: React.FC<TrainingDetailsDialogProps> = ({
2223
label={`Training ${trainingId}`}
2324
size={isMobile ? "extra-large" : "medium"}
2425
>
25-
<ModelProperties trainingId={trainingId} isTrainingDetailsDialog />
26+
<ModelProperties trainingId={trainingId} isTrainingDetailsDialog datasetId={datasetId}/>
2627
</Dialog>
2728
);
2829
};

frontend/src/features/models/components/model-card.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ import { Link } from "@/components/ui/link";
66
import { truncateString } from "@/utils";
77
import { roundNumber } from "@/utils/number-utils";
88

9+
910
type ModelCardProps = {
1011
model: TModel;
1112
};
1213

14+
1315
const ModelCard: React.FC<ModelCardProps> = ({ model }) => {
16+
1417
return (
1518
<div className="flex items-center w-full">
1619
<Link

frontend/src/features/models/components/model-details-properties.tsx

+12-11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { ModelPropertiesSkeleton } from "./skeletons";
1313
import CodeBlock from "@/components/ui/codeblock/codeblock";
1414
import ChevronDownIcon from "@/components/ui/icons/chevron-down";
1515
import { APP_CONTENT, cn } from "@/utils";
16+
import { ENVS } from "@/config/env";
1617

1718
enum TrainingStatus {
1819
FAILED = "FAILED",
@@ -74,13 +75,13 @@ const PropertyDisplay: React.FC<PropertyDisplayProps> = ({
7475
type ModelPropertiesProps = {
7576
trainingId: number;
7677
accuracy?: number;
77-
thumbnailURL?: string;
78+
datasetId?: number;
7879
isTrainingDetailsDialog?: boolean;
7980
};
8081

8182
const ModelProperties: React.FC<ModelPropertiesProps> = ({
8283
trainingId,
83-
thumbnailURL,
84+
datasetId,
8485
isTrainingDetailsDialog = false,
8586
}) => {
8687
const { isPending, data, error, isError } = useTrainingDetails(trainingId);
@@ -106,6 +107,9 @@ const ModelProperties: React.FC<ModelPropertiesProps> = ({
106107
source_imagery,
107108
} = data || {};
108109

110+
111+
const trainingResultsGraph = `${ENVS.BASE_API_URL}workspace/download/dataset_${datasetId}/output/training_${data?.id}/graphs/training_validation_sparse_categorical_accuracy.png`
112+
109113
const content = useMemo(() => {
110114
if (isPending) {
111115
return <ModelPropertiesSkeleton isTrainingDetailsDialog />;
@@ -114,7 +118,7 @@ const ModelProperties: React.FC<ModelPropertiesProps> = ({
114118
return (
115119
<div
116120
className={cn(
117-
`grid ${isTrainingDetailsDialog ? "grid-cols-2" : "grid-cols-1 lg:grid-cols-5"} gap-14 items-center`,
121+
`grid ${isTrainingDetailsDialog ? "grid-cols-2" : "grid-cols-1 lg:grid-cols-5"} gap-14 items-center `,
118122
)}
119123
>
120124
<div className="col-span-3 grid grid-cols-1 sm:grid-cols-2 grid-rows-4 gap-y-4 md:gap-y-10">
@@ -197,13 +201,10 @@ const ModelProperties: React.FC<ModelPropertiesProps> = ({
197201
isTMS
198202
/>
199203
</div>
200-
{thumbnailURL && (
201-
<div className="col-span-2">
202-
<div className=" flex lg:justify-end">
203-
<Image src={thumbnailURL} alt={"Prediction accuracy chart."} />
204-
</div>
205-
</div>
206-
)}
204+
205+
<div className={`col-span-3 lg:col-span-2 ${isTrainingDetailsDialog && 'lg:col-span-3'}`}>
206+
<Image src={trainingResultsGraph} alt={""} />
207+
</div>
207208
{/* Show logs only in modal and when status failed */}
208209
{isTrainingDetailsDialog && data?.status === TrainingStatus.FAILED && (
209210
//@ts-expect-error bad type definition
@@ -220,7 +221,7 @@ const ModelProperties: React.FC<ModelPropertiesProps> = ({
220221
input_contact_spacing,
221222
input_boundary_width,
222223
source_imagery,
223-
thumbnailURL,
224+
trainingResultsGraph
224225
]);
225226

226227
return isError ? (

frontend/src/features/models/components/training-history-table.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type TrainingHistoryTableProps = {
3030
modelId: string;
3131
trainingId: number;
3232
modelOwner: string;
33+
datasetId:number
3334
};
3435

3536
const columnDefinitions = (
@@ -225,6 +226,7 @@ const TrainingHistoryTable: React.FC<TrainingHistoryTableProps> = ({
225226
trainingId,
226227
modelId,
227228
modelOwner,
229+
datasetId
228230
}) => {
229231
const [offset, setOffset] = useState(0);
230232
const { data, isPending, isPlaceholderData } = useTrainingHistory(
@@ -264,6 +266,7 @@ const TrainingHistoryTable: React.FC<TrainingHistoryTableProps> = ({
264266
isOpened={isOpened}
265267
closeDialog={closeDialog}
266268
trainingId={activeTrainingId}
269+
datasetId={datasetId}
267270
/>
268271
<div className="h-full">
269272
<div className="w-full items-center text-body-3 flex justify-between my-4">

0 commit comments

Comments
 (0)