Advertisement
collinsanele

To-do app

Sep 12th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1">
  6.     <title>CA To-do</title>
  7.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css">
  8.     <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
  9.     <style>
  10.       #completed{
  11.         display:none;
  12.       }
  13.      
  14.       .card{
  15.         overflow:auto;
  16.       }
  17.       #color{
  18.         color:#1b03a3;
  19.       }
  20.       table{
  21.          margin-left:auto;
  22.          margin-right:auto;
  23.       }
  24.         td{
  25.       text-align: center;
  26.       vertical-align: middle;
  27.       }
  28.       #completed{
  29.         overflow:auto;
  30.       }
  31.     </style>
  32.   </head>
  33.   <body>
  34.   <section class="section">
  35.     <div class="container has-text-centered">
  36.       <h1 class="title">
  37.         <span id="color"> CA Todo-App</span>
  38.       </h1>
  39.       <div class="field">
  40.         <div class="tabs is-centered">
  41.         <ul>
  42.         <li id="one" onclick="showCompleted()"><a>Completed Tasks</a></li>
  43.         <li id="two" onclick="showSheduled()" class="is-active"><a>Scheduled Tasks</a></li>
  44.         </ul>
  45.         </div>
  46.       </div><!--End field-->
  47.       <div class="notification">
  48.         <div class="field">
  49.           <label class="label">
  50.             Task Name:
  51.           </label>
  52.         </div><!--End field-->
  53.         <div class="field">
  54.           <div class="control">
  55.             <input id="tn" class="input">
  56.           </div><!--End control-->
  57.         </div>
  58.         <div class="field">
  59.           <label class="label">
  60.             Task Description:
  61.           </label>
  62.         </div><!-- End field-->
  63.         <div class="field">
  64.           <div class="control">
  65.             <textarea id="td" class="textarea"></textarea>
  66.           </div>
  67.         </div><!--End field-->
  68.         <div class="field">
  69.           <button onclick="add()" class="button is-success">ADD</button>
  70.         </div><!--End field-->
  71.       </div><!--End notification-->
  72.       <div id="show">
  73.       </div>
  74.       <div id="completed" class="has-text-centered">
  75.         <table class="table is-bordered is-narrow is-small is-centered">
  76.           <thead>
  77.             <tr>
  78.               <th>Task Name</th>
  79.               <th>Task Description</th>
  80.               <th>Time Completed</th>
  81.               <th>Remove Task</th>
  82.             </tr>
  83.           </thead>
  84.           <tbody id="body">
  85.           </tbody>
  86.         </table>
  87.       </div>
  88.     </div><!--End of container-->
  89.   </section>
  90.  
  91.  
  92.  
  93.   <script>
  94.     let tn = document.getElementById('tn');
  95.     let td = document.getElementById('td');
  96.     let flag = true;
  97.     let time = new Date();
  98.    
  99.    
  100.     function remove2(name){
  101.       let result = localStorage.getItem('completed');
  102.       result = JSON.parse(result);
  103.       for (let i=0; i<result.length; i++){
  104.         if (result[i].taskName === name){
  105.            let target = result.indexOf(result[i])
  106.            result.splice(target, 1);
  107.            localStorage.setItem('completed', JSON.stringify(result));
  108.         }
  109.       }
  110.       showCompleted();
  111.     }
  112.    
  113.    
  114.    
  115.    function completed(name, desc){
  116.      let time = new Date();
  117.      let oldstorage = localStorage.getItem('todo');
  118.      oldstorage = JSON.parse(oldstorage);
  119.      for (let i=0; i<oldstorage.length;i++){
  120.        if (oldstorage[i].todoName===name){
  121.          //let array = [];
  122.          let newstorage = localStorage.getItem('completed');
  123.          if (!newstorage){
  124.            let array = [];
  125.            let history = {"taskName":name, "taskCompleted":desc, "time": time}
  126.            array.push(history);
  127.            localStorage.setItem('completed', JSON.stringify(array));
  128.          }
  129.          else{
  130.             let array = localStorage.getItem('completed');
  131.             array = JSON.parse(array);
  132.            let history = {"taskName":name, "taskCompleted":desc, "time": time};
  133.            array.push(history);
  134.            localStorage.setItem('completed', JSON.stringify(array));
  135.          }
  136.        }
  137.      }
  138.      remove(name);
  139.    }
  140.    
  141.    
  142.    function showSheduled(){
  143.       document.getElementById("two").className = 'is-active';
  144.       document.getElementById("one").className = "";
  145.       document.getElementById('completed').style.display = 'none';
  146.       document.getElementById('show').style.display = 'block';
  147.       document.documentElement.scrollTop = document.body.scrollTop = 300;
  148.    }
  149.    
  150.    
  151.    
  152.    function showCompleted(){
  153.      document.getElementById("one").className = "is-active";
  154.      document.getElementById("two").className = "";
  155.      document.getElementById('show').style.display = 'none';
  156.      document.getElementById('completed').style.display = 'block';
  157.      
  158.      let result = localStorage.getItem('completed');
  159.      result = JSON.parse(result);
  160.      result = result.reverse();
  161.      let container = "<div>";
  162.      for (let i=0; i<result.length; i++){
  163.      let content = `<tr>
  164.      <td>${result[i].taskName}</td>
  165.      <td>${result[i].taskCompleted}</td>
  166.      <td>${result[i].time}</td>
  167.      <td><button onclick='remove2("${result[i].taskName}")' class="button is-danger is-small">Delete</button></td>
  168.      </tr>`
  169.      container+= content;
  170.      }
  171.      container += ` <br><div class='field has-text-centered'>
  172.                     <button onclick='moveUp()' class="button is-link">Top</button>
  173.                      </div>`                    
  174.      container+='</div>';
  175.      
  176.      document.getElementById('body').innerHTML = container;
  177.      document.documentElement.scrollTop = document.body.scrollTop = 300;
  178.    }
  179.    
  180.    
  181.    
  182.     function edit(name){
  183.       let result = localStorage.getItem('todo');
  184.       result = JSON.parse(result);
  185.       for (let i=0; i<result.length; i++){
  186.         if (result[i].todoName===name){
  187.           target = result.indexOf(result[i]);
  188.           document.body.scrollTop = document.documentElement.scrollTop = 0;
  189.           tn.value = result[i].todoName;
  190.           td.value = result[i].todoDesc;
  191.           result.splice(target, 1);
  192.           localStorage.setItem('todo', JSON.stringify(result));
  193.         }
  194.       }
  195.     }
  196.    
  197.     function moveUp(){
  198.        document.documentElement.scrollTop = document.body.scrollTop = 0;
  199.     }
  200.    
  201.    
  202.    
  203.     function remove(name){
  204.       //let ask = confirm('Are you sure');
  205.       //if (!ask){
  206.         //return false;
  207.       //}
  208.       let result = localStorage.getItem('todo');
  209.       result = JSON.parse(result);
  210.       for (let i=0; i<result.length; i++){
  211.         if (result[i].todoName===name){
  212.            let target = result.indexOf(result[i]);
  213.            result.splice(target, 1);
  214.            localStorage.setItem('todo', JSON.stringify(result));
  215.         }
  216.       }
  217.     display();  
  218.     }
  219.    
  220.    
  221.    
  222.     function add(){
  223.        if (!tn.value || !td.value){
  224.          alert('Enter required fields');
  225.          return false;
  226.        }
  227.        let record = localStorage.getItem('todo');
  228.        if (!record){
  229.          let todoList = [];
  230.          recordObj = {"todoName":tn.value,
  231.                       "todoDesc":td.value};
  232.          todoList.push(recordObj)
  233.          localStorage.setItem('todo', JSON.stringify(todoList));
  234.        }
  235.        else{
  236.          //let todoList = [];
  237.          recordObj = {"todoName":tn.value,
  238.                        "todoDesc":td.value};
  239.          //todoList.push(recordObj);
  240.          result = localStorage.getItem('todo');
  241.          result = JSON.parse(result)
  242.          result.push(recordObj);
  243.          localStorage.setItem('todo', JSON.stringify(result));
  244.        }
  245.        tn.value = '';
  246.        td.value = '';
  247.       display();
  248.     }// End of add function
  249.    
  250.    
  251.     function display(){
  252.       let results = localStorage.getItem('todo');
  253.       results = JSON.parse(results);
  254.       let container = '<div>';
  255.       results = results.reverse();
  256.       for (let i=0; i<results.length; i++){
  257.         let card = `<div class="card">
  258.                       <div class="card-header">
  259.                         <div class="card-header-title is-centered">
  260.                           <strong>Todo Title:</strong> ${results[i].todoName}
  261.                         </div>
  262.                       </div>
  263.                       <div class="card-content">
  264.                         <strong>Todo Description:</strong> ${results[i].todoDesc}
  265.                       </div>
  266.                       <div class="card-footer">
  267.                         <div class="card-footer-item">
  268.                           <button onclick='remove("${results[i].todoName}")' class="button is-danger">Remove</button>
  269.                         </div>
  270.                         <div class="card-footer-item">
  271.                           <button onclick='edit("${results[i].todoName}")' class="button is-warning">Edit</button>
  272.                         </div>
  273.                         <div class="card-footer-item">
  274.                           <button onclick='completed("${results[i].todoName}", "${results[i].todoDesc}")' class="button is-success">Completed</button>
  275.                         </div>
  276.                       </div>
  277.                     </div><br>`
  278.                     container+= card;
  279.       }
  280.       container += `<div class="field">
  281.                       <button onclick='moveUp()' class="button is-link">Top</button>
  282.                     </div>`
  283.       container+= '</div>';
  284.       document.getElementById('show').innerHTML = container;
  285.       document.getElementById('one').className = '';
  286.       document.getElementById('two').className = 'is-active';
  287.       document.getElementById('show').style.display = 'block';
  288.       document.getElementById('completed').style.display = 'none';
  289.     }
  290.    
  291.    
  292.    display();
  293.    
  294.   </script>
  295.   </body>
  296. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement