Selaa lähdekoodia

add burger and static query and store logic

axolotle 2 vuotta sitten
vanhempi
commit
84c424d79b
3 muutettua tiedostoa jossa 45 lisäystä ja 3 poistoa
  1. 7 0
      src/api/queries/Burger.gql
  2. 1 0
      src/api/queries/index.js
  3. 37 3
      src/store/modules/pages.js

+ 7 - 0
src/api/queries/Burger.gql

@@ -0,0 +1,7 @@
+query Burger {
+  burger: burgerstatics {
+    id
+    title
+    poid
+  }
+}

+ 1 - 0
src/api/queries/index.js

@@ -4,3 +4,4 @@ export { default as Node } from './Node.gql'
 export { default as Nodes } from './Nodes.gql'
 export { default as NodesTrees } from './NodesTrees.gql'
 export { default as Page } from './Page.gql'
+export { default as Burger } from './Burger.gql'

+ 37 - 3
src/store/modules/pages.js

@@ -1,6 +1,5 @@
 import api from '@/api'
-import { Page } from '@/api/queries'
-
+import { Page, Burger } from '@/api/queries'
 
 export default {
   state: {
@@ -13,6 +12,11 @@ export default {
       kit: 265,
       gallery: 349
     },
+    pages: {},
+    burger: [
+      { name: 'home' },
+      { name: 'introduction' }
+    ],
     visited: localStorage.getItem('visited') === 'true'
   },
 
@@ -21,6 +25,14 @@ export default {
       state[slug] = page
     },
 
+    'SET_PAGE_FROM_ID' (state, { id, page }) {
+      state.pages[id] = page
+    },
+
+    'SET_BURGER' (state, burger) {
+      state.burger = [...state.burger, ...burger]
+    },
+
     'SET_VISITED' (state, visited) {
       state.visited = visited
       localStorage.setItem('visited', visited)
@@ -34,10 +46,32 @@ export default {
         commit('SET_PAGE', { slug, page: data.page })
         return state[slug]
       })
+    },
+
+    async 'QUERY_PAGE_BY_ID' ({ state, commit, dispatch, getters }, id) {
+      if (state.pages[id] !== undefined) return state.pages[id]
+      return api.query(Page, { id }).then(data => {
+        commit('SET_PAGE_FROM_ID', { id, page: data.page })
+        return state.pages[id]
+      })
+    },
+
+    async 'GET_BURGER' ({ state, commit }) {
+      if (state.burger.length > 2) return state.burger
+      return api.query(Burger).then(data => {
+        const burger = data.burger.sort((a, b) => {
+          return a.poid > b.poid ? 1 : -1
+        }).map(page => {
+          return { name: 'pages', id: page.id, title: page.title }
+        })
+        commit('SET_BURGER', burger)
+        return burger
+      })
     }
   },
 
   getters: {
-    visited: state => state.visited
+    visited: state => state.visited,
+    burger: state => state.burger
   }
 }