Content server now works partially with IE6,7 and fully with IE 8

This commit is contained in:
Kovid Goyal 2009-01-15 11:13:40 -08:00
parent 3525827192
commit 85b25af6b1

View File

@ -7,8 +7,8 @@ var column_titles = {
'rating' : 'Rating', 'rating' : 'Rating',
'date' : 'Date', 'date' : 'Date',
'tags' : 'Tags', 'tags' : 'Tags',
'series' : 'Series', 'series' : 'Series'
} };
String.prototype.format = function() { String.prototype.format = function() {
var pattern = /\{\d+\}/g; var pattern = /\{\d+\}/g;
@ -47,7 +47,7 @@ function render_book(book) {
// Render title cell // Render title cell
var title = '<i>{0}</i>'.format(book.attr("title")) + '<br /><span class="subtitle">'; var title = '<i>{0}</i>'.format(book.attr("title")) + '<br /><span class="subtitle">';
var id = book.attr("id"); var id = book.attr("id");
var comments = $.trim(book.text()).replace(/\n\n/, '<br/>'); var comments = $.trim(book.text()).replace(/\n\n/, '<br/>');
var formats = new Array(); var formats = new Array();
var size = (parseFloat(book.attr('size'))/(1024*1024)).toFixed(1); var size = (parseFloat(book.attr('size'))/(1024*1024)).toFixed(1);
var tags = book.attr('tags').replace(/,/g, ', '); var tags = book.attr('tags').replace(/,/g, ', ');
@ -70,22 +70,22 @@ function render_book(book) {
authors += jQuery.trim(_authors[i]).replace(/ /g, '&nbsp;')+'<br />'; authors += jQuery.trim(_authors[i]).replace(/ /g, '&nbsp;')+'<br />';
} }
if (authors) { authors = authors.slice(0, authors.length-6); } if (authors) { authors = authors.slice(0, authors.length-6); }
// Render rating cell // Render rating cell
var _rating = parseFloat(book.attr('rating'))/2.; var _rating = parseFloat(book.attr('rating'))/2.;
var rating = ''; var rating = '';
for (i = 0; i < _rating; i++) { rating += '&#9733;'} for (i = 0; i < _rating; i++) { rating += '&#9733;'}
// Render date cell // Render date cell
var _date = Date.parseExact(book.attr('timestamp'), 'yyyy/MM/dd HH:mm:ss'); var _date = Date.parseExact(book.attr('timestamp'), 'yyyy/MM/dd HH:mm:ss');
var date = _date.toString('d MMM yyyy').replace(/ /g, '&nbsp;'); var date = _date.toString('d MMM yyyy').replace(/ /g, '&nbsp;');
// Render series cell // Render series cell
var series = book.attr("series") var series = book.attr("series")
if (series) { if (series) {
series += '&nbsp;[{0}]'.format(book.attr('series_index')); series += '&nbsp;[{0}]'.format(book.attr('series_index'));
} }
var cells = { var cells = {
'title' : title, 'title' : title,
'authors' : authors, 'authors' : authors,
@ -93,12 +93,12 @@ function render_book(book) {
'date' : date, 'date' : date,
'series' : series 'series' : series
}; };
var row = ''; var row = '';
for (i = 0; i < cmap.length; i++) { for (i = 0; i < cmap.length; i++) {
row += '<td class="{0}">{1}</td>'.format(cmap[i], cells[cmap[i]]); row += '<td class="{0}">{1}</td>'.format(cmap[i], cells[cmap[i]]);
} }
return '<tr id="{0}">{1}</tr>'.format(id, row); return '<tr id="{0}">{1}</tr>'.format(id, row);
} }
function fetch_library_books(start, num, timeout, sort, order, search) { function fetch_library_books(start, num, timeout, sort, order, search) {
@ -112,15 +112,15 @@ function fetch_library_books(start, num, timeout, sort, order, search) {
last_search = search; last_search = search;
last_sort = sort; last_sort = sort;
last_sort_order = order; last_sort_order = order;
if (current_library_request != null) { if (current_library_request != null) {
current_library_request.abort(); current_library_request.abort();
current_library_request = null; current_library_request = null;
} }
$('#cover_pane').css('visibility', 'hidden'); $('#cover_pane').css('visibility', 'hidden');
$('#loading').css('visibility', 'visible'); $('#loading').css('visibility', 'visible');
current_library_request = $.ajax({ current_library_request = $.ajax({
type: "GET", type: "GET",
url: "library", url: "library",
@ -128,18 +128,18 @@ function fetch_library_books(start, num, timeout, sort, order, search) {
cache: false, cache: false,
timeout: timeout, //milliseconds timeout: timeout, //milliseconds
dataType: "xml", dataType: "xml",
error : function(XMLHttpRequest, textStatus, errorThrown) { error : function(XMLHttpRequest, textStatus, errorThrown) {
alert('Error: '+textStatus+'\n\n'+errorThrown); alert('Error: '+textStatus+'\n\n'+errorThrown);
}, },
success : function(xml, textStatus) { success : function(xml, textStatus) {
var library = $(xml).find('library'); var library = $(xml).find('library');
total = parseInt(library.attr('total')); total = parseInt(library.attr('total'));
var num = parseInt(library.attr('num')); var num = parseInt(library.attr('num'));
var start = parseInt(library.attr('start')); var start = parseInt(library.attr('start'));
update_count_bar(start, num, total); update_count_bar(start, num, total);
var display = ''; var display = '';
library.find('book').each( function() { library.find('book').each( function() {
var book = $(this); var book = $(this);
var row = render_book(book); var row = render_book(book);
@ -170,18 +170,18 @@ function fetch_library_books(start, num, timeout, sort, order, search) {
$('#cover_pane').css('visibility', 'visible'); $('#cover_pane').css('visibility', 'visible');
} }
}); });
layout(); layout();
$('#book_list tbody tr:even()').css('background-color', '#eeeeee'); $('#book_list tbody tr:even()').css('background-color', '#eeeeee');
}, },
complete : function(XMLHttpRequest, textStatus) { complete : function(XMLHttpRequest, textStatus) {
current_library_request = null; current_library_request = null;
document.getElementById('main').scrollTop = 0; document.getElementById('main').scrollTop = 0;
$('#loading').css('visibility', 'hidden'); $('#loading').css('visibility', 'hidden');
} }
}); });
} }
@ -196,7 +196,7 @@ function update_count_bar(start, num, total) {
left.css('opacity', (start <= 0) ? 0.3 : 1); left.css('opacity', (start <= 0) ? 0.3 : 1);
var right = cb.find('#right'); var right = cb.find('#right');
right.css('opacity', (start + num >= total) ? 0.3 : 1); right.css('opacity', (start + num >= total) ? 0.3 : 1);
} }
function setup_count_bar() { function setup_count_bar() {
@ -205,7 +205,7 @@ function setup_count_bar() {
fetch_library_books(0, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search); fetch_library_books(0, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search);
} }
}); });
$('#count_bar * img:eq(1)').click(function(){ $('#count_bar * img:eq(1)').click(function(){
if (last_start > 0) { if (last_start > 0) {
var new_start = last_start - last_num; var new_start = last_start - last_num;
@ -215,14 +215,14 @@ function setup_count_bar() {
fetch_library_books(new_start, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search); fetch_library_books(new_start, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search);
} }
}); });
$('#count_bar * img:eq(2)').click(function(){ $('#count_bar * img:eq(2)').click(function(){
if (last_start + last_num < total) { if (last_start + last_num < total) {
var new_start = last_start + last_num; var new_start = last_start + last_num;
fetch_library_books(new_start, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search); fetch_library_books(new_start, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search);
} }
}); });
$('#count_bar * img:eq(3)').click(function(){ $('#count_bar * img:eq(3)').click(function(){
if (total - last_num > 0) { if (total - last_num > 0) {
fetch_library_books(total - last_num, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search); fetch_library_books(total - last_num, last_num, LIBRARY_FETCH_TIMEOUT, last_sort, last_sort_order, last_search);
@ -234,7 +234,7 @@ function setup_count_bar() {
function search() { function search() {
var search = $.trim($('#search_box * #s').val()); var search = $.trim($('#search_box * #s').val());
fetch_library_books(0, last_num, LIBRARY_FETCH_TIMEOUT, fetch_library_books(0, last_num, LIBRARY_FETCH_TIMEOUT,
last_sort, last_sort_order, search); last_sort, last_sort_order, search);
} }
@ -245,11 +245,11 @@ function setup_sorting() {
$('table#book_list thead tr td').mouseover(function() { $('table#book_list thead tr td').mouseover(function() {
this.style.backgroundColor = "#fff2a8"; this.style.backgroundColor = "#fff2a8";
}); });
$('table#book_list thead tr td').mouseout(function() { $('table#book_list thead tr td').mouseout(function() {
this.style.backgroundColor = "inherit"; this.style.backgroundColor = "inherit";
}); });
for (i = 0; i < cmap.length; i++) { for (i = 0; i < cmap.length; i++) {
$('table#book_list span#{0}_sort'.format(cmap[i])).parent().click(function() { $('table#book_list span#{0}_sort'.format(cmap[i])).parent().click(function() {
var sort_indicator = $($(this).find('span')); var sort_indicator = $($(this).find('span'));
@ -258,7 +258,7 @@ function setup_sorting() {
var col = id.slice(0, id.indexOf("_")); var col = id.slice(0, id.indexOf("_"));
var order = 'ascending'; var order = 'ascending';
var html = '↑'; var html = '↑';
if (sort_indicator.html() == '↑') { if (sort_indicator.html() == '↑') {
order = 'descending'; html = '↓'; order = 'descending'; html = '↓';
} }
@ -291,13 +291,13 @@ function layout() {
$(function() { $(function() {
// document is ready // document is ready
create_table_headers(); create_table_headers();
// Setup widgets // Setup widgets
setup_sorting(); setup_sorting();
setup_count_bar(); setup_count_bar();
$('#search_box * #s').val(''); $('#search_box * #s').val('');
$(window).resize(layout); $(window).resize(layout);
$($('#book_list * span#date_sort').parent()).click(); $($('#book_list * span#date_sort').parent()).click();
}); });