Introduced ProfileStore

Corrected All Links to DataStore
This commit is contained in:
2024-12-21 22:33:42 +01:00
parent 813944fc23
commit b465f4a75a
64 changed files with 508 additions and 959 deletions

View File

@@ -3,6 +3,7 @@
const toast = useToast()
const supabase = useSupabaseClient()
const dataStore = useDataStore()
const profileStore = useProfileStore()
const router = useRouter()
const props = defineProps({
documentData: {
@@ -61,7 +62,7 @@ const createVendorInvoice = async () => {
.from("incominginvoices")
.insert([{
document: documentData.id,
tenant: dataStore.currentTenant
tenant: profileStore.currentTenant
}])
.select()
if(vendorInvoiceError) {

View File

@@ -12,6 +12,7 @@ const props = defineProps({
const {type, elementId} = props
const dataStore = useDataStore()
const profileStore = useProfileStore()
const tags = dataStore.getDocumentTags
const uploadModalOpen = ref(false)
@@ -19,7 +20,7 @@ const uploadInProgress = ref(false)
const fileUploadFormData = ref({
tags: ["Dokument"],
project: null,
tenant: dataStore.currentTenant
tenant: profileStore.currentTenant
})
const openModal = () => {

View File

@@ -46,6 +46,7 @@ defineShortcuts({
const router = useRouter()
const dataStore = useDataStore()
const profileStore = useProfileStore()
const dataType = dataStore.dataTypes[type]
@@ -81,7 +82,7 @@ const filteredRows = computed(() => {
} else if(useRole().checkRight(type)){
console.log("Only Righty to show Own")
console.log(tempItems)
tempItems = tempItems.filter(item => item.profiles.includes(dataStore.activeProfile.id))
tempItems = tempItems.filter(item => item.profiles.includes(profileStore.activeProfile.id))
} else {
console.log("No Right to Show")
tempItems = []

View File

@@ -4,6 +4,7 @@ const { metaSymbol } = useShortcuts()
const shortcuts = ref(false)
const dataStore = useDataStore()
const profileStore = useProfileStore()
const query = ref('')
const supabase = useSupabaseClient()
const toast = useToast()
@@ -101,12 +102,12 @@ const filteredCategories = computed(() => {
const contactRequestData = ref({
source: "helpSlideover",
tenant: dataStore.currentTenant,
tenant: profileStore.currentTenant,
message: "",
title: "",
contactName: dataStore.activeProfile.fullName,
contactTel: dataStore.activeProfile.phoneMobile || dataStore.activeProfile.phoneHome,
contactMail: dataStore.activeProfile.email,
contactName: profileStore.activeProfile.fullName,
contactTel: profileStore.activeProfile.phoneMobile || profileStore.activeProfile.phoneHome,
contactMail: profileStore.activeProfile.email,
contactType: "Hilfe",
currentPath: router.currentRoute
})
@@ -125,12 +126,12 @@ const addContactRequest = async () => {
const resetContactRequest = () => {
contactRequestData.value = {
source: "helpSlideover",
tenant: dataStore.currentTenant,
tenant: profileStore.currentTenant,
message: "",
title: "",
contactName: dataStore.activeProfile.fullName,
contactTel: dataStore.activeProfile.phoneMobile || dataStore.activeProfile.phoneHome,
contactMail: dataStore.activeProfile.email,
contactName: profileStore.activeProfile.fullName,
contactTel: profileStore.activeProfile.phoneMobile || profileStore.activeProfile.phoneHome,
contactMail: profileStore.activeProfile.email,
contactType: "Hilfe"
}
}

View File

@@ -14,7 +14,7 @@ const props = defineProps({
}
})
const { metaSymbol } = useShortcuts()
const dataStore = useDataStore()
const profileStore = useProfileStore()
const user = useSupabaseUser()
const supabase = useSupabaseClient()
const toast = useToast()
@@ -79,13 +79,13 @@ const addHistoryItemData = ref({
const addHistoryItem = async () => {
console.log(addHistoryItemData.value)
addHistoryItemData.value.createdBy = dataStore.activeProfile.id
addHistoryItemData.value.createdBy = profileStore.activeProfile.id
addHistoryItemData.value[type] = elementId
const {data,error} = await supabase
.from("historyitems")
.insert([{...addHistoryItemData.value, tenant: dataStore.currentTenant}])
.insert([{...addHistoryItemData.value, tenant: profileStore.currentTenant}])
.select()
if(error) {
@@ -100,9 +100,9 @@ const addHistoryItem = async () => {
let rawUsername = i[1]
return {
tenant: dataStore.currentTenant,
tenant: profileStore.currentTenant,
profile: profiles.find(x => x.username === rawUsername).id,
initiatingProfile: dataStore.activeProfile.id,
initiatingProfile: profileStore.activeProfile.id,
title: "Sie wurden im Logbuch erwähnt",
link: `/${type}s/show/${elementId}`,
message: addHistoryItemData.value.text
@@ -198,11 +198,11 @@ const renderText = (text) => {
:src="colorMode.value === 'light' ? '/Logo.png' : '/Logo_Dark.png' "
/>
<UAvatar
:alt="dataStore.getProfileById(item.createdBy).fullName"
:alt="profileStore.getProfileById(item.createdBy).fullName"
v-else
/>
<div>
<h3 v-if="item.createdBy">{{dataStore.getProfileById(item.createdBy) ? dataStore.getProfileById(item.createdBy).fullName : ""}}</h3>
<h3 v-if="item.createdBy">{{profileStore.getProfileById(item.createdBy) ? profileStore.getProfileById(item.createdBy).fullName : ""}}</h3>
<h3 v-else>FEDEO Bot</h3>
<span v-html="renderText(item.text)"/><br>
<span class="text-gray-500">{{dayjs(item.created_at).format("DD.MM.YY HH:mm")}}</span>

View File

@@ -1,13 +1,10 @@
<script setup>
import {useRole} from "~/composables/useRole.js";
const dataStore = useDataStore()
const profileStore = useProfileStore()
const route = useRoute()
const role = useRole()
console.log(role)
console.log(role.checkRight("projects"))
const links = computed(() => {
return [
{
@@ -26,17 +23,17 @@ const links = computed(() => {
to: "/tasks",
icon: "i-heroicons-rectangle-stack"
},
... dataStore.ownTenant.features.planningBoard ? [{
... profileStore.ownTenant.features.planningBoard ? [{
label: "Plantafel",
to: "/calendar/timeline",
icon: "i-heroicons-calendar-days"
}] : [],
... dataStore.ownTenant.features.calendar ? [{
... profileStore.ownTenant.features.calendar ? [{
label: "Kalender",
to: "/calendar/grid",
icon: "i-heroicons-calendar-days"
}] : [],
... dataStore.ownTenant.features.calendar ? [{
... profileStore.ownTenant.features.calendar ? [{
label: "Termine",
to: "/events",
icon: "i-heroicons-calendar-days"
@@ -68,7 +65,7 @@ const links = computed(() => {
}
]
},
... dataStore.ownTenant.features.contacts ? [{
... profileStore.ownTenant.features.contacts ? [{
label: "Kontakte",
defaultOpen: false,
icon: "i-heroicons-user-group",
@@ -95,12 +92,12 @@ const links = computed(() => {
defaultOpen:false,
icon: "i-heroicons-user-group",
children: [
... dataStore.ownTenant.features.timeTracking ? [{
... profileStore.ownTenant.features.timeTracking ? [{
label: "Zeiterfassung",
to: "/employees/timetracking",
icon: "i-heroicons-clock"
}] : [],
... dataStore.ownTenant.features.workingTimeTracking ? [{
... profileStore.ownTenant.features.workingTimeTracking ? [{
label: "Anwesenheiten",
to: "/workingtimes",
icon: "i-heroicons-clock"
@@ -112,7 +109,7 @@ const links = computed(() => {
},
]
},
... dataStore.ownTenant.features.accounting ? [{
... profileStore.ownTenant.features.accounting ? [{
label: "Buchhaltung",
defaultOpen: false,
icon: "i-heroicons-chart-bar-square",

View File

@@ -1,30 +1,29 @@
<script setup>
const dataStore = useDataStore()
const profileStore = useProfileStore()
const supabase = useSupabaseClient()
//const tenants = ref(dataStore.getOwnProfile ? dataStore.getOwnProfile.tenants : [])
//const tenant = ref(dataStore.currentTenant)
const selectedProfile = ref(dataStore.activeProfile.id)
const selectedProfile = ref(profileStore.activeProfile.id)
</script>
<template>
<USelectMenu
:options="dataStore.ownProfiles"
:options="profileStore.ownProfiles"
value-attribute="id"
class="w-40"
@change="dataStore.changeProfile(selectedProfile)"
@change="profileStore.changeProfile(selectedProfile)"
v-model="selectedProfile"
>
<UButton color="gray" variant="ghost" :class="[open && 'bg-gray-50 dark:bg-gray-800']" class="w-full">
<UAvatar :alt="dataStore.tenants.find(i => dataStore.getProfileById(selectedProfile).tenant === i.id).name" size="md" />
<UAvatar :alt="profileStore.tenants.find(i => profileStore.profiles.find(i => i.id === selectedProfile).tenant === i.id).name" size="md" />
<span class="truncate text-gray-900 dark:text-white font-semibold">{{dataStore.tenants.find(i => dataStore.getProfileById(selectedProfile).tenant === i.id).name}}</span>
<span class="truncate text-gray-900 dark:text-white font-semibold">{{profileStore.tenants.find(i => profileStore.profiles.find(i => i.id === selectedProfile).tenant === i.id).name}}</span>
</UButton>
<template #option="{option}">
{{dataStore.tenants.find(i => i.id === option.tenant).name}}
{{profileStore.tenants.find(i => i.id === option.tenant).name}}
</template>
</USelectMenu>
</template>

View File

@@ -1,6 +1,6 @@
<script setup>
const dataStore = useDataStore()
const profileStore = useProfileStore()
@@ -9,11 +9,11 @@ const dataStore = useDataStore()
<template>
<div class="w-1/2 mx-auto">
<p class="text-2xl mb-5 text-center">Bitte wähle dein gewünschtes Profil</p>
<div v-for="profile in dataStore.ownProfiles" class="flex justify-between my-3">
{{dataStore.tenants.find(i => i.id === profile.tenant).name}}
<div v-for="profile in profileStore.ownProfiles" class="flex justify-between my-3">
{{profileStore.tenants.find(i => i.id === profile.tenant).name}}
<UButton
variant="outline"
@click="dataStore.changeProfile(profile.id)"
@click="profileStore.changeProfile(profile.id)"
>Auswählen</UButton>
</div>
</div>

View File

@@ -1,9 +1,10 @@
<script setup lang="ts">
<script setup>
const { isHelpSlideoverOpen } = useDashboard()
const { isDashboardSearchModalOpen } = useUIState()
const { metaSymbol } = useShortcuts()
const user = useSupabaseUser()
const dataStore = useDataStore()
const profileStore = useProfileStore()
const supabase = useSupabaseClient()
const router = useRouter()
@@ -15,13 +16,13 @@ const items = computed(() => [
}], [{
label: 'Mein Profil',
icon: 'i-heroicons-user',
to: `/profiles/show/${dataStore.activeProfile.id}`
to: `/profiles/show/${profileStore.activeProfile.id}`
},{
label: 'Abmelden',
icon: 'i-heroicons-arrow-left-on-rectangle',
click: async () => {
await supabase.auth.signOut()
await dataStore.clearStore()
//await dataStore.clearStore()
await router.push('/login')
}
@@ -32,9 +33,9 @@ const items = computed(() => [
<template>
<UDropdown mode="hover" :items="items" :ui="{ width: 'w-full', item: { disabled: 'cursor-text select-text' } }" :popper="{ strategy: 'absolute', placement: 'top' }" class="w-full">
<template #default="{ open }">
<UButton color="gray" variant="ghost" class="w-full" :label="dataStore.activeProfile.fullName" :class="[open && 'bg-gray-50 dark:bg-gray-800']">
<UButton color="gray" variant="ghost" class="w-full" :label="profileStore.activeProfile.fullName" :class="[open && 'bg-gray-50 dark:bg-gray-800']">
<template #leading>
<UAvatar :alt="dataStore.activeProfile ? dataStore.activeProfile.fullName : ''" size="xs" />
<UAvatar :alt="profileStore.activeProfile ? profileStore.activeProfile.fullName : ''" size="xs" />
</template>
<template #trailing>
@@ -49,7 +50,7 @@ const items = computed(() => [
Angemeldet als
</p>
<p class="truncate font-medium text-gray-900 dark:text-white">
{{dataStore.activeProfile.email}}
{{profileStore.activeProfile.email}}
</p>
</div>
</template>

View File

@@ -6,13 +6,14 @@ dayjs.extend(customParseFormat)
const supabase = useSupabaseClient()
const dataStore = useDataStore()
const profileStore = useProfileStore()
let incomeData = ref({})
let expenseData = ref({})
const setup = async () => {
let incomeRawData = (await supabase.from("createddocuments").select().eq("tenant",dataStore.currentTenant).in('type',['invoices'])).data
let expenseRawData =(await supabase.from("incominginvoices").select().eq("tenant",dataStore.currentTenant)).data
let incomeRawData = (await supabase.from("createddocuments").select().eq("tenant",profileStore.currentTenant).in('type',['invoices'])).data
let expenseRawData =(await supabase.from("incominginvoices").select().eq("tenant",profileStore.currentTenant)).data
expenseRawData = expenseRawData.filter(i => i.date).map(i => {
let amount = 0