Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ function DeploymentCodeContent({ deployment }: Props) {

return (
<CollapsiblePanel open={open} onOpenChange={setOpen}>
<CollapsibleHeader className="flex items-center gap-[10px]">
<CollapsibleHeader className="flex h-9 items-center gap-[10px]">
<CollapsibleTrigger className="flex w-full gap-2">
<CollapsibleChevron open={open} />
Invocation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ function DeploymentDetailContent({ deployment }: Props) {

return (
<CollapsiblePanel open={open} onOpenChange={setOpen}>
<CollapsibleHeader className="flex items-center gap-[10px]">
<CollapsibleHeader className="flex h-9 items-center gap-[10px]">
<CollapsibleTrigger className="flex w-full gap-2">
<CollapsibleChevron open={open} />
Details
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function EndpointCollapsibleContent({ deployment }: Props) {

return (
<CollapsiblePanel open={open} onOpenChange={setOpen}>
<CollapsibleHeader className="flex items-center gap-[10px]">
<CollapsibleHeader className="flex h-9 items-center gap-[10px]">
<CollapsibleTrigger className="flex w-full gap-2">
<CollapsibleChevron open={open} />
Endpoint
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,21 @@
import AlertCircle from "@/assets/icons/alert-circle.svg?react";
import { CollapsibleCard } from "@/components/CollapsibleCard";
import { StackInfo } from "@/components/stacks/info";
import { EmptyState } from "@/components/EmptyState";
import { StackInfoFull } from "@/components/stacks/info/stack-info-full";
import { pipelineSnapshotQueries } from "@/data/pipeline-snapshots";
import { useStack } from "@/data/stacks/stack-detail-query";
import { Deployment } from "@/types/deployments";
import { PipelineSnapshot } from "@/types/pipeline-snapshots";
import { useQuery } from "@tanstack/react-query";
import { Skeleton } from "@zenml-io/react-component-library";
import { AlertEmptyState } from "./common";
import { DeploymentDetailWrapper } from "./fetch-wrapper";

type DeploymentStackCollapsibleContentProps = {
deployment: Deployment;
};

export function DeploymentStackCollapsible() {
return <DeploymentDetailWrapper Component={DeploymentStackCollapsibleWrapper} />;
}

function DeploymentStackCollapsibleWrapper({ deployment }: DeploymentStackCollapsibleContentProps) {
return (
<CollapsibleCard title="Stack" initialOpen={true}>
<DeploymentStackCollapsibleContent deployment={deployment} />
</CollapsibleCard>
);
return <DeploymentDetailWrapper Component={DeploymentStackCollapsibleContent} />;
}

function DeploymentStackCollapsibleContent({ deployment }: DeploymentStackCollapsibleContentProps) {
Expand All @@ -46,7 +39,7 @@ function DeploymentStackCollapsibleWithSnapshot({ snapshotId }: { snapshotId: st

if (snapshotQuery.isError) {
return (
<AlertEmptyState
<StackCollapsibleEmptyState
title="Unable to get Stack"
subtitle="Something went wrong fetching the deployment snapshot"
/>
Expand Down Expand Up @@ -77,8 +70,8 @@ function DeploymentStackCollapsibleStackSection({

if (stackQuery.isError) {
return (
<AlertEmptyState
title="Unable to get Stack"
<StackCollapsibleEmptyState
title="Failed to fetch the stack"
subtitle="Something went wrong fetching the stack"
/>
);
Expand All @@ -88,12 +81,28 @@ function DeploymentStackCollapsibleStackSection({

const snapshotConfig = snapshot.metadata?.pipeline_configuration.settings || {};

return <StackInfo displayInfoBox={false} stack={stack} objectConfig={snapshotConfig} />;
return <StackInfoFull stack={stack} objectConfig={snapshotConfig} />;
}

function StackCollapsibleEmptyState({ title, subtitle }: { title: string; subtitle?: string }) {
return (
<CollapsibleCard title="Stack" initialOpen={true}>
<EmptyState
className="p-5"
icon={<AlertCircle className="h-[60px] w-[60px] fill-neutral-300" />}
>
<div className="text-center">
<p className="text-text-lg font-semibold">{title}</p>
{subtitle && <p className="text-text-md text-theme-text-secondary">{subtitle}</p>}
</div>
</EmptyState>
</CollapsibleCard>
);
}

function NoStackEmptyState() {
return (
<AlertEmptyState
<StackCollapsibleEmptyState
title="No Stack"
subtitle="There is no stack associated with this deployment."
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function DetailsContent({ snapshot }: Props) {

return (
<CollapsiblePanel open={open} onOpenChange={setOpen}>
<CollapsibleHeader className="flex items-center gap-[10px]">
<CollapsibleHeader className="flex h-9 items-center gap-[10px]">
<CollapsibleTrigger className="flex w-full gap-2">
<CollapsibleChevron open={open} />
Details
Expand Down

This file was deleted.

4 changes: 2 additions & 2 deletions src/app/snapshots/[snapshotId]/_components/snapshot-stack.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { StackInfoFull } from "@/components/stacks/info/stack-info-full";
import { pipelineSnapshotQueries } from "@/data/pipeline-snapshots";
import { stackQueries } from "@/data/stacks";
import { useQuery } from "@tanstack/react-query";
import { Skeleton } from "@zenml-io/react-component-library/components/server";
import { useParams } from "react-router-dom";
import { StackContent } from "./snapshot-stack-content";

export function SnapshotStack() {
const { snapshotId } = useParams() as {
Expand Down Expand Up @@ -39,5 +39,5 @@ export function SnapshotStack() {
return <div>Failed to load stack.</div>;
}

return <StackContent stack={stackQuery.data} />;
return <StackInfoFull stack={stackQuery.data} objectConfig={{}} />;
}
17 changes: 8 additions & 9 deletions src/components/CollapsibleCard.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import ChevronDown from "@/assets/icons/chevron-down.svg?react";
import {
CollapsibleContent,
CollapsibleHeader,
Expand All @@ -8,6 +7,7 @@ import {
} from "@zenml-io/react-component-library";
import { cn } from "@zenml-io/react-component-library/utilities";
import { useState } from "react";
import { CollapsibleChevron } from "./collapsible-chevron";
import { CopyMetadataButton } from "./copy-metadata-button";

type CollapsibleCardProps = {
Expand Down Expand Up @@ -35,12 +35,8 @@ export function CollapsibleCard({
return (
<CollapsiblePanel className={className} open={open} onOpenChange={setOpen}>
<CollapsibleHeader intent={intent} className={headerClassName}>
<CollapsibleTrigger className="flex w-full items-center gap-[10px]">
<ChevronDown
className={` ${
open ? "" : "-rotate-90"
} h-5 w-5 rounded-md fill-neutral-500 transition-transform duration-200 hover:bg-neutral-200`}
/>
<CollapsibleTrigger className="flex flex-1 items-center gap-[10px]">
<CollapsibleChevron open={open} />
{title}
</CollapsibleTrigger>

Expand All @@ -59,7 +55,7 @@ export function CollapsibleCard({
);
}

type Props = Omit<CollapsibleCardProps, "headerChildren"> & {
type Props = CollapsibleCardProps & {
copyText: string;
displayCopyButton?: boolean;
};
Expand All @@ -69,6 +65,7 @@ export function CollapsibleCardWithCopy({
displayCopyButton = true,
headerClassName,
className,
headerChildren,
...props
}: Props) {
return (
Expand All @@ -80,7 +77,9 @@ export function CollapsibleCardWithCopy({
headerClassName
)}
headerChildren={
displayCopyButton ? (
headerChildren ? (
headerChildren
) : displayCopyButton ? (
<div className="opacity-100 transition-opacity duration-200 lg:opacity-0 lg:group-hover:opacity-100">
<CopyMetadataButton copyText={copyText} />
</div>
Expand Down
5 changes: 4 additions & 1 deletion src/components/NestedCollapsible.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type Props = {
sortKeysAlphabetically?: boolean;
className?: string;
schema?: JSONSchemaDefinition;
headerChildren?: ReactNode;
};

const regex = /^<class\s+'.*'>$/;
Expand All @@ -36,7 +37,8 @@ export function NestedCollapsible({
className,
children,
isInitialOpen = false,
sortKeysAlphabetically = true
sortKeysAlphabetically = true,
headerChildren
}: PropsWithChildren<Props>) {
const objects: { [key: string]: Record<string, unknown> } = {};
const nonObjects: { [key: string]: unknown } = {};
Expand All @@ -62,6 +64,7 @@ export function NestedCollapsible({

return (
<CollapsibleCardWithCopy
headerChildren={headerChildren}
contentClassName={contentClassName}
initialOpen={isInitialOpen}
intent={intent}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function DockerImageCollapsible({ data, displayCopyButton = true }: Props

return (
<CollapsiblePanel open={open} onOpenChange={setOpen}>
<CollapsibleHeader intent="primary" className="flex items-center gap-[10px]">
<CollapsibleHeader intent="primary" className="flex h-9 items-center gap-[10px]">
<CollapsibleTrigger className="flex w-full items-center gap-[10px]">
<ChevronDown
className={` ${
Expand Down
6 changes: 3 additions & 3 deletions src/components/runs/detail-tabs/Stack/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import AlertCircle from "@/assets/icons/alert-circle.svg?react";
import { EmptyState } from "@/components/EmptyState";
import { StackInfo } from "@/components/stacks/info";
import { StackInfoFull } from "@/components/stacks/info/stack-info-full";
import { usePipelineRun } from "@/data/pipeline-runs/pipeline-run-detail-query";
import { useStack } from "@/data/stacks/stack-detail-query";
import { PipelineRun } from "@/types/pipeline-runs";
Expand Down Expand Up @@ -46,7 +46,7 @@ function StackTabContent({ stackId, run }: StackTabContentProps) {
return <p>Failed to fetch Stack</p>;
}

const config = (run.metadata?.config.settings as { [key: string]: any } | undefined) || {};
const config = run.metadata?.config.settings || {};

return <StackInfo stack={data} objectConfig={config} />;
return <StackInfoFull stack={data} objectConfig={config} />;
}
73 changes: 0 additions & 73 deletions src/components/stacks/info/ComponentCollapsible.tsx

This file was deleted.

Loading