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
2 changes: 0 additions & 2 deletions web-common/src/components/vega/VegaLiteRenderer.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
export let signalListeners: SignalListeners = {};
export let expressionFunctions: ExpressionFunction = {};
export let error: string | null = null;
export let canvasDashboard = false;
export let renderer: "canvas" | "svg" = "canvas";
export let themeMode: "light" | "dark" = "light";
export let config: Config | undefined = undefined;
Expand Down Expand Up @@ -87,7 +86,6 @@
<div
bind:contentRect
role="presentation"
class:px-2={canvasDashboard}
class="rill-vega-container overflow-y-auto overflow-x-hidden size-full flex flex-col items-center"
onmouseleave={handleMouseLeave}
>
Expand Down
6 changes: 5 additions & 1 deletion web-common/src/components/vega/vega-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ const colors = {
export const getRillTheme: (
isDarkMode?: boolean,
theme?: Record<string, string>,
) => Config = (isDarkMode = false, theme) => {
isCanvasDashboard?: boolean,
) => Config = (isDarkMode = false, theme, isCanvasDashboard = false) => {
const gridColor = isDarkMode ? colors.dark.grid : colors.light.grid;
const axisLabelColor = isDarkMode
? colors.dark.axisLabel
Expand Down Expand Up @@ -75,6 +76,9 @@ export const getRillTheme: (
autosize: {
type: "fit-x",
},
...(isCanvasDashboard && {
padding: 0,
}),
background: "transparent",
arc: { fill: lineColor },
area: {
Expand Down
1 change: 1 addition & 0 deletions web-common/src/features/canvas/CanvasComponent.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
<div
role="presentation"
class="size-full grow flex flex-col"
class:p-4={allowBorder}
onmousedown={onMouseDown}
>
{#if component}
Expand Down
11 changes: 5 additions & 6 deletions web-common/src/features/canvas/ComponentHeader.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
{#if title || description}
<div
bind:this={container}
class="component-header-container w-full h-fit flex flex-col bg-surface-card px-4 pt-2 pb-1 items-start {wide
class="component-header-container w-full h-fit flex flex-col gap-y-1 bg-surface-card pt-2 pb-1 items-start {wide
? 'wide'
: ''}"
>
Expand Down Expand Up @@ -85,7 +85,7 @@
{/if}
</div>
{:else if atleastOneFilter}
<div class="w-full px-2 py-1">
<div class="w-full">
<LocalFiltersHeader {component} />
</div>
{/if}
Expand All @@ -104,10 +104,9 @@
}

.title {
font-size: 15px;
line-height: 26px;
@apply flex-shrink-0;
@apply font-medium text-fg-primary truncate;
font-size: 16px;
@apply flex-shrink-0 leading-tight;
@apply font-semibold text-fg-primary truncate;
}

.title.faint {
Expand Down
24 changes: 13 additions & 11 deletions web-common/src/features/canvas/components/charts/CanvasChart.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
};
</script>

<div class="size-full flex flex-col overflow-hidden">
<div class="size-full flex flex-col overflow-hidden gap-y-4">
{#if schema.isValid}
{#if isFetching}
<div class="flex items-center justify-center h-full w-full">
Expand All @@ -99,16 +99,18 @@
{filters}
{component}
/>
<Chart
{chartType}
{chartSpec}
{chartData}
measures={$measures}
isCanvas
bind:view={viewVL}
themeMode={$isThemeModeDark ? "dark" : "light"}
theme={currentTheme}
/>
<div class="grow overflow-hidden">
<Chart
{chartType}
{chartSpec}
{chartData}
measures={$measures}
isCanvas
bind:view={viewVL}
themeMode={$isThemeModeDark ? "dark" : "light"}
theme={currentTheme}
/>
</div>
{/if}
{:else}
<ComponentError error={schema.error} />
Expand Down
70 changes: 33 additions & 37 deletions web-common/src/features/canvas/components/kpi-grid/KPIGrid.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -46,40 +46,41 @@
$: ({ title, description, show_description_as_tooltip } = kpiGridProperties);
</script>

<ComponentHeader
{component}
{title}
{description}
showDescriptionAsTooltip={show_description_as_tooltip}
{filters}
/>

{#if schema.isValid}
<div
class="h-fit p-0 grow relative"
class:!p-0={kpis.length === 1}
bind:clientWidth={containerWidth}
>
<span class="border-overlay"></span>
<div class="size-full flex flex-col overflow-hidden gap-y-4">
<ComponentHeader
{component}
{title}
{description}
showDescriptionAsTooltip={show_description_as_tooltip}
{filters}
/>

{#if schema.isValid}
<div
style:grid-template-columns="repeat({optimalColumns}, minmax(0, 1fr))"
class="grid-wrapper gap-px overflow-hidden size-full"
class="h-fit p-0 grow relative"
class:!p-0={kpis.length === 1}
bind:clientWidth={containerWidth}
>
{#each kpis as kpi, i (i)}
<div class="min-h-32 kpi-wrapper">
<KPIProvider
spec={kpi}
{timeAndFilterStore}
{canvasName}
visible={$visible}
/>
</div>
{/each}
<div
style:grid-template-columns="repeat({optimalColumns}, minmax(0, 1fr))"
class="grid-wrapper gap-px overflow-hidden size-full"
>
{#each kpis as kpi, i (i)}
<div class="min-h-32 kpi-wrapper">
<KPIProvider
spec={kpi}
{timeAndFilterStore}
{canvasName}
visible={$visible}
/>
</div>
{/each}
</div>
</div>
</div>
{:else}
<ComponentError error={schema.error} />
{/if}
{:else}
<ComponentError error={schema.error} />
{/if}
</div>

<style lang="postcss">
.grid-wrapper {
Expand All @@ -88,12 +89,7 @@
}

.kpi-wrapper {
@apply relative p-4 grid outline outline-1 outline-border;
}

.border-overlay {
@apply absolute border-[12.5px] pointer-events-none border-surface-card size-full;
z-index: 50;
@apply relative p-3 grid outline outline-1 outline-border;
}

@container component-container (inline-size < 440px) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,94 +154,92 @@
$: ({ parsed } = mvFilters);
</script>

{#if schema.isValid}
<ComponentHeader
{component}
{title}
{description}
showDescriptionAsTooltip={show_description_as_tooltip}
{filters}
/>

<div
class="h-fit p-0 grow relative"
class:!p-0={visibleDimensions.length === 1}
>
<span class="border-overlay"></span>
<div
class="grid-wrapper gap-px overflow-x-auto"
style:grid-template-columns="repeat(auto-fit, minmax({estimatedTableWidth +
LEADERBOARD_WRAPPER_PADDING}px, 1fr))"
>
{#each visibleDimensions as dimension (dimension.name)}
{#if dimension.name}
<div
class="leaderboard-wrapper"
bind:clientWidth={leaderboardWrapperWidth}
>
<Leaderboard
leaderboardShowContextForAllMeasures
timeControlsReady
slice={numRows}
visible={$visible}
{isValidPercentOfTotal}
{metricsViewName}
leaderboardSortByMeasureName={leaderboardSortByMeasureName ??
leaderboardMeasureNames?.[0]}
leaderboardMeasures={visibleMeasures}
{whereFilter}
{dimensionThresholdFilters}
tableWidth={dimensionColumnWidth + totalContextWidth}
{dimensionColumnWidth}
sortedAscending={sortDirection === SortDirection.ASCENDING}
{sortType}
filterExcludeMode={$parsed?.dimensionFilters.get(dimension.name)
?.isInclude === false}
{timeRange}
comparisonTimeRange={showTimeComparison
? comparisonTimeRange
: undefined}
{dimension}
allowExpandTable={false}
allowDimensionComparison={false}
selectedValues={selectedDimensionValues(
runtimeClient,
[metricsViewName],
whereFilter,
dimension.name,
timeRange.start,
timeRange.end,
)}
isBeingCompared={false}
formatters={measureFormatters}
tooltipFormatters={measureTooltipFormatters}
{toggleSort}
toggleDimensionValueSelection={async (
name,
value,
keepPillVisible,
isExclusiveFilter,
) => {
await toggleDimensionValueSelections(
name,
[value],
<div class="size-full flex flex-col overflow-hidden gap-y-4">
{#if schema.isValid}
<ComponentHeader
{component}
{title}
{description}
showDescriptionAsTooltip={show_description_as_tooltip}
{filters}
/>

<div class="p-0 grow relative">
<div
class="grid-wrapper gap-px overflow-x-auto"
style:grid-template-columns="repeat(auto-fit, minmax({estimatedTableWidth +
LEADERBOARD_WRAPPER_PADDING}px, 1fr))"
>
{#each visibleDimensions as dimension (dimension.name)}
{#if dimension.name}
<div
class="leaderboard-wrapper"
bind:clientWidth={leaderboardWrapperWidth}
>
<Leaderboard
leaderboardShowContextForAllMeasures
timeControlsReady
slice={numRows}
visible={$visible}
{isValidPercentOfTotal}
{metricsViewName}
leaderboardSortByMeasureName={leaderboardSortByMeasureName ??
leaderboardMeasureNames?.[0]}
leaderboardMeasures={visibleMeasures}
{whereFilter}
{dimensionThresholdFilters}
tableWidth={dimensionColumnWidth + totalContextWidth}
{dimensionColumnWidth}
sortedAscending={sortDirection === SortDirection.ASCENDING}
{sortType}
filterExcludeMode={$parsed?.dimensionFilters.get(dimension.name)
?.isInclude === false}
{timeRange}
comparisonTimeRange={showTimeComparison
? comparisonTimeRange
: undefined}
{dimension}
allowExpandTable={false}
allowDimensionComparison={false}
selectedValues={selectedDimensionValues(
runtimeClient,
[metricsViewName],
whereFilter,
dimension.name,
timeRange.start,
timeRange.end,
)}
isBeingCompared={false}
formatters={measureFormatters}
tooltipFormatters={measureTooltipFormatters}
{toggleSort}
toggleDimensionValueSelection={async (
name,
value,
keepPillVisible,
isExclusiveFilter,
);
}}
measureLabel={(measureName) =>
visibleMeasures.find((m) => m.name === measureName)
?.displayName || measureName}
/>
</div>
{/if}
{/each}
) => {
await toggleDimensionValueSelections(
name,
[value],
[metricsViewName],
keepPillVisible,
isExclusiveFilter,
);
}}
measureLabel={(measureName) =>
visibleMeasures.find((m) => m.name === measureName)
?.displayName || measureName}
/>
</div>
{/if}
{/each}
</div>
</div>
</div>
{:else}
<ComponentError error={schema.error} />
{/if}
{:else}
<ComponentError error={schema.error} />
{/if}
</div>

<style lang="postcss">
.grid-wrapper {
Expand All @@ -250,12 +248,7 @@
}

.leaderboard-wrapper {
@apply relative p-4 pr-6 grid outline outline-1 outline-gray-200;
}

.border-overlay {
@apply absolute border-[12.5px] pointer-events-none border-surface-card size-full;
z-index: 20;
@apply relative grid outline outline-1 outline-border;
}

@container component-container (inline-size < 440px) {
Expand Down
Loading
Loading