Debug.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div class="">
  3. <h1>Debug</h1>
  4. <p v-if="!data">Loading...</p>
  5. <div v-if="prodNoParent.length">
  6. <h2>Textes produit sans parent</h2>
  7. <p>Si jamais c'est pas volontaire, ceux-ci risquent de n'être jamais accessibles</p>
  8. <ul>
  9. <li v-for="node in prodNoParent" :key="node.id">
  10. TextProd n°{{ node.id }}
  11. <b-button
  12. variant="kit" class="btn-edit"
  13. :href="node.link" target="_blank"
  14. >
  15. Éditer
  16. </b-button>
  17. </li>
  18. </ul>
  19. </div>
  20. <div v-if="noTitles.length">
  21. <h2>Textes de référence sans titre ou sans auteur⋅ices</h2>
  22. <ul>
  23. <li v-for="node in noTitles" :key="node.id">
  24. TextRef n°{{ node.id }} (manque: {{ node.miss }})
  25. <b-button
  26. variant="kit" class="btn-edit"
  27. :href="node.link" target="_blank"
  28. >
  29. Éditer
  30. </b-button>
  31. </li>
  32. </ul>
  33. </div>
  34. <div v-if="dupps.length">
  35. <h2>Textes de référence avec enfants en doublons</h2>
  36. <p>Ceux-ci sembleraient venir du fait qu'un texte de référence ai été renseigné dans le champs Texte Produits, et automagiquement duppliqué dans le champs Création</p>
  37. <p>Il est actuellement nécessaire de supprimer les 2 références du texte (dans Textes Produits et dans Créations) car un texte de référence ne peut être défini comme un texte produit</p>
  38. <ul>
  39. <li v-for="dupp in dupps" :key="dupp.id">
  40. Textref n°{{ dupp.id }} contient les doublons suivants: {{ dupp.nodes }}
  41. <b-button
  42. variant="kit" class="btn-edit"
  43. :href="dupp.link" target="_blank"
  44. >
  45. Éditer
  46. </b-button>
  47. </li>
  48. </ul>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import DebugQuery from '@/api/queries/debug.gql'
  54. import api from '@/api'
  55. export default {
  56. name: 'Page',
  57. data () {
  58. return {
  59. data: undefined,
  60. dupps: [],
  61. noTitles: [],
  62. prodNoParent: []
  63. }
  64. },
  65. async created () {
  66. const data = (await api.query(DebugQuery)).allmapitems
  67. data.forEach((node) => {
  68. const link = `/api/node/${node.id}/edit?destination=/api/node/${node.id}`
  69. if (node.type === 'Textref') {
  70. if (node.field_creations) {
  71. const children = [...node.field_creations, ...(node.text_produits || [])]
  72. const dupps = []
  73. const uniqueChildren = new Set()
  74. children.forEach(({ id }) => {
  75. if (uniqueChildren.has(id)) {
  76. dupps.push(id)
  77. }
  78. uniqueChildren.add(id)
  79. })
  80. if (dupps.length) {
  81. this.dupps.push({ id: node.id, nodes: dupps, link })
  82. }
  83. }
  84. const miss = {
  85. titre: !node.field_titre_regular && !node.field_titre_italique,
  86. 'auteur⋅ices': !node.auteurs
  87. }
  88. if ((!node.field_titre_regular && !node.field_titre_italique) || !node.auteurs) {
  89. this.noTitles.push({ ...node, link, miss: Object.keys(miss).filter(key => miss[key]) })
  90. }
  91. }
  92. if (node.type === 'Textprod') {
  93. if (!node.text_de_depart || node.text_de_depart.length < 1) {
  94. this.prodNoParent.push({ ...node, link })
  95. }
  96. }
  97. })
  98. this.data = data
  99. }
  100. }
  101. </script>
  102. <style lang="scss" scoped>
  103. </style>