IndexNominum.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <MainContentLayout id="index-nominum" class="index">
  3. <template v-slot:header>
  4. <h1>Personnes</h1>
  5. <span v-if="!items.length" class="loading">Loading ...</span>
  6. </template>
  7. <ul v-if="items.length" class="item-list">
  8. <li
  9. v-for="item in items"
  10. :key="item.url"
  11. :class="{ hidden: activeLetter && item.letter !== activeLetter }"
  12. >
  13. <NominumItem :item="item" />
  14. </li>
  15. </ul>
  16. <template v-slot:nav>
  17. <div v-if="items.length" class="abc">
  18. <ul>
  19. <li :class="{ inactive: activeLetter }">
  20. <span
  21. @click.prevent="onClickLetter(null)"
  22. @keyup.enter="onClickLetter(null)"
  23. >tout</span>
  24. </li>
  25. <li
  26. v-for="l in letters" :key="l"
  27. :class="{ inactive: activeLetter && l !== activeLetter }"
  28. >
  29. <span
  30. @click.prevent="onClickLetter(l)"
  31. @keyup.enter="onClickLetter(l)"
  32. >{{ l }}</span>
  33. </li>
  34. </ul>
  35. </div>
  36. </template>
  37. </MainContentLayout>
  38. </template>
  39. <script>
  40. import { REST } from 'api/rest-axios'
  41. import MainContentLayout from '../components/Layouts/MainContentLayout'
  42. import NominumItem from '../components/Content/NominumItem'
  43. export default {
  44. name: 'IndexNominum',
  45. metaInfo: {
  46. title: 'Index Nominum'
  47. },
  48. components: {
  49. NominumItem,
  50. MainContentLayout
  51. },
  52. data: () => ({
  53. items: [],
  54. letters: [],
  55. activeLetter: null
  56. }),
  57. beforeCreate () {
  58. // items/gdpLeMaire1685T01BodyFr01.003.016
  59. // texts/gdpSauval1724
  60. REST.get(`${window.apipath}/indexNominum`, {})
  61. .then(({ data }) => {
  62. console.log('index nominum REST: data', data)
  63. if (data.content.length) {
  64. this.items = data.content.sort((a, b) => {
  65. let Aletter = a.letter.toLowerCase()
  66. let Bletter = b.letter.toLowerCase()
  67. if (Aletter < Bletter) {
  68. return -1
  69. } else if (Aletter > Bletter) {
  70. return 1
  71. } else {
  72. return 0
  73. }
  74. })
  75. }
  76. for (let i = 0; i < this.items.length; i++) {
  77. // console.log(typeof this.items[i].letter)
  78. if (this.items[i].letter !== '' && this.letters.indexOf(this.items[i].letter.toLowerCase()) === -1) {
  79. this.letters.push(this.items[i].letter.toLowerCase())
  80. }
  81. }
  82. this.letters = this.letters.sort()
  83. })
  84. .catch((error) => {
  85. console.warn('Issue with index nominum', error)
  86. Promise.reject(error)
  87. })
  88. },
  89. methods: {
  90. onClickLetter (l) {
  91. this.activeLetter = l
  92. // console.log('activeLetter', this.activeLetter)
  93. }
  94. }
  95. }
  96. </script>
  97. <style lang="scss" scoped>
  98. </style>