92 lines
3.6 KiB
TypeScript
92 lines
3.6 KiB
TypeScript
import {defineStore} from 'pinia'
|
|
|
|
import {createClient} from '@supabase/supabase-js'
|
|
|
|
const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
|
|
|
|
|
|
// @ts-ignore
|
|
export const useDataStore = defineStore('data', {
|
|
state: () => ({
|
|
loaded: false,
|
|
customers: [] as any[],
|
|
tasks: [] as any[],
|
|
projects: [] as any[],
|
|
documents: [] as any[],
|
|
spaces: [] as any[],
|
|
units: [] as any[],
|
|
times: [] as any[],
|
|
products: [] as any[],
|
|
movements: [] as any[],
|
|
forms: [] as any[],
|
|
formSubmits: [] as any[],
|
|
contact: [] as any[]
|
|
}),
|
|
actions: {
|
|
async fetchData() {
|
|
await this.fetchCustomers()
|
|
await this.fetchTasks()
|
|
await this.fetchForms()
|
|
await this.fetchFormSubmits()
|
|
await this.fetchProducts()
|
|
await this.fetchUnits()
|
|
await this.fetchProjects()
|
|
await this.fetchDocuments()
|
|
await this.fetchMovements()
|
|
await this.fetchSpaces()
|
|
this.loaded = true
|
|
},
|
|
async fetchCustomers() {
|
|
// @ts-ignore
|
|
this.customers = (await supabase.from("customers").select().order('customerNumber', {ascending: true})).data
|
|
},
|
|
async fetchTasks() {
|
|
// @ts-ignore
|
|
this.tasks = (await supabase.from("tasks").select()).data
|
|
},
|
|
async fetchForms() {
|
|
// @ts-ignore
|
|
this.forms = (await supabase.from("forms").select()).data
|
|
},
|
|
async fetchFormSubmits() {
|
|
// @ts-ignore
|
|
this.formSubmits = (await supabase.from("formSubmits").select()).data
|
|
},
|
|
async fetchProducts() {
|
|
// @ts-ignore
|
|
this.products = (await supabase.from("products").select()).data
|
|
},
|
|
async fetchUnits() {
|
|
// @ts-ignore
|
|
this.units = (await supabase.from("units").select()).data
|
|
},
|
|
async fetchProjects() {
|
|
// @ts-ignore
|
|
this.projects = (await supabase.from("projects").select()).data
|
|
},
|
|
async fetchSpaces() {
|
|
// @ts-ignore
|
|
this.spaces = (await supabase.from("spaces").select().order('spaceNumber', {ascending: true})).data
|
|
},
|
|
async fetchMovements() {
|
|
// @ts-ignore
|
|
this.movements = (await supabase.from("movements").select()).data
|
|
},
|
|
async fetchDocuments() {
|
|
// @ts-ignore
|
|
this.documents = (await supabase.from("documents").select()).data
|
|
|
|
for(const [index,doc] of this.documents.entries()){
|
|
// @ts-ignore
|
|
this.documents[index].url = (await supabase.storage.from('documents').createSignedUrl(doc.path, 60 * 60)).data.signedUrl
|
|
}
|
|
}
|
|
},
|
|
getters: {
|
|
getOpenTasksCount: (state) => state.tasks.filter(task => task.categorie != "Erledigt").length,
|
|
movementsBySpace: (state) => (spaceId:number) => state.movements.filter(move => move.spaceId === spaceId),
|
|
getProductById: (state) => (productId:number) => state.products.find(product => product.id === productId),
|
|
getProjectById: (state) => (projectId:number) => state.projects.find(project => project.id === projectId),
|
|
getFormSubmitsWithLabelProp: (state) => (state.formSubmits.map(submit => {return{...submit, label: submit.id}}))
|
|
}
|
|
}) |