corpus.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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 = toc.toc
  36. })
  37. // console.log('corpus editionsbyuuid', state.editionsbyuuid)
  38. },
  39. setPaginations (state, paginationslist) {
  40. console.log('setPaginations', paginationslist)
  41. paginationslist.forEach((pagination, i) => {
  42. state.editionsbyuuid[pagination.uuid].pagination = pagination.pagination
  43. })
  44. // console.log('corpus editionsbyuuid', state.editionsbyuuid)
  45. },
  46. setCorpusLoaded (state) {
  47. state.corpusLoaded = true
  48. }
  49. },
  50. // actions
  51. actions: {
  52. getCorpuses ({ dispatch, commit, state }) {
  53. return new Promise((resolve, reject) => {
  54. // get the list of corpuses (aka authors)
  55. dispatch('getAuthors')
  56. .then(({ data }) => {
  57. console.log('getCorpuses authors data', data)
  58. commit('setAuthors', data.content)
  59. // get the texts list for each corpus (aka author)
  60. // let authorsUuids = []
  61. // for (let author of data.content) {
  62. // authorsUuids.push(author.uuid)
  63. // }
  64. dispatch('getEditionsList', data.content)
  65. .then((editionslist) => {
  66. console.log('all texts returned: editionslist', editionslist)
  67. commit('setEditionslist', editionslist)
  68. commit('setEditionsByUUID', editionslist)
  69. dispatch('getEditionsTocs')
  70. .then((tocslist) => {
  71. console.log('all tocs returned: tocslist', tocslist)
  72. commit('setTocs', tocslist)
  73. dispatch('getEditionsPaginations')
  74. .then((paginationslist) => {
  75. console.log('all paginations returned: paginationslist', paginationslist)
  76. commit('setPaginations', paginationslist)
  77. commit('setCorpusLoaded')
  78. })
  79. })
  80. })
  81. })
  82. })
  83. },
  84. // get authors
  85. getAuthors ({ dispatch, commit, state }) {
  86. return REST.get(`${window.apipath}/corpus`, {})
  87. // .then(({ data }) => {
  88. // console.log('corpus getAuthors REST: data', data)
  89. // commit('setAuthors', data.content)
  90. // })
  91. .catch((error) => {
  92. console.warn('Issue with getAuthors', error)
  93. Promise.reject(error)
  94. })
  95. },
  96. // get editionslist
  97. getEditionsList ({ dispatch, commit, state }, authors) {
  98. return Promise.all(authors.map(function (author) {
  99. return REST.get(`${window.apipath}/corpus/` + author.uuid, {})
  100. .then(({ data }) => {
  101. console.log('corpus getEditionsList REST: author, data', author, data)
  102. // work arround
  103. if (!Array.isArray(data.content)) {
  104. data.content = [data.content]
  105. }
  106. return {
  107. author: author,
  108. editions: data
  109. }
  110. })
  111. .catch((error) => {
  112. console.warn('Issue with getEditionsList', error)
  113. Promise.reject(error)
  114. })
  115. }))
  116. },
  117. // get tocslist
  118. getEditionsTocs ({ dispatch, commit, state }) {
  119. return Promise.all(state.editionsuuids.map(function (uuid) {
  120. return REST.get(`${window.apipath}/texts/${uuid}/toc`, {})
  121. .then(({ data }) => {
  122. console.log('corpus getEditionsTocs REST: uuid, data', uuid, data)
  123. // work arround
  124. // if (!Array.isArray(data.content)) {
  125. // data.content = [data.content]
  126. // }
  127. return {
  128. uuid: uuid,
  129. toc: data.content
  130. }
  131. })
  132. .catch((error) => {
  133. console.warn('Issue with getEditionsTocs', error)
  134. Promise.reject(error)
  135. })
  136. }))
  137. },
  138. // get tocslist
  139. getEditionsPaginations ({ dispatch, commit, state }) {
  140. return Promise.all(state.editionsuuids.map(function (uuid) {
  141. return REST.get(`${window.apipath}/texts/${uuid}/pagination`, {})
  142. .then(({ data }) => {
  143. console.log('corpus getEditionsPaginations REST: uuid, data', uuid, data)
  144. // work arround
  145. // if (!Array.isArray(data.content)) {
  146. // data.content = [data.content]
  147. // }
  148. return {
  149. uuid: uuid,
  150. pagination: data.content
  151. }
  152. })
  153. .catch((error) => {
  154. console.warn('Issue with getEditionsPaginations', error)
  155. Promise.reject(error)
  156. })
  157. }))
  158. }
  159. }
  160. }