From c049e11be660735b3bf0c5dfcd8923252e1ad9c5 Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 11:16:11 +0800 Subject: [PATCH 01/11] fix: some bugs --- .../blocks/create-table/create-schema.svelte | 14 +++--- .../blocks/field-picker/field-picker.svelte | 2 +- .../reference/foreign-table-picker.svelte | 47 ++++++++++--------- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte b/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte index 944f2a7db..997e2fcd3 100644 --- a/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte +++ b/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte @@ -10,7 +10,7 @@ type ICreateSchemaDTO, type NoneSystemFieldType, } from "@undb/table" - import * as Collapsible from "$lib/components/ui/collapsible" + import * as Popover from "$lib/components/ui/popover" import * as Card from "$lib/components/ui/card" import * as Form from "$lib/components/ui/form" import { Input } from "$lib/components/ui/input" @@ -181,14 +181,14 @@
(open = false)}> - - + + - - + +
@@ -205,6 +205,6 @@
-
-
+ +
diff --git a/apps/frontend/src/lib/components/blocks/field-picker/field-picker.svelte b/apps/frontend/src/lib/components/blocks/field-picker/field-picker.svelte index 57a565daa..ac946d13c 100644 --- a/apps/frontend/src/lib/components/blocks/field-picker/field-picker.svelte +++ b/apps/frontend/src/lib/components/blocks/field-picker/field-picker.svelte @@ -20,7 +20,7 @@ } $: fields = - $table.getOrderedFields().map((f) => ({ + $table?.getOrderedFields().map((f) => ({ id: f.id.value, value: f.id.value, label: f.name.value, diff --git a/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte b/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte index 718381ab7..df4d42d50 100644 --- a/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte +++ b/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte @@ -17,13 +17,14 @@ $: open && getForeignTablesStore.fetch() $: foreignTables = $getForeignTablesStore.data?.tables.filter((t) => !!t) ?? [] - $: groupTables = group(foreignTables, (t) => t.base.id) + $: groupTables = group(foreignTables, (t) => t.base?.id) let open = false export let value: string | undefined = undefined export let disabled: boolean = false - $: selectedValue = foreignTables.find((f) => f.id === value)?.name ?? $getForeignTableStore.data?.table?.name ?? "" + $: selectedValue = + foreignTables.filter((f) => !!f).find((f) => f.id === value)?.name ?? $getForeignTableStore.data?.table?.name ?? "" let fetched = false $: if (value && !selectedValue && !fetched) { getForeignTableStore.fetch({ variables: { tableId: value } }).then(() => { @@ -64,7 +65,7 @@ { - const label = foreignTables.find((t) => t.id === value)?.name ?? "" + const label = foreignTables.filter((f) => !!f).find((t) => t.id === value)?.name ?? "" return label.toLowerCase().includes(search.toLowerCase()) ? 1 : 0 }} > @@ -75,26 +76,28 @@ {@const baseName = tables[0].base.name} {#each tables as t} - { - value = currentValue - closeAndFocusTrigger(ids.trigger) - }} - class="gap-2" - > - - - {t.name} - - {#if t.id === $table.id.value} - - Current + {#if t} + { + value = currentValue + closeAndFocusTrigger(ids.trigger) + }} + class="gap-2" + > + + + {t.name} - {/if} - + {#if t.id === $table.id.value} + + Current + + {/if} + + {/if} {/each} {/if} From cd94a506a33ee0e81a62a54b731f6f00f8460a4a Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 12:06:15 +0800 Subject: [PATCH 02/11] fix: some bugs --- .../blocks/create-table/create-schema.svelte | 18 ++++++++++-------- .../reference/foreign-table-picker.svelte | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte b/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte index 997e2fcd3..df11f9c2f 100644 --- a/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte +++ b/apps/frontend/src/lib/components/blocks/create-table/create-schema.svelte @@ -193,14 +193,16 @@
{#each fieldTypes as type} - + {#if type !== "rollup"} + + {/if} {/each}
diff --git a/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte b/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte index df4d42d50..80919cf49 100644 --- a/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte +++ b/apps/frontend/src/lib/components/blocks/reference/foreign-table-picker.svelte @@ -89,7 +89,7 @@ {t.name} - {#if t.id === $table.id.value} + {#if t.id === $table?.id.value} From c09d4a6668f34b8dbac1c6d9dffd5be43f78a63a Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 13:04:46 +0800 Subject: [PATCH 03/11] ui: empty ui --- .../src/lib/components/blocks/base/empty-base.svelte | 6 ++++-- .../src/lib/components/blocks/forms/empty-forms.svelte | 6 ++++-- .../lib/components/blocks/grid-view/grid-view-empty.svelte | 6 ++++-- .../frontend/src/lib/components/blocks/rls/empty-rls.svelte | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/frontend/src/lib/components/blocks/base/empty-base.svelte b/apps/frontend/src/lib/components/blocks/base/empty-base.svelte index 6928a5833..a9dfbaaee 100644 --- a/apps/frontend/src/lib/components/blocks/base/empty-base.svelte +++ b/apps/frontend/src/lib/components/blocks/base/empty-base.svelte @@ -1,11 +1,13 @@
-
+
-

You have no bases

+ +

You have no bases

You can start create table as soon as you add a base.

diff --git a/apps/frontend/src/lib/components/blocks/forms/empty-forms.svelte b/apps/frontend/src/lib/components/blocks/forms/empty-forms.svelte index a940171a6..5cb095da7 100644 --- a/apps/frontend/src/lib/components/blocks/forms/empty-forms.svelte +++ b/apps/frontend/src/lib/components/blocks/forms/empty-forms.svelte @@ -2,18 +2,20 @@ import { getTable } from "$lib/store/table.store" import { hasPermission } from "$lib/store/space-member.store" import CreateFormButton from "./create-form-button.svelte" + import { SquareMousePointer } from "lucide-svelte" const table = getTable()
-

{$table.name.value} have no forms

+ +

{$table.name.value} have no forms

{#if $hasPermission("table:update")}

You can start selling as soon as you add a form.

diff --git a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-empty.svelte b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-empty.svelte index a4cb2eb5d..ba8dcd5c7 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-empty.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-empty.svelte @@ -1,15 +1,17 @@ -
+
-

{$table.name.value} have no records

+ +

{$table.name.value} have no records

{#if !readonly && $hasPermission("record:create")}

You can click button or use shortcut Ctrl + R and create diff --git a/apps/frontend/src/lib/components/blocks/rls/empty-rls.svelte b/apps/frontend/src/lib/components/blocks/rls/empty-rls.svelte index 14310f37e..dd6ee4b7e 100644 --- a/apps/frontend/src/lib/components/blocks/rls/empty-rls.svelte +++ b/apps/frontend/src/lib/components/blocks/rls/empty-rls.svelte @@ -2,18 +2,20 @@ import { getTable } from "$lib/store/table.store" import { hasPermission } from "$lib/store/space-member.store" import CreateRlsButton from "./create-rls-button.svelte" + import { SquareMousePointer } from "lucide-svelte" const table = getTable()

-

{$table.name.value} have no record level security

+ +

{$table.name.value} have no record level security

{#if $hasPermission("table:update")}

Click button to create your first record level security policy

From 5aa13cd78735aaaa3b7c5edd28f065adf2acde8b Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 13:14:42 +0800 Subject: [PATCH 04/11] fix: fix update data --- packages/persistence/src/record/record.mutate-visitor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/persistence/src/record/record.mutate-visitor.ts b/packages/persistence/src/record/record.mutate-visitor.ts index 42ceafd25..d1b6e8224 100644 --- a/packages/persistence/src/record/record.mutate-visitor.ts +++ b/packages/persistence/src/record/record.mutate-visitor.ts @@ -81,7 +81,7 @@ export class RecordMutateVisitor extends AbstractQBMutationVisitor implements IR this.setData(spec.fieldId.value, null) } dateEqual(spec: DateEqual): void { - this.setData(spec.fieldId.value, spec.date) + this.setData(spec.fieldId.value, spec.date?.getTime() ?? null) } attachmentEqual(s: AttachmentEqual): void { this.setData(s.fieldId.value, JSON.stringify(s.value)) From 190ff1437fb2687c9b926fc00eb43d4f39f5dd0f Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 19:59:42 +0800 Subject: [PATCH 05/11] fix: support clear date value --- .../blocks/field-control/date-control.svelte | 12 ++++++++++++ .../grid-view/editable-cell/date-cell.svelte | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte b/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte index d0c4b70a7..41fe0c77b 100644 --- a/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte +++ b/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte @@ -54,5 +54,17 @@ }} initialFocus /> +
+ +
diff --git a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte index c03657bc0..5f177a251 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte @@ -8,6 +8,7 @@ import * as Popover from "$lib/components/ui/popover" import { isString, isDate } from "radash" import { format } from "date-fns/fp" + import { Button } from "$lib/components/ui/button" const formatter = format("yyyy-MM-dd") @@ -79,6 +80,24 @@ }) }} /> +
+ +
{:else if value} From 251aef99a131c7ec1cd8920ed7d465c7a5aadbfd Mon Sep 17 00:00:00 2001 From: nichenqin Date: Sun, 11 Aug 2024 20:22:33 +0800 Subject: [PATCH 06/11] fix: fix update date --- .../blocks/field-control/date-control.svelte | 8 +++----- .../grid-view/editable-cell/date-cell.svelte | 14 ++++++-------- .../record-detail/record-detail-sheet.svelte | 17 ++++++++++++++--- .../blocks/record-detail/record-detail.svelte | 3 ++- .../blocks/view-sort/view-sort.svelte | 4 ++-- 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte b/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte index 41fe0c77b..e9af5ffa3 100644 --- a/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte +++ b/apps/frontend/src/lib/components/blocks/field-control/date-control.svelte @@ -6,12 +6,10 @@ import { Calendar } from "$lib/components/ui/calendar" import * as Popover from "$lib/components/ui/popover" import { isDate, isString } from "radash" + import { format } from "date-fns/fp" export let readonly = false - - const df = new DateFormatter("en-US", { - dateStyle: "long", - }) + const formatter = format("yyyy-MM-dd") export let value: string | Date | undefined = undefined function parse(value: string) { @@ -37,7 +35,7 @@ > {#if value} - {isString(value) ? df.format(new Date(value)) : df.format(value)} + {formatter(value)} {/if} diff --git a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte index 5f177a251..56bcba044 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte @@ -3,7 +3,7 @@ import { createMutation } from "@tanstack/svelte-query" import type { DateField } from "@undb/table" import { toast } from "svelte-sonner" - import { parseAbsolute } from "@internationalized/date" + import { parseDate } from "@internationalized/date" import { Calendar } from "$lib/components/ui/calendar" import * as Popover from "$lib/components/ui/popover" import { isString, isDate } from "radash" @@ -17,16 +17,13 @@ export let value: string | Date | undefined = undefined function parse(value: string) { try { - return parseAbsolute(value, "UTC") + return parseDate(value) } catch { return undefined } } - $: internalDate = isString(value) - ? parse(value) - : isDate(value) - ? parseAbsolute(value.toISOString(), "UTC") - : undefined + $: internalDate = isString(value) ? parse(value) : isDate(value) ? parse(value.toISOString()) : undefined + $: console.log(internalDate) export let recordId: string export let isEditing: boolean export let onValueChange = (value: string | undefined) => {} @@ -68,7 +65,8 @@ value={internalDate} onValueChange={(v) => { if (v) { - value = v.toDate("UTC").toISOString() + value = v.toString() + console.log(value) } else { value = undefined } diff --git a/apps/frontend/src/lib/components/blocks/record-detail/record-detail-sheet.svelte b/apps/frontend/src/lib/components/blocks/record-detail/record-detail-sheet.svelte index 11c898bb1..67d935303 100644 --- a/apps/frontend/src/lib/components/blocks/record-detail/record-detail-sheet.svelte +++ b/apps/frontend/src/lib/components/blocks/record-detail/record-detail-sheet.svelte @@ -5,13 +5,13 @@ import { queryParam, ssp } from "sveltekit-search-params" import { getTable, viewId } from "$lib/store/table.store" import { trpc } from "$lib/trpc/client" - import { createQuery, useQueryClient } from "@tanstack/svelte-query" + import { createQuery, useIsMutating, useQueryClient } from "@tanstack/svelte-query" import { RecordDO } from "@undb/table" import { derived } from "svelte/store" import Skeleton from "$lib/components/ui/skeleton/skeleton.svelte" import { cn } from "$lib/utils" import AuditList from "../audit/audit-list.svelte" - import { HistoryIcon } from "lucide-svelte" + import { HistoryIcon, LoaderCircleIcon } from "lucide-svelte" import { preferences } from "$lib/store/persisted.store" import { ScrollArea } from "$lib/components/ui/scroll-area" @@ -36,6 +36,12 @@ })), ) + const isUpdatingRecord = useIsMutating({ + mutationKey: ["updateRecord"], + }) + + $: console.log($isUpdatingRecord) + const client = useQueryClient() $: recordDo = $record.data?.record ? RecordDO.fromJSON($table, $record.data?.record) : undefined @@ -108,7 +114,12 @@ {#if !readonly} - + {/if} diff --git a/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte b/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte index fa05dede3..a9effb2c8 100644 --- a/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte +++ b/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte @@ -45,11 +45,12 @@ const updateRecordMutation = createMutation({ mutationFn: trpc.record.update.mutate, + mutationKey: ["updateRecord"], onSuccess: async () => { toast.success("Record updated") onSuccess() - reset({}) await client.invalidateQueries({ queryKey: [record.id.value, "get"] }) + reset({}) }, onError: (error) => { toast.error(error.message) diff --git a/apps/frontend/src/lib/components/blocks/view-sort/view-sort.svelte b/apps/frontend/src/lib/components/blocks/view-sort/view-sort.svelte index 4b07574bc..b5b57cc3f 100644 --- a/apps/frontend/src/lib/components/blocks/view-sort/view-sort.svelte +++ b/apps/frontend/src/lib/components/blocks/view-sort/view-sort.svelte @@ -158,7 +158,7 @@
- {#if !$hasPermission("table:update")} + {#if $hasPermission("table:update")} @@ -173,7 +173,7 @@
{/if}
- {#if !$hasPermission("table:update")} + {#if $hasPermission("table:update")}