Skip to content

Commit

Permalink
fix: update each block keys for improved rendering performance
Browse files Browse the repository at this point in the history
  • Loading branch information
rbjornstad committed Feb 13, 2025
1 parent 7dce249 commit 43d70e4
Show file tree
Hide file tree
Showing 18 changed files with 80 additions and 92 deletions.
8 changes: 4 additions & 4 deletions src/lib/components/NetworkPolicy.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
<Heading level="3" size="small" spacing>Inbound</Heading>
{#if $data.networkPolicy.inbound.rules.length > 0}
<ul>
{#each $data.networkPolicy.inbound.rules as rule (rule.targetWorkloadName + rule.targetTeamSlug)}
{#each $data.networkPolicy.inbound.rules as rule (rule)}
<li>
{#if rule.targetWorkloadName == '*'}
Any app
Expand Down Expand Up @@ -126,7 +126,7 @@
{#if $data.networkPolicy.outbound.external.length > 0}
<Heading level="4" size="xsmall" spacing>External</Heading>
<ul>
{#each $data.networkPolicy.outbound.external.filter((e) => e.__typename === 'ExternalNetworkPolicyHost') as external (external.__typename + external.target + external.ports)}
{#each $data.networkPolicy.outbound.external.filter((e) => e.__typename === 'ExternalNetworkPolicyHost') as external (external)}
{#each external.ports as port (port)}
<li>
<IconWithText
Expand All @@ -146,7 +146,7 @@
{/each}
{/each}

{#each $data.networkPolicy.outbound.external.filter((e) => e.__typename === 'ExternalNetworkPolicyIpv4') as external (external.__typename + external.target + external.ports)}
{#each $data.networkPolicy.outbound.external.filter((e) => e.__typename === 'ExternalNetworkPolicyIpv4') as external (external)}
{#each external.ports as port (port)}
<li>
<IconWithText
Expand All @@ -164,7 +164,7 @@
{#if $data.networkPolicy.outbound.rules.length > 0}
<Heading level="4" size="xsmall" spacing>Workloads</Heading>
<ul>
{#each $data.networkPolicy.outbound.rules as rule (rule.targetWorkloadName + rule.targetTeamSlug)}
{#each $data.networkPolicy.outbound.rules as rule (rule)}
<li>
{#if rule.targetWorkloadName == '*'}
Any app
Expand Down
4 changes: 2 additions & 2 deletions src/lib/components/Persistence.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@
{/each}
{/if}
{#if $data.kafkaTopicAcls.edges.length > 0}
{#each $data.kafkaTopicAcls.edges as acl (acl.node.topic.name + acl.node.workloadName + acl.node.access + acl.node.teamName + acl.node.topic.environment.name)}
{#each $data.kafkaTopicAcls.edges as acl (acl)}
{#if acl.node.teamName !== '*'}
<a
href={`/team/${acl.node.topic.team.slug}/${acl.node.topic.environment.name === 'prod-fss' ? 'prod-gcp' : acl.node.topic.environment.name === 'dev-fss' ? 'dev-gcp' : acl.node.topic.environment.name}/kafka/${acl.node.topic.name}`}
Expand All @@ -181,7 +181,7 @@

{#snippet description()}
{#if $data.openSearch?.access.edges}
{#each $data.openSearch?.access.edges as access (access.node.access + access.node.workload.id)}
{#each $data.openSearch?.access.edges as access (access)}
{#if access.node.workload.name == $data.name}
<Detail style="font-weight: normal; color: var(--a-text-subtle);"
>{access.node.access}</Detail
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/SideMenu.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

<div class="sidemenu">
<ul>
{#each nav as { items }, i (i)}
{#each nav as { items }, i (items)}
{#if i > 0}
<hr />
{/if}
Expand Down
124 changes: 56 additions & 68 deletions src/lib/components/image/ImageVulnerabilities.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import Pagination from '$lib/Pagination.svelte';
import { changeParams } from '$lib/utils/searchparams.svelte';
import { severityToColor } from '$lib/utils/vulnerabilities';
import { Button, Skeleton, Table, Tbody, Td, Th, Thead, Tr } from '@nais/ds-svelte-community';
import { Button, Table, Tbody, Td, Th, Thead, Tr } from '@nais/ds-svelte-community';
import { CheckmarkIcon } from '@nais/ds-svelte-community/icons';
import { untrack } from 'svelte';
import type { ImageVulnerabilitiesVariables } from './$houdini';
Expand Down Expand Up @@ -43,13 +43,13 @@
$workload: String!
$orderBy: ImageVulnerabilityOrder
) @load {
team(slug: $team) @loading {
environment(name: $environment) @loading {
workload(name: $workload) @loading {
team(slug: $team) {
environment(name: $environment) {
workload(name: $workload) {
__typename
image @loading {
vulnerabilities(first: 10, orderBy: $orderBy) @paginate(mode: SinglePage) @loading {
pageInfo @loading {
image {
vulnerabilities(first: 10, orderBy: $orderBy) @paginate(mode: SinglePage) {
pageInfo {
hasNextPage
hasPreviousPage
pageStart
Expand All @@ -58,7 +58,7 @@
startCursor
totalCount
}
nodes @loading(count: 10) {
nodes {
id
description
identifier
Expand All @@ -80,7 +80,7 @@
}
}
}
workloadReferences @loading {
workloadReferences {
nodes {
workload {
id
Expand Down Expand Up @@ -176,59 +176,49 @@
<Tbody>
{#if $vulnerabilities.data}
{@const vulnz = $vulnerabilities.data.team.environment.workload.image.vulnerabilities.nodes}
{#each vulnz as v (v.description)}
{#if v !== PendingValue}
<Tr>
<Td>
{#if authorized}
<Button
variant="tertiary"
size="xsmall"
onclick={() => {
findingToSuppress = v;
suppressOpen = true;
}}
>
<code>{v.identifier}</code>
</Button>
{:else}
<code>{v.identifier}</code>
{/if}
</Td>
<Td><code>{v.package}</code></Td>
<Td
><code style="color: {severityToColor(v.severity.toLocaleLowerCase())}"
>{v.severity}</code
></Td
>
<Td style="text-align: center">
{#if v.analysisTrail.suppressed}
<CheckmarkIcon width={'18px'} height={'18px'} />
{/if}
</Td>
<Td>
{#each vulnz as v (v)}
<Tr>
<Td>
{#if authorized}
<Button
variant="tertiary-neutral"
size="small"
disabled={v.analysisTrail?.state ? false : true}
variant="tertiary"
size="xsmall"
onclick={() => {
analysisTrail = v;
analysisOpen = true;
findingToSuppress = v;
suppressOpen = true;
}}
>
<code>{v.analysisTrail?.state ? v.analysisTrail?.state : 'N/A'} </code>
<code>{v.identifier}</code>
</Button>
</Td>
</Tr>
{:else}
<Tr>
<Td><Skeleton height="32px" variant="rectangle" /></Td>
<Td><Skeleton variant="text" /></Td>
<Td><Skeleton variant="text" /></Td>
<Td><Skeleton variant="text" /></Td>
<Td><Skeleton variant="rectangle" /></Td>
</Tr>
{/if}
{:else}
<code>{v.identifier}</code>
{/if}
</Td>
<Td><code>{v.package}</code></Td>
<Td
><code style="color: {severityToColor(v.severity.toLocaleLowerCase())}"
>{v.severity}</code
></Td
>
<Td style="text-align: center">
{#if v.analysisTrail.suppressed}
<CheckmarkIcon width={'18px'} height={'18px'} />
{/if}
</Td>
<Td>
<Button
variant="tertiary-neutral"
size="small"
disabled={v.analysisTrail?.state ? false : true}
onclick={() => {
analysisTrail = v;
analysisOpen = true;
}}
>
<code>{v.analysisTrail?.state ? v.analysisTrail?.state : 'N/A'} </code>
</Button>
</Td>
</Tr>
{:else}
<Tr>
<Td colspan={999}>No vulnerabilities</Td>
Expand All @@ -238,17 +228,15 @@
</Tbody>
</Table>
{#if image}
{#if image.vulnerabilities.pageInfo !== PendingValue}
<Pagination
page={image.vulnerabilities.pageInfo}
loaders={{
loadPreviousPage: async () => await vulnerabilities.loadPreviousPage(),
loadNextPage: async () => await vulnerabilities.loadNextPage()
}}
/>
{/if}
<Pagination
page={image.vulnerabilities.pageInfo}
loaders={{
loadPreviousPage: async () => await vulnerabilities.loadPreviousPage(),
loadNextPage: async () => await vulnerabilities.loadNextPage()
}}
/>

{#if findingToSuppress && authorized !== PendingValue && authorized && image.workloadReferences && image.workloadReferences !== PendingValue}
{#if findingToSuppress && authorized !== PendingValue && authorized && image.workloadReferences}
{#key findingToSuppress.id}
<SuppressFinding
bind:open={suppressOpen}
Expand All @@ -262,7 +250,7 @@
{/key}
{/if}

{#if analysisTrail && authorized !== PendingValue && authorized && image.workloadReferences && image.workloadReferences !== PendingValue}
{#if analysisTrail && authorized !== PendingValue && authorized && image.workloadReferences}
<TrailFinding
bind:open={analysisOpen}
finding={analysisTrail}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/image/SuppressFinding.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@
audit log. Suppression will be in effect for all workloads using this image.
</p>
<Select size="small" label="Analysis" bind:value={selectedReason}>
{#each SUPPRESS_OPTIONS as option (option.value)}
{#each SUPPRESS_OPTIONS as option (option)}
{#if option.value === finding.state}
<option value={option.value}>{option.text} </option>
{:else}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/image/TrailFinding.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
</Thead>
<Tbody>
{#if finding.analysisTrail.comments.nodes}
{#each finding.analysisTrail.comments.nodes as node (node.timestamp + node.onBehalfOf + node.state + node.suppressed + node.comment)}
{#each finding.analysisTrail.comments.nodes as node (node)}
{#if node}
<Tr>
<Td>{node.onBehalfOf}</Td>
Expand Down
2 changes: 1 addition & 1 deletion src/lib/feedback/Feedback.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
</p>
<div class="wrapper">
<Select size="small" label="Type" bind:value={type}>
{#each FEEDBACK_TYPE as option (option.value)}
{#each FEEDBACK_TYPE as option (option)}
<option value={option.value}>{option.text}</option>
{/each}
</Select>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
</Tr>
</Thead>
<Tbody>
{#each bq.access.edges as edge (edge.node.email + edge.node.role)}
{#each bq.access.edges as edge (edge)}
<Tr>
<Td>{edge.node.role}</Td>
<Td
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
<Card columns={12}>
<h3>Errors</h3>
<div>
{#each bucket.status.errors as error (error.message + error.details)}
{#each bucket.status.errors as error (error)}
<details>
<summary>{error.message}</summary>
<p>{error.details}</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
</Tr>
</Thead>
<Tbody>
{#each topic.acl.nodes as a (a.access + a.teamName + a.workloadName)}
{#each topic.acl.nodes as a (a)}
<Tr>
<Td>
{#if a.teamName === '*'}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
</Tr>
</Thead>
<Tbody>
{#each instance.access.edges as edge (edge.node.access + edge.node.workload.id)}
{#each instance.access.edges as edge (edge)}
{@const access = edge.node}
<Tr>
<Td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@
</Tr>
</Thead>
<Tbody>
{#each instance.users.edges as edge (edge.node.name + edge.node.authentication)}
{#each instance.users.edges as edge (edge)}
<Tr>
<Td>{edge.node.name}</Td>
<Td>{edge.node.authentication}</Td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
</Tr>
</Thead>
<Tbody>
{#each instance.access.edges as edge (edge.node.access + edge.node.workload.id)}
{#each instance.access.edges as edge (edge)}
{@const access = edge.node}
<Tr>
<Td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
</Tr>
</Thead>
<Tbody>
{#each instance.access.edges as edge (edge.node.access + edge.node.workload.id)}
{#each instance.access.edges as edge (edge)}
{@const access = edge.node}
<Tr>
<Td>
Expand Down
4 changes: 2 additions & 2 deletions src/routes/team/[team]/(teamPages)/activity-log/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@
{:else if edge.node.__typename === 'TeamEnvironmentUpdatedActivityLogEntry'}
{edge.node.message}
{#if edge.node.teamEnvironmentUpdated.updatedFields.length > 0}
{#each edge.node.teamEnvironmentUpdated.updatedFields as field (field.field + field.oldValue + field.newValue)}
{#each edge.node.teamEnvironmentUpdated.updatedFields as field (field)}
{field.field}. Changed from {field.oldValue} to {field.newValue}.
{/each}
{/if}
Expand All @@ -199,7 +199,7 @@
{:else if edge.node.__typename === 'TeamUpdatedActivityLogEntry'}
{edge.node.message}
{#if edge.node.teamUpdated?.updatedFields.length}
{#each edge.node.teamUpdated?.updatedFields as field (field.field + field.oldValue + field.newValue)}
{#each edge.node.teamUpdated?.updatedFields as field (field)}
{field.field}. Changed from {field.oldValue} to {field.newValue}.
{/each}
{/if}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
<summary style="font-size: 1rem; var(--color-text-secondary);"
>Show details</summary
>
{#each team?.vulnerabilitySummary.status.filter((status) => status.state !== TeamVulnerabilityState.OK) as status (status.state + status.title)}
{#each team?.vulnerabilitySummary.status.filter((status) => status.state !== TeamVulnerabilityState.OK) as status (status)}
<div class="wrapper">
<Alert variant="error">
<h4>{status.title}</h4>
Expand Down
6 changes: 3 additions & 3 deletions src/routes/team/[team]/[env]/app/[app]/Ingresses.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
<Heading level="2" size="medium" spacing>Ingresses</Heading>

<div class="content">
{#each externalIngresses($data.ingresses) as ingress (ingress.url + ingress.type)}
{#each externalIngresses($data.ingresses) as ingress (ingress)}
<Tooltip content="External ingress"
><a href={ingress.url}
><IconWithText icon={GlobeIcon} size="medium">
Expand All @@ -76,7 +76,7 @@
>
{/each}

{#each internalIngresses($data.ingresses) as ingress (ingress.url + ingress.type)}
{#each internalIngresses($data.ingresses) as ingress (ingress)}
<Tooltip content="Internal ingress"
><a href={ingress.url}
><IconWithText icon={HouseIcon} size="medium">
Expand All @@ -88,7 +88,7 @@
</Tooltip>
{/each}

{#each authenticatedIngresses($data.ingresses) as ingress (ingress.url + ingress.type)}
{#each authenticatedIngresses($data.ingresses) as ingress (ingress)}
<Tooltip content="Authenticated ingress">
<a href={ingress.url}
><IconWithText icon={PadlockLockedIcon} size="medium">
Expand Down
2 changes: 1 addition & 1 deletion src/routes/team/[team]/[env]/app/[app]/Utilization.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
<div>
{scaling.minInstances} - {scaling.maxInstances} instances based on
{#if scaling.strategies && scaling.strategies.length > 0}
{#each scaling.strategies as strategy, i (strategy.__typename + i)}
{#each scaling.strategies as strategy, i (strategy)}
{#if i > 0}
<br />and{/if}
<b>{renameStrategy(strategy.__typename)}</b>
Expand Down

0 comments on commit 43d70e4

Please sign in to comment.