Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
7ad85ac
move everything to joins page, update search/default page, etc
ken-zlai Nov 22, 2024
788b145
Merge branch 'main' into joins-page
ken-zlai Nov 23, 2024
281fcc4
URL-encode dynamic parameters in links to prevent potential issues.
ken-zlai Nov 23, 2024
8f62e42
add nullValue to test
ken-zlai Nov 23, 2024
d048bf3
Merge remote-tracking branch 'origin/joins-page' into joins-page
ken-zlai Nov 23, 2024
8cab3a3
tooltip improvements
ken-zlai Nov 24, 2024
e26d99d
justify start content
ken-zlai Nov 24, 2024
b0618d4
Revert "justify start content"
ken-zlai Nov 24, 2024
83502e0
dont use fixed tooltip width
ken-zlai Nov 24, 2024
b8f60a4
create distributions tab
ken-zlai Nov 24, 2024
01059a2
function to generate sample data
ken-zlai Nov 24, 2024
7899e0a
show distributions charts
ken-zlai Nov 24, 2024
c7fa686
use currentTime to try and match backend better
ken-zlai Nov 24, 2024
93540e6
actually use currentTime - 1hr to match backend
ken-zlai Nov 24, 2024
524c627
remove spacing
ken-zlai Nov 24, 2024
b889eee
share targetLabels code
ken-zlai Nov 24, 2024
2e50847
Merge branch 'main' into distributions
ken-zlai Nov 25, 2024
8801b12
share common code
ken-zlai Nov 25, 2024
b887f0f
remove console.log
ken-zlai Nov 25, 2024
ec35523
get colors from css variable
ken-zlai Nov 25, 2024
ca3c8c3
change tab to drift
ken-zlai Nov 25, 2024
6ecd429
add p5
ken-zlai Nov 25, 2024
929d8fc
put table back
ken-zlai Nov 25, 2024
f6e2636
Merge branch 'main' into distributions
ken-zlai Nov 25, 2024
59bdd48
Changes
nikhil-zlai Nov 3, 2024
0ae77be
changes so far
nikhil-zlai Nov 3, 2024
9186f7e
remove unused file
nikhil-zlai Nov 3, 2024
561b20d
fix
nikhil-zlai Nov 3, 2024
39ae2a1
adding back color printer
nikhil-zlai Nov 3, 2024
dea2004
new runner
nikhil-zlai Nov 3, 2024
a372279
new runner
nikhil-zlai Nov 4, 2024
9973ba7
scalafmt fix
nikhil-zlai Nov 4, 2024
432492b
assign intervals
nikhil-zlai Nov 7, 2024
29b0298
assign intervals
nikhil-zlai Nov 7, 2024
a6ad20a
tile summary distance
nikhil-zlai Nov 7, 2024
78b6195
histogram drift
nikhil-zlai Nov 8, 2024
1f95614
tile drift
nikhil-zlai Nov 8, 2024
f3e4f60
test wiring
nikhil-zlai Nov 12, 2024
3b7a16b
Rename DynamoDB store to monitoring model store
piyush-zlai Nov 20, 2024
42e7e79
First cut wiring up with passing tests
piyush-zlai Nov 22, 2024
baddd0d
Rip out mock data generation and corresponding endpoints
piyush-zlai Nov 22, 2024
cc5453b
Add joins endpoints and switch search to use joins
piyush-zlai Nov 22, 2024
8c6c169
Switch to correct metadata table
piyush-zlai Nov 25, 2024
b3667ae
observability script for demo
nikhil-zlai Nov 24, 2024
c5e3270
running observability demo
nikhil-zlai Nov 25, 2024
6bd7412
Add support for in-memory controller + kv store module
piyush-zlai Nov 26, 2024
0e83c01
Clean up scripts to load data and query via time series controller
piyush-zlai Nov 26, 2024
defd1bc
Address scalafix + fmt
piyush-zlai Nov 26, 2024
fbf10cd
Merge branch 'piyush/drift_metrics_controller' into distributions
ken-zlai Nov 26, 2024
71cd947
Update colPrefix pass through in drift store
piyush-zlai Nov 26, 2024
6819ef0
Merge branch 'piyush/drift_metrics_controller' into distributions
ken-zlai Nov 26, 2024
addacb0
show only joins in table
ken-zlai Nov 26, 2024
ebf3dee
remove performance/drift chart, hardcode current real drift data
ken-zlai Nov 26, 2024
76490a3
pass params as object to getJoinTimeseries
ken-zlai Nov 26, 2024
5f22085
create non functional metric selector
ken-zlai Nov 26, 2024
0a4e051
make metric type toggle functional
ken-zlai Nov 26, 2024
6f8f7e7
better ux when switching metric
ken-zlai Nov 26, 2024
3d86ca7
highlight hovered series in legend/tooltip
ken-zlai Nov 26, 2024
84e7baf
allow some pointer events
ken-zlai Nov 26, 2024
5096c91
dont add max-w to echart legend elements
ken-zlai Nov 27, 2024
c0d70e3
dont show different treatment on single line tooltip
ken-zlai Nov 27, 2024
33ff2f9
add key to each
ken-zlai Nov 27, 2024
6f97fc9
move legend to echart component
ken-zlai Nov 27, 2024
198d845
remove import
ken-zlai Nov 27, 2024
5a654ba
share series color code
ken-zlai Nov 27, 2024
ed5db6a
markpoint white
ken-zlai Nov 27, 2024
b46e627
remove import
ken-zlai Nov 27, 2024
5446357
hovering over the title highlights the selected line
ken-zlai Nov 27, 2024
aafa444
hovering duplicate points highlights that series
ken-zlai Nov 27, 2024
c606bf3
show date if series not present
ken-zlai Nov 27, 2024
13392ed
cleaner code
ken-zlai Nov 27, 2024
87e77d4
Merge remote-tracking branch 'origin/distributions' into distributions
ken-zlai Nov 27, 2024
868ccfb
sort groupbys
ken-zlai Nov 27, 2024
81c77d0
chart controls component
ken-zlai Nov 27, 2024
33570ce
use chart controls in dialog
ken-zlai Nov 27, 2024
45b4af3
Changes
nikhil-zlai Nov 3, 2024
e3d2115
changes so far
nikhil-zlai Nov 3, 2024
c0e5d8f
remove unused file
nikhil-zlai Nov 3, 2024
e718f91
fix
nikhil-zlai Nov 3, 2024
d3ff253
adding back color printer
nikhil-zlai Nov 3, 2024
bbf1ddd
scalafmt fix
nikhil-zlai Nov 4, 2024
d61c83a
assign intervals
nikhil-zlai Nov 7, 2024
ce39428
assign intervals
nikhil-zlai Nov 7, 2024
787b664
tile summary distance
nikhil-zlai Nov 7, 2024
e576dad
histogram drift
nikhil-zlai Nov 8, 2024
3ca60fa
tile drift
nikhil-zlai Nov 8, 2024
ea115e3
test wiring
nikhil-zlai Nov 12, 2024
1af7b76
Rename DynamoDB store to monitoring model store
piyush-zlai Nov 20, 2024
1228488
First cut wiring up with passing tests
piyush-zlai Nov 22, 2024
86b1cfd
Rip out mock data generation and corresponding endpoints
piyush-zlai Nov 22, 2024
3657bb7
Add joins endpoints and switch search to use joins
piyush-zlai Nov 22, 2024
622405a
Switch to correct metadata table
piyush-zlai Nov 25, 2024
db0619c
observability script for demo
nikhil-zlai Nov 24, 2024
12db7cd
running observability demo
nikhil-zlai Nov 25, 2024
0a8c8b3
Add support for in-memory controller + kv store module
piyush-zlai Nov 26, 2024
e7e2d16
Clean up scripts to load data and query via time series controller
piyush-zlai Nov 26, 2024
281fc7c
Address scalafix + fmt
piyush-zlai Nov 26, 2024
7fc0637
Update colPrefix pass through in drift store
piyush-zlai Nov 26, 2024
4d78fa5
Add details to join response + join get endpoint
piyush-zlai Nov 26, 2024
7e7d2a1
Rebase + comments
piyush-zlai Nov 27, 2024
470fd9e
Revert TableUtils for now
piyush-zlai Nov 27, 2024
18e260c
Swap to new uploader app and revert old code
piyush-zlai Nov 27, 2024
de044c4
Downgrade in mem controller log to debug
piyush-zlai Nov 27, 2024
dfc4e1f
style: Apply scalafix and scalafmt changes
piyush-zlai Nov 27, 2024
6ab315c
Handle empty responses
piyush-zlai Nov 27, 2024
62687b9
Remove redundant log4j props file
piyush-zlai Nov 27, 2024
5316680
Use thread locals for thrift serializers
piyush-zlai Nov 27, 2024
92f0d11
Rebase + comments
piyush-zlai Nov 27, 2024
4965c8a
style: Apply scalafix and scalafmt changes
piyush-zlai Nov 27, 2024
e70d615
Merge branch 'piyush/drift_metrics_controller' into distributions
ken-zlai Nov 27, 2024
2979bb9
remove old import
ken-zlai Nov 27, 2024
c24d2e7
Merge branch 'main' into distributions
ken-zlai Dec 2, 2024
df7dc77
make isBarChart derived
ken-zlai Dec 3, 2024
17500ed
wire up percentile and compared chart
ken-zlai Dec 3, 2024
bbfe108
use effect to track changes
ken-zlai Dec 3, 2024
072005e
dont hardcode risk.user_transactions.txn_join
ken-zlai Dec 3, 2024
be3faa7
put risk.user_transactions.txn_join first
ken-zlai Dec 3, 2024
ec8c0f2
update tests
ken-zlai Dec 3, 2024
49a3f37
remove unused imports
ken-zlai Dec 3, 2024
2d2f96c
null ratio chart
ken-zlai Dec 3, 2024
f3b75ae
update sample data, clearer wording
ken-zlai Dec 3, 2024
8a7551b
remove console.log
ken-zlai Dec 3, 2024
9bf521f
add isNumeric
ken-zlai Dec 3, 2024
0b7592d
mock isNumeric
ken-zlai Dec 3, 2024
48670d3
Add field to indicate if feature / drift data is numeric
piyush-zlai Dec 3, 2024
d0dcb3d
style: Apply scalafix and scalafmt changes
piyush-zlai Dec 3, 2024
34bab31
Merge remote-tracking branch 'origin/piyush/add_numeric_field' into d…
ken-zlai Dec 3, 2024
848cd1b
use isNumeric from backend
ken-zlai Dec 3, 2024
84b56f8
no need to reset the data, as it made changing graphs choppy
ken-zlai Dec 3, 2024
da71abf
use real data for distribution percentile charts
ken-zlai Dec 3, 2024
dccae9f
ux improvement for clicking a point when holding cmd
ken-zlai Dec 4, 2024
acca95f
better ux after hiding a series
ken-zlai Dec 4, 2024
a900769
fix ts issue
ken-zlai Dec 4, 2024
27e4b17
remove unused imports
ken-zlai Dec 4, 2024
329eed3
generate data for the entire year of 2023
ken-zlai Dec 4, 2024
43a960f
make sure endTs is used to filter down data
ken-zlai Dec 4, 2024
eb7221c
Merge remote-tracking branch 'origin/main' into distributions
ken-zlai Dec 4, 2024
f7baa62
Merge branch 'demo-data-changes' into distributions
ken-zlai Dec 4, 2024
9d7c0e8
ensure 1/31/2023 is included
ken-zlai Dec 4, 2024
c88a5f4
Merge branch 'demo-data-changes' into distributions
ken-zlai Dec 4, 2024
5e6b530
date as YYYY-MM-DD
ken-zlai Dec 4, 2024
05f2480
Merge branch 'demo-data-changes' into distributions
ken-zlai Dec 4, 2024
31e277f
distribution charts side by side bars
ken-zlai Dec 4, 2024
643102d
add alert
ken-zlai Dec 4, 2024
d70720d
use real startTs and endTs with fallback treatment
ken-zlai Dec 4, 2024
987876f
warning alert
ken-zlai Dec 4, 2024
29da77e
stop jerky behavior of picking from cal
ken-zlai Dec 4, 2024
06d8281
dont stack percentile charts
ken-zlai Dec 4, 2024
6707d9b
modify action buttons
ken-zlai Dec 4, 2024
15bf71e
use start and end of entire range
ken-zlai Dec 5, 2024
05dc6ff
gitignore for metals generated stuff
ken-zlai Dec 5, 2024
ae79a94
remove duplicate .bsp
ken-zlai Dec 5, 2024
3c990bc
Merge remote-tracking branch 'origin/distributions' into distributions
ken-zlai Dec 5, 2024
deeb85e
fixing logic in timeseries controller to align summaries
nikhil-zlai Dec 5, 2024
0953d1f
Merge remote-tracking branch 'origin/summary_fix' into distributions
ken-zlai Dec 5, 2024
1d6f5c2
let user select text from collapsible section
ken-zlai Dec 6, 2024
aae5332
move loading of distributions into client side for better performance
ken-zlai Dec 6, 2024
2c55852
adjust margin
ken-zlai Dec 6, 2024
543cab0
sort in distributions and drift tab
ken-zlai Dec 6, 2024
01e0b53
move drift sort logic to sort.ts
ken-zlai Dec 6, 2024
8ddabfb
move sort to util folder instead of utils
ken-zlai Dec 6, 2024
2ffa366
Merge branch 'main' into distributions
ken-zlai Dec 6, 2024
b6b7e99
move action buttons into chart controls
ken-zlai Dec 6, 2024
6982210
update fallback times
ken-zlai Dec 6, 2024
630b469
fix buggy cmd key behavior
ken-zlai Dec 6, 2024
3fe96c0
Merge branch 'main' into distributions
ken-zlai Dec 11, 2024
fd6afde
sync the metric type toggle ui when url changes (#120)
ken-zlai Dec 11, 2024
c0c84f2
update markpoint when you change the drift calculation metric (#119)
ken-zlai Dec 11, 2024
ebee549
Revert "running observability demo"
ken-zlai Dec 11, 2024
12981cc
fix: load less sample for better performance (#123)
ken-zlai Dec 12, 2024
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
79 changes: 45 additions & 34 deletions frontend/src/lib/api/api.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type {
FeatureResponse,
JoinsResponse,
JoinTimeSeriesResponse,
ModelsResponse,
TimeSeriesResponse
ModelsResponse
} from '$lib/types/Model/Model';
import { error } from '@sveltejs/kit';
import { browser } from '$app/environment';
Expand Down Expand Up @@ -34,20 +34,12 @@ export async function getModels(): Promise<ModelsResponse> {
return get('models');
}

export async function getModelTimeseries(
name: string,
startTs: number,
endTs: number,
offset: string = '10h',
algorithm: string = 'psi'
): Promise<TimeSeriesResponse> {
export async function getJoins(offset: number = 0, limit: number = 10): Promise<JoinsResponse> {
const params = new URLSearchParams({
startTs: startTs.toString(),
endTs: endTs.toString(),
offset,
algorithm
offset: offset.toString(),
limit: limit.toString()
});
return get(`model/${name}/timeseries?${params.toString()}`);
return get(`joins?${params.toString()}`);
}

export async function search(term: string, limit: number = 20): Promise<ModelsResponse> {
Expand All @@ -58,15 +50,23 @@ export async function search(term: string, limit: number = 20): Promise<ModelsRe
return get(`search?${params.toString()}`);
}

export async function getJoinTimeseries(
joinId: string,
startTs: number,
endTs: number,
metricType: string = 'drift',
metrics: string = 'null',
offset: string = '10h',
algorithm: string = 'psi'
): Promise<JoinTimeSeriesResponse> {
export async function getJoinTimeseries({
joinId,
startTs,
endTs,
metricType = 'drift',
metrics = 'null',
offset = '10h',
algorithm = 'psi'
}: {
joinId: string;
startTs: number;
endTs: number;
metricType?: string;
metrics?: string;
offset?: string;
algorithm?: string;
}): Promise<JoinTimeSeriesResponse> {
const params = new URLSearchParams({
startTs: startTs.toString(),
endTs: endTs.toString(),
Expand All @@ -79,16 +79,27 @@ export async function getJoinTimeseries(
return get(`join/${joinId}/timeseries?${params.toString()}`);
}

export async function getFeatureTimeseries(
featureName: string,
startTs: number,
endTs: number,
metricType: string = 'drift',
metrics: string = 'null',
offset: string = '10h',
algorithm: string = 'psi',
granularity: string = 'percentile'
): Promise<FeatureResponse> {
export async function getFeatureTimeseries({
joinId,
featureName,
startTs,
endTs,
metricType = 'drift',
metrics = 'null',
offset = '10h',
algorithm = 'psi',
granularity = 'aggregates'
}: {
joinId: string;
featureName: string;
startTs: number;
endTs: number;
metricType?: string;
metrics?: string;
offset?: string;
algorithm?: string;
granularity?: string;
}): Promise<FeatureResponse> {
const params = new URLSearchParams({
startTs: startTs.toString(),
endTs: endTs.toString(),
Expand All @@ -98,5 +109,5 @@ export async function getFeatureTimeseries(
algorithm,
granularity
});
return get(`feature/${featureName}/timeseries?${params.toString()}`);
return get(`join/${joinId}/feature/${featureName}/timeseries?${params.toString()}`);
}
45 changes: 37 additions & 8 deletions frontend/src/lib/components/ActionButtons/ActionButtons.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,38 @@
import { Button } from '$lib/components/ui/button';
import { cn } from '$lib/utils';
import { Icon, Plus, ArrowsUpDown, Square3Stack3d, XMark } from 'svelte-hero-icons';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
import {
getSortDirection,
updateContextSort,
type SortDirection,
type SortContext
} from '$lib/util/sort';

let { showCluster = false, class: className }: { showCluster?: boolean; class?: string } =
$props();
let {
showCluster = false,
class: className,
showSort = false,
context = 'drift'
}: {
showCluster?: boolean;
class?: string;
showSort?: boolean;
context?: SortContext;
} = $props();

let activeCluster = showCluster ? 'GroupBys' : null;

let currentSort: SortDirection = $derived.by(() =>
getSortDirection($page.url.searchParams, context)
);

function handleSort() {
const newSort: SortDirection = currentSort === 'asc' ? 'desc' : 'asc';
const url = updateContextSort($page.url, context, newSort);
goto(url, { replaceState: true });
}
</script>

<div class={cn('flex flex-wrap gap-3', className)}>
Expand All @@ -28,16 +55,18 @@

<!-- Action Buttons Section -->
<div class="flex gap-3">
<Button variant="secondary" size="sm" icon="leading">
{#if showSort}
<Button variant="secondary" size="sm" icon="leading" on:click={handleSort}>
<Icon src={ArrowsUpDown} micro size="16" />
Sort {currentSort === 'asc' ? 'A-Z' : 'Z-A'}
</Button>
{/if}
<Button variant="secondary" size="sm" icon="leading" disabled>
<Icon src={Plus} micro size="16" />
Filter
</Button>
<Button variant="secondary" size="sm" icon="leading">
<Icon src={ArrowsUpDown} micro size="16" />
Sort
</Button>
{#if showCluster}
<Button variant="secondary" size="sm" icon="leading">
<Button variant="secondary" size="sm" icon="leading" disabled>
<Icon src={Square3Stack3d} micro size="16" />
Cluster
</Button>
Expand Down
58 changes: 58 additions & 0 deletions frontend/src/lib/components/ChartControls/ChartControls.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<script lang="ts">
import ResetZoomButton from '$lib/components/ResetZoomButton/ResetZoomButton.svelte';
import MetricTypeToggle from '$lib/components/MetricTypeToggle/MetricTypeToggle.svelte';
import DateRangeSelector from '$lib/components/DateRangeSelector/DateRangeSelector.svelte';
import ActionButtons from '$lib/components/ActionButtons/ActionButtons.svelte';
import * as Alert from '$lib/components/ui/alert/index.js';
import { formatDate } from '$lib/util/format';
import type { SortContext } from '$lib/util/sort';

let {
isZoomed = false,
onResetZoom,
isUsingFallbackDates = false,
dateRange = { startTimestamp: 0, endTimestamp: 0 },
showActionButtons = false,
showCluster = false,
showSort = false,
context
}: {
isZoomed: boolean;
onResetZoom: () => void;
isUsingFallbackDates?: boolean;
dateRange?: { startTimestamp: number; endTimestamp: number };
showActionButtons?: boolean;
showCluster?: boolean;
showSort?: boolean;
context?: SortContext;
} = $props();
</script>

<div class="space-y-4">
{#if isUsingFallbackDates}
<div class="w-fit">
<Alert.Root variant="warning">
<Alert.Description>
No data for that date range. Showing data between {formatDate(dateRange.startTimestamp)} and
{formatDate(dateRange.endTimestamp)}</Alert.Description
>
</Alert.Root>
</div>
{/if}

<div class="flex items-center space-x-6">
{#if isZoomed}
<ResetZoomButton onClick={onResetZoom} />
{/if}
<DateRangeSelector />
{#if context === 'drift'}
<MetricTypeToggle />
{/if}
</div>

{#if showActionButtons}
<div>
<ActionButtons {showCluster} {showSort} {context} />
</div>
{/if}
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
size="16"
class="transition-transform duration-200 {open ? '' : 'rotate-180'}"
/>
<h2 class="{sizeClasses.title} !ml-2">{title}</h2>
<h2 class="{sizeClasses.title} !ml-2 select-text">{title}</h2>
</CollapsibleTrigger>
<div class="flex items-center justify-between flex-1 ml-2">
{#if headerContentLeft}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import { Button } from '$lib/components/ui/button';
import type { EChartsType } from 'echarts';
import { Icon, ChevronDown, ChevronUp } from 'svelte-hero-icons';
import { getSeriesColor, handleChartHighlight } from '$lib/util/chart';

type LegendItem = { feature: string };
type Props = {
Expand All @@ -26,6 +27,10 @@
groupSet.delete(seriesName);
} else {
groupSet.add(seriesName);
chart.dispatchAction({
type: 'downplay',
seriesName
});
}

hiddenSeries = {
Expand All @@ -40,10 +45,6 @@
});
}

function getSeriesColor(index: number, colors: string[]): string {
return colors[index % colors.length] || '#000000';
}

function checkOverflow() {
if (!itemsContainer) return;
const hasVerticalOverflow = itemsContainer.scrollHeight > itemsContainer.clientHeight;
Expand All @@ -65,25 +66,34 @@

return () => resizeObserver.disconnect();
});

function handleMouseEnter(seriesName: string) {
handleChartHighlight(chart, seriesName, 'highlight');
}

function handleMouseLeave(seriesName: string) {
handleChartHighlight(chart, seriesName, 'downplay');
}
</script>

<div class="relative mt-5">
<div class="flex">
<div
bind:this={itemsContainer}
class={`flex flex-wrap gap-x-8 gap-y-2 flex-1 transition-all duration-150 ease-in-out ${!isExpanded ? 'overflow-hidden' : ''}`}
class={`flex flex-wrap gap-x-4 gap-y-2 flex-1 transition-all duration-150 ease-in-out ${!isExpanded ? 'overflow-hidden' : ''}`}
style="height: {isExpanded ? containerHeight + 'px' : containerHeightLine + 'px'};"
>
{#each items as { feature }, index}
{@const colors = chart?.getOption()?.color || []}
{@const color = getSeriesColor(index, colors)}
{#each items as { feature } (feature)}
{@const isHidden = hiddenSeries[groupName]?.has(feature)}
{@const color = getSeriesColor(chart, feature)}

<Button
class="legend-btn gap-x-2 max-w-[148px]"
class="legend-btn gap-x-2"
variant="ghost"
on:click={() => toggleSeries(feature)}
title={feature}
on:mouseenter={() => handleMouseEnter(feature)}
on:mouseleave={() => handleMouseLeave(feature)}
>
<div
class="w-2 h-2 rounded-full flex-shrink-0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
<span>{selectDateRange?.label || 'Select range'}</span>
<span class="border-input border-l mx-2 h-full"></span>
<span>
{#if calendarDateRange && calendarDateRange.start}
{#if !calendarDateRangePopoverOpen && calendarDateRange && calendarDateRange.start}
{#if calendarDateRange.end}
{df.format(calendarDateRange.start.toDate(getLocalTimeZone()))} - {df.format(
calendarDateRange.end.toDate(getLocalTimeZone())
Expand Down
37 changes: 0 additions & 37 deletions frontend/src/lib/components/DriftSkewToggle/DriftSkewToggle.svelte

This file was deleted.

Loading
Loading