1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import api from '@/api'
- import { Page, Burger } from '@/api/queries'
- export default {
- state: {
- welcome: undefined,
- intro: undefined,
- kit: undefined,
- ids: {
- welcome: 263,
- intro: 264,
- kit: 265,
- gallery: 349
- },
- pages: {},
- burger: [
- { name: 'home' },
- { name: 'introduction' }
- ],
- visited: localStorage.getItem('visited') === 'true'
- },
- mutations: {
- 'SET_PAGE' (state, { slug, page }) {
- 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)
- }
- },
- actions: {
- async 'QUERY_PAGE' ({ state, commit, dispatch, getters }, slug) {
- if (state[slug] !== undefined) return state[slug]
- return api.query(Page, { id: state.ids[slug] }).then(data => {
- dispatch('PARSE_PAGE', data.page)
- 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 => {
- dispatch('PARSE_PAGE', data.page)
- 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
- })
- },
- 'PARSE_PAGE' ({ rootState }, node) {
- if (node.notes) {
- node.notes.forEach(note => {
- if (note.links && note.links.length) {
- note.links = note.links.map(link => {
- if (!(link.id in rootState.nodes) || rootState.nodes[link.id].dataLevel < 1) {
- this.commit('ADD_NODES', [[link], -1])
- }
- return rootState.nodes[link.id]
- })
- }
- })
- }
- return node
- }
- },
- getters: {
- visited: state => state.visited,
- burger: state => state.burger
- }
- }
|