|
1 | 1 | import { derived, get, Readable, Writable, writable } from "svelte/store"
|
2 | 2 | import { DefaultColumnWidth, GutterWidth } from "../lib/constants"
|
3 |
| -import { CalculationType, FieldSchema, FieldType } from "@budibase/types" |
| 3 | +import { UIColumn } from "@budibase/types" |
4 | 4 | import { Store as StoreContext } from "."
|
5 | 5 |
|
6 | 6 | interface ColumnStore {
|
7 |
| - columns: Writable<Column[]> |
| 7 | + columns: Writable<UIColumn[]> |
8 | 8 | }
|
9 | 9 |
|
10 | 10 | interface DerivedColumnStore {
|
11 |
| - tableColumns: Readable<Column[]> |
12 |
| - displayColumn: Readable<Column | undefined> |
13 |
| - columnLookupMap: Readable<Record<string, Column>> |
14 |
| - visibleColumns: Readable<Column[]> |
15 |
| - scrollableColumns: Readable<Column[]> |
| 11 | + tableColumns: Readable<UIColumn[]> |
| 12 | + displayColumn: Readable<UIColumn | undefined> |
| 13 | + columnLookupMap: Readable<Record<string, UIColumn>> |
| 14 | + visibleColumns: Readable<UIColumn[]> |
| 15 | + scrollableColumns: Readable<UIColumn[]> |
16 | 16 | hasNonAutoColumn: Readable<boolean>
|
17 | 17 | }
|
18 | 18 |
|
19 | 19 | export type Store = ColumnStore & DerivedColumnStore
|
20 | 20 |
|
21 |
| -type Column = FieldSchema & { |
22 |
| - label: string |
23 |
| - readonly: boolean |
24 |
| - conditions: any |
25 |
| - related?: { |
26 |
| - field: string |
27 |
| - subField: string |
28 |
| - } |
29 |
| - primaryDisplay?: boolean |
30 |
| - schema?: { |
31 |
| - disabled: boolean |
32 |
| - type: FieldType |
33 |
| - readonly: boolean |
34 |
| - autocolumn: boolean |
35 |
| - } |
36 |
| - calculationType: CalculationType |
37 |
| -} |
38 |
| - |
39 | 21 | export const createStores = (): ColumnStore => {
|
40 |
| - const columns = writable<Column[]>([]) |
| 22 | + const columns = writable<UIColumn[]>([]) |
41 | 23 |
|
42 | 24 | // Enrich columns with metadata about their display position
|
43 | 25 | const enrichedColumns = derived(columns, $columns => {
|
@@ -70,7 +52,7 @@ export const deriveStores = (context: StoreContext): DerivedColumnStore => {
|
70 | 52 |
|
71 | 53 | // Derive a lookup map for all columns by name
|
72 | 54 | const columnLookupMap = derived(columns, $columns => {
|
73 |
| - let map: Record<string, Column> = {} |
| 55 | + let map: Record<string, UIColumn> = {} |
74 | 56 | $columns.forEach(column => {
|
75 | 57 | map[column.name] = column
|
76 | 58 | })
|
@@ -136,7 +118,7 @@ export const createActions = (context: StoreContext) => {
|
136 | 118 | }
|
137 | 119 |
|
138 | 120 | // Checks if a column is readonly
|
139 |
| - const isReadonly = (column: Column) => { |
| 121 | + const isReadonly = (column: UIColumn) => { |
140 | 122 | if (!column?.schema) {
|
141 | 123 | return false
|
142 | 124 | }
|
@@ -186,7 +168,7 @@ export const initialise = (context: StoreContext) => {
|
186 | 168 | .map(field => {
|
187 | 169 | const fieldSchema = $enrichedSchema[field]
|
188 | 170 | const oldColumn = $columns?.find(col => col.name === field)
|
189 |
| - const column: Column = { |
| 171 | + const column: UIColumn = { |
190 | 172 | type: fieldSchema.type,
|
191 | 173 | name: field,
|
192 | 174 | label: fieldSchema.displayName || field,
|
|
0 commit comments