script.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. console.clear();
  2. var $formAddTask = $('#form-add-task'),
  3. $modalAddTask = $('#modal-window'),
  4. $taskList = $('#task-list');
  5. $removeAll = $('#remove-all');
  6. function count() { // счетчики
  7. $('#should-be-done').text( $('#to-do ul.list-group').find( $('li') ).length );
  8. $('#will-be-come-soon').text( $('#go-go ul.list-group').find( $('li') ).length );
  9. $('#already-done').text( $('#completed ul.list-group').find( $('li') ).length );
  10. }
  11. function addTask(task, id) {
  12. var $listGroup = $taskList.find('[data-status="' + task.status + '"]').find('.list-group');
  13. var $btnDelete = $('<button>').addClass('btn btn-danger btn-xs pull-right delete-task').append('<span class="glyphicon glyphicon-remove">');
  14. $('<li>').addClass('list-group-item').text(task.title).attr('data-id', id).append($btnDelete).appendTo($listGroup);
  15. count();
  16. }
  17. $formAddTask.on('submit', function(event) {
  18. event.preventDefault();
  19. var task = {
  20. title: $(this).find('[name=title]').val(),
  21. description: $(this).find('[name=description]').val(),
  22. status: '2' // 1- todo, 2 - in progress, 3 - completed
  23. };
  24. var id = new Date().getTime();
  25. localStorage.setItem(id, JSON.stringify(task)); // записать это туда
  26. addTask(task, id);
  27. $modalAddTask.modal('hide');
  28. this.reset(); // возвращает форму к виду к котором она определена в хтмл (очистка формы)
  29. })
  30. $removeAll.on('click', function(){ //кнопка удаления
  31. localStorage.clear(); //очистка локальной памяти
  32. $('.list-group-item').remove(); //удаление всех строк
  33. count();
  34. });
  35. $taskList.on('click', '.delete-task', function() { // вешаем обработчик клик на кнопку delete-task
  36. var $parent = $(this).parent(); // вызываем родителя
  37. var taskId = $parent.data('id');
  38. localStorage.removeItem(taskId); //удаление из локальной памяти элементов найденных по id
  39. $parent.remove(); // удаление родительского элемента в нашем случае это li по которому кликнули(this)
  40. count();
  41. });
  42. ;(function() { // самовызывающаяся функция которая перебирает и рисует li на странице динамически
  43. for (var key in localStorage) {
  44. var task = JSON.parse(localStorage[key]);
  45. addTask(task, key);
  46. }
  47. })();