Skip to content

Commit 51d55d1

Browse files
committed
animated panel to the Logs page
1 parent 02f1198 commit 51d55d1

File tree

2 files changed

+26
-21
lines changed
  • apps/webapp/app
    • components/logs
    • routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs

2 files changed

+26
-21
lines changed

apps/webapp/app/components/logs/LogsTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ export function LogsTable({
167167
>
168168
<DateTimeAccurate date={log.triggeredTimestamp} hour12={false} />
169169
</TableCell>
170-
<TableCell className="min-w-24" onClick={handleRowClick} hasAction>
171-
<TruncatedCopyableValue value={log.runId} />
170+
<TableCell className="min-w-24 cursor-pointer" onClick={handleRowClick}>
171+
<span className="font-mono text-xs">{log.runId}</span>
172172
</TableCell>
173173
<TableCell className="min-w-32" onClick={handleRowClick} hasAction>
174174
<span className="font-mono text-xs">{log.taskIdentifier}</span>

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ import { LogsTaskFilter } from "~/components/logs/LogsTaskFilter";
3232
import { LogsRunIdFilter } from "~/components/logs/LogsRunIdFilter";
3333
import { TimeFilter } from "~/components/runs/v3/SharedFilters";
3434
import {
35+
RESIZABLE_PANEL_ANIMATION,
3536
ResizableHandle,
3637
ResizablePanel,
3738
ResizablePanelGroup,
39+
collapsibleHandleClassName,
3840
} from "~/components/primitives/Resizable";
3941
import { Button } from "~/components/primitives/Buttons";
4042
import { FEATURE_FLAG, validateFeatureFlagValue } from "~/v3/featureFlags";
@@ -148,7 +150,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
148150
from,
149151
to,
150152
defaultPeriod: "1h",
151-
retentionLimitDays
153+
retentionLimitDays,
152154
})
153155
.catch((error) => {
154156
if (error instanceof ServiceValidationError) {
@@ -165,8 +167,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
165167
};
166168

167169
export default function Page() {
168-
const { data, defaultPeriod, retentionLimitDays } =
169-
useTypedLoaderData<typeof loader>();
170+
const { data, defaultPeriod, retentionLimitDays } = useTypedLoaderData<typeof loader>();
170171

171172
return (
172173
<PageContainer>
@@ -192,10 +193,7 @@ export default function Page() {
192193
resolve={data}
193194
errorElement={
194195
<div className="grid h-full max-h-full grid-rows-[2.5rem_auto_1fr] overflow-hidden">
195-
<FiltersBar
196-
defaultPeriod={defaultPeriod}
197-
retentionLimitDays={retentionLimitDays}
198-
/>
196+
<FiltersBar defaultPeriod={defaultPeriod} retentionLimitDays={retentionLimitDays} />
199197
<div className="flex items-center justify-center px-3 py-12">
200198
<Callout variant="error" className="max-w-fit">
201199
Unable to load your logs. Please refresh the page or try again in a moment.
@@ -228,10 +226,7 @@ export default function Page() {
228226
defaultPeriod={defaultPeriod}
229227
retentionLimitDays={retentionLimitDays}
230228
/>
231-
<LogsList
232-
list={result}
233-
defaultPeriod={defaultPeriod}
234-
/>
229+
<LogsList list={result} defaultPeriod={defaultPeriod} />
235230
</div>
236231
);
237232
}}
@@ -464,11 +459,21 @@ function LogsList({
464459
onLogSelect={handleLogSelect}
465460
/>
466461
</ResizablePanel>
467-
{/* Side panel for log details */}
468-
{selectedLogId && (
469-
<>
470-
<ResizableHandle id="logs-handle" />
471-
<ResizablePanel id="log-detail" min="300px" default="430px" max="600px" isStaticAtRest>
462+
<ResizableHandle id="logs-handle" className={collapsibleHandleClassName(!!selectedLogId)} />
463+
<ResizablePanel
464+
id="log-detail"
465+
default="430px"
466+
min="430px"
467+
max="600px"
468+
className="overflow-hidden"
469+
collapsible
470+
collapsed={!selectedLogId}
471+
onCollapseChange={() => {}}
472+
collapsedSize="0px"
473+
collapseAnimation={RESIZABLE_PANEL_ANIMATION}
474+
>
475+
<div className="h-full" style={{ minWidth: 430 }}>
476+
{selectedLogId && (
472477
<Suspense
473478
fallback={
474479
<div className="flex h-full items-center justify-center">
@@ -483,9 +488,9 @@ function LogsList({
483488
searchTerm={list.searchTerm}
484489
/>
485490
</Suspense>
486-
</ResizablePanel>
487-
</>
488-
)}
491+
)}
492+
</div>
493+
</ResizablePanel>
489494
</ResizablePanelGroup>
490495
);
491496
}

0 commit comments

Comments
 (0)