Home.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div class="centered-box">
  3. <div>
  4. <h2>Bienvenue sur le gestionnaire du planning bénévoles</h2>
  5. <h3>
  6. Planning existants
  7. <button
  8. class="btn icon primary small tooltiped"
  9. style="margin-left: 1rem; vertical-align: bottom"
  10. @click="$emit('newEvenement')"
  11. aria-tooltip="Creer un nouvel évenement"
  12. >
  13. <i class="material-icons">edit</i>
  14. </button>
  15. </h3>
  16. <evenement-data-table
  17. :versions="savedPlanning"
  18. @loadVersion="loadVersion"
  19. ></evenement-data-table>
  20. </div>
  21. </div>
  22. </template>
  23. <script lang="ts">
  24. import EvenementVersion from "@/models/EvenementVersion";
  25. import fetchPlanningVersions from "@/mixins/fetchPlanningVersion";
  26. import EvenementDataTable from "@/components/EvenementDataTable.vue";
  27. import { defineComponent } from "vue";
  28. import Toast from "@/utils/Toast";
  29. const API_URL = process.env.VUE_APP_API_URL;
  30. export default defineComponent({
  31. components: { EvenementDataTable },
  32. mixins: [fetchPlanningVersions],
  33. emits: ["newEvenement"],
  34. computed: {
  35. savedPlanning(): Array<EvenementVersion> {
  36. return this.$store.state.savedPlanning;
  37. },
  38. },
  39. methods: {
  40. loadVersion(version: EvenementVersion) {
  41. const toast = Toast({
  42. html: `Chargement des données du planning "${version.name}"`,
  43. displayLength: Infinity,
  44. });
  45. this.fetchPlanningVersions(`${API_URL}api/evenements/${version.uuid}`).then(() => {
  46. toast.dismiss();
  47. this.$router.push({ name: "Evenement" });
  48. Toast({
  49. html: `Planning "${version.name}" chargé`,
  50. classes: "success",
  51. displayLength: 5000,
  52. });
  53. });
  54. },
  55. },
  56. });
  57. </script>
  58. <style scoped></style>