Prevent tooltips from displaying when the mouse is over the search or paging controllers.
[quanweb.git] / js / BooksView.js
1 // =========
2 // BooksView
3
4 var BooksView = (function() {
5     var my = {};
6     
7     // ========================
8     // Private member variables
9     var booksModel = undefined;
10     
11     // ==============
12     // Public Methods
13     
14     my.init = function(linkedBooksModel) {
15         booksModel = linkedBooksModel;
16         
17         booksModel.listen(my);
18     };
19     
20     // Called when the model changes
21     my.notify = function () {
22         var i;
23         var html = '';
24         var limit = BooksModel.last - BooksModel.first;
25         for (i = 0; i <= limit; ++i) {
26             var book = BooksModel.cache[i];
27             html += bookHtml(book);
28         }
29     
30         document.getElementById('books').innerHTML = html;
31         document.getElementById('first').innerHTML = (BooksModel.first + 1);
32         document.getElementById('last').innerHTML = (BooksModel.last + 1);
33         document.getElementById('count').innerHTML = BooksModel.count;
34     };
35     
36     // ===============
37     // Private methods
38     
39     function bookHtml(book) {
40         var result = '<div class="book">'
41             +   '<table>'
42             +     '<tr>'
43             +       '<td><a href="/book/' + book.Id + '">';
44         if (0 == book.CoverId) {
45             result +=          '(No cover available)';
46         } else {
47             result +=          '<img class="cover-thumb" src="/download/' + book.CoverId + '"/>';
48         }
49         result     +=       '</a></td>'
50             +       '<td onclick="displayDetails(' + book.Id + ');" '
51             +          ' onmouseover="ToolTip.startTooltipTimer(' + book.Id + ');"'
52             +          ' onmouseleave="ToolTip.stopTooltipTimer();">'
53             +         '<p><b>' + book.Title + '</b></p>'
54             +         '<p>'
55             +           '<i>' + book.AuthorReading + '</i>';
56         if (typeof(book.SeriesName) !== 'undefined' && book.SeriesName.length > 0) {
57             result +=          '<br/><i>' + book.SeriesName + ' ' + book.Volume + '</i>';
58         }
59         result     +=         '</p>'
60             +       '</td>'
61             +     '</tr>'
62             +   '</table>'
63             + '</div>';
64         return result;
65     }
66     
67     return my;
68 })();