Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. const mylist = [{ desc: "Buy Milk", id: 4567 }, { desc: "Learn JS", id: 1024 }];
  2.  
  3. class Store {
  4. //JSON.stringify(value)
  5. //JSON.parse(localStorage.value)
  6. //readStore in constructor
  7. //writeStore: add Item, delete item, emptyy entire list
  8.  
  9. //check that localStorage.list is not undefined.
  10. readStore = () => null;
  11.  
  12. writeStore = list => null;
  13. }
  14.  
  15. class ToDo extends Store {
  16. constructor() {
  17. super();
  18. this.list = [];
  19. this.setUpForm();
  20. this.draw();
  21. }
  22.  
  23. draw = () => {
  24. this.listEL.innerHTML = this.mapListToMarkup();
  25. this.updateEventHandlers();
  26. };
  27.  
  28. updateEventHandlers = () => {
  29. let items = document.querySelectorAll(".item");
  30. items.forEach(item => item.addEventListener("click", this.selectItem));
  31. };
  32.  
  33. selectItem = e => {
  34. let id = Number(e.currentTarget.getAttribute("data-id"));
  35. this.list = this.list.filter(item => item.id !== id);
  36. // this.updateList();
  37. console.log(this.list)
  38. this.draw()
  39. };
  40.  
  41. mapListToMarkup = () =>
  42. this.list
  43. .map(item => `<p class="item" data-id=${item.id}>${item.desc}</p>`)
  44. .join("");
  45.  
  46. setUpForm() {
  47. //add to do items here
  48. this.listEL = document.querySelector(".list");
  49. //FORM: it listens for SUBMIT events
  50. this.formEL = document.querySelector(".todo");
  51. //Add button listens for click
  52. this.addEL = document.querySelector(".addItem");
  53. //Empty button listens for click
  54. this.emptyEL = document.querySelector(".empty");
  55.  
  56. this.formEL.addEventListener("submit", this.addItem);
  57. this.emptyEL.addEventListener("click", this.emptyForm);
  58. }
  59.  
  60. addItem = e => {
  61. //submit event
  62. e.preventDefault();
  63. // console.log(this.addEL.value);
  64. // console.log(listEL.push(this.addEL) )
  65. //create a todo object { desc:"Buy Milk", id:4567 },
  66. //Push into list TO_DO_LIST
  67. let item = { desc: this.addEL.value, id: Math.floor(Math.random() * 256) };
  68. this.list.push(item);
  69. console.log(item);
  70. console.log("My list: " + this.list);
  71. this.draw();
  72. };
  73.  
  74. //Clear list
  75.  
  76. emptyForm = () => {
  77. this.list = [];
  78. this.draw();
  79. };
  80.  
  81. //Click on an item: deletes it: Filter by ID
  82. }
  83.  
  84. let to = new ToDo();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement