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