257 lines
7.8 KiB
JavaScript
257 lines
7.8 KiB
JavaScript
import Vue from "vue"
|
|
import Vuex from "vuex"
|
|
import { Couchbase } from "nativescript-couchbase-plugin"
|
|
const recipesDB = new Couchbase("enrecipes")
|
|
const categoriesDB = new Couchbase("categories")
|
|
|
|
Vue.use(Vuex)
|
|
|
|
export default new Vuex.Store({
|
|
state: {
|
|
recipes: [
|
|
{
|
|
imageSrc: null,
|
|
title: "Mushroom & Spinach Risotto",
|
|
category: "Lunch",
|
|
prepTime: "00:25",
|
|
cookTime: "00:45",
|
|
portionSize: "8",
|
|
ingredients: [
|
|
{
|
|
item: "reduced-sodium chicken broth",
|
|
unit: "cup",
|
|
quantity: "5.25",
|
|
},
|
|
{ item: "sliced fresh mushrooms", unit: "cup", quantity: "2.5" },
|
|
{ item: "medium onion, finely chopped", unit: "unit", quantity: "1" },
|
|
{ item: "butter", unit: "Tbsp", quantity: "3" },
|
|
{ item: "Garlic", unit: "unit", quantity: "3" },
|
|
{
|
|
item: "white wine or reduced-sodium chicken broth",
|
|
unit: "cup",
|
|
quantity: ".75",
|
|
},
|
|
{ item: "heavy whipping cream", unit: "cup", quantity: "1" },
|
|
{ item: "uncooked arborio rice", unit: "cup", quantity: "1.75" },
|
|
{ item: "olive oil", unit: "Tbsp", quantity: "2" },
|
|
{
|
|
item: "frozen chopped spinach, thawed and squeezed dry",
|
|
unit: "cup",
|
|
quantity: "1.5",
|
|
},
|
|
{ item: "pepper", unit: "tsp", quantity: ".5" },
|
|
{ item: "Salt", unit: "tsp", quantity: ".25" },
|
|
{ item: "grated Parmesan cheese", unit: "cup", quantity: "1" },
|
|
],
|
|
instructions: [
|
|
"In a large saucepan, heat broth and keep warm. In a large skillet, saute mushrooms and onion in butter until tender. Add garlic; cook 1 minute longer. Stir in wine. Bring to a boil; cook until liquid is reduced by half. Add cream; cook and stir over medium heat until slightly thickened",
|
|
"In a large saucepan, saute rice in oil for 2-3 minutes or until rice is lightly browned. Stir in 1/2 cup hot broth. Reduce heat; cook and stir for 20 minutes or until broth is absorbed.",
|
|
"Continue adding hot broth, 1/2 cup at a time, and stirring until all the broth has been absorbed and rice is tender but firm. Add the mushroom mixture, spinach, pepper, salt and grated Parmesan cheese; cook and stir until heated through. If desired, sprinkle with parsley and shaved Parmesan cheese. Serve immediately.",
|
|
],
|
|
notes: [
|
|
"Nutrition Facts\n3/4 cup: 409 calories, 22g fat (12g saturated fat), 61mg cholesterol, 667mg sodium, 41g carbohydrate (3g sugars, 2g fiber), 11g protein.",
|
|
],
|
|
references: [
|
|
"https://www.tasteofhome.com/recipes/mushroom-spinach-risotto/",
|
|
],
|
|
isFavorite: false,
|
|
tried: true,
|
|
triedOn: "2020-10-28T18:19:06.528Z",
|
|
lastModified: "2020-10-28T06:19:06.528Z",
|
|
id: "57qm8oqxdr",
|
|
},
|
|
],
|
|
categories: [],
|
|
units: [
|
|
"unit",
|
|
"tsp",
|
|
"Tbsp",
|
|
"oz",
|
|
"cup",
|
|
"pt",
|
|
"qt",
|
|
"lb",
|
|
"gal",
|
|
"ml",
|
|
"L",
|
|
"mg",
|
|
"g",
|
|
"kg",
|
|
"mm",
|
|
"cm",
|
|
"m",
|
|
"in",
|
|
"°C",
|
|
"°F",
|
|
],
|
|
icon: {
|
|
home: "\ued99",
|
|
heart: "\ued94",
|
|
heartOutline: "\uead6",
|
|
label: "\uedaf",
|
|
cog: "\ued05",
|
|
info: "\ueda7",
|
|
menu: "\ueb2a",
|
|
search: "\uebbc",
|
|
sort: "\ueb2b",
|
|
plus: "\ueb89",
|
|
close: "\uec4e",
|
|
image: "\ueae9",
|
|
addImage: "\ueae8",
|
|
back: "\ue988",
|
|
save: "\uee48",
|
|
camera: "\uecc2",
|
|
share: "\uee50",
|
|
edit: "\uee17",
|
|
theme: "\ued09",
|
|
folder: "\ued7c",
|
|
backup: "\uee48",
|
|
restore: "\ueadc",
|
|
link: "\ueb09",
|
|
file: "\ued60",
|
|
user: "\uee8e",
|
|
trash: "\uee83",
|
|
donate: "\ued41",
|
|
trylater: "\uec96",
|
|
trylaterOutline: "\ue9bb",
|
|
note: "\uee0a",
|
|
copy: "\uea51",
|
|
plusCircle: "\ueb8a",
|
|
unchecked: "\uea16",
|
|
checked: "\uece6",
|
|
telegram: "\ue95e",
|
|
},
|
|
currentComponent: "EnRecipes",
|
|
},
|
|
mutations: {
|
|
initializeRecipes(state) {
|
|
let a = recipesDB.query({ select: [] })
|
|
a.forEach((e) => {
|
|
state.recipes.push(e)
|
|
})
|
|
},
|
|
initializeCategories(state) {
|
|
let isCategoriesStored = categoriesDB.query({ select: [] }).length
|
|
let cats
|
|
if (isCategoriesStored) {
|
|
cats = categoriesDB.getDocument("categories").categories
|
|
} else {
|
|
categoriesDB.createDocument(
|
|
{
|
|
categories: [
|
|
"Appetizers",
|
|
"BBQ",
|
|
"Beverages",
|
|
"Breads",
|
|
"Breakfast",
|
|
"Desserts",
|
|
"Dinner",
|
|
"Drinks",
|
|
"Healthy",
|
|
"Lunch",
|
|
"Main dishes",
|
|
"Meat",
|
|
"Noodles",
|
|
"Pasta",
|
|
"Poultry",
|
|
"Rice",
|
|
"Salads",
|
|
"Sauces",
|
|
"Seafood",
|
|
"Side dishes",
|
|
"Snacks",
|
|
"Soups",
|
|
"Undefined",
|
|
"Vegan",
|
|
"Vegetarian",
|
|
],
|
|
},
|
|
"categories"
|
|
)
|
|
cats = categoriesDB.getDocument("categories").categories
|
|
}
|
|
cats.forEach((e) => state.categories.push(e))
|
|
},
|
|
addRecipe(state, { id, recipe }) {
|
|
state.recipes.push(recipe)
|
|
recipesDB.createDocument(recipe, id)
|
|
},
|
|
addCategory(state, category) {
|
|
let a = state.categories.filter((e) => e === category).length
|
|
if (a == 0) {
|
|
state.categories.push(category)
|
|
state.categories.sort()
|
|
categoriesDB.updateDocument("categories", {
|
|
categories: [...state.categories],
|
|
})
|
|
}
|
|
},
|
|
overwriteRecipe(state, { index, id, recipe }) {
|
|
Object.assign(state.recipes[index], recipe)
|
|
recipesDB.updateDocument(id, recipe)
|
|
},
|
|
deleteRecipe(state, { index, id }) {
|
|
state.recipes.splice(index, 1)
|
|
recipesDB.deleteDocument(id)
|
|
},
|
|
toggleState(state, { index, id, recipe, key }) {
|
|
state.recipes[index][key] = !state.recipes[index][key]
|
|
recipesDB.updateDocument(id, recipe)
|
|
},
|
|
setCurrentComponent(state, comp) {
|
|
state.currentComponent = comp
|
|
},
|
|
renameCategory(state, { current, updated }) {
|
|
let exists = state.categories.filter((e) => e === updated).length
|
|
|
|
state.categories.splice(state.categories.indexOf(current), 1)
|
|
|
|
// update recipes with updated category
|
|
if (!exists) {
|
|
state.categories.push(updated)
|
|
state.categories.sort()
|
|
categoriesDB.updateDocument("categories", {
|
|
categories: [...state.categories],
|
|
})
|
|
}
|
|
state.recipes.forEach((e, i) => {
|
|
if (e.category == current) {
|
|
state.recipes[i].category = updated
|
|
recipesDB.inBatch(() => {
|
|
recipesDB.updateDocument(state.recipes[i].id, state.recipes[i])
|
|
})
|
|
}
|
|
})
|
|
},
|
|
},
|
|
actions: {
|
|
initializeRecipes({ commit }) {
|
|
commit("initializeRecipes")
|
|
},
|
|
initializeCategories({ commit }) {
|
|
commit("initializeCategories")
|
|
},
|
|
addRecipeAction({ commit }, recipe) {
|
|
commit("addRecipe", recipe)
|
|
},
|
|
addCategoryAction({ commit }, category) {
|
|
commit("addCategory", category)
|
|
},
|
|
overwriteRecipeAction({ commit }, updatedRecipe) {
|
|
commit("overwriteRecipe", updatedRecipe)
|
|
},
|
|
deleteRecipeAction({ commit }, recipe) {
|
|
commit("deleteRecipe", recipe)
|
|
},
|
|
toggleStateAction({ commit }, toggledRecipe) {
|
|
commit("toggleState", toggledRecipe)
|
|
},
|
|
setCurrentComponentAction({ commit }, comp) {
|
|
commit("setCurrentComponent", comp)
|
|
},
|
|
renameCategoryAction({ commit }, category) {
|
|
commit("renameCategory", category)
|
|
},
|
|
},
|
|
})
|