pages.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import api from '@/api'
  2. import { Page, Burger } from '@/api/queries'
  3. export default {
  4. state: {
  5. welcome: undefined,
  6. intro: undefined,
  7. kit: undefined,
  8. ids: {
  9. welcome: 263,
  10. intro: 264,
  11. kit: 265,
  12. gallery: 349
  13. },
  14. pages: {},
  15. burger: [
  16. { name: 'home' },
  17. { name: 'introduction' }
  18. ],
  19. visited: localStorage.getItem('visited') === 'true'
  20. },
  21. mutations: {
  22. 'SET_PAGE' (state, { slug, page }) {
  23. state[slug] = page
  24. },
  25. 'SET_PAGE_FROM_ID' (state, { id, page }) {
  26. state.pages[id] = page
  27. },
  28. 'SET_BURGER' (state, burger) {
  29. state.burger = [...state.burger, ...burger]
  30. },
  31. 'SET_VISITED' (state, visited) {
  32. state.visited = visited
  33. localStorage.setItem('visited', visited)
  34. }
  35. },
  36. actions: {
  37. async 'QUERY_PAGE' ({ state, commit, dispatch, getters }, slug) {
  38. if (state[slug] !== undefined) return state[slug]
  39. return api.query(Page, { id: state.ids[slug] }).then(data => {
  40. dispatch('PARSE_PAGE', data.page)
  41. commit('SET_PAGE', { slug, page: data.page })
  42. return state[slug]
  43. })
  44. },
  45. async 'QUERY_PAGE_BY_ID' ({ state, commit, dispatch, getters }, id) {
  46. if (state.pages[id] !== undefined) return state.pages[id]
  47. return api.query(Page, { id }).then(data => {
  48. dispatch('PARSE_PAGE', data.page)
  49. commit('SET_PAGE_FROM_ID', { id, page: data.page })
  50. return state.pages[id]
  51. })
  52. },
  53. async 'GET_BURGER' ({ state, commit }) {
  54. if (state.burger.length > 2) return state.burger
  55. return api.query(Burger).then(data => {
  56. const burger = data.burger.sort((a, b) => {
  57. return a.poid > b.poid ? 1 : -1
  58. }).map(page => {
  59. return { name: 'pages', id: page.id, title: page.title }
  60. })
  61. commit('SET_BURGER', burger)
  62. return burger
  63. })
  64. },
  65. 'PARSE_PAGE' ({ rootState }, node) {
  66. if (node.notes) {
  67. node.notes.forEach(note => {
  68. if (note.links && note.links.length) {
  69. note.links = note.links.map(link => {
  70. if (!(link.id in rootState.nodes) || rootState.nodes[link.id].dataLevel < 1) {
  71. this.commit('ADD_NODES', [[link], -1])
  72. }
  73. return rootState.nodes[link.id]
  74. })
  75. }
  76. })
  77. }
  78. return node
  79. }
  80. },
  81. getters: {
  82. visited: state => state.visited,
  83. burger: state => state.burger
  84. }
  85. }