Llanyewe7

todo.js

Jul 2nd, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. var $taskInput = $("#new-task");
  4. var $addButton = $("#add");
  5. var $incompleteTasksList = $("#incomplete-tasks");
  6. var $completedTasksList = $("#completed-tasks");
  7.  
  8. var taskItem = {
  9.    
  10.     create: function() {
  11.         var name = $taskInput.val();
  12.        
  13.         if (name.length > 0) {
  14.             var task = $('<li></li>');
  15.            
  16.             task.attr('name', 'Task');
  17.             task.data('name', name);
  18.             task.data('status', 'pending');
  19.            
  20.             task.append(addElement.checkbox('taskItem.toggleStatus(this)'));
  21.             task.append(addElement.span(name));
  22.             task.append(addElement.button('Edit', 'taskItem.edit(this)').addClass("edit"));
  23.             task.append(addElement.button('Delete', 'taskItem.delete(this)').addClass("delete"));
  24.            
  25.             $incompleteTasksList.append(task);
  26.             $taskInput.val('');
  27.            
  28.         }
  29.     },
  30.    
  31.     toggleStatus: function(input) {
  32.         var task = $(input).parents('li[name="Task"]');
  33.        
  34.         if (input.checked) {
  35.             task.detach();
  36.             $completedTasksList.append(task);
  37.         } else {
  38.             task.detach();
  39.             $incompleteTasksList.append(task);
  40.         }
  41.     },
  42.    
  43.     edit: function(button) {
  44.         var task = $(button).parents('li[name="Task"]');
  45.         var span = task.children('span[name="Name"]');
  46.         var edit = task.children('button[name="Edit"]');
  47.         var save = addElement.button('Save', 'taskItem.save(this)');
  48.         var input = $('<input>');
  49.        
  50.         input.val(task.data('name'));
  51.         input.attr('name', 'Edit');
  52.        
  53.         span.replaceWith(input);
  54.         edit.replaceWith(save);
  55.     },
  56.    
  57.     save: function(button) {
  58.         var task = $(button).parents('li[name="Task"]');
  59.         var input = task.children('input[name="Edit"]');
  60.        
  61.         input.focus();
  62.         task.data('name', input.val());
  63.  
  64.         var span = addElement.span(task.data('name'));
  65.         var edit = addElement.button('Edit', 'taskItem.edit(this)');
  66.         var save = task.children('button[name="Save"]');
  67.        
  68.         input.replaceWith(span);
  69.         save.replaceWith(edit);
  70.  
  71.     },
  72.    
  73.         delete: function(button) {
  74.         var task = $(button).parents('li[name="Task"]');
  75.  
  76.         task.remove();
  77.     }
  78. };
  79.  
  80. // This object allows you to create consistent, functional HTML elements in the DOM without having to re-write code.
  81.  
  82. var addElement = {
  83.     checkbox: function(onchange) {
  84.         var checkbox = $('<input>');
  85.         checkbox.attr('type', 'checkbox');
  86.         checkbox.attr('onchange', onchange);
  87.  
  88.         return checkbox;
  89.     },
  90.  
  91.     span: function(text) {
  92.         var span = $('<span></span>');
  93.         span.attr('name', 'Name');
  94.         span.text(text);
  95.  
  96.         return span;
  97.     },
  98.  
  99.     button: function(text, onclick) {
  100.         var button = $('<button></button>');
  101.         button.attr('onclick', onclick);
  102.         button.attr('type', 'button');
  103.         button.attr('name', text);
  104.         button.text(text);
  105.  
  106.         return button;
  107.     }
  108. };
  109.  
  110. $taskInput.focus();
  111. $addButton.on("click", taskItem.create);
Advertisement
Add Comment
Please, Sign In to add comment