diff --git a/src/lib/elements/forms/index.ts b/src/lib/elements/forms/index.ts index bae2ceff5..8dcb7e5aa 100644 --- a/src/lib/elements/forms/index.ts +++ b/src/lib/elements/forms/index.ts @@ -33,3 +33,4 @@ export { default as InputFilePicker } from './inputFilePicker.svelte'; export { default as Seekbar } from './Seekbar.svelte'; export { default as InputPoint } from './inputPoint.svelte'; export { default as InputLine } from './inputLine.svelte'; +export { default as InputPolygon } from './inputPolygon.svelte'; diff --git a/src/lib/elements/forms/inputLine.svelte b/src/lib/elements/forms/inputLine.svelte index a89af29b6..5fc0089e7 100644 --- a/src/lib/elements/forms/inputLine.svelte +++ b/src/lib/elements/forms/inputLine.svelte @@ -6,28 +6,29 @@ export let values: number[][]; export let nullable: boolean; - export let onAddPoint: () => void; - export let onDeletePoint: () => void = undefined; + export let disableDeletePointsCountPerLine: number = 2; + export let onAddPoint: (index: number) => void; + export let onDeletePoint: (index: number) => void = undefined; let required = true; $: required = nullable; - - $: disableDeletePoints = !values || values.length <= 2; + let disableDeletePoints = false; + $: disableDeletePoints = !values || values.length <= disableDeletePointsCountPerLine; - {#each values as value} + {#each values as value, index} + onDeletePoint={() => onDeletePoint(index)} /> {/each} - diff --git a/src/lib/elements/forms/inputPolygon.svelte b/src/lib/elements/forms/inputPolygon.svelte index 169c09d0c..e21cfb01c 100644 --- a/src/lib/elements/forms/inputPolygon.svelte +++ b/src/lib/elements/forms/inputPolygon.svelte @@ -7,9 +7,10 @@ export let values: NestedNumberArray; export let nullable; - export let onAddPoint: () => void; - export let onAddLine: () => void; - export let onDeletePoint: () => void = undefined; + export let onAddPoint: (index: number) => void; + export let onAddLine: (index: number) => void; + export let onDeletePoint: (index: number) => void = undefined; + export let disableDeletePointsCountPerLine: number = 4; let required = true; @@ -17,12 +18,17 @@ - {#each values as value} - + {#each values as value, index} + onAddPoint(index)} + nullable={required} + onDeletePoint={() => onDeletePoint(index)} + {disableDeletePointsCountPerLine} /> {/each} - diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/line.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/line.svelte index 4d1233264..b811f07c3 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/line.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/line.svelte @@ -35,19 +35,23 @@ + onDeletePoint={deleteCoordinate} + {disableDeletePoints} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/point.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/point.svelte index 663a5b2fb..503e930ed 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/point.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/point.svelte @@ -39,12 +39,13 @@ import { getDefaultSpatialData } from '../store'; import { createConservative } from '$lib/helpers/stores'; import { Selector, Typography, Layout } from '@appwrite.io/pink-svelte'; + import { onMount } from 'svelte'; const defaultData = getDefaultSpatialData('point') as number[]; export let data: Partial = { required: false, - default: defaultData + default: null }; let savedDefault = data.default; @@ -68,6 +69,10 @@ }); $: listen(data); + onMount(() => { + data.default = data.required ? null : defaultData; + }); + $: handleDefaultState($required); $: showDefaultPointDummyData = $required ? true : false; @@ -86,5 +91,5 @@ Default Optional - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/polygon.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/polygon.svelte index cde0ede51..6f3f7bbfc 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/polygon.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/polygon.svelte @@ -37,13 +37,14 @@ @@ -34,5 +36,10 @@ >optional {/if} - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/polygon.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/polygon.svelte new file mode 100644 index 000000000..216394c00 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/polygon.svelte @@ -0,0 +1,27 @@ + + + + + {label} + {#if nullable} + optional + {/if} + + +