new.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <main>
  3. <p>New :{{ file }}</p>
  4. <form @submit.prevent="" class="my-3">
  5. <input v-model="file.name" type="text" />
  6. <select v-model="file.status">
  7. <option value="PENDING">Pending</option>
  8. <option value="READY">Ready</option>
  9. <option value="DELETED">Deleted</option>
  10. <option value="ERROR">Error</option>
  11. </select>
  12. <button @click="cancelAndGoBack">Annuler</button>
  13. <button type="submit" value="Enregistrer" @click="save">Enregistrer</button>
  14. </form>
  15. </main>
  16. </template>
  17. <script setup lang="ts">
  18. import {useEntityManager} from "~/composables/data/useEntityManager";
  19. import {ref, Ref} from "@vue/reactivity";
  20. import ApiResource from "~/models/ApiResource";
  21. import {File} from "~/models/Core/File";
  22. const em = useEntityManager()
  23. //@ts-ignore
  24. let file: ApiResource = reactive(await em.newInstance(File))
  25. const save = async () => {
  26. console.log('save')
  27. //@ts-ignore
  28. await em.persist(File, file)
  29. navigateTo('/poc')
  30. }
  31. const cancelAndGoBack = async () => {
  32. await em.delete(File, file)
  33. navigateTo('/poc')
  34. }
  35. </script>
  36. <style>
  37. a {
  38. color: blue;
  39. cursor: pointer;
  40. }
  41. a:hover {
  42. text-decoration: underline;
  43. }
  44. button {
  45. border: grey solid 1px;
  46. padding: 5px;
  47. margin: 5px;
  48. cursor: pointer;
  49. }
  50. button:hover {
  51. text-decoration: underline;
  52. }
  53. button:focus {
  54. background-color: lightgrey;
  55. }
  56. form {
  57. display: flex;
  58. flex-direction: column;
  59. max-width: 500px;
  60. }
  61. </style>