From 797f3f7cc3cebce98b60c8fa2fb862eaba305533 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 16 Jul 2025 16:42:03 +0530 Subject: [PATCH] fix: types. --- src/lib/components/filters/filters.svelte | 4 +-- src/lib/components/filters/store.ts | 12 +++---- src/lib/helpers/types.ts | 30 +++++------------- .../collection-[collection]/+page.svelte | 31 ++++++++++--------- .../indexes/+page.svelte | 22 ++++++------- .../layout/emptySheet.svelte | 6 ++-- .../spreadsheet.svelte | 6 ++-- .../collection-[collection]/store.ts | 4 +-- 8 files changed, 52 insertions(+), 63 deletions(-) diff --git a/src/lib/components/filters/filters.svelte b/src/lib/components/filters/filters.svelte index 32b783483..f8c9a3e6e 100644 --- a/src/lib/components/filters/filters.svelte +++ b/src/lib/components/filters/filters.svelte @@ -2,7 +2,7 @@ import { beforeNavigate } from '$app/navigation'; import { Modal } from '$lib/components'; import { Button } from '$lib/elements/forms'; - import type { PinkSheetColumn } from '$lib/helpers/types'; + import type { Column } from '$lib/helpers/types'; import type { Writable } from 'svelte/store'; import Content from './content.svelte'; import { @@ -19,7 +19,7 @@ import { Click, Submit, trackEvent } from '$lib/actions/analytics'; export let query = '[]'; - export let columns: Writable; + export let columns: Writable; export let disabled = false; export let fullWidthMobile = false; export let singleCondition = false; diff --git a/src/lib/components/filters/store.ts b/src/lib/components/filters/store.ts index 970874334..d3df550ce 100644 --- a/src/lib/components/filters/store.ts +++ b/src/lib/components/filters/store.ts @@ -4,7 +4,7 @@ import deepEqual from 'deep-equal'; import { Query } from '@appwrite.io/console'; import { toLocaleDateTime } from '$lib/helpers/date'; import { derived, get, writable } from 'svelte/store'; -import type { SheetColumn, SheetColumnType } from '$lib/helpers/types'; +import type { Column, ColumnType } from '$lib/helpers/types'; export type TagValue = { tag: string; @@ -14,7 +14,7 @@ export type TagValue = { export type Operator = { toTag: (attribute: string, input?: string | number | string[], type?: string) => TagValue; toQuery: (attribute: string, input?: string | number | string[]) => string; - types: SheetColumnType[]; + types: ColumnType[]; hideInput?: boolean; }; @@ -33,7 +33,7 @@ function initQueries(initialValue = new Map()) { type AddFilterArgs = { operator: Operator; - column: SheetColumn; + column: Column; value: string | number | string[]; }; @@ -91,14 +91,14 @@ export const tags = derived(queries, ($queries) => Array.from($queries.keys())); /* eslint @typescript-eslint/no-explicit-any: 'off' */ export function addFilter( - columns: SheetColumn[], + columns: Column[], columnId: string, operatorKey: string, value: any, // We cast to any to not cause type errors in the input components arrayValues: string[] = [] ) { const operator = operatorKey ? operators[operatorKey] : null; - const column = columns.find((c) => c.id === columnId) as SheetColumn; + const column = columns.find((c) => c.id === columnId) as Column; if (!column || !operator) return; if (column.array) { queries.addFilter({ column, operator, value: arrayValues }); @@ -135,7 +135,7 @@ const operatorsDefault = new Map< ValidOperators, { query: (attr: string, input: string | number | string[]) => string; - types: SheetColumnType[]; + types: ColumnType[]; hideInput?: boolean; } >([ diff --git a/src/lib/helpers/types.ts b/src/lib/helpers/types.ts index ec08ec643..73e9a9f95 100644 --- a/src/lib/helpers/types.ts +++ b/src/lib/helpers/types.ts @@ -15,25 +15,6 @@ export type PinkColumn = { hide?: boolean; }; -export type PinkSheetColumn = { - id: string; - width?: - | { - min: number; - max: number; - } - | { - min: number; - } - | number; - hide?: boolean; - fixed?: boolean; - resizable?: boolean; - draggable?: boolean; - resizedWidth?: number; - isAction?: boolean; -}; - export type WritableValue = T extends Writable ? U : never; export function isHTMLElement(el: unknown): el is HTMLElement { @@ -55,10 +36,10 @@ const columnTypes = [ 'relationship', 'enum' ] as const; -export type SheetColumnType = (typeof columnTypes)[number]; -export type SheetColumn = PinkSheetColumn & { +export type ColumnType = (typeof columnTypes)[number]; +export type Column = PinkColumn & { title: string; - type: SheetColumnType; + type: ColumnType; filter?: boolean; array?: boolean; format?: string; @@ -68,6 +49,11 @@ export type SheetColumn = PinkSheetColumn & { icon?: ComponentType; isPrimary?: boolean; isEditable?: boolean; + fixed?: boolean; + resizable?: boolean; + draggable?: boolean; + resizedWidth?: number; + isAction?: boolean; }; export function isValueOfStringEnum>( diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index ab482f31b..9f19b55ae 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -3,14 +3,15 @@ import { Filters, hasPageQueries, queries } from '$lib/components/filters'; import ViewSelector from '$lib/components/viewSelector.svelte'; import { Button } from '$lib/elements/forms'; - import type { SheetColumn, SheetColumnType } from '$lib/helpers/types'; + import type { Column, ColumnType } from '$lib/helpers/types'; import { Container } from '$lib/layout'; import { preferences } from '$lib/stores/preferences'; + // TODO: use these for actions // import { canWriteCollections, canWriteDocuments } from '$lib/stores/roles'; import { Icon, Layout, Divider } from '@appwrite.io/pink-svelte'; import type { PageData } from './$types'; - import type { Option } from './attributes/store'; - import CreateAttribute from './createAttribute.svelte'; + // import type { Option } from './attributes/store'; + // import CreateAttribute from './createAttribute.svelte'; import { collection, columns, isCsvImportInProgress } from './store'; import SpreadSheet from './spreadsheet.svelte'; import { writable } from 'svelte/store'; @@ -30,11 +31,12 @@ export let data: PageData; let showImportCSV = false; - let showCreateAttribute = false; let showRecordsCreateSheet = false; - let selectedAttribute: Option['name'] = null; - const filterColumns = writable([]); + // let showCreateAttribute = false; + // let selectedAttribute: Option['name'] = null; + + const filterColumns = writable([]); $: selected = preferences.getCustomCollectionColumns(page.params.collection); @@ -42,7 +44,7 @@ $collection.attributes.map((attribute) => ({ id: attribute.key, title: attribute.key, - type: attribute.type as SheetColumnType, + type: attribute.type as ColumnType, hide: !!selected?.includes(attribute.key), array: attribute?.array, format: 'format' in attribute && attribute?.format === 'enum' ? attribute.format : null, @@ -162,7 +164,7 @@ {:else} { showRecordsCreateSheet = true; @@ -174,7 +176,7 @@ { @@ -188,11 +190,12 @@ {/key} -{#if showCreateAttribute} - -{/if} + + + + + + {#if showImportCSV} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte index bd33d7299..0f2657b5c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -4,11 +4,11 @@ import Delete from './deleteIndex.svelte'; import Create from './createIndex.svelte'; import Overview from './overviewIndex.svelte'; - import CreateAttribute from '../createAttribute.svelte'; + // import CreateAttribute from '../createAttribute.svelte'; import type { Models } from '@appwrite.io/console'; import { Button } from '$lib/elements/forms'; // import CreateAttributeDropdown from '../attributes/createAttributeDropdown.svelte'; - import type { Option } from '../attributes/store'; + // import type { Option } from '../attributes/store'; import FailedModal from '../failedModal.svelte'; import { canWriteCollections } from '$lib/stores/roles'; import { @@ -40,8 +40,8 @@ let showCreateIndex = false; let showOverview = false; let showDelete = false; - let showCreateAttribute = false; - let selectedAttribute: Option['name'] = null; + // let showCreateAttribute = false; + // let selectedAttribute: Option['name'] = null; let showFailed = false; let error = ''; @@ -161,7 +161,7 @@ {:else} (showCreateIndex = true), disabled: !$collection?.attributes?.length @@ -173,7 +173,7 @@ { @@ -193,10 +193,10 @@ {/if} -{#if showCreateAttribute} - -{/if} + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/emptySheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/emptySheet.svelte index 42fee30cc..124e0355f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/emptySheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/emptySheet.svelte @@ -7,13 +7,13 @@ Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import type { SheetColumn } from '$lib/helpers/types'; + import type { Column } from '$lib/helpers/types'; import { IconCalendar, IconFingerPrint, IconPlus } from '@appwrite.io/pink-icons-svelte'; import { isSmallViewport } from '$lib/stores/viewport'; type Mode = 'records' | 'columns' | 'indexes'; - type ColumnsMap = Record; + type ColumnsMap = Record; type Action = { text?: string; @@ -31,7 +31,7 @@ } | undefined = undefined; - function makeColumns(...middle: SheetColumn[]): SheetColumn[] { + function makeColumns(...middle: Column[]): Column[] { return [ { id: '$id', diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index f82f017fc..0c2936176 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -19,7 +19,7 @@ } from './document-[document]/attributes/store'; import { attributes, collection, columns, databaseSheetOptions } from './store'; import RelationshipsModal from './relationshipsModal.svelte'; - import type { SheetColumn, SheetColumnType } from '$lib/helpers/types'; + import type { Column, ColumnType } from '$lib/helpers/types'; import { Tooltip, Spreadsheet, @@ -144,7 +144,7 @@ const baseColumns = $collection.attributes.map((attribute) => ({ id: attribute.key, title: attribute.key, - type: attribute.type as SheetColumnType, + type: attribute.type as ColumnType, hide: !!selected?.includes(attribute.key), array: attribute?.array, width: { min: 168 }, @@ -154,7 +154,7 @@ elements: 'elements' in attribute ? attribute.elements : null })); - const staticColumns: SheetColumn[] = [ + const staticColumns: Column[] = [ { id: '$id', title: 'ID', diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 167e570eb..5eb0c431c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -1,5 +1,5 @@ import { page } from '$app/stores'; -import type { SheetColumn } from '$lib/helpers/types'; +import type { Column } from '$lib/helpers/types'; import type { Models } from '@appwrite.io/console'; import { derived, writable } from 'svelte/store'; @@ -25,7 +25,7 @@ export const attributes = derived( ); export const indexes = derived(page, ($page) => $page.data.collection.indexes as Models.Index[]); -export const columns = writable([]); +export const columns = writable([]); export const isCsvImportInProgress = writable(false);