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