Skip to content

Commit db8420d

Browse files
committed
address comments, fix nav bug.
1 parent 2ce3811 commit db8420d

File tree

5 files changed

+60
-53
lines changed

5 files changed

+60
-53
lines changed

src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/header.svelte

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import { type Entity, useTerminology } from '$database/(entity)';
99
import { resolveRoute, withPath } from '$lib/stores/navigation';
1010
11+
import { preferences } from '$lib/stores/preferences';
12+
import { expandTabs } from '$database/table-[table]/store';
13+
1114
interface EntityTab {
1215
href: string;
1316
title: string;
@@ -18,13 +21,11 @@
1821
let {
1922
entity,
2023
parentHref,
21-
tabs,
22-
expanded = $bindable(true)
24+
tabs
2325
}: {
2426
entity: Entity;
2527
parentHref: string;
2628
tabs: EntityTab[];
27-
expanded?: boolean;
2829
} = $props();
2930
3031
/**
@@ -45,25 +46,38 @@
4546
`${entityType}-${entityId}`
4647
);
4748
});
49+
50+
const nonSheetPages = $derived.by(() => {
51+
const endings = ['table-[table]', 'table-[table]/columns', 'table-[table]/indexes'];
52+
const isSpreadsheetPage = endings.some((end) => page.route.id?.endsWith(end));
53+
return !isSpreadsheetPage;
54+
});
55+
56+
$effect(() => {
57+
if (nonSheetPages) expandTabs.set(true);
58+
else {
59+
expandTabs.set(preferences.getKey('tableHeaderExpanded', true));
60+
}
61+
});
4862
</script>
4963

50-
{#if entity}
51-
<Cover animate {expanded} collapsed={!expanded} blocksize={expanded ? '152px' : '90px'}>
64+
<div class:nonSheetPages>
65+
<Cover animate expanded collapsed={!$expandTabs} blocksize={$expandTabs ? '152px' : '90px'}>
5266
<svelte:fragment slot="header">
5367
<Layout.Stack direction="row" alignContent="center" alignItems="center" inline>
54-
<AnimatedTitle href={parentHref} collapsed={!expanded}>
55-
{entity.name}
68+
<AnimatedTitle href={parentHref} collapsed={!$expandTabs}>
69+
{entity?.name}
5670
</AnimatedTitle>
5771

58-
{#key entity.$id}
59-
<Id value={entity.$id} tooltipPlacement={expanded ? undefined : 'right'}>
60-
{entity.$id}
72+
{#key entity?.$id}
73+
<Id value={entity?.$id} tooltipPlacement={$expandTabs ? undefined : 'right'}>
74+
{entity?.$id}
6175
</Id>
6276
{/key}
6377
</Layout.Stack>
6478
</svelte:fragment>
6579

66-
<div class="tabs-container" class:collapsed={!expanded}>
80+
<div class="tabs-container" class:collapsed={!$expandTabs}>
6781
<Tabs>
6882
{#each tabs as tab}
6983
<Tab
@@ -76,9 +90,19 @@
7690
</Tabs>
7791
</div>
7892
</Cover>
79-
{/if}
93+
</div>
8094

8195
<style lang="scss">
96+
.nonSheetPages :global(.cover-container) {
97+
@media (min-width: 1440px) {
98+
padding-inline: 7px !important;
99+
}
100+
101+
@media (min-width: 1728px) {
102+
padding-inline: 10.25rem !important;
103+
}
104+
}
105+
82106
.tabs-container {
83107
opacity: 1;
84108
transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);

src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/create.svelte

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import { resolveRoute, withPath } from '$lib/stores/navigation';
2525
import { IndexType } from '@appwrite.io/console';
2626
import { columnOptions as baseColumnOptions } from '$database/table-[table]/columns/store';
27+
import { IndexOrder } from '$database/(suggestions)';
2728
2829
let {
2930
entity,
@@ -33,12 +34,12 @@
3334
}: {
3435
entity: Entity;
3536
showCreateIndex: boolean;
36-
externalFieldKey?: string;
37+
externalFieldKey?: string | null;
3738
onCreateIndex: (index: CreateIndexesCallbackType) => Promise<void>;
3839
} = $props();
3940
4041
let key = $state('');
41-
42+
let initializedForOpen = $state(false);
4243
let selectedType = $state<IndexType>(IndexType.Key);
4344
4445
const { dependencies, terminology } = getTerminologies();
@@ -60,7 +61,11 @@
6061
}))
6162
);
6263
63-
let fieldList = $state([{ value: '', order: '', length: null }]);
64+
let fieldList: Array<{
65+
value: string;
66+
order: IndexOrder | null;
67+
length: number | null;
68+
}> = $state([{ value: '', order: null, length: null }]);
6469
6570
const types = [
6671
{ value: IndexType.Key, label: 'Key' },
@@ -105,11 +110,14 @@
105110
function initialize() {
106111
const field = entity.fields.filter((field) => externalFieldKey === field.key);
107112
const isSpatial = field.length && isSpatialType(field[0]);
108-
const order = isSpatial ? null : 'ASC';
113+
const order = isSpatial ? null : IndexOrder.ASC;
114+
109115
selectedType = isSpatial ? IndexType.Spatial : IndexType.Key;
116+
110117
fieldList = externalFieldKey
111118
? [{ value: externalFieldKey, order, length: null }]
112119
: [{ value: '', order, length: null }];
120+
113121
key = `index_${entity.indexes.length + 1}`;
114122
}
115123
@@ -130,20 +138,21 @@
130138
return withPath(base, `${type}-${entity.$id}`, 'indexes');
131139
});
132140
133-
let initializedForOpen = $state(false);
134141
$effect(() => {
135142
if (showCreateIndex && !initializedForOpen) {
136143
initialize();
137144
key = generateIndexKey();
138145
initializedForOpen = true;
139146
}
147+
140148
if (!showCreateIndex && initializedForOpen) {
141149
initializedForOpen = false;
142150
}
143151
});
144152
145153
export async function create() {
146154
const fieldType = terminology.field.lower.singular;
155+
147156
if (!key || !selectedType || (selectedType !== IndexType.Spatial && addFieldDisabled)) {
148157
addNotification({
149158
type: 'error',
@@ -153,7 +162,11 @@
153162
}
154163
155164
try {
156-
const orders = fieldList.map((a) => a.order).filter((order) => order !== null);
165+
const orders = fieldList
166+
.map((field) => field.order)
167+
.filter((order: IndexOrder) => order !== null)
168+
.map((order) => String(order));
169+
157170
await onCreateIndex({
158171
key,
159172
type: selectedType,
@@ -194,8 +207,8 @@
194207
function addField() {
195208
if (addFieldDisabled) return;
196209
197-
// We assign instead of pushing to trigger Svelte's reactivity
198-
fieldList = [...fieldList, { value: '', order: '', length: null }];
210+
// we assign instead of pushing to trigger Svelte's reactivity
211+
fieldList = [...fieldList, { value: '', order: null, length: null }];
199212
}
200213
</script>
201214

src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
} = $props();
5454
5555
let showCreateIndex = $state(false);
56-
let selectedIndex: Index = $state(null);
56+
let selectedIndex: Index | null = $state(null);
5757
5858
let createIndex: CreateIndex;
5959
let selectedIndexes = $state([]);

src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/usage/view.svelte

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
import type { Metric } from '$lib/sdk/usage';
55
import Container from '$lib/layout/container.svelte';
66
import { resolveRoute, withPath } from '$lib/stores/navigation';
7-
import { type DatabaseType, getTerminologies } from '$database/(entity)';
7+
import { getTerminologies } from '$database/(entity)';
88
99
let {
1010
total,
1111
count
1212
}: {
1313
total: number;
1414
count: Metric[];
15-
type?: DatabaseType;
1615
} = $props();
1716
1817
const { terminology } = getTerminologies();

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/header.svelte

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<script lang="ts">
22
import { page } from '$app/state';
3-
import { expandTabs } from './store';
43
import { canWriteTables } from '$lib/stores/roles';
5-
import { preferences } from '$lib/stores/preferences';
64
import { resolveRoute } from '$lib/stores/navigation';
75
86
import { type Entity, Header } from '$database/(entity)';
@@ -21,12 +19,6 @@
2119
)
2220
);
2321
24-
const nonSheetPages = $derived.by(() => {
25-
const endings = ['table-[table]', 'table-[table]/columns', 'table-[table]/indexes'];
26-
const isSpreadsheetPage = endings.some((end) => page.route.id?.endsWith(end));
27-
return !isSpreadsheetPage;
28-
});
29-
3022
const table = $derived(page.data.table) as Entity;
3123
3224
const tabs = $derived(
@@ -67,27 +59,6 @@
6759
}
6860
].filter((tab) => !tab.disabled)
6961
);
70-
71-
$effect(() => {
72-
if (nonSheetPages) expandTabs.set(true);
73-
else {
74-
expandTabs.set(preferences.getKey('tableHeaderExpanded', true));
75-
}
76-
});
7762
</script>
7863

79-
<div class:nonSheetPages>
80-
<Header {tabs} entity={table} parentHref={link} bind:expanded={$expandTabs} />
81-
</div>
82-
83-
<style lang="scss">
84-
.nonSheetPages :global(.cover-container) {
85-
@media (min-width: 1440px) {
86-
padding-inline: 7px !important;
87-
}
88-
89-
@media (min-width: 1728px) {
90-
padding-inline: 10.25rem !important;
91-
}
92-
}
93-
</style>
64+
<Header {tabs} entity={table} parentHref={link} />

0 commit comments

Comments
 (0)