mirror of https://github.com/Budibase/budibase.git
2 changed files with 50 additions and 0 deletions
@ -0,0 +1,49 @@ |
|||||
|
import { writable, get } from "svelte/store" |
||||
|
import { tables } from "./" |
||||
|
import api from "../../api" |
||||
|
|
||||
|
function createViewsStore() { |
||||
|
const { subscribe, set, update } = writable({ |
||||
|
list: [], |
||||
|
selected: null |
||||
|
}) |
||||
|
|
||||
|
return { |
||||
|
subscribe, |
||||
|
select: view => { |
||||
|
update(state => ({ |
||||
|
...state, |
||||
|
selected: view, |
||||
|
})) |
||||
|
tables.select() |
||||
|
}, |
||||
|
delete: async view => { |
||||
|
await api.delete(`/api/views/${view}`) |
||||
|
await tables.fetch() |
||||
|
}, |
||||
|
save: async view => { |
||||
|
const response = await api.post(`/api/views`, view) |
||||
|
const json = await response.json() |
||||
|
|
||||
|
const viewMeta = { |
||||
|
name: view.name, |
||||
|
...json, |
||||
|
} |
||||
|
|
||||
|
update(state => { |
||||
|
const viewTable = get(tables).list.find( |
||||
|
table => table._id === view.tableId |
||||
|
) |
||||
|
|
||||
|
if (view.originalName) delete viewTable.views[view.originalName] |
||||
|
viewTable.views[view.name] = viewMeta |
||||
|
|
||||
|
state.tables = state.tables |
||||
|
state.selectedView = viewMeta |
||||
|
return state |
||||
|
}) |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export const views = createViewsStore() |
||||
Loading…
Reference in new issue