diff --git a/src/api/queries/Burger.gql b/src/api/queries/Burger.gql new file mode 100644 index 0000000..bec7a6e --- /dev/null +++ b/src/api/queries/Burger.gql @@ -0,0 +1,7 @@ +query Burger { + burger: burgerstatics { + id + title + poid + } +} diff --git a/src/api/queries/index.js b/src/api/queries/index.js index 1456cb4..ead562f 100644 --- a/src/api/queries/index.js +++ b/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' diff --git a/src/store/modules/pages.js b/src/store/modules/pages.js index 830b1ea..80d28ed 100644 --- a/src/store/modules/pages.js +++ b/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 } }