corpus.js 7.7 KB

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