From 109ad712bf897ac9b34eb3a231b00574e5a1a59f Mon Sep 17 00:00:00 2001 From: clonbg Date: Tue, 14 Mar 2023 13:07:09 +0100 Subject: [PATCH] crear item y guardar en la lista --- src/pages/listas/indexPage.vue | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/pages/listas/indexPage.vue b/src/pages/listas/indexPage.vue index f6fb2a8..ed3114a 100644 --- a/src/pages/listas/indexPage.vue +++ b/src/pages/listas/indexPage.vue @@ -14,6 +14,7 @@ outlined v-model="producto" label="Item" + @keyup.enter="cargarProducto()" :rules="[ (val) => (val != null && val.length >= 3) || 'Mínimo 3 caracteres', ]" @@ -23,7 +24,7 @@

{{ item.nombre }}

@@ -42,13 +43,36 @@ const lista = ref(null); const items = ref(null); const producto = ref(""); +const cargarProducto = async () => { + if (producto.value.length >= 3) { + // Busca en todos, si no está crea y añade + const result = await listaStore.pb.collection("items").getFullList(); + const busqueda = result.filter( + (element) => element.nombre == producto.value + ); + if (busqueda.length == 0) { + const data = { + nombre: producto.value, + cantidad: 1, + }; + await listaStore.pb.collection("items").create(data); + lista.value.items.push(data); + await listaStore.pb + .collection("lista") + .update(lista.value.id, lista.value); + } + // Si está, comprueba que no esté en la lista y lo añade + console.log(producto.value, busqueda); + } +}; + onMounted(async () => { lista.value = await listaStore.pb .collection("lista") .getOne($router.currentRoute.value.params.id); const arrayIdItem = lista.value.items; - items.value = await listaStore.pb.collection("items").getFullList(); - items.value = items.value.filter( + const result = await listaStore.pb.collection("items").getFullList(); + items.value = result.filter( (element) => arrayIdItem.indexOf(element.id) != -1 ); });