Index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <Layout>
  3. <!-- Mise en page -->
  4. <!-- introductions -->
  5. <div v-for="edge in $page.introductions.edges.slice().reverse()" :key="`introductions${edge.node.id}`">
  6. <VueMarkdown
  7. class="chapter-content justify"
  8. >{{edge.node.contenu}}
  9. </VueMarkdown>
  10. </div>
  11. <div class="blank-page no-folio fill-motif-cross-left" />
  12. <!-- Auteurs, titre, sous-titre -->
  13. <div class="column no-folio">
  14. <div class="fill-motif-cross-right layer-1">
  15. </div>
  16. <div class="column layer-2">
  17. <div
  18. class="bold center"
  19. v-for="auteur in $static.metadata.authors"
  20. >
  21. {{auteur}}
  22. </div>
  23. <div class="v-center grow">
  24. <h1
  25. class="main-title center highlight-white"
  26. v-html="$static.metadata.title"
  27. />
  28. <h2
  29. class="main-pre-title center highlight-white"
  30. v-html="$static.metadata.subtitle"
  31. />
  32. </div>
  33. <div class="center">
  34. <img src="/logo_popsu.png" alt="" style="width:2cm;">
  35. </div>
  36. </div>
  37. </div>
  38. <!-- Page de fond -->
  39. <div
  40. class="column image-cover image-bleed"
  41. v-bind:style='{ backgroundImage: `url()`, }'
  42. />
  43. <!-- Sommaire -->
  44. <div class="column no-folio">
  45. <div class="section-title">
  46. Sommaire
  47. </div>
  48. <div class="column justify-end table-of-content">
  49. <span
  50. v-for="edge in $page.chapitres.edges.slice().reverse()"
  51. :key="`sommaire${edge.node.id}`"
  52. >
  53. <a :href="'#chapitres'+edge.node.id">{{ edge.node.Titre }}</a>
  54. </span>
  55. </div>
  56. </div>
  57. <!-- Chapitres -->
  58. <div v-for="edge in $page.chapitres.edges.slice().reverse()" :key="`chapitre${edge.node.id}`">
  59. <h2
  60. :id="`chapitres${edge.node.id}`"
  61. class="chapter-title canbreak"
  62. >{{edge.node.Titre}}</h2>
  63. <VueMarkdown
  64. class="chapter-content justify"
  65. >{{edge.node.Contenu}}
  66. </VueMarkdown>
  67. </div>
  68. <!-- Page blanche -->
  69. <div class="blank-page no-folio" />
  70. <!-- Sections -->
  71. <div v-for="edge in $page.sections.edges.slice().reverse()" :key="`section${edge.node.id}`">
  72. <h2
  73. :id="`chapitres${edge.node.id}`"
  74. class="section-title canbreak"
  75. >{{edge.node.Titre}}</h2>
  76. <VueMarkdown
  77. class="chapter-content justify"
  78. >{{edge.node.Contenu}}
  79. </VueMarkdown>
  80. </div>
  81. </Layout>
  82. </template>
  83. <script>
  84. import { Previewer } from 'pagedjs'
  85. import VueMarkdown from 'vue-markdown'
  86. export default {
  87. components: {
  88. VueMarkdown
  89. },
  90. mounted(){
  91. this.$nextTick(()=>{
  92. let previewer = new Previewer();
  93. previewer.preview();
  94. })
  95. }
  96. }
  97. </script>
  98. <page-query>
  99. query {
  100. sections: allSections {
  101. edges {
  102. node {
  103. id
  104. Titre
  105. Contenu
  106. }
  107. }
  108. }
  109. chapitres: allChapitres {
  110. edges {
  111. node {
  112. id
  113. Titre
  114. Contenu
  115. }
  116. }
  117. }
  118. introductions: allIntroductions {
  119. edges {
  120. node {
  121. id
  122. contenu
  123. }
  124. }
  125. }
  126. }
  127. </page-query>
  128. <static-query>
  129. query {
  130. metadata {
  131. title
  132. subtitle
  133. authors
  134. }
  135. }
  136. </static-query>