123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- import { REST } from 'api/rest-axios'
- export default {
- namespaced: true,
- // initial state
- state: {
- // items: [],
- authors: [],
- editionslist: [],
- editionsbyuuid: {},
- editionsuuids: [],
- corpusLoaded: false,
- numTocsItem: 0
- },
- // getters
- getters: {},
- // mutations
- mutations: {
- setAuthors (state, authors) {
- state.authors = authors
- },
- setEditionslist (state, editionslist) {
- state.editionslist = editionslist
- },
- setEditionsByUUID (state, editionlist) {
- for (var i = 0; i < editionlist.length; i++) {
- for (var j = 0; j < editionlist[i].editions.content.length; j++) {
- state.editionsbyuuid[editionlist[i].editions.content[j].uuid] = editionlist[i].editions.content[j]
- state.editionsuuids.push(editionlist[i].editions.content[j].uuid)
- }
- }
- console.log('corpus editionsbyuuid', state.editionsbyuuid)
- },
- setTocs (state, tocslist) {
- // console.log('setTocs', tocslist)
- tocslist.forEach((toc, i) => {
- state.editionsbyuuid[toc.uuid].toc = Array.isArray(toc.toc) ? toc.toc : [toc.toc]
- })
- // console.log('corpus editionsbyuuid', state.editionsbyuuid)
- },
- buildFlatTocsAndFilters (state) {
- let recurseToc = (state, eduuid, a) => {
- // console.log('recurseToc', a)
- a.forEach((item, i) => {
- if (item) {
- // flatToc
- state.editionsbyuuid[eduuid].flattoc.push(item.uuid)
- state.numTocsItem++
- // filters
- let indexes = item.indexes[0]
- for (const key in indexes) {
- // loop through indexes (objects, persons, places)
- if (Object.hasOwnProperty.call(indexes, key)) {
- indexes[key].forEach(element => {
- // loop through index elements
- if (!(element.uuid in state.editionsbyuuid[eduuid].indexes[key])) {
- state.editionsbyuuid[eduuid].indexes[key][element.uuid] = element
- }
- })
- }
- }
- // recursive loop
- if (item.children && item.children.length) {
- recurseToc(state, eduuid, item.children)
- }
- }
- })
- }
- state.editionsuuids.forEach((eduuid, i) => {
- // console.log('buildFlatTocsAndFilters', i, eduuid)
- state.editionsbyuuid[eduuid].flattoc = []
- state.editionsbyuuid[eduuid].indexes = {
- objects: {},
- persons: {},
- places: {}
- }
- recurseToc(state, eduuid, state.editionsbyuuid[eduuid].toc)
- console.log('buildFlatTocsAndFilters DONE',
- eduuid,
- `places: ${Object.keys(state.editionsbyuuid[eduuid].indexes['places']).length}`,
- `objects: ${Object.keys(state.editionsbyuuid[eduuid].indexes['objects']).length}`,
- `persons: ${Object.keys(state.editionsbyuuid[eduuid].indexes['persons']).length}`,
- state.editionsbyuuid[eduuid].indexes)
- })
- console.log('numTocsItem', state.numTocsItem)
- },
- setPaginations (state, paginationslist) {
- // console.log('setPaginations', paginationslist)
- paginationslist.forEach((pagination, i) => {
- state.editionsbyuuid[pagination.uuid].pagination = pagination.pagination
- })
- // console.log('corpus editionsbyuuid', state.editionsbyuuid)
- },
- setCorpusLoaded (state) {
- console.info('corpusLoaded')
- state.corpusLoaded = true
- }
- },
- // actions
- actions: {
- getCorpuses ({ dispatch, commit, state }) {
- return new Promise((resolve, reject) => {
- // get the list of corpuses (aka authors)
- dispatch('getAuthors')
- .then(({ data }) => {
- // console.log('getCorpuses authors data', data)
- commit('setAuthors', data.content)
- dispatch('getEditionsList', data.content)
- .then((editionslist) => {
- console.log('all texts returned: editionslist', editionslist)
- commit('setEditionslist', editionslist)
- commit('setEditionsByUUID', editionslist)
- dispatch('getEditionsTocs')
- .then((tocslist) => {
- console.log('all tocs returned: tocslist', tocslist)
- commit('setTocs', tocslist)
- commit('buildFlatTocsAndFilters')
- dispatch('getEditionsPaginations')
- .then((paginationslist) => {
- console.log('all paginations returned: paginationslist', paginationslist)
- commit('setPaginations', paginationslist)
- commit('setCorpusLoaded')
- })
- })
- })
- })
- })
- },
- // async get authors
- getAuthors ({ dispatch, commit, state }) {
- return REST.get(`${window.apipath}/corpus`, {})
- // .then(({ data }) => {
- // console.log('corpus getAuthors REST: data', data)
- // commit('setAuthors', data.content)
- // })
- .catch((error) => {
- console.warn('Issue with getAuthors', error)
- Promise.reject(error)
- })
- },
- // async get editionslist
- getEditionsList ({ dispatch, commit, state }, authors) {
- return Promise.all(authors.map(function (author) {
- return REST.get(`${window.apipath}/corpus/` + author.uuid, {})
- .then(({ data }) => {
- // console.log('corpus getEditionsList REST: author, data', author, data)
- // work arround
- if (!Array.isArray(data.content)) {
- data.content = [data.content]
- }
- return {
- author: author,
- editions: data
- }
- })
- .catch((error) => {
- console.warn('Issue with getEditionsList', error)
- Promise.reject(error)
- })
- }))
- },
- // async get tocslist
- getEditionsTocs ({ dispatch, commit, state }) {
- return Promise.all(state.editionsuuids.map(function (uuid) {
- return REST.get(`${window.apipath}/texts/${uuid}/toc`, {})
- .then(({ data }) => {
- console.log('corpus getEditionsTocs REST: uuid, data', uuid, data)
- // work arround
- // if (!Array.isArray(data.content)) {
- // data.content = [data.content]
- // }
- return {
- uuid: uuid,
- toc: data.content
- }
- })
- .catch((error) => {
- console.warn('Issue with getEditionsTocs', error)
- Promise.reject(error)
- })
- }))
- },
- // async get paginationslist
- getEditionsPaginations ({ dispatch, commit, state }) {
- return Promise.all(state.editionsuuids.map(function (uuid) {
- return REST.get(`${window.apipath}/texts/${uuid}/pagination`, {})
- .then(({ data }) => {
- // console.log('corpus getEditionsPaginations REST: uuid, data', uuid, data)
- // work arround
- // if (!Array.isArray(data.content)) {
- // data.content = [data.content]
- // }
- return {
- uuid: uuid,
- pagination: data.content
- }
- })
- .catch((error) => {
- console.warn('Issue with getEditionsPaginations', error)
- Promise.reject(error)
- })
- }))
- }
- },
- methods: {
- testMethod () {
- console.log('testmethod')
- }
- }
- }
|