Advertisement
ErolKZ

Untitled

Apr 1st, 2022
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1.  
  2. import { createItem } from '../api/data.js';
  3. import { html } from '../lib.js';
  4.  
  5. const createTemplate = (onSubmit) => html`
  6. <div class="row space-top">
  7. <div class="col-md-12">
  8. <h1>Create New Furniture</h1>
  9. <p>Please fill all fields.</p>
  10. </div>
  11. </div>
  12. <form @submit=${onSubmit}>
  13. <div class="row space-top">
  14. <div class="col-md-4">
  15. <div class="form-group">
  16. <label class="form-control-label" for="new-make">Make</label>
  17. <input class="form-control valid" id="new-make" type="text" name="make">
  18. </div>
  19. <div class="form-group has-success">
  20. <label class="form-control-label" for="new-model">Model</label>
  21. <input class="form-control" id="new-model" type="text" name="model">
  22. </div>
  23. <div class="form-group has-danger">
  24. <label class="form-control-label" for="new-year">Year</label>
  25. <input class="form-control" id="new-year" type="number" name="year">
  26. </div>
  27. <div class="form-group">
  28. <label class="form-control-label" for="new-description">Description</label>
  29. <input class="form-control" id="new-description" type="text" name="description">
  30. </div>
  31. </div>
  32. <div class="col-md-4">
  33. <div class="form-group">
  34. <label class="form-control-label" for="new-price">Price</label>
  35. <input class="form-control" id="new-price" type="number" name="price">
  36. </div>
  37. <div class="form-group">
  38. <label class="form-control-label" for="new-image">Image</label>
  39. <input class="form-control" id="new-image" type="text" name="img">
  40. </div>
  41. <div class="form-group">
  42. <label class="form-control-label" for="new-material">Material (optional)</label>
  43. <input class="form-control" id="new-material" type="text" name="material">
  44. </div>
  45. <input type="submit" class="btn btn-primary" value="Create" />
  46. </div>
  47. </div>
  48. </form>`;
  49.  
  50. export function createPage(ctx) {
  51. ctx.render(createTemplate(onSubmit));
  52.  
  53. async function onSubmit(event) {
  54. event.preventDefault();
  55. const formData = [...(new FormData(event.target)).entries()];
  56. const data = formData.reduce(((a, [k, v]) => Object.assign(a, { [k]: v })), {});
  57.  
  58. const missing = formData.filter((k, v) => k !== 'material' && v === '');
  59. if (missing.length > 0) {
  60. return alert('Please fill all mandatory fields!');
  61. }
  62.  
  63. data.year = Number(data.year);
  64. data.price = Number(data.price);
  65.  
  66. const result = await createItem(data);
  67. ctx.page.redirect('/details/' + result._id);
  68. }
  69.  
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement