<!DOCTYPE html> <html> <head> <title>Library</title> <script type="text/javascript" src='js/jquery.js'></script> <script type="text/javascript" src='js/mustache.js'></script> <script type="text/javascript" src='js/lodash.core.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js'></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"></link> <link rel="stylesheet" href="css/reset.css"></link> <link rel="stylesheet" href="css/style.css"></link> <link href="https://fonts.googleapis.com/css?family=Libre+Baskerville:400,700" rel="stylesheet"> <script type='text/javascript'> var publicSpreadsheetUrl = 'https://docs.google.com/spreadsheets/d/1w5Dc57wV0_rrKFsG7KM-qdPWEpqYk6lFu3JzAA0cSv0/pubhtml'; function init() { $("#reloadLink").unbind('click'); $("#reloadLink").on("click", function() { init(); }); Tabletop.init({ key: publicSpreadsheetUrl, callback: showInfo, simpleSheet: true }); } function showInfo(data, tabletop) { renderTable(data, 'authorLast'); //default sorting on load is author's last name } function renderTable(data, sortField) { data = _.sortBy(data, sortField); $.each(data, function(key, value) { value.rowNumber = key; // re-key for new sort }); var template = $('#Table').html(); var rendered = Mustache.render(template, {books: data}); $('#books').html(rendered); $("#books tbody tr").not(':first').on("click", function() { updateCurrentBook(data[$(this)[0].id]); // ignore the headers }); $("#books tbody tr th[data-sort-by]").on("click", function() { renderTable(data, $(this).data('sortBy')); // only add callback when there's a sortBy attribute }); } function updateCurrentBook(book) { var template = $('#View').html(); var rendered = Mustache.render(template, {book: book}); $('#current').html(rendered); } window.addEventListener('DOMContentLoaded', init); </script> </head> <body> <div class="wrapper"> <div id="header"> <h1>Library</h1> <a target="_blank" href="https://docs.google.com/spreadsheets/d/1w5Dc57wV0_rrKFsG7KM-qdPWEpqYk6lFu3JzAA0cSv0/edit">spreadsheet</a> <a target="_blank" href="https://github.com/deltamualpha/my-library">github</a> <a id="reloadLink" href="#">reload</a> </div> <div id="current">No Book Selected</div> <div id="books"></div> <!-- Table goes here --> </div> <script id="Table" type="text/html"> <table class="bookTable"> <tr> <th data-sort-by="title" class="tHeader title">Title</th> <th data-sort-by="authorLast" class="tHeader author">Author</th> <th data-sort-by="publisher" class="tHeader publisher">Publisher</th> <th data-sort-by="year" class="tHeader year">Year</th> <th class="tHeader isbn">ISBN</th> </tr> {{#books}} <tr class="tRow" id="{{rowNumber}}"> <td class="title">{{title}}</td> <td class="author">{{author}}</td> <td class="publisher">{{publisher}}</td> <td class="year">{{year}}</td> <td class="isbn">{{isbn-13}}</td> </tr> {{/books}} </table> </script> <script id="View" type="text/html"> {{#book}} {{#coverurl}} <img src="{{.}}"/> {{/coverurl}} <h1>{{title}}</h1> <h2>{{author}}</h2> <span>{{isbn-13}}</span><br/> <span>{{publisher}}, {{year}}</span><br/> {{#series}} <span>{{series}}, Volume {{volume}}</span><br/> {{/series}} <span>{{format}}</span> <div class="description"> <p>{{description}}</p> {{#notes}} <span>Notes:</span> <p>{{notes}}</p> {{/notes}} </div> {{/book}} </script> </body> </html>