corpus.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. import { REST } from 'api/rest-axios'
  2. export default {
  3. namespaced: true,
  4. // initial state
  5. state: {
  6. // items: [],
  7. authors: [],
  8. editionslist: [],
  9. editionsbyuuid: {},
  10. editionsuuids: [],
  11. corpusLoaded: false
  12. },
  13. // getters
  14. getters: {},
  15. // mutations
  16. mutations: {
  17. setAuthors (state, authors) {
  18. state.authors = authors
  19. },
  20. setEditionslist (state, editionslist) {
  21. state.editionslist = editionslist
  22. },
  23. setEditionsByUUID (state, editionlist) {
  24. for (var i = 0; i < editionlist.length; i++) {
  25. for (var j = 0; j < editionlist[i].editions.content.length; j++) {
  26. state.editionsbyuuid[editionlist[i].editions.content[j].uuid] = editionlist[i].editions.content[j]
  27. state.editionsuuids.push(editionlist[i].editions.content[j].uuid)
  28. }
  29. }
  30. console.log('corpus editionsbyuuid', state.editionsbyuuid)
  31. },
  32. setTocs (state, tocslist) {
  33. console.log('setTocs', tocslist)
  34. tocslist.forEach((toc, i) => {
  35. state.editionsbyuuid[toc.uuid].toc = Array.isArray(toc.toc) ? toc.toc : [toc.toc]
  36. })
  37. // console.log('corpus editionsbyuuid', state.editionsbyuuid)
  38. },
  39. buildFlatTocs (state, eeuid) {
  40. let recurseFlatToc = (state, eduuid, a) => {
  41. // console.log('recurseFlatToc', a)
  42. a.forEach((item, i) => {
  43. state.editionsbyuuid[eduuid].flattoc.push(item.uuid)
  44. if (item.children && item.children.length) {
  45. recurseFlatToc(state, eduuid, item.children)
  46. }
  47. })
  48. }
  49. state.editionsuuids.forEach((eduuid, i) => {
  50. // console.log('buildFlatTocs', i, eduuid)
  51. state.editionsbyuuid[eduuid].flattoc = []
  52. recurseFlatToc(state, eduuid, state.editionsbyuuid[eduuid].toc)
  53. console.log('buildFlatTocs DONE', eduuid, state.editionsbyuuid[eduuid].flattoc)
  54. })
  55. },
  56. setPaginations (state, paginationslist) {
  57. console.log('setPaginations', paginationslist)
  58. paginationslist.forEach((pagination, i) => {
  59. state.editionsbyuuid[pagination.uuid].pagination = pagination.pagination
  60. })
  61. // console.log('corpus editionsbyuuid', state.editionsbyuuid)
  62. },
  63. setCorpusLoaded (state) {
  64. state.corpusLoaded = true
  65. }
  66. },
  67. // actions
  68. actions: {
  69. getCorpuses ({ dispatch, commit, state }) {
  70. return new Promise((resolve, reject) => {
  71. // get the list of corpuses (aka authors)
  72. dispatch('getAuthors')
  73. .then(({ data }) => {
  74. console.log('getCorpuses authors data', data)
  75. commit('setAuthors', data.content)
  76. // get the texts list for each corpus (aka author)
  77. // let authorsUuids = []
  78. // for (let author of data.content) {
  79. // authorsUuids.push(author.uuid)
  80. // }
  81. dispatch('getEditionsList', data.content)
  82. .then((editionslist) => {
  83. console.log('all texts returned: editionslist', editionslist)
  84. commit('setEditionslist', editionslist)
  85. commit('setEditionsByUUID', editionslist)
  86. dispatch('getEditionsTocs')
  87. .then((tocslist) => {
  88. console.log('all tocs returned: tocslist', tocslist)
  89. commit('setTocs', tocslist)
  90. // this.methods.testMethod()
  91. // dispatch('buildFlatTocs')
  92. commit('buildFlatTocs')
  93. dispatch('getEditionsPaginations')
  94. .then((paginationslist) => {
  95. console.log('all paginations returned: paginationslist', paginationslist)
  96. commit('setPaginations', paginationslist)
  97. commit('setCorpusLoaded')
  98. })
  99. })
  100. })
  101. })
  102. })
  103. },
  104. // async get authors
  105. getAuthors ({ dispatch, commit, state }) {
  106. return REST.get(`${window.apipath}/corpus`, {})
  107. // .then(({ data }) => {
  108. // console.log('corpus getAuthors REST: data', data)
  109. // commit('setAuthors', data.content)
  110. // })
  111. .catch((error) => {
  112. console.warn('Issue with getAuthors', error)
  113. Promise.reject(error)
  114. })
  115. },
  116. // async get editionslist
  117. getEditionsList ({ dispatch, commit, state }, authors) {
  118. return Promise.all(authors.map(function (author) {
  119. return REST.get(`${window.apipath}/corpus/` + author.uuid, {})
  120. .then(({ data }) => {
  121. console.log('corpus getEditionsList REST: author, data', author, data)
  122. // work arround
  123. if (!Array.isArray(data.content)) {
  124. data.content = [data.content]
  125. }
  126. return {
  127. author: author,
  128. editions: data
  129. }
  130. })
  131. .catch((error) => {
  132. console.warn('Issue with getEditionsList', error)
  133. Promise.reject(error)
  134. })
  135. }))
  136. },
  137. // async get tocslist
  138. getEditionsTocs ({ dispatch, commit, state }) {
  139. return Promise.all(state.editionsuuids.map(function (uuid) {
  140. return REST.get(`${window.apipath}/texts/${uuid}/toc`, {})
  141. .then(({ data }) => {
  142. console.log('corpus getEditionsTocs REST: uuid, data', uuid, data)
  143. // work arround
  144. // if (!Array.isArray(data.content)) {
  145. // data.content = [data.content]
  146. // }
  147. return {
  148. uuid: uuid,
  149. toc: data.content
  150. }
  151. })
  152. .catch((error) => {
  153. console.warn('Issue with getEditionsTocs', error)
  154. Promise.reject(error)
  155. })
  156. }))
  157. },
  158. // async get paginationslist
  159. getEditionsPaginations ({ dispatch, commit, state }) {
  160. return Promise.all(state.editionsuuids.map(function (uuid) {
  161. return REST.get(`${window.apipath}/texts/${uuid}/pagination`, {})
  162. .then(({ data }) => {
  163. console.log('corpus getEditionsPaginations REST: uuid, data', uuid, data)
  164. // work arround
  165. // if (!Array.isArray(data.content)) {
  166. // data.content = [data.content]
  167. // }
  168. return {
  169. uuid: uuid,
  170. pagination: data.content
  171. }
  172. })
  173. .catch((error) => {
  174. console.warn('Issue with getEditionsPaginations', error)
  175. Promise.reject(error)
  176. })
  177. }))
  178. }
  179. // ,
  180. // buildFlatTocs ({ dispatch, commit, state }) {
  181. // state.editionsuuids.forEach((eduuid, i) => {
  182. // // console.log('buildFlatTocs', i, eduuid)
  183. // dispatch('recurseFlatToc', state.editionsbyuuid[eduuid].toc)
  184. // .then((ft) => {
  185. // console.log('buildFlatTocs DONE', eduuid, ft)
  186. // state.editionsbyuuid[eduuid].flattoc = ft
  187. // })
  188. // })
  189. // },
  190. // recurseFlatToc ({ dispatch, commit, state }, a) {
  191. // // console.log('recurseFlatToc', a)
  192. // let na = []
  193. // // a.forEach((item, i) => {
  194. // return Promise.all(a.map(function (item) {
  195. // console.log('item', item)
  196. // na.push(item.uuid)
  197. // if (item.children && item.children.length) {
  198. // return dispatch('recurseFlatToc', item.children)
  199. // .then((nna) => {
  200. // console.log('recurseFlatToc: na, nna', na, nna)
  201. // na.concat(nna)
  202. // })
  203. // }
  204. // // else {
  205. // // return na
  206. // // }
  207. // }))
  208. // // })
  209. // // return na
  210. // }
  211. },
  212. methods: {
  213. testMethod () {
  214. console.log('testmethod')
  215. }
  216. }
  217. }