search.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import { JSONAPI } from 'vuejs/api/json-axios'
  2. import { MA } from 'vuejs/api/ma-axios'
  3. import qs from 'querystring'
  4. export default {
  5. namespaced: true,
  6. // initial state
  7. state : {
  8. keys: "",
  9. term: "",
  10. items: [],
  11. offset: 0,
  12. limit: 15,
  13. infos: null,
  14. count: 0
  15. },
  16. // getters
  17. getters : {},
  18. // mutations
  19. mutations : {
  20. setItems (state, items) {
  21. state.items = items
  22. },
  23. resetItems(state) {
  24. state.items = []
  25. },
  26. setKeys (state, keys) {
  27. state.keys = keys
  28. },
  29. setTerm (state, term) {
  30. state.term = term
  31. },
  32. setInfos (state, infos) {
  33. state.infos = infos
  34. },
  35. setCount (state, count) {
  36. state.count = count
  37. },
  38. resetOffset(state) {
  39. state.offset = 0
  40. },
  41. incrementOffset(state) {
  42. state.offset += state.limit
  43. }
  44. },
  45. // actions
  46. actions : {
  47. newSearch({ dispatch, commit, state }) {
  48. console.log('Search newSearch');
  49. commit('resetItems')
  50. commit('resetOffset')
  51. dispatch('getResults')
  52. },
  53. getResults ({ dispatch, commit, state }) {
  54. let params = {
  55. keys: state.keys,
  56. term: state.term,
  57. offset:state.offset,
  58. limit: state.limit
  59. }
  60. // console.log('Search getResults params', params);
  61. let q = qs.stringify(params)
  62. return MA.get(`/materio_sapi/getresults?`+q)
  63. .then(({ data }) => {
  64. console.log('search MA getresults data', data)
  65. // commit('setItems', data.items)
  66. commit('setInfos', data.infos)
  67. commit('setCount', data.count)
  68. dispatch('getItems', data.items)
  69. })
  70. .catch(( error ) => {
  71. console.warn('Issue with getResults', error)
  72. Promise.reject(error)
  73. })
  74. },
  75. getItems({ dispatch, commit, state}, itemslist) {
  76. let params = {
  77. // include: 'images', // no needs to include thanks to consumers_image_styles module
  78. 'filter[uuids-groupe][group][conjunction]': 'OR'
  79. };
  80. for (var i = 0; i < itemslist.length; i++) {
  81. let uuid = itemslist[i].uuid
  82. params[`filter[${uuid}][condition][path]`] = 'id'
  83. params[`filter[${uuid}][condition][value]`] = uuid
  84. params[`filter[${uuid}][condition][operator]`] = '='
  85. params[`filter[${uuid}][condition][memberOf]`] = 'uuids-groupe'
  86. }
  87. console.log('search JSONAPI params', params);
  88. let q = qs.stringify(params)
  89. return JSONAPI.get('node/materiau?'+q)
  90. .then(({ data }) => {
  91. console.log('search getItems data', data)
  92. dispatch('parseItems', data)
  93. // commit('setItems', data.items)
  94. })
  95. .catch(( error ) => {
  96. console.warn('Issue with getItems', error)
  97. Promise.reject(error)
  98. })
  99. },
  100. parseItems({ dispatch, commit, state }, { data }) {
  101. console.log('search parseItems data', data)
  102. let items = []
  103. for (var i = 0; i < data.length; i++) {
  104. let itemsrc = data[i]
  105. let attrs = itemsrc.attributes
  106. let relations = itemsrc.relationships
  107. // get field values
  108. let item = {
  109. title: attrs.title,
  110. description: attrs.field_short_description,
  111. body: attrs.body,
  112. reference: attrs.field_reference,
  113. }
  114. // get images included values
  115. let imgsrc = relations.images.data
  116. item.images = []
  117. for (var j = 0; j < imgsrc.length; j++) {
  118. // // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array
  119. // let index = included.findIndex(p => p.id == imgsrc[j].id)
  120. // let img = included[index]
  121. item.images.push({
  122. title: imgsrc[j].meta.title,
  123. url: imgsrc[j].meta.imageDerivatives.links.card_medium.href
  124. })
  125. }
  126. items.push(item)
  127. }
  128. console.log('items', items);
  129. commit('setItems', items);
  130. }
  131. }
  132. }