D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
home
/
shubmkcj
/
urbane.createerp.com
/
assets
/
pages
/
Filename :
jquery.todo.js
back
Copy
/** * Theme: Adminox Admin Template * Author: Coderthemes * Todos-widget */ !function($) { "use strict"; var TodoApp = function() { this.$body = $("body"), this.$todoContainer = $('#todo-container'), this.$todoMessage = $("#todo-message"), this.$todoRemaining = $("#todo-remaining"), this.$todoTotal = $("#todo-total"), this.$archiveBtn = $("#btn-archive"), this.$todoList = $("#todo-list"), this.$todoDonechk = ".todo-done", this.$todoForm = $("#todo-form"), this.$todoInput = $("#todo-input-text"), this.$todoBtn = $("#todo-btn-submit"), this.$todoData = [ { 'id': '1', 'text': 'Design One page theme', 'done': false }, { 'id': '2', 'text': 'Build a js based app', 'done': true }, { 'id': '3', 'text': 'Creating component page', 'done': true }, { 'id': '4', 'text': 'Testing??', 'done': true }, { 'id': '5', 'text': 'Hehe!! This is looks cool!', 'done': false }, { 'id': '6', 'text': 'Build an angular app', 'done': false }, { 'id': '7', 'text': 'Schedule meeting with Bob', 'done': false }, { 'id': '8', 'text': 'Discuss task requirements', 'done': false }]; this.$todoCompletedData = []; this.$todoUnCompletedData = []; }; //mark/unmark - you can use ajax to save data on server side TodoApp.prototype.markTodo = function(todoId, complete) { for(var count=0; count<this.$todoData.length;count++) { if(this.$todoData[count].id == todoId) { this.$todoData[count].done = complete; } } }, //adds new todo TodoApp.prototype.addTodo = function(todoText) { this.$todoData.push({'id': this.$todoData.length, 'text': todoText, 'done': false}); //regenerate list this.generate(); }, //Archives the completed todos TodoApp.prototype.archives = function() { this.$todoUnCompletedData = []; for(var count=0; count<this.$todoData.length;count++) { //geretaing html var todoItem = this.$todoData[count]; if(todoItem.done == true) { this.$todoCompletedData.push(todoItem); } else { this.$todoUnCompletedData.push(todoItem); } } this.$todoData = []; this.$todoData = [].concat(this.$todoUnCompletedData); //regenerate todo list this.generate(); }, //Generates todos TodoApp.prototype.generate = function() { //clear list this.$todoList.html(""); var remaining = 0; for(var count=0; count<this.$todoData.length;count++) { //geretaing html var todoItem = this.$todoData[count]; if(todoItem.done == true) this.$todoList.prepend('<li class="list-group-item"><div class="checkbox checkbox-primary"><input class="todo-done" id="' + todoItem.id + '" type="checkbox" checked><label for="' + todoItem.id + '">' + todoItem.text + '</label></div></li>'); else { remaining = remaining + 1; this.$todoList.prepend('<li class="list-group-item"><div class="checkbox checkbox-primary"><input class="todo-done" id="' + todoItem.id + '" type="checkbox"><label for="' + todoItem.id + '">' + todoItem.text + '</label></div></li>'); } } //set total in ui this.$todoTotal.text(this.$todoData.length); //set remaining this.$todoRemaining.text(remaining); }, //init todo app TodoApp.prototype.init = function () { var $this = this; //generating todo list this.generate(); //binding archive this.$archiveBtn.on("click", function(e) { e.preventDefault(); $this.archives(); return false; }); //binding todo done chk $(document).on("change", this.$todoDonechk, function() { if(this.checked) $this.markTodo($(this).attr('id'), true); else $this.markTodo($(this).attr('id'), false); //regenerate list $this.generate(); }); //binding the new todo button this.$todoBtn.on("click", function() { if ($this.$todoInput.val() == "" || typeof($this.$todoInput.val()) == 'undefined' || $this.$todoInput.val() == null) { sweetAlert("Oops...", "You forgot to enter todo text", "error"); $this.$todoInput.focus(); } else { $this.addTodo($this.$todoInput.val()); } }); }, //init TodoApp $.TodoApp = new TodoApp, $.TodoApp.Constructor = TodoApp }(window.jQuery), //initializing todo app function($) { "use strict"; $.TodoApp.init() }(window.jQuery);