MapConcernements.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <script>
  2. import Granim from 'granim'
  3. // import { mapActions, mapState } from 'pinia'
  4. import { computed } from 'vue'
  5. // import LoginBlock from '@components/block/LoginBlock.vue'
  6. import MapBackground from '@components/MapBackground.vue'
  7. // import MA from '/api/ma-axios'
  8. // https://www.digitalocean.com/community/tutorials/vuejs-vue-html5-canvas
  9. export default {
  10. data() {
  11. return {
  12. canvasMap: {
  13. canvas: null,
  14. ctx: null
  15. },
  16. animateEvent: new Event('animate'),
  17. granim: null
  18. }
  19. },
  20. provide() {
  21. return {
  22. // explicitly provide a computed property
  23. canvasMap: computed(() => this.canvasMap)
  24. }
  25. },
  26. mounted() {
  27. this.canvasMap.canvas = this.$refs['canvas-map'];
  28. this.canvasMap.ctx = this.canvasMap.canvas.getContext('2d');
  29. this.canvasMap.canvas.width = this.canvasMap.canvas.parentElement.clientWidth;
  30. this.canvasMap.canvas.height = this.canvasMap.canvas.parentElement.clientHeight;
  31. this.animate()
  32. },
  33. // computed: {
  34. // },
  35. // created () {
  36. // },
  37. methods: {
  38. animate () {
  39. this.canvasMap.ctx.clearRect(0, 0, this.canvasMap.canvas.width, this.canvasMap.canvas.height)
  40. this.canvasMap.canvas.dispatchEvent(this.animateEvent)
  41. window.requestAnimationFrame(this.animate);
  42. }
  43. },
  44. beforeUpdate () {
  45. },
  46. components: {
  47. MapBackground
  48. }
  49. }
  50. </script>
  51. <template>
  52. <div id="map-backgrounds">
  53. <MapBackground />
  54. </div>
  55. <div id="map-concernements">
  56. <canvas ref="canvas-map"></canvas>
  57. <slot></slot>
  58. </div>
  59. <nav id="map-nav">
  60. <ul>
  61. <li>
  62. <a href="#terraindevie">terrain de vie</a>
  63. </li>
  64. <li>
  65. <a href="#proximite">proximité</a>
  66. </li>
  67. <li>
  68. <a href="#superposition">superposition</a>
  69. </li>
  70. <li>
  71. <a href="#puissancedagir">puissance d'agir</a>
  72. </li>
  73. <li>
  74. <a href="#action">action</a>
  75. </li>
  76. <li>
  77. <a href="#doleancer">doléancer</a>
  78. </li>
  79. </ul>
  80. </nav>
  81. </template>
  82. <style lang="css" scoped>
  83. </style>