fixed linting errors
Some checks failed
CI Simple / Test and Build (push) Failing after 3m11s
CI / Frontend Build (push) Failing after 3m25s
CI / Backend Tests (push) Failing after 3m28s
CI / Backend Build (push) Has been skipped
CI / Docker Build Test (push) Has been skipped

This commit is contained in:
Jan Felix Wiebe 2025-07-11 15:39:21 +02:00
parent 85a55111cc
commit e20ab64793
4 changed files with 58 additions and 23 deletions

View file

@ -41,7 +41,8 @@
</button> </button>
<input <input
:id="`quantity-${index}`" :id="`quantity-${index}`"
v-model.number="drink.quantity" :value="drink.quantity"
@input="updateQuantity"
type="number" type="number"
min="1" min="1"
max="99" max="99"
@ -72,7 +73,8 @@
<div class="notes-input"> <div class="notes-input">
<input <input
:id="`notes-${index}`" :id="`notes-${index}`"
v-model="drink.notes" :value="drink.notes"
@input="updateNotes"
type="text" type="text"
placeholder="Notiz (optional)" placeholder="Notiz (optional)"
class="notes-field" class="notes-field"
@ -141,6 +143,20 @@ const setQuantity = (n: number) => {
emit('update', updatedDrink) emit('update', updatedDrink)
} }
const updateQuantity = (event: Event) => {
const target = event.target as HTMLInputElement
const quantity = parseInt(target.value) || 1
const updatedDrink = { ...props.drink, quantity }
emit('update', updatedDrink)
}
const updateNotes = (event: Event) => {
const target = event.target as HTMLInputElement
const notes = target.value
const updatedDrink = { ...props.drink, notes }
emit('update', updatedDrink)
}
// Watch for changes and emit updates // Watch for changes and emit updates
watch(() => props.drink, (newDrink) => { watch(() => props.drink, (newDrink) => {
emit('update', newDrink) emit('update', newDrink)

View file

@ -1,6 +1,31 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref, computed } from 'vue' import { ref, computed } from 'vue'
import type { Order, CreateOrderRequest } from '@/types/order' import { type Order, type CreateOrderRequest } from '@/types/order'
// WebSocket message types
interface WebSocketMessage {
type: string
[key: string]: unknown
}
interface AllOrdersResponse {
type: 'all_orders'
orders: Order[]
}
interface OrderCreatedResponse {
type: 'order_created_response'
success: boolean
order?: Order
error?: string
}
interface OrderDeletedResponse {
type: 'order_deleted_response'
success: boolean
message?: string
error?: string
}
export const useOrderStore = defineStore('orders', () => { export const useOrderStore = defineStore('orders', () => {
// State // State
@ -12,7 +37,7 @@ export const useOrderStore = defineStore('orders', () => {
// Getters // Getters
const openOrders = computed(() => { const openOrders = computed(() => {
return orders.value.filter(order => { return orders.value.filter(() => {
// Hier können wir später Logik für "offene" Bestellungen hinzufügen // Hier können wir später Logik für "offene" Bestellungen hinzufügen
// Momentan zeigen wir alle Bestellungen an // Momentan zeigen wir alle Bestellungen an
return true return true
@ -42,8 +67,8 @@ export const useOrderStore = defineStore('orders', () => {
try { try {
const data = JSON.parse(event.data) const data = JSON.parse(event.data)
handleWebSocketMessage(data) handleWebSocketMessage(data)
} catch (e) { } catch {
console.error('Fehler beim Parsen der WebSocket-Nachricht:', e) // Ignoriere andere Nachrichten
} }
} }
@ -77,33 +102,33 @@ export const useOrderStore = defineStore('orders', () => {
} }
} }
const handleWebSocketMessage = (data: any) => { const handleWebSocketMessage = (data: WebSocketMessage) => {
switch (data.type) { switch (data.type) {
case 'all_orders': case 'all_orders':
setOrders(data.orders) setOrders((data as unknown as AllOrdersResponse).orders)
isLoading.value = false isLoading.value = false
break break
case 'order_created': case 'order_created':
addOrder(data.order) addOrder(data.order as Order)
break break
case 'order_updated': case 'order_updated':
updateOrder(data.order) updateOrder(data.order as Order)
break break
case 'order_deleted': case 'order_deleted':
removeOrder(data.order_id) removeOrder(data.order_id as string)
break break
case 'order_created_response': case 'order_created_response':
handleOrderCreatedResponse(data) handleOrderCreatedResponse(data as unknown as OrderCreatedResponse)
break break
case 'order_deleted_response': case 'order_deleted_response':
handleOrderDeletedResponse(data) handleOrderDeletedResponse(data as unknown as OrderDeletedResponse)
break break
default: default:
console.log('Unbekannte WebSocket-Nachricht:', data) console.log('Unbekannte WebSocket-Nachricht:', data)
} }
} }
const handleOrderCreatedResponse = (data: any) => { const handleOrderCreatedResponse = (data: OrderCreatedResponse) => {
if (data.success) { if (data.success) {
// Bestellung wurde erfolgreich erstellt // Bestellung wurde erfolgreich erstellt
console.log('Bestellung erfolgreich erstellt:', data.order) console.log('Bestellung erfolgreich erstellt:', data.order)
@ -115,7 +140,7 @@ export const useOrderStore = defineStore('orders', () => {
} }
} }
const handleOrderDeletedResponse = (data: any) => { const handleOrderDeletedResponse = (data: OrderDeletedResponse) => {
if (data.success) { if (data.success) {
// Bestellung wurde erfolgreich gelöscht // Bestellung wurde erfolgreich gelöscht
console.log('Bestellung erfolgreich gelöscht:', data.message) console.log('Bestellung erfolgreich gelöscht:', data.message)
@ -155,7 +180,7 @@ export const useOrderStore = defineStore('orders', () => {
reject(new Error(data.error || 'Unbekannter Fehler')) reject(new Error(data.error || 'Unbekannter Fehler'))
} }
} }
} catch (e) { } catch {
// Ignoriere andere Nachrichten // Ignoriere andere Nachrichten
} }
} }
@ -220,7 +245,7 @@ export const useOrderStore = defineStore('orders', () => {
reject(new Error(data.error || 'Unbekannter Fehler')) reject(new Error(data.error || 'Unbekannter Fehler'))
} }
} }
} catch (e) { } catch {
// Ignoriere andere Nachrichten // Ignoriere andere Nachrichten
} }
} }

View file

@ -75,13 +75,11 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, onMounted, onUnmounted } from 'vue' import { ref, computed, onMounted, onUnmounted } from 'vue'
import { useRouter } from 'vue-router'
import { useOrderStore } from '@/stores/orderStore' import { useOrderStore } from '@/stores/orderStore'
import { DrinkType, MateType, type Drink } from '@/types/order' import { DrinkType, MateType, type Drink } from '@/types/order'
import DrinkCard from '@/components/NewDrinkCard.vue' import DrinkCard from '@/components/NewDrinkCard.vue'
import { type Order } from '@/types/order' import { type Order } from '@/types/order'
const router = useRouter()
const orderStore = useOrderStore() const orderStore = useOrderStore()
// State // State

View file

@ -79,10 +79,6 @@ const lastUpdate = computed(() => {
}) })
// Methods // Methods
const refreshOrders = () => {
orderStore.requestAllOrders()
}
const retryConnection = () => { const retryConnection = () => {
orderStore.connectWebSocket() orderStore.connectWebSocket()
} }