diff --git a/index.html b/index.html index 60dffe1..9160e12 100644 --- a/index.html +++ b/index.html @@ -120,11 +120,23 @@
-
- - - - +
+ + + +
diff --git a/js/drag_drop.js b/js/drag_drop.js index 8ed9a99..7896d96 100644 --- a/js/drag_drop.js +++ b/js/drag_drop.js @@ -1,4 +1,17 @@ $(document).ready(function() { + + var container = $('#bin'); + + $('.collections button').on('click', function(){ + var collection = $(this).data('collection'); + var books = getBooks(collection); + + container.empty(); + + renderAll(books, container); + }); + + var dropHandler = function (event, ui) { var $this = $(this); var thumb = ui.draggable.find("a.thumbnail"); @@ -8,32 +21,8 @@ $(document).ready(function() { }; /* Need JSON object associated with each tile to store in local storage */ - var collection = null; - if ($this.hasClass("btn-danger")) { - thumb.addClass("danger"); - collection = "keeper"; //setting up a key for each collection - } else if ($this.hasClass("btn-primary")) { - thumb.addClass("primary"); - collection = "surfing"; - } else if ($this.hasClass("btn-warning")) { - thumb.addClass("warning"); - collection = "gonna"; - } else if ($this.hasClass("btn-success")) { - thumb.addClass("success"); - collection = "maybe"; - } - var library = localStorage[collection]; //make into a function in local_storage.js - if (! library){ - library = {}; - } else { - library = JSON.parse(library); - } - var id = ui.draggable.data("id"); - var book = cache[id]; - library[id] = book; - localStorage[collection] = JSON.stringify(library); - //console.log(ui, this, ui.draggable.data("id"), cache[ui.draggable.data("id")]); - console.log(localStorage); + var collection = $this.data('collection'); + setBook(ui.draggable.data('book'), collection); } dragOptions = { cursor: "move", @@ -49,5 +38,39 @@ $(document).ready(function() { }); +function getBooks(collection) { + var books = getItem(collection) || []; + return books.map(function(id){ + return getItem(id); + }); +} + +function setBook(book, collection) { + var cached = getItem(book.id); + if(!cached) setItem(book.id, book); + + if(collection) { + var group = getItem(collection); + if(!group) group = []; + if(!~group.indexOf(book.id)) group.push(book.id); // only add new books. + setItem(collection, group); + } +} + + +function setItem(id, data) { + localStorage.setItem(id, JSON.stringify(data)); +} + +function getItem(id) { + var data = localStorage.getItem(id); + if(!data) return null; + try { + data = JSON.parse(data) + } catch(e) { + data = null; + } + return data; +} diff --git a/js/render_books.js b/js/render_books.js index 5de2e15..3d2f231 100644 --- a/js/render_books.js +++ b/js/render_books.js @@ -1,9 +1,9 @@ var cache = {}; //cache is available everywhere -var render = function(book, bin) { - var id = book.id; - cache[id] = book; +var render = function(book, container) { + // var id = book.id; + // cache[id] = book; var html = - '
' + + ''; - $(html).data("id", id).appendTo(bin); + $(html) + .data("book", book) + .appendTo(container); } var renderAll = function(books, container) { //calling a method