Entite.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <script>
  2. import { mapActions, mapState } from 'pinia'
  3. import { ConcernementsStore } from '@stores/concernements'
  4. export default {
  5. props: ['concernement', 'entite', 'eid'],
  6. data() {
  7. return {
  8. }
  9. },
  10. computed: {
  11. ...mapState(ConcernementsStore,['opened_concernement',
  12. 'ct_concernement',
  13. 'ct_entite']),
  14. field_menace_maintien_label (){
  15. let str;
  16. if (this.concernement.entites_byid[this.eid].menacemaintien < 0) {
  17. str = this.ct_entite.field_menace_maintien.description.replace('/maintient', '')
  18. } else {
  19. str = this.ct_entite.field_menace_maintien.description.replace('menace/', '')
  20. }
  21. return str;
  22. },
  23. field_sources_label () {
  24. let str;
  25. if (this.concernement.entites_byid[this.eid].menacemaintien < 0) {
  26. str = this.ct_entite.field_sources.description.replace('/ ce maintien', '')
  27. } else {
  28. str = this.ct_entite.field_sources.description.replace('cette menace /', '')
  29. }
  30. return str;
  31. }
  32. },
  33. methods: {
  34. },
  35. components: {
  36. }
  37. }
  38. </script>
  39. <template>
  40. <section class="entite">
  41. <section v-if="entite.image.length" class="image">
  42. <figure>
  43. <img :src="entite.image[0].url" :alt="entite.image[0].alt"/>
  44. <figcaption>{{ entite.image[0].alt }}</figcaption>
  45. </figure>
  46. </section>
  47. <section v-if="entite.action" class="action">
  48. <label v-if="ct_entite">{{ ct_entite.field_action.description }}</label>
  49. <p>{{ entite.action }}</p>
  50. </section>
  51. <section v-if="entite.menacemaintien" class="menace-maintien">
  52. <label v-if="ct_entite">{{ field_menace_maintien_label }}</label>
  53. <p>{{ entite.menacemaintien }}</p>
  54. </section>
  55. <!-- SOURCES (experiences vecues) -->
  56. <section
  57. v-if="entite.sources.length"
  58. class="sources multiple">
  59. <!-- <h5>Experience(s) Vécue(s)</h5> -->
  60. <section
  61. v-for="(source, index) in entite.sources"
  62. :key="index"
  63. class="source">
  64. <!-- <div class="date">{{ source.date.start }}</div> -->
  65. <section v-if="source.description" class="description">
  66. <label v-if="ct_entite"> {{ field_sources_label }}</label>
  67. <div v-html="source.description"/>
  68. </section>
  69. <section
  70. v-if="source.images.length"
  71. class="images">
  72. <figure
  73. v-for="(image, j) in source.images"
  74. :key="j">
  75. <figure>
  76. <img :src="image.url" :alt="image.alt"/>
  77. <figcaption>{{ image.alt }}</figcaption>
  78. </figure>
  79. </figure>
  80. </section>
  81. <section
  82. v-if="source.videos.length"
  83. class="video multiple">
  84. <vue-plyr
  85. v-for="(video,v) in source.videos"
  86. :key="v">
  87. <div class="plyr__video-embed">
  88. <!-- TODO fix vimeo embed url -->
  89. <iframe
  90. :src="video.url"
  91. allowfullscreen
  92. ></iframe>
  93. </div>
  94. </vue-plyr>
  95. </section>
  96. <section
  97. v-if="source.audios.length"
  98. class="audio multiple">
  99. <div
  100. v-for="(audio,a) in source.audios"
  101. :key="a">
  102. <label v-if="audio.description">{{ audio.description }}</label>
  103. <label v-else>{{ audio.file.filename }}</label>
  104. <vue-plyr>
  105. <audio>
  106. <source :src="audio.file.url" :type="audio.file.filemime" />
  107. </audio>
  108. </vue-plyr>
  109. </div>
  110. </section>
  111. <section
  112. v-if="source.liens.length"
  113. class="liens multiple">
  114. <ul>
  115. <li
  116. v-for="(lien,l) in source.liens"
  117. :key="l">
  118. <a
  119. :href="lien.url">
  120. {{ lien.title }}
  121. </a>
  122. </li>
  123. </ul>
  124. </section>
  125. <section
  126. v-if="source.documents.length"
  127. class="documents multiple">
  128. <a
  129. v-for="(doc,d) in source.documents"
  130. :key="d"
  131. :href="doc.file.url">
  132. <template v-if="doc.description">{{ doc.description }}</template>
  133. <template v-else>{{ doc.file.url }}</template>
  134. </a>
  135. </section>
  136. </section>
  137. </section>
  138. </section>
  139. </template>
  140. <style lang="css">
  141. section.action p,
  142. section.menace-maintien p {
  143. white-space: pre-wrap;
  144. }
  145. </style>