From 4dffff999d4025ddb593f5f44bf4ecccf577a0e5 Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Sat, 12 Sep 2020 14:10:57 -0400 Subject: basic product editing view with renaming --- iridescence/src/api/dichroism.js | 122 ++++++++++++--------- .../src/components/admin/ProductEditCard.vue | 64 +++++++++++ .../src/components/admin/ProductEditList.vue | 36 ++++++ iridescence/src/store/index.js | 11 +- iridescence/src/views/Admin.vue | 14 ++- 5 files changed, 189 insertions(+), 58 deletions(-) create mode 100644 iridescence/src/components/admin/ProductEditCard.vue create mode 100644 iridescence/src/components/admin/ProductEditList.vue (limited to 'iridescence') diff --git a/iridescence/src/api/dichroism.js b/iridescence/src/api/dichroism.js index 2bbad2b..ff64ced 100644 --- a/iridescence/src/api/dichroism.js +++ b/iridescence/src/api/dichroism.js @@ -1,58 +1,72 @@ -const _products = [ - { - id: 1, - name: "Beach Box", - quantity: 0, - cents: 1100, - imgPath: "/beach_box.jpg", - description: "This is a beach box.", - featured: false, - categories: ["Fused Glass", ["Beachy"]] - }, - { - id: 2, - name: "Wind Chime", - quantity: 0, - cents: 4500, - imgPath: "/wind-chime.jpg", - description: "Makes noise when the wind blows.", - featured: false, - categories: ["Fused Glass", ["Beachy"]] - }, - { - id: 3, - name: "Beach Box", - quantity: 5, - cents: 1100, - imgPath: "/beach_box.jpg", - description: "This is a beach box.", - featured: false, - categories: ["Stained Glass", ["Christmas"]] - }, - { - id: 4, - name: "Wind Chime", - quantity: 2, - cents: 4500, - imgPath: "/wind-chime.jpg", - description: "Makes noise when the wind blows.", - featured: false, - categories: ["Fused Glass", ["Kiln-y"]] - }, - { - id: 5, - name: "Beach Box (New!)", - quantity: 5, - cents: 1100, - imgPath: "/beach_box.jpg", - description: "This is a beach box.", - featured: true, - categories: ["Stained Glass", ["Christmas"]] +export default class Dichroism { + constructor() { + this.products = [ + { + id: 1, + name: "Beach Box", + quantity: 0, + cents: 1100, + imgPath: "/beach_box.jpg", + description: "This is a beach box.", + featured: false, + categories: ["Fused Glass", ["Beachy"]] + }, + { + id: 2, + name: "Wind Chime", + quantity: 0, + cents: 4500, + imgPath: "/wind-chime.jpg", + description: "Makes noise when the wind blows.", + featured: false, + categories: ["Fused Glass", ["Beachy"]] + }, + { + id: 3, + name: "Beach Box", + quantity: 5, + cents: 1100, + imgPath: "/beach_box.jpg", + description: "This is a beach box.", + featured: false, + categories: ["Stained Glass", ["Christmas"]] + }, + { + id: 4, + name: "Wind Chime", + quantity: 2, + cents: 4500, + imgPath: "/wind-chime.jpg", + description: "Makes noise when the wind blows.", + featured: false, + categories: ["Fused Glass", ["Kiln-y"]] + }, + { + id: 5, + name: "Beach Box (New!)", + quantity: 5, + cents: 1100, + imgPath: "/beach_box.jpg", + description: "This is a beach box.", + featured: true, + categories: ["Stained Glass", ["Christmas"]] + } + ]; } -]; -export default { getProducts() { - return _products; + return this.products; } -}; + + updateProduct(product) { + if (!product) { + return; + } + for (let i = 0; i < this.products.length; i++) { + if (product.id == this.products[i].id) { + this.products[i] = product; + return; + } + } + } +} diff --git a/iridescence/src/components/admin/ProductEditCard.vue b/iridescence/src/components/admin/ProductEditCard.vue new file mode 100644 index 0000000..db4ab77 --- /dev/null +++ b/iridescence/src/components/admin/ProductEditCard.vue @@ -0,0 +1,64 @@ + + + diff --git a/iridescence/src/components/admin/ProductEditList.vue b/iridescence/src/components/admin/ProductEditList.vue new file mode 100644 index 0000000..46016c2 --- /dev/null +++ b/iridescence/src/components/admin/ProductEditList.vue @@ -0,0 +1,36 @@ + + + diff --git a/iridescence/src/store/index.js b/iridescence/src/store/index.js index e2b40b4..5a5b5f7 100644 --- a/iridescence/src/store/index.js +++ b/iridescence/src/store/index.js @@ -4,6 +4,8 @@ import Dichroism from "@/api/dichroism.js"; Vue.use(Vuex); +let dichroismApi = new Dichroism(); + export default new Vuex.Store({ state: { searchTerm: "", @@ -30,8 +32,13 @@ export default new Vuex.Store({ } }, actions: { - refreshProducts({ commit }) { - commit("setProducts", Dichroism.getProducts()); + refreshProducts(context) { + context.commit("setProducts", []); + context.commit("setProducts", dichroismApi.getProducts()); + }, + updateProduct(context, product) { + dichroismApi.updateProduct(product); + context.dispatch("refreshProducts"); } }, modules: {} diff --git a/iridescence/src/views/Admin.vue b/iridescence/src/views/Admin.vue index 53c5417..85d6a14 100644 --- a/iridescence/src/views/Admin.vue +++ b/iridescence/src/views/Admin.vue @@ -1,10 +1,20 @@ -- cgit v1.2.3