feat: allow link to be passed from outside - and external or internal

pull/108/head
Bennet Gallein 2025-05-10 11:25:22 +02:00
parent 04f64e6c58
commit 09077c4506
No known key found for this signature in database
GPG Key ID: 54F2DF6954E8C635
2 changed files with 11 additions and 4 deletions

View File

@ -5,13 +5,16 @@ import DetailChart from './DetailChart'
import DetailBar from './DetailBar' import DetailBar from './DetailBar'
import { getColor } from '@/util/color' import { getColor } from '@/util/color'
import { maintenances } from '@/uptime.config' import { maintenances } from '@/uptime.config'
import Link from 'next/link'
export default function MonitorDetail({ export default function MonitorDetail({
monitor, monitor,
state, state,
link,
}: { }: {
monitor: MonitorTarget monitor: MonitorTarget
state: MonitorState state: MonitorState
link?: string
}) { }) {
if (!state.latency[monitor.id]) if (!state.latency[monitor.id])
return ( return (
@ -65,10 +68,10 @@ export default function MonitorDetail({
// Conditionally render monitor name with or without hyperlink based on monitor.url presence // Conditionally render monitor name with or without hyperlink based on monitor.url presence
const monitorNameElement = ( const monitorNameElement = (
<Text mt="sm" fw={700} style={{ display: 'inline-flex', alignItems: 'center' }}> <Text mt="sm" fw={700} style={{ display: 'inline-flex', alignItems: 'center' }}>
{monitor.statusPageLink ? ( {link ? (
<a <a
href={monitor.statusPageLink} href={link}
target="_blank" target={link.startsWith('/') ? '_self' : '_blank'}
style={{ display: 'inline-flex', alignItems: 'center', color: 'inherit' }} style={{ display: 'inline-flex', alignItems: 'center', color: 'inherit' }}
> >
{statusIcon} {monitor.name} {statusIcon} {monitor.name}

View File

@ -76,7 +76,11 @@ export default function MonitorList({
.map((monitor) => ( .map((monitor) => (
<div key={monitor.id}> <div key={monitor.id}>
<Card.Section ml="xs" mr="xs"> <Card.Section ml="xs" mr="xs">
<MonitorDetail monitor={monitor} state={state} /> <MonitorDetail
link={`/monitor/${monitor.id}`}
monitor={monitor}
state={state}
/>
</Card.Section> </Card.Section>
</div> </div>
))} ))}