Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 3.88 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <title>Awesome Tasks</title>
  6.     <link href="styles/app.css" rel="stylesheet">
  7.     <script id="item-template" type="text/html">
  8.       <li data-completed="_COMPLETED_" class="list-group-item">
  9.         <span onclick="toggleStatus(event)">_TEXT_</span>
  10.         <button onclick="removeItem(event)" class="close">×</button>
  11.       </li>
  12.     </script>
  13.   </head>
  14.   <body>
  15.     <h2>Awesome Tasks</h2>
  16.     <div class="panel panel-default">
  17.       <div class="panel-heading">
  18.         <input id="new-item" class="form-control" placeholder="Aggiungi task" autofocus="autofocus">
  19.         <button onclick="createNew(event)" class="btn btn-primary"><b>AGGIUNGI</b></button>
  20.       </div>
  21.       <ul id="task-list" class="list-group"></ul>
  22.       <div class="panel-footer text-center small">
  23.         <span>Show:</span>
  24.         <button onclick="filterItems()" class="filter filter-all">All</button>
  25.         <button onclick="filterItems('active')" class="filter filter-active">Active</button>
  26.         <button onclick="filterItems('completed')" class="filter filter-completed">Completed</button>
  27.         <hr>
  28.         <button onclick="clearCompleted()" class="btn btn-default btn-xs">Clear completed</button>
  29.       </div>
  30.     </div>
  31.     <script>
  32.       var loadList = function() {
  33.         if (localStorage.listItems) return JSON.parse(localStorage.listItems);
  34.  
  35.         return [
  36.           { text: 'Buy coffee',  completed: true  },
  37.           { text: 'Buy milk',    completed: false },
  38.           { text: 'Disco dance', completed: false }
  39.         ];
  40.       }
  41.  
  42.       var updateList = function(items, save) {
  43.         var listElement = document.querySelector('#task-list');
  44.         listElement.innerHTML = '';
  45.  
  46.         items.forEach(function(item) {
  47.           listElement.innerHTML += renderItem(item);
  48.         });
  49.  
  50.         if (save) localStorage.listItems = JSON.stringify(items);
  51.       }
  52.  
  53.       var renderItem = function(item) {
  54.         var template = document.querySelector('#item-template').innerHTML;
  55.  
  56.         return template
  57.           .replace('_TEXT_', item.text)
  58.           .replace('_COMPLETED_', item.completed);
  59.       }
  60.  
  61.       var createNew = function(event) {
  62.         var newItemElement = document.querySelector('#new-item');
  63.         var newItemValue = newItemElement.value.trim();
  64.  
  65.         if (!newItemValue) return;
  66.  
  67.         listItems.push({ text: newItemValue, completed: false });
  68.         newItemElement.value = '';
  69.  
  70.         updateList(listItems, true);
  71.       }
  72.  
  73.       var removeItem = function(event) {
  74.         var clickedItemText = event.target.previousElementSibling.innerHTML;
  75.  
  76.         listItems = listItems.filter(function(item) {
  77.           return clickedItemText != item.text;
  78.         });
  79.  
  80.         updateList(listItems, true);
  81.       }
  82.  
  83.       var toggleStatus = function(event) {
  84.         var clickedItemText = event.target.innerHTML;
  85.  
  86.         listItems.forEach(function(item) {
  87.           if (clickedItemText == item.text) {
  88.             item.completed = !item.completed;
  89.           }
  90.         });
  91.  
  92.         updateList(listItems, true);
  93.       }
  94.  
  95.       var filterItems = function(status) {
  96.         var itemsToShow = [];
  97.  
  98.         if (status == 'completed') {
  99.           itemsToShow = listItems.filter(function(item) {
  100.             return item.completed;
  101.           });
  102.         } else if (status == 'active') {
  103.           itemsToShow = listItems.filter(function(item) {
  104.             return !item.completed;
  105.           });
  106.         } else {
  107.           itemsToShow = listItems;
  108.         }
  109.  
  110.         updateList(itemsToShow);
  111.       }
  112.  
  113.       var clearCompleted = function() {
  114.         listItems = listItems.filter(function(item) {
  115.           return !item.completed;
  116.         });
  117.  
  118.         updateList(listItems, true);
  119.       }
  120.  
  121.       var listItems = loadList();
  122.  
  123.       updateList(listItems);
  124.     </script>
  125.   </body>
  126. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement