From 83dcb9b7f96600f0ec723218ab1a1737cda70fcf Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 14 Jul 2022 12:50:19 +0200 Subject: [PATCH 01/75] feat: databases,database, settings screens --- .../[project]/databases/__layout.svelte | 20 ++- .../[project]/databases/_create.svelte | 66 +++++++-- .../database/[database]/__layout.svelte | 18 +-- .../database/[database]/_delete.svelte | 39 ++++++ .../database/[database]/index.svelte | 115 +++++++++++----- .../database/[database]/settings.svelte | 115 ++++++++++++++++ .../databases/database/[database]/store.ts | 24 +++- .../console/[project]/databases/index.svelte | 128 ++++++++++++------ .../console/[project]/databases/store.ts | 25 ++++ .../console/[project]/databases/usage.svelte | 10 ++ 10 files changed, 461 insertions(+), 99 deletions(-) create mode 100644 src/routes/console/[project]/databases/database/[database]/_delete.svelte create mode 100644 src/routes/console/[project]/databases/database/[database]/settings.svelte create mode 100644 src/routes/console/[project]/databases/store.ts create mode 100644 src/routes/console/[project]/databases/usage.svelte diff --git a/src/routes/console/[project]/databases/__layout.svelte b/src/routes/console/[project]/databases/__layout.svelte index a37df57094..a786cc4625 100644 --- a/src/routes/console/[project]/databases/__layout.svelte +++ b/src/routes/console/[project]/databases/__layout.svelte @@ -1,25 +1,37 @@ - Appwrite - Databases + Appwrite - Database diff --git a/src/routes/console/[project]/databases/_create.svelte b/src/routes/console/[project]/databases/_create.svelte index 221bad77bd..4afbbc13d2 100644 --- a/src/routes/console/[project]/databases/_create.svelte +++ b/src/routes/console/[project]/databases/_create.svelte @@ -1,9 +1,8 @@
- - Create Function - - + + Create Database + + + + {#if !showDropdown} +
+ (showDropdown = !showDropdown)} + > +
+ {:else} + + Database ID +

+ Enter a custom database ID. Leave blank for a randomly generated database + ID. +

+ +
+ + +
+
+
+
+
+ {/if} +
- +
diff --git a/src/routes/console/[project]/databases/database/[database]/__layout.svelte b/src/routes/console/[project]/databases/database/[database]/__layout.svelte index dec6d0ff3c..610c4bbe85 100644 --- a/src/routes/console/[project]/databases/database/[database]/__layout.svelte +++ b/src/routes/console/[project]/databases/database/[database]/__layout.svelte @@ -1,8 +1,7 @@ + +
+ + Delete Database + +

+ Are you sure you want to delete {$database.name}? +

+ + + + +
+
diff --git a/src/routes/console/[project]/databases/database/[database]/index.svelte b/src/routes/console/[project]/databases/database/[database]/index.svelte index b0083a9ca8..e48dbbf6e3 100644 --- a/src/routes/console/[project]/databases/database/[database]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/index.svelte @@ -1,26 +1,30 @@ @@ -30,31 +34,78 @@ - {#await request} -
- {:then response} - {#if response.total} - - {#each response.collections as collection} - - {/each} - -
-

Total results: {response.total}

- + + {#if $collections?.total} +
+ {#each $collections.collections as collection} + + XX Documents + {collection.name} + + + Collection ID + + + {/each} + {#if $collections.total % 2 !== 0} +
+
+
+
+ +
+
+

Create a new collection

+
+
+
+
+ {/if} +
+ +
+

Total results: {$collections.total}

+ +
+ {:else if search} + +
+ Sorry, we couldn’t find ‘{search}’ +
+

There are no collections that match your search.

+
+
+ +
- {:else if search} - - No results found for {search} - - {:else} - You haven't created any collections for your project yet. - {/if} - {/await} +
+
+

Total results: {$collections?.total}

+ +
+ {:else} + +
+
+ +
+
+

Create your first collection to get started

+
+
+ +
+
+
+ {/if} + diff --git a/src/routes/console/[project]/databases/database/[database]/settings.svelte b/src/routes/console/[project]/databases/database/[database]/settings.svelte new file mode 100644 index 0000000000..b3df568140 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/settings.svelte @@ -0,0 +1,115 @@ + + +{#if $database} + + +
+
+
+ +
{$database.name}
+
+
+
+

Created: TO IMPLEMENT

+

Last Updated: TO IMPLEMENT

+
+
+
+ + +
Update Name
+ + +
    + + {#if showError === 'name'} + {errorMessage} + {/if} +
+
+ + + + +
+ + +
+
Danger Zone
+
+ +

+ The database will be permanently deleted, including all data associated with this + team. This action is irreversible. +

+ + + + + + +
{$database.name}
+ Last Updated: TO IMPLEMENT +
+
+
+ + + + +
+
+ +{/if} diff --git a/src/routes/console/[project]/databases/database/[database]/store.ts b/src/routes/console/[project]/databases/database/[database]/store.ts index 02d460453e..dc171a32b4 100644 --- a/src/routes/console/[project]/databases/database/[database]/store.ts +++ b/src/routes/console/[project]/databases/database/[database]/store.ts @@ -1,6 +1,21 @@ import { sdkForProject } from '$lib/stores/sdk'; -import { writable } from 'svelte/store'; import type { Models } from '@aw-labs/appwrite-console'; +import { writable } from 'svelte/store'; +import { browser } from '$app/env'; + +function createCollectionStore() { + const { subscribe, set } = writable( + browser ? JSON.parse(sessionStorage.getItem('database')) : null + ); + return { + subscribe, + set, + load: async (search: string, limit: number, offset: number) => { + const response = await sdkForProject.databases.listCollections(search, limit, offset); + set(response); + } + }; +} function createDatabase() { const { subscribe, set } = writable(); @@ -13,5 +28,10 @@ function createDatabase() { } }; } - +export const collections = createCollectionStore(); export const database = createDatabase(); + +if (browser) { + collections.subscribe((n) => sessionStorage?.setItem('collections', JSON.stringify(n ?? ''))); + database.subscribe((n) => sessionStorage?.setItem('database', JSON.stringify(n ?? ''))); +} diff --git a/src/routes/console/[project]/databases/index.svelte b/src/routes/console/[project]/databases/index.svelte index 202e9c3899..b31e09f6bf 100644 --- a/src/routes/console/[project]/databases/index.svelte +++ b/src/routes/console/[project]/databases/index.svelte @@ -1,62 +1,106 @@ -

Databases

- - - - - {#await request} -
- {:then response} - {#if response.total} -

{response.total} databases found

- - {#each response.databases as database} - - {/each} - - - - {:else if search} - - - No results found for {search} - - - {:else} - - No Databases Found - You haven't created any database for your project yet. - - {/if} - {/await} - - +
+

Databases

+ + +
+ + {#if $databaseList?.total} +
+ {#each $databaseList.databases as database} + + XX Collections + {database.name} + + + Database ID + + + {/each} + {#if $databaseList.total % 2 !== 0} +
+
+
+
+ +
+
+

Create a new database

+
+
+
+
+ {/if} +
+ +
+

Total results: {$databaseList.total}

+ +
+ {:else if search} + +
+ Sorry, we couldn’t find ‘{search}’ +
+

There are no databases that match your search.

+
+
+ +
+
+
+
+

Total results: {$databaseList?.total}

+ +
+ {:else} + +
+
+ +
+
+

Create your first Database to get started

+
+
+ +
+
+
+ {/if} diff --git a/src/routes/console/[project]/databases/store.ts b/src/routes/console/[project]/databases/store.ts new file mode 100644 index 0000000000..4545ac637c --- /dev/null +++ b/src/routes/console/[project]/databases/store.ts @@ -0,0 +1,25 @@ +import { sdkForProject } from '$lib/stores/sdk'; +import type { Models } from '@aw-labs/appwrite-console'; +import { writable } from 'svelte/store'; +import { browser } from '$app/env'; + +function createDatabaseListStore() { + const { subscribe, set } = writable( + browser ? JSON.parse(sessionStorage.getItem('databaseList')) : null + ); + + return { + subscribe, + set, + load: async (search: string, limit: number, offset: number) => { + const response = await sdkForProject.databases.list(search, limit, offset); + set(response); + } + }; +} + +export const databaseList = createDatabaseListStore(); + +if (browser) { + databaseList.subscribe((n) => sessionStorage?.setItem('databaseList', JSON.stringify(n ?? ''))); +} diff --git a/src/routes/console/[project]/databases/usage.svelte b/src/routes/console/[project]/databases/usage.svelte new file mode 100644 index 0000000000..aa43e67418 --- /dev/null +++ b/src/routes/console/[project]/databases/usage.svelte @@ -0,0 +1,10 @@ + + + +

Usage

+ + +
From cbf21b15a19ed9b8428589f787bc2ad00d8409d1 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 14 Jul 2022 17:55:08 +0200 Subject: [PATCH 02/75] feat: update table with sticky column --- src/lib/elements/table/cell.svelte | 2 ++ src/lib/elements/table/table.svelte | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/elements/table/cell.svelte b/src/lib/elements/table/cell.svelte index 4a5259d0fb..4e01206bd6 100644 --- a/src/lib/elements/table/cell.svelte +++ b/src/lib/elements/table/cell.svelte @@ -1,10 +1,12 @@
diff --git a/src/lib/elements/table/table.svelte b/src/lib/elements/table/table.svelte index 465d4c8f95..96354927ae 100644 --- a/src/lib/elements/table/table.svelte +++ b/src/lib/elements/table/table.svelte @@ -1,3 +1,7 @@ -
+ + +
From 2a05dbaa5c2f54eb79e027810a04a8c2373e5391 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 14 Jul 2022 17:56:13 +0200 Subject: [PATCH 03/75] feat: start work collection screen --- .../collection/[collection]/__layout.svelte | 2 +- .../collection/[collection]/index.svelte | 107 ++++++++++-------- .../collection/[collection]/store.ts | 30 ++++- .../database/[database]/index.svelte | 4 + 4 files changed, 92 insertions(+), 51 deletions(-) diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte index 0ef91aa44b..de0d53cfcc 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte @@ -22,7 +22,7 @@ title.set($collection.name); } - backButton.set(`${base}/console/${$page.params.project}/database`); + backButton.set(`${base}/console/${$page.params.project}/database/${databaseId}`); copyData.set({ text: '', diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte index 04cb02f3b3..49a3d06121 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte @@ -1,30 +1,32 @@ - {#await request} -
- {:then response} - - - - {#if response.total} - +
+

Documents

+ + +
+ + {#if $documentList.total} +
+
+ Document ID {#each columns as column} {column.title} {/each} - {#each response.documents as document} - + {#each $documentList.documents as document} + + + + + + {#each columns as column} - + {document[column.key] ?? 'n/a'} - + {/each} - + {/each}
- -
-

Total results: {response.total}

- -
- {:else} - -
-
- -
-
-

Crate your first document to get started

-
-
- -
+
+
+

Total results: {$documentList.total}

+ +
+ {:else} + +
+
+ +
+
+

Crate your first document to get started

- - {/if} - {/await} +
+ +
+
+
+ {/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts index 036d9fa6e7..e24e9b18ae 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts @@ -1,6 +1,7 @@ import { sdkForProject } from '$lib/stores/sdk'; import type { Models } from '@aw-labs/appwrite-console'; import { writable } from 'svelte/store'; +import { browser } from '$app/env'; type Attributes = | Models.AttributeBoolean @@ -17,7 +18,9 @@ type Collection = Omit & { }; function createCollection() { - const { subscribe, set, update } = writable(); + const { subscribe, set, update } = writable( + browser ? JSON.parse(sessionStorage.getItem('collection')) : null + ); return { subscribe, @@ -49,4 +52,29 @@ function createCollection() { }; } +function createDocumentListStore() { + const { subscribe, set } = writable>( + browser ? JSON.parse(sessionStorage.getItem('documents')) : null + ); + return { + subscribe, + set, + load: async (collectionId: string, queries: [], limit: number, offset: number) => { + const response = await sdkForProject.databases.listDocuments( + collectionId, + queries, + limit, + offset + ); + set(response); + } + }; +} + export const collection = createCollection(); +export const documentList = createDocumentListStore(); + +if (browser) { + collection.subscribe((n) => sessionStorage?.setItem('collection', JSON.stringify(n ?? ''))); + documentList.subscribe((n) => sessionStorage?.setItem('documentList', JSON.stringify(n ?? ''))); +} diff --git a/src/routes/console/[project]/databases/database/[database]/index.svelte b/src/routes/console/[project]/databases/database/[database]/index.svelte index e48dbbf6e3..1fd503824d 100644 --- a/src/routes/console/[project]/databases/database/[database]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/index.svelte @@ -45,6 +45,10 @@ href={`${base}/console/${project}/databases/database/${databaseId}/collection/${collection.$id}`}> XX Documents {collection.name} + + {#if !collection.enabled} + Disabled + {/if} Collection ID From e4432f6a7bbc2691edc144e611621255a5c91607 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 15 Jul 2022 17:31:32 +0200 Subject: [PATCH 04/75] feat: work on collections & attributes pages --- .../database/[database]/_create.svelte | 63 +++- .../collection/[collection]/__layout.svelte | 6 +- .../[collection]/_createAttribute.svelte | 75 +++++ .../collection/[collection]/_delete.svelte | 41 +++ .../collection/[collection]/attributes.svelte | 129 +++++--- .../[collection]/attributes/_boolean.svelte | 27 +- .../[collection]/attributes/_email.svelte | 26 +- .../[collection]/attributes/_enum.svelte | 38 +-- .../[collection]/attributes/_float.svelte | 28 +- .../[collection]/attributes/_integer.svelte | 29 +- .../[collection]/attributes/_ip.svelte | 26 +- .../[collection]/attributes/_string.svelte | 27 +- .../[collection]/attributes/_url.svelte | 26 +- .../[collection]/attributes/store.ts | 27 +- .../collection/[collection]/index.svelte | 2 +- .../collection/[collection]/settings.svelte | 293 ++++++++++++++---- .../collection/[collection]/store.ts | 2 +- .../database/[database]/index.svelte | 4 +- .../console/[project]/databases/index.svelte | 4 +- 19 files changed, 562 insertions(+), 311 deletions(-) create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte diff --git a/src/routes/console/[project]/databases/database/[database]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/_create.svelte index bd5bb1d715..5e1151932a 100644 --- a/src/routes/console/[project]/databases/database/[database]/_create.svelte +++ b/src/routes/console/[project]/databases/database/[database]/_create.svelte @@ -1,8 +1,8 @@
- + Create Collection - - + + + + {#if !showDropdown} +
+ (showDropdown = !showDropdown)} + > +
+ {:else} + + Collection ID +

+ Enter a custom collection ID. Leave blank for a randomly generated + collection ID. +

+ +
+ + +
+
+
+
+
+ {/if} +
diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte index de0d53cfcc..00a500ead6 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/__layout.svelte @@ -22,11 +22,11 @@ title.set($collection.name); } - backButton.set(`${base}/console/${$page.params.project}/database/${databaseId}`); + backButton.set(`${base}/console/${$page.params.project}/databases/database/${databaseId}/`); copyData.set({ - text: '', - value: '' + text: 'Collection ID', + value: collectionId }); tabs.set([ diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte new file mode 100644 index 0000000000..3abaa9d603 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte @@ -0,0 +1,75 @@ + + + + + Create Attribute + + + +
+
+ + ({ value: n.name, label: n.name }))} + id="type" + label="Attribute type" + bind:value={selectedOption} + required /> + {#if selectedOption} + ($option = null)} /> + {/if} +
+ + + + +
+ diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte new file mode 100644 index 0000000000..a016b1fe03 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte @@ -0,0 +1,41 @@ + + +
+ + Delete Collection + +

+ Are you sure you want to delete {$collection.name}? +

+ + + + +
+
diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte index 7e67786b26..2cd1107466 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte @@ -8,65 +8,122 @@ TableCellText } from '$lib/elements/table'; import { Button } from '$lib/elements/forms'; - import { DropList, DropListItem, Empty } from '$lib/components'; - import { option, options } from './attributes/store'; + import { DropList, DropListItem, Empty, Pagination } from '$lib/components'; import { collection } from './store'; + // import type { Attributes } from './store'; import { Container } from '$lib/layout'; import { Pill } from '$lib/elements'; + import { onMount } from 'svelte'; + import { page } from '$app/stores'; + import Create from './_createAttribute.svelte'; + import type { Models } from '@aw-labs/appwrite-console'; - let showCreateDropdown = false; + let offset = 0; + const limit = 5; + let showDropdown = []; + // let selectedAttribute: Attributes = null; + // let showDelete = false; + let showCreate = false; + + const handleCreate = async (event: CustomEvent) => { + showCreate = false; + console.log(event); + }; + + onMount(async () => { + await collection.load($page.params.collection); + }); -

Attributes

+
+

Attributes

- {#if $collection.attributes.length} + +
+ + {#if $collection?.attributes.length} - Status Key Type + Default Value + - {#each $collection.attributes as attribute} + {#each $collection.attributes as attribute, index} - - - {attribute.status} - - - {attribute.key} - - {'format' in attribute ? attribute.format : attribute.type} + {attribute.key} + {#if attribute.status !== 'available'} + + {attribute.status} + + {/if} {attribute.type} + + {attribute.xdefault ? attribute.xdefault : '-'} + + + + + + Overview + Create Index + { + e.preventDefault(); + // selectedAttribute = attribute; + // showDelete = true; + }}>Delete + + + {/each}
+
+

Total results: {$collection?.attributes?.length}

+ +
{:else} - - No Attributes Found - Add your first attribute to get started. + +
+
+ +
+
+

Crate your first document to get started

+
+
+ +
+
{/if} - - - - - {#each options as o} - ($option = o)}> - New {o.name} Attribute - - {/each} - -
-{#if $option} - ($option = null)} /> -{/if} + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte index deef976ce4..a71e818010 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte @@ -1,16 +1,15 @@ -
- dispatch('close')} show> - Create Boolean Attribute - - - - - - - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte index d897d747d2..3baffe1004 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte @@ -1,14 +1,12 @@ -
- dispatch('close')} show> - Create Email Attribute - - - - - - - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte index ac809c6486..a5430498e7 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte @@ -1,20 +1,12 @@ -
- dispatch('close')} show> - Create Enum Attribute - - - - - - - - - - - - -
+ + + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte index f213daebaf..362dd60bd9 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte @@ -1,6 +1,5 @@ -
- dispatch('close')} show> - Create Float Attribute - - - + + - - - - - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte index c30bbb5865..8a3dfea4b5 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte @@ -1,7 +1,5 @@ -
- dispatch('close')} show> - Create Integer Attribute - - - - - - - + + - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte index 6b28b59486..4d35811901 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte @@ -1,14 +1,12 @@ -
- dispatch('close')} show> - Create IP Attribute - - - - - - - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte index f9060bd8e4..f153db47db 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte @@ -1,13 +1,12 @@ -
- dispatch('close')} show> - Create String Attribute - - - - - - - - - - - - -
+ + + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte index 38a140e73f..601d935e01 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte @@ -1,14 +1,12 @@ -
- dispatch('close')} show> - Create URL Attribute - - - - - - - - - - - -
+ + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/store.ts b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/store.ts index a3d8036a49..ed557c44f3 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/store.ts +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/store.ts @@ -12,50 +12,41 @@ import Url from './_url.svelte'; export type Option = { name: string; component: typeof SvelteComponent; - icon: string; }; export const options: Option[] = [ { name: 'String', - component: String, - icon: 'string' + component: String }, { name: 'Integer', - component: Integer, - icon: 'integer' + component: Integer }, { name: 'Float', - component: Float, - icon: 'integer' + component: Float }, { name: 'Boolean', - component: Boolean, - icon: 'boolean' + component: Boolean }, { name: 'Email', - component: Email, - icon: 'email' + component: Email }, { name: 'IP', - component: Ip, - icon: 'ip' + component: Ip }, { name: 'URL', - component: Url, - icon: 'url' + component: Url }, { name: 'Enum', - component: Enum, - icon: 'enum' + component: Enum } ]; -export const option = writable
- {#if $documentList.total} + {#if $documentList?.total}
diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/settings.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/settings.svelte index 3b2a6b879a..a25dc89f0e 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/settings.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/settings.svelte @@ -1,20 +1,57 @@ -

Settings

-
- - - -

Permissions

-

Choose the permissions model for this collection.

- -

- With Collection Level permissions, you assign permissions only once in the - collection. -

-

- In this permission level, permissions assigned to collection takes the precedence - and documents permissions are ignored. -

- {#if $collection.permission === 'collection'} - - - {/if} - + {#if $collection} + +

{$collection.name}

+ + +
    + +
+
+

Created: {toLocaleDateTime($collection.$createdAt)}

+

Last Updated: {toLocaleDateTime($collection.$updatedAt)}

+
+
+ + + + +
+ + +
Update Name
+ + +
    + + {#if showError === 'name'} + {errorMessage} + {/if} +
+
+ + + + +
+ +
Update Permissions

- With Document Level permissions, you have granular access control over every - document. Users will only be able to access documents for which they have explicit - permissions. + Assign read or write permissions at the Collection Level or + Document Level. If collection Level permissions are assigned, permissions + applied to individual documents are ignored.

+ +
    +
  • + +
  • +
  • + +
  • +
+ +

+ Tip: Add role:all for wildcards access. Check out our documentation + for more on Permissions +

+
+ {#if collectionPermissions === 'collection'} +
    + + +
+ {/if} +
+ + + +
+ + +
Delete collection

- In this permission level, document permissions take precedence and collection - permissions are ignored. + The collection will be permanently deleted, including all the documents within it. + This action is irreversible.

- - - -
- + + + +
{$collection.name}
+
+

Last Updated: {toLocaleDateTime($collection.$updatedAt)}

+
+
+ + + + + + {/if}
+ + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts index e24e9b18ae..cd7f28747d 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts @@ -3,7 +3,7 @@ import type { Models } from '@aw-labs/appwrite-console'; import { writable } from 'svelte/store'; import { browser } from '$app/env'; -type Attributes = +export type Attributes = | Models.AttributeBoolean | Models.AttributeEmail | Models.AttributeEnum diff --git a/src/routes/console/[project]/databases/database/[database]/index.svelte b/src/routes/console/[project]/databases/database/[database]/index.svelte index 1fd503824d..69bbea092d 100644 --- a/src/routes/console/[project]/databases/database/[database]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/index.svelte @@ -17,7 +17,7 @@ const limit = 5; const project = $page.params.project; const databaseId = $page.params.database; - const collectionCreated = async (event: CustomEvent) => { + const handleCreate = async (event: CustomEvent) => { showCreate = false; await goto( `${base}/console/${project}/databases/database/${databaseId}/collection/${event.detail.$id}` @@ -112,4 +112,4 @@ {/if} - + diff --git a/src/routes/console/[project]/databases/index.svelte b/src/routes/console/[project]/databases/index.svelte index b31e09f6bf..283586e3bf 100644 --- a/src/routes/console/[project]/databases/index.svelte +++ b/src/routes/console/[project]/databases/index.svelte @@ -16,7 +16,7 @@ const limit = 5; const project = $page.params.project; - const databaseCreated = async (event: CustomEvent) => { + const handleCreate = async (event: CustomEvent) => { showCreate = false; await goto(`${base}/console/${project}/databases/database/${event.detail.$id}`); }; @@ -103,4 +103,4 @@ {/if} - + From 498bd2e697564a860de797d7b81f89aff444e31d Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 18 Jul 2022 16:09:32 +0200 Subject: [PATCH 05/75] feat: create, delete attribute --- .../[collection]/_createAttribute.svelte | 39 ++++++---------- .../collection/[collection]/_delete.svelte | 2 +- .../[collection]/_deleteAttribute.svelte | 45 +++++++++++++++++++ .../collection/[collection]/_overview.svelte | 37 +++++++++++++++ .../collection/[collection]/attributes.svelte | 37 +++++++++------ .../[collection]/attributes/_boolean.svelte | 25 +++++++---- .../[collection]/attributes/_email.svelte | 14 ++++-- .../[collection]/attributes/_enum.svelte | 14 ++++-- .../[collection]/attributes/_float.svelte | 14 ++++-- .../[collection]/attributes/_integer.svelte | 14 ++++-- .../[collection]/attributes/_ip.svelte | 14 ++++-- .../[collection]/attributes/_string.svelte | 14 ++++-- .../[collection]/attributes/_url.svelte | 14 ++++-- 13 files changed, 206 insertions(+), 77 deletions(-) create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteAttribute.svelte create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overview.svelte diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte index 3abaa9d603..99ef0dd92e 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createAttribute.svelte @@ -1,32 +1,19 @@ -
+ (submitted = true)}> Create Attribute @@ -63,7 +50,9 @@ {#if selectedOption} ($option = null)} /> {/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte index a016b1fe03..0a10d193e8 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_delete.svelte @@ -15,7 +15,7 @@ await sdkForProject.databases.deleteCollection($collection.$id); showDelete = false; await goto( - `${base}/console/${$page.params.project}/databases/${$page.params.database}` + `${base}/console/${$page.params.project}/databases/database/${$page.params.database}` ); } catch (error) { addNotification({ diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteAttribute.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteAttribute.svelte new file mode 100644 index 0000000000..eb730c9718 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteAttribute.svelte @@ -0,0 +1,45 @@ + + + + + Delete Attribute + +

+ Are you sure you want to delete '{selectedAttribute.key}' from {$collection.name}? +

+ + + + +
+ diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overview.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overview.svelte new file mode 100644 index 0000000000..71017e661f --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overview.svelte @@ -0,0 +1,37 @@ + + +{#if selectedAttribute} + + Overview + + + + {#if selectedAttribute} + + {/if} + + + + + + +{/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte index 2cd1107466..97ea48cc6a 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte @@ -10,25 +10,22 @@ import { Button } from '$lib/elements/forms'; import { DropList, DropListItem, Empty, Pagination } from '$lib/components'; import { collection } from './store'; - // import type { Attributes } from './store'; + import type { Attributes } from './store'; import { Container } from '$lib/layout'; import { Pill } from '$lib/elements'; import { onMount } from 'svelte'; import { page } from '$app/stores'; import Create from './_createAttribute.svelte'; - import type { Models } from '@aw-labs/appwrite-console'; + import Delete from './_deleteAttribute.svelte'; + import Overview from './_overview.svelte'; let offset = 0; const limit = 5; let showDropdown = []; - // let selectedAttribute: Attributes = null; - // let showDelete = false; + let selectedAttribute: Attributes = null; let showCreate = false; - - const handleCreate = async (event: CustomEvent) => { - showCreate = false; - console.log(event); - }; + let showDelete = false; + let showOverview = false; onMount(async () => { await collection.load($page.params.collection); @@ -48,7 +45,7 @@ {#if $collection?.attributes.length}
- Key + ID Type Default Value @@ -66,6 +63,8 @@ )}> {attribute.status} + {:else if attribute.required} + Required {/if} {attribute.type} @@ -87,14 +86,20 @@
- ID + Key Type Default Value diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte index b11b22d7c9..13124ee149 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_boolean.svelte @@ -7,7 +7,7 @@ import type { Models } from '@aw-labs/appwrite-console'; export let submitted = false; - export let id: string; + export let key: string; export let overview = false; export let selectedAttribute: Models.AttributeBoolean; @@ -22,7 +22,7 @@ try { const attribute = await sdkForProject.databases.createBooleanAttribute( $collection.$id, - id, + key, required, xdefault ? xdefault : undefined, array diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte index 5a0b2db268..216798a7c0 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_email.svelte @@ -6,7 +6,7 @@ import { collection } from '../store'; import type { Models } from '@aw-labs/appwrite-console'; - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeEmail; @@ -21,7 +21,7 @@ try { const attribute = await sdkForProject.databases.createEmailAttribute( $collection.$id, - id, + key, required, xdefault ? xdefault : undefined, array diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte index d68f88e45e..9f589ef8a1 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_enum.svelte @@ -6,7 +6,7 @@ import { collection } from '../store'; import type { Models } from '@aw-labs/appwrite-console'; - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeEnum; @@ -21,7 +21,7 @@ try { const attribute = await sdkForProject.databases.createEnumAttribute( $collection.$id, - id, + key, elements, required, xdefault ? xdefault : undefined, diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte index 35297b9f3d..0f7e31b309 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_float.svelte @@ -8,7 +8,7 @@ const dispatch = createEventDispatcher(); - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeFloat; @@ -23,7 +23,7 @@ try { const attribute = await sdkForProject.databases.createFloatAttribute( $collection.$id, - id, + key, required, min, max, diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte index 5a0fde47da..cf3b310d73 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_integer.svelte @@ -8,7 +8,7 @@ const dispatch = createEventDispatcher(); - export let id: string = null; + export let key: string = null; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeInteger; @@ -23,7 +23,7 @@ try { const attribute = await sdkForProject.databases.createIntegerAttribute( $collection.$id, - id, + key, required, min, max, @@ -44,7 +44,6 @@ } $: if (overview) { - //TODO: fix xdefault ({ required, array, min, max } = selectedAttribute); xdefault = selectedAttribute.default; } diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte index f30fde3160..4f31e6e9ac 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_ip.svelte @@ -6,7 +6,7 @@ import { collection } from '../store'; import type { Models } from '@aw-labs/appwrite-console'; - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeIp; @@ -20,7 +20,7 @@ try { const attribute = await sdkForProject.databases.createIpAttribute( $collection.$id, - id, + key, required, xdefault ? xdefault : undefined, array diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte index 186013dd06..28a81fd3a0 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_string.svelte @@ -6,7 +6,7 @@ import { collection } from '../store'; import type { Models } from '@aw-labs/appwrite-console'; - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeString; @@ -21,7 +21,7 @@ try { const attribute = await sdkForProject.databases.createStringAttribute( $collection.$id, - id, + key, size, required, xdefault ? xdefault : undefined, diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte index 6a724f3e88..f172de05d2 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes/_url.svelte @@ -6,7 +6,7 @@ import { collection } from '../store'; import type { Models } from '@aw-labs/appwrite-console'; - export let id: string; + export let key: string; export let submitted = false; export let overview = false; export let selectedAttribute: Models.AttributeUrl; @@ -20,7 +20,7 @@ try { const attribute = await sdkForProject.databases.createUrlAttribute( $collection.$id, - id, + key, required, xdefault ? xdefault : undefined, array From 7a9a43a91995f683f801457c1d558aca32e9569a Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 21 Jul 2022 17:42:36 +0200 Subject: [PATCH 14/75] feat: add placeholder to inputSelect --- src/lib/elements/forms/inputSelect.svelte | 4 ++++ tests/unit/elements/inputSelect.test.ts | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index 028c6342a8..c4aa70d960 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -5,6 +5,7 @@ export let showLabel = true; export let id: string; export let value: string; + export let placeholder = ''; export let required = false; export let disabled = false; export let options: { @@ -17,6 +18,9 @@
+ + + + + + + {#each attributeOptions as option} + + {/each} + + +
+ +
+ +
+ +
+
+ +
+ +
+ + {/each} + {/if} + {#if !attributeList?.length || newAttr} +
  • +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
  • + {/if} + + + + + + + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteIndex.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteIndex.svelte new file mode 100644 index 0000000000..0c618483f9 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_deleteIndex.svelte @@ -0,0 +1,41 @@ + + +
    + + Delete Index + +

    + Are you sure you want to delete '{selectedIndex.key}' from {$collection.name}? +

    + + + + +
    + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte index 2e9bac995a..523ceb45b1 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/attributes.svelte @@ -17,6 +17,7 @@ import { onMount } from 'svelte'; import { page } from '$app/stores'; import Create from './_createAttribute.svelte'; + import CreateIndex from './_createIndex.svelte'; import Delete from './_deleteAttribute.svelte'; import Overview from './_overview.svelte'; @@ -27,6 +28,7 @@ let showCreate = false; let showDelete = false; let showOverview = false; + let showCreateIndex = false; onMount(async () => { await collection.load($page.params.collection); @@ -74,7 +76,7 @@ {attribute.default ? attribute.default : '-'} - + Overview - Create Index + { + e.preventDefault(); + selectedAttribute = attribute; + showCreateIndex = true; + }}>Create Index { @@ -106,7 +114,7 @@ }}>Delete - + {/each} @@ -138,4 +146,5 @@ {#if selectedAttribute} + {/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte index 87fd327157..8609ddafff 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte @@ -1,50 +1,186 @@ -

    Indexes

    - - {#if $collection.indexes.length} + + + + + + {#if $indexList?.total}
    - Status Key Type Attributes - + Asc/Desc + - {#each $collection.indexes as index} + {#each $indexList.indexes as index, i} - {index.status} - {index.key} + + {index.key} + {index.type} - {#each index.attributes as attribute, i} - {attribute} ({index.orders[i]}) - {/each} + {index.attributes} - Delete + + {index.orders} + + + + + + { + e.preventDefault(); + selectedIndex = index; + showOverview = true; + }}>Overview + + { + e.preventDefault(); + selectedIndex = index; + showDelete = true; + }}>Delete + + + {/each}
    - {:else} +
    +

    Total results: {$indexList?.total}

    + +
    + {:else if search} - No Indexes Found - Add your first index to get started. +
    + Sorry, we couldn’t find ‘{search}’ +
    +

    There are no indexes that match your search.

    +
    +
    + +
    +
    +
    +
    +

    Total results: {$indexList?.total}

    + +
    + {:else if $collection.indexes?.length} + +
    +
    + +
    +
    +

    Create your first attribute to get started

    +
    +
    + +
    +
    +
    + {:else} + +
    +
    + +
    +
    +

    Create your first index to get started

    +
    +
    + +
    +
    {/if} + + +{#if selectedIndex} + +{/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts index cd7f28747d..b41da1f463 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/store.ts @@ -54,7 +54,7 @@ function createCollection() { function createDocumentListStore() { const { subscribe, set } = writable>( - browser ? JSON.parse(sessionStorage.getItem('documents')) : null + browser ? JSON.parse(sessionStorage.getItem('documentList')) : null ); return { subscribe, @@ -70,11 +70,26 @@ function createDocumentListStore() { } }; } +function createIndexListStore() { + const { subscribe, set } = writable( + browser ? JSON.parse(sessionStorage.getItem('indexList')) : null + ); + return { + subscribe, + set, + load: async (collectionId: string) => { + const response = await sdkForProject.databases.listIndexes(collectionId); + set(response); + } + }; +} export const collection = createCollection(); export const documentList = createDocumentListStore(); +export const indexList = createIndexListStore(); if (browser) { collection.subscribe((n) => sessionStorage?.setItem('collection', JSON.stringify(n ?? ''))); documentList.subscribe((n) => sessionStorage?.setItem('documentList', JSON.stringify(n ?? ''))); + indexList.subscribe((n) => sessionStorage?.setItem('indexList', JSON.stringify(n ?? ''))); } From 4ca8fbc1de20459f64eccddaf4a4ba13ab5f1e5a Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 22 Jul 2022 14:07:43 +0200 Subject: [PATCH 16/75] feat: add status pill --- .../[database]/collection/[collection]/_createIndex.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createIndex.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createIndex.svelte index 681491f0ec..a473696cc1 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createIndex.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_createIndex.svelte @@ -16,7 +16,7 @@ { value: 'fulltext', label: 'FullText' } ]; let newAttr = false; - let selectedType: string = ''; + let selectedType = ''; let attributeOptions = $collection.attributes.map((attribute: Attributes) => ({ value: attribute.key, label: attribute.key @@ -24,7 +24,7 @@ $: attributeList = []; let selectedAttribute = ''; - let selectedOrder: string = ''; + let selectedOrder = ''; onMount(() => { if (externalAttribute) { From d5ce2c84f3807480744ae4b1b0f03f0fdfef2e87 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 22 Jul 2022 14:08:12 +0200 Subject: [PATCH 17/75] fix: implic type --- .../collection/[collection]/indexes.svelte | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte index 8609ddafff..89d88083cb 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte @@ -2,6 +2,7 @@ import { page } from '$app/stores'; import { Empty, Pagination, Search, DropList, DropListItem } from '$lib/components'; import { Button } from '$lib/elements/forms'; + import { Pill } from '$lib/elements'; import { Table, TableHeader, @@ -11,7 +12,6 @@ TableCellText, TableRow } from '$lib/elements/table'; - // import Create from './_createUser.svelte'; import { Container } from '$lib/layout'; import { indexList, collection } from './store'; import { onMount } from 'svelte'; @@ -79,7 +79,18 @@ {#each $indexList.indexes as index, i} - {index.key} +
    + {index.key} + {#if index.status !== 'available'} + + {index.status} + + {/if} +
    {index.type} @@ -157,7 +168,7 @@

    Create your first attribute to get started

    - +
    From 5dd5898beed780011046ed023551b57f810c3758 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 11:48:42 +0200 Subject: [PATCH 18/75] feat: create indexOverview --- .../[collection]/_overviewIndex.svelte | 63 +++++++++++++++++++ .../collection/[collection]/indexes.svelte | 2 + 2 files changed, 65 insertions(+) create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overviewIndex.svelte diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overviewIndex.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overviewIndex.svelte new file mode 100644 index 0000000000..6159bd6c05 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_overviewIndex.svelte @@ -0,0 +1,63 @@ + + + + Overview + + + + + {#if selectedIndex?.attributes?.length} + {#each selectedIndex.attributes as attribute, i} +
  • +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
  • + {/each} + {/if} +
    +
    diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte index 89d88083cb..b8728212fa 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/indexes.svelte @@ -17,6 +17,7 @@ import { onMount } from 'svelte'; import Delete from './_deleteIndex.svelte'; import Create from './_createIndex.svelte'; + import Overview from './_overviewIndex.svelte'; import type { Models } from '@aw-labs/appwrite-console'; let showDropdown = []; @@ -194,4 +195,5 @@ {#if selectedIndex} + {/if} From dcc8ec07e2cc93757cedaf08e32c4f62c3ee37d3 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 13:23:51 +0200 Subject: [PATCH 19/75] feat: create steps component --- src/lib/components/index.ts | 2 ++ src/lib/components/step.svelte | 12 ++++++++++++ src/lib/components/steps.svelte | 3 +++ 3 files changed, 17 insertions(+) create mode 100644 src/lib/components/step.svelte create mode 100644 src/lib/components/steps.svelte diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index c04df5d37d..e9566eb3fb 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -26,3 +26,5 @@ export { default as Alert } from './alert.svelte'; export { default as Box } from './box.svelte'; export { default as Search } from './search.svelte'; export { default as Bucket } from './bucket.svelte'; +export { default as Steps } from './steps.svelte'; +export { default as Step } from './step.svelte'; diff --git a/src/lib/components/step.svelte b/src/lib/components/step.svelte new file mode 100644 index 0000000000..722169ddd0 --- /dev/null +++ b/src/lib/components/step.svelte @@ -0,0 +1,12 @@ + + +
  • + +
  • diff --git a/src/lib/components/steps.svelte b/src/lib/components/steps.svelte new file mode 100644 index 0000000000..37392948c3 --- /dev/null +++ b/src/lib/components/steps.svelte @@ -0,0 +1,3 @@ +
      + +
    From b9fd1797ed193cb699bad55a4e98d98e6e792463 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 13:24:49 +0200 Subject: [PATCH 20/75] feat: start implementin wizard component --- src/lib/layout/index.ts | 1 + src/lib/layout/wizard.svelte | 64 +++++++++++++++++++ .../collection/[collection]/index.svelte | 7 +- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/lib/layout/wizard.svelte diff --git a/src/lib/layout/index.ts b/src/lib/layout/index.ts index 43584d1bc1..d6ba706e42 100644 --- a/src/lib/layout/index.ts +++ b/src/lib/layout/index.ts @@ -6,3 +6,4 @@ export { default as Navigation } from './navigation.svelte'; export { default as Notification } from './notification.svelte'; export { default as Notifications } from './notifications.svelte'; export { default as Shell } from './shell.svelte'; +export { default as Wizard } from './wizard.svelte'; diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte new file mode 100644 index 0000000000..c9bfe453aa --- /dev/null +++ b/src/lib/layout/wizard.svelte @@ -0,0 +1,64 @@ + + + + +{#if show} +
    +
    +
    +
    + +
    +
    {title}
    + + + +
    + + +
    + +
    +
    +{/if} diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte index 1d38f86baf..fe421a4ec7 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte @@ -59,9 +59,10 @@ href={`${base}/console/${projectId}/databases/database/${databaseId}/collection/${$collection.$id}/document/${document.$id}`}> - + + {#each columns as column} From 974e68c826e850edd9d21bfbaf5c19ec4092562a Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 13:34:55 +0200 Subject: [PATCH 21/75] chore: bump css to 0.0.0-33 --- package-lock.json | 28 ++++++++++++++-------------- package.json | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4010ec2e38..31f29eaa2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.1", "dependencies": { "@aw-labs/appwrite-console": "^1.0.0-0", - "@aw-labs/icons": "0.0.0-32", - "@aw-labs/ui": "0.0.0-32", + "@aw-labs/icons": "0.0.0-33", + "@aw-labs/ui": "0.0.0-33", "echarts": "^5.3.3" }, "devDependencies": { @@ -69,14 +69,14 @@ } }, "node_modules/@aw-labs/icons": { - "version": "0.0.0-32", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-32.tgz", - "integrity": "sha512-U6r1A3XJkupV/2W0c5maULqXPJ9T5Deo7m4i9S2oWQbpOrXSESQDOP38AistjTY7lywqDeNCZK1eQgqLwm/0Kw==" + "version": "0.0.0-33", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-33.tgz", + "integrity": "sha512-H/hsLytvF06cn/m6Yr91TerC00lmi411ayBE5DMMmkWfhNIuLE5f3xrZCSPKZS6sjck/OPQo6Fsm2pU6nxIhmQ==" }, "node_modules/@aw-labs/ui": { - "version": "0.0.0-32", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-32.tgz", - "integrity": "sha512-Spmae+a66e9GRTuYWMLOpG/HGWPpQgLVxPLaqXEeqhIdW8XHxw9zWUT2TUWBKl0g3fwLzaMbRRAUIyafFap5fw==", + "version": "0.0.0-33", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-33.tgz", + "integrity": "sha512-dUEfY+xi0qM+4TiyEQnUoPHx3zmf58OrPl6oqqL+tV4q47NR7MzcKUxhfr04uhjTHBlobGcX3ZKDRQXTa77yVA==", "dependencies": { "@aw-labs/icons": "*" } @@ -8060,14 +8060,14 @@ } }, "@aw-labs/icons": { - "version": "0.0.0-32", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-32.tgz", - "integrity": "sha512-U6r1A3XJkupV/2W0c5maULqXPJ9T5Deo7m4i9S2oWQbpOrXSESQDOP38AistjTY7lywqDeNCZK1eQgqLwm/0Kw==" + "version": "0.0.0-33", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-33.tgz", + "integrity": "sha512-H/hsLytvF06cn/m6Yr91TerC00lmi411ayBE5DMMmkWfhNIuLE5f3xrZCSPKZS6sjck/OPQo6Fsm2pU6nxIhmQ==" }, "@aw-labs/ui": { - "version": "0.0.0-32", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-32.tgz", - "integrity": "sha512-Spmae+a66e9GRTuYWMLOpG/HGWPpQgLVxPLaqXEeqhIdW8XHxw9zWUT2TUWBKl0g3fwLzaMbRRAUIyafFap5fw==", + "version": "0.0.0-33", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-33.tgz", + "integrity": "sha512-dUEfY+xi0qM+4TiyEQnUoPHx3zmf58OrPl6oqqL+tV4q47NR7MzcKUxhfr04uhjTHBlobGcX3ZKDRQXTa77yVA==", "requires": { "@aw-labs/icons": "*" } diff --git a/package.json b/package.json index 25bc0da2c0..cecfc38a20 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ }, "dependencies": { "@aw-labs/appwrite-console": "^1.0.0-0", - "@aw-labs/icons": "0.0.0-32", - "@aw-labs/ui": "0.0.0-32", + "@aw-labs/icons": "0.0.0-33", + "@aw-labs/ui": "0.0.0-33", "echarts": "^5.3.3" }, "devDependencies": { From f546ceb2b81f09941651002ee2215d22515edf1e Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 15:21:36 +0200 Subject: [PATCH 22/75] feat: more wizard implementation --- src/lib/components/step.svelte | 6 ++--- src/lib/layout/wizard.svelte | 10 ++++++++ .../collection/[collection]/_create.svelte | 24 +++++++++++++++++++ .../collection/[collection]/index.svelte | 8 +++++-- 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte diff --git a/src/lib/components/step.svelte b/src/lib/components/step.svelte index 722169ddd0..07522aa8ef 100644 --- a/src/lib/components/step.svelte +++ b/src/lib/components/step.svelte @@ -1,12 +1,12 @@
  • + aria-label={` ${completed ? 'done' : current ? 'current' : ''} step`}>
  • diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index c9bfe453aa..e7b0175ebc 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -62,3 +62,13 @@
    {/if} + + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte new file mode 100644 index 0000000000..bcf9131916 --- /dev/null +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte @@ -0,0 +1,24 @@ + + + + + + {#each steps as step} + + {step.title} + + {/each} + + + test + diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte index fe421a4ec7..683239c649 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/index.svelte @@ -15,8 +15,10 @@ import { Button } from '$lib/elements/forms'; import { base } from '$app/paths'; import { onMount } from 'svelte'; + import Create from './_create.svelte'; let offset = 0; + let showCreate = false; const limit = 5; const projectId = $page.params.project; @@ -38,7 +40,7 @@

    Documents

    - @@ -83,7 +85,7 @@
    -
    @@ -97,3 +99,5 @@ {/if} + + From bf6e9a4b80d9a1146fdbc2be4485c95bc3330c1f Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 17:27:37 +0200 Subject: [PATCH 23/75] feat: dynamically show inputs --- src/lib/layout/wizard.svelte | 15 +-- .../collection/[collection]/_create.svelte | 91 ++++++++++++++++++- 2 files changed, 91 insertions(+), 15 deletions(-) diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index e7b0175ebc..a04a9376b7 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -1,14 +1,9 @@ diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte index bcf9131916..71449be9be 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte @@ -1,6 +1,17 @@ @@ -20,5 +77,37 @@ {/each} - test +
    +
    +

    Create document data

    +

    Provide document data based on attributes you created earlier.

    +
    +
    + + {#each $collection.attributes as attribute} + + {/each} + +
    + + +
    From 9cb2cf9aed012aeb2abbbd264e918ac9b73ef9ef Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 17:43:38 +0200 Subject: [PATCH 24/75] feat: add wizard media --- src/lib/layout/wizard.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index a04a9376b7..877a1f931a 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -44,6 +44,9 @@ +
    + +
    From e644a05eeb52e7532c4ae9431f41081bf7930fa9 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 17:43:59 +0200 Subject: [PATCH 25/75] feaet: start work on array attributes --- .../collection/[collection]/_create.svelte | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte index 71449be9be..d2d4bb56dc 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte @@ -85,12 +85,30 @@
    {#each $collection.attributes as attribute} - + {#if attribute.array} +
  • +
    + +
    +
    + +
    +
  • + {:else} + + {/if} {/each}
    From 0814de445507b486c3783a6d3a2376db3e50618e Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 25 Jul 2022 17:49:06 +0200 Subject: [PATCH 26/75] chore: bump to 0.0.0-34 --- package-lock.json | 28 ++++++++++++++-------------- package.json | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31f29eaa2a..41a58ff49c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.1", "dependencies": { "@aw-labs/appwrite-console": "^1.0.0-0", - "@aw-labs/icons": "0.0.0-33", - "@aw-labs/ui": "0.0.0-33", + "@aw-labs/icons": "0.0.0-34", + "@aw-labs/ui": "0.0.0-34", "echarts": "^5.3.3" }, "devDependencies": { @@ -69,14 +69,14 @@ } }, "node_modules/@aw-labs/icons": { - "version": "0.0.0-33", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-33.tgz", - "integrity": "sha512-H/hsLytvF06cn/m6Yr91TerC00lmi411ayBE5DMMmkWfhNIuLE5f3xrZCSPKZS6sjck/OPQo6Fsm2pU6nxIhmQ==" + "version": "0.0.0-34", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-34.tgz", + "integrity": "sha512-Qk3u6fR2ZWputxXY4GnskxcV7GbFXll9i/Wz2DvdWs3knXZ0kBIzUOdSZOisxZ9vqxtkUS6es3YjzXiVI5c13g==" }, "node_modules/@aw-labs/ui": { - "version": "0.0.0-33", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-33.tgz", - "integrity": "sha512-dUEfY+xi0qM+4TiyEQnUoPHx3zmf58OrPl6oqqL+tV4q47NR7MzcKUxhfr04uhjTHBlobGcX3ZKDRQXTa77yVA==", + "version": "0.0.0-34", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-34.tgz", + "integrity": "sha512-ZxM1NhEmXJCNlALgZq3bquC04TqjBDKAwxKjCVNoeSMbLbWU4eSlxJ1EakY53nSZZr7MWSL3+d50oVpHBebB/g==", "dependencies": { "@aw-labs/icons": "*" } @@ -8060,14 +8060,14 @@ } }, "@aw-labs/icons": { - "version": "0.0.0-33", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-33.tgz", - "integrity": "sha512-H/hsLytvF06cn/m6Yr91TerC00lmi411ayBE5DMMmkWfhNIuLE5f3xrZCSPKZS6sjck/OPQo6Fsm2pU6nxIhmQ==" + "version": "0.0.0-34", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-34.tgz", + "integrity": "sha512-Qk3u6fR2ZWputxXY4GnskxcV7GbFXll9i/Wz2DvdWs3knXZ0kBIzUOdSZOisxZ9vqxtkUS6es3YjzXiVI5c13g==" }, "@aw-labs/ui": { - "version": "0.0.0-33", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-33.tgz", - "integrity": "sha512-dUEfY+xi0qM+4TiyEQnUoPHx3zmf58OrPl6oqqL+tV4q47NR7MzcKUxhfr04uhjTHBlobGcX3ZKDRQXTa77yVA==", + "version": "0.0.0-34", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-34.tgz", + "integrity": "sha512-ZxM1NhEmXJCNlALgZq3bquC04TqjBDKAwxKjCVNoeSMbLbWU4eSlxJ1EakY53nSZZr7MWSL3+d50oVpHBebB/g==", "requires": { "@aw-labs/icons": "*" } diff --git a/package.json b/package.json index cecfc38a20..37103cb8bd 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ }, "dependencies": { "@aw-labs/appwrite-console": "^1.0.0-0", - "@aw-labs/icons": "0.0.0-33", - "@aw-labs/ui": "0.0.0-33", + "@aw-labs/icons": "0.0.0-34", + "@aw-labs/ui": "0.0.0-34", "echarts": "^5.3.3" }, "devDependencies": { From 7cbcb6ce38727675133386c6bcacb6a38eae8763 Mon Sep 17 00:00:00 2001 From: Arman Date: Tue, 26 Jul 2022 14:59:10 +0200 Subject: [PATCH 27/75] more work on wizard --- .../collection/[collection]/_create.svelte | 179 ++++++++++++------ .../collection/[collection]/store.ts | 17 ++ 2 files changed, 139 insertions(+), 57 deletions(-) diff --git a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte index d2d4bb56dc..117c87909b 100644 --- a/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte +++ b/src/routes/console/[project]/databases/database/[database]/collection/[collection]/_create.svelte @@ -8,10 +8,15 @@ InputText, InputEmail, InputNumber, + InputSelect, Button } from '$lib/elements/forms'; - import { collection } from './store'; + import { attributeList, type Attributes } from './store'; import { sdkForProject } from '$lib/stores/sdk'; + import { page } from '$app/stores'; + import { onMount } from 'svelte'; + + $: attributeList.load($page.params.collection); export let showCreate = false; @@ -19,37 +24,80 @@ { title: 'Create data', current: true, completed: false }, { title: 'Set permissions', current: false, completed: false } ]; - let currentStep = 0; - - const comp = (type: string) => { - switch (type) { - case 'boolean': - return InputCheckbox; - case 'email': - return InputEmail; - case 'float': - return InputNumber; - case 'integer': - return InputNumber; - - default: - return InputText; - } - }; - let newDocument = {}; let read: string[]; let write: string[]; + onMount(async () => { + console.log($attributeList); + await attributeList.load($page.params.collection); + $attributeList.attributes.forEach((attr) => { + newDocument[attr.key] = attr.default; + }); + }); + const create = async () => { - await sdkForProject.databases.createDocument( - $collection.$id, - 'unique()', - newDocument, - read, - write - ); + console.log(newDocument); + // await sdkForProject.databases.createDocument( + // $page.params.collection, + // 'unique()', + // newDocument, + // read, + // write + // ); + }; + + const comp = (attr: Attributes) => { + if (attr.array) { + if (attr.type === 'string') + switch (attr?.format) { + case 'email': + return InputEmail; + case 'enum': + return InputSelect; + + default: + return InputText; + } + else { + switch (attr?.type) { + case 'boolean': + return InputSelect; + case 'double': + return InputNumber; + case 'integer': + return InputNumber; + + default: + return InputText; + } + } + } else { + if (attr.type === 'string') + switch (attr?.format) { + case 'email': + return InputEmail; + case 'enum': + return InputSelect; + + default: + return InputText; + } + else { + switch (attr?.type) { + case 'boolean': + return InputCheckbox; + case 'double': + return InputNumber; + case 'integer': + return InputNumber; + + default: + return InputText; + } + } + } }; const nextStep = () => { @@ -60,7 +108,6 @@ }; const prevStep = () => { steps[currentStep].current = false; - currentStep--; steps[currentStep].current = true; steps[currentStep].completed = false; @@ -82,36 +129,54 @@

    Create document data

    Provide document data based on attributes you created earlier.

    -
    - - {#each $collection.attributes as attribute} - {#if attribute.array} -
  • -
    - -
    -
    - -
    -
  • - {:else} - - {/if} - {/each} -
    -
    + {#if $attributeList?.total} +
    + + {#each $attributeList.attributes as attribute} + {#if attribute?.array} +
  • +
    + { + return { value: n, label: n }; + })} + bind:value={newDocument[attribute.key]} /> +
    +
    + +
    +
  • + {:else} + { + return { value: n, label: n }; + })} /> + {/if} + {/each} +
    +
    + {/if}