new.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. //@ts-ignore
  27. await em.persist(File, file)
  28. navigateTo('/poc')
  29. }
  30. const cancelAndGoBack = async () => {
  31. await em.delete(File, file)
  32. navigateTo('/poc')
  33. }
  34. </script>
  35. <style>
  36. a {
  37. color: blue;
  38. cursor: pointer;
  39. }
  40. a:hover {
  41. text-decoration: underline;
  42. }
  43. button {
  44. border: grey solid 1px;
  45. padding: 5px;
  46. margin: 5px;
  47. cursor: pointer;
  48. }
  49. button:hover {
  50. text-decoration: underline;
  51. }
  52. button:focus {
  53. background-color: lightgrey;
  54. }
  55. form {
  56. display: flex;
  57. flex-direction: column;
  58. max-width: 500px;
  59. }
  60. </style>