iid-homework/src/store/shoppingList.ts
adb-sh d5b29bdc91
All checks were successful
continuous-integration/drone/push Build is passing
add basic functionality
2023-01-08 05:55:27 +01:00

37 lines
1016 B
TypeScript

import { defineStore } from 'pinia';
import { dummyList, users } from './dummyData';
type User = {
name: string;
};
type ShoppingItem = {
name: string;
price: number;
isBought: boolean;
user: User;
};
export const useShoppingListStore = defineStore('shoppingList', {
state() {
return {
items: dummyList as Array<ShoppingItem>,
users: users as Array<User>,
};
},
actions: {},
getters: {
openItems: state => state.items.filter(item => !item.isBought),
boughtItems: state => state.items.filter(item => !!item.isBought),
itemsByUser: state => groupItemsByUser(state.items),
openItemsByUser: state => groupItemsByUser(state.items.filter(item => !item.isBought)),
boughtItemsByUser: state => groupItemsByUser(state.items.filter(item => !!item.isBought)),
},
});
export const groupItemsByUser = items => items.reduce((groups, item) => {
if (!groups[item.user.name]) groups[item.user.name] = [];
groups[item.user.name].push(item);
return groups;
}, {});