Improved design, delayed blowjobs, error handling, nice artist loading.

This commit is contained in:
magnolia-fan
2011-06-21 00:42:21 +04:00
parent 7dbf6b87cc
commit b69c9cdbe0
13 changed files with 219 additions and 395 deletions
+11 -21
View File
@@ -1,11 +1,17 @@
var Ajax = {
referer: false,
loadArtistData: function(name) {
Search.showSpinner();
name = name.split(' ').join('+');
$.get('/artist/'+ name +'/', function(data){
if (typeof data.status != 'undefined') {
if (data.status == 'loaded') {
Ajax.loadArtistData(name);
if (data.status == 'loading') {
Search.showArtistPics(data.pics);
setTimeout(function() {
Ajax.loadArtistData(name);
}, 3000);
} else if (data.status == 'corrected') {
Ajax.loadArtistData(data.page);
} else if (data.status == 'suggestions') {
@@ -16,10 +22,7 @@ var Ajax = {
}
return false;
} else {
var display_name = name.split('+').join(' ');
yaCounter7596904.hit('/artist/'+ name +'/', display_name, Ajax.getAnchor());
Ajax.setArchor('/artist/'+ name +'/');
Ajax.setTitle(display_name);
Pages.renderArtist(data);
beathaven.redrawScrollbar();
}
@@ -27,23 +30,9 @@ var Ajax = {
},
loadSearchPage: function() {
$.get('/demo/search.html', function(data){
yaCounter7596904.hit('/search/', 'Artist Search', Ajax.getAnchor());
$.get('/search.html', function(data){
Ajax.setArchor('/search/');
Ajax.setTitle('Artist Search');
$('#data-container .inner').html(data);
beathaven.redrawScrollbar();
$('#search_field').autocomplete({
serviceUrl: '/artist/autocomplete', // Страница для обработки запросов автозаполнения
minChars: 2, // Минимальная длина запроса для срабатывания автозаполнения
delimiter: /(,|;)\s*/, // Разделитель для нескольких запросов, символ или регулярное выражение
maxHeight: 400, // Максимальная высота списка подсказок, в пикселях
width: 415, // Ширина списка
zIndex: 9999, // z-index списка
deferRequestBy: 150, // Задержка запроса (мсек)
onSelect: Ajax.loadArtistData
});
$('#search_field').focus();
Pages.renderSearch(data);
})
},
@@ -61,6 +50,7 @@ var Ajax = {
},
setArchor: function(anchor) {
Ajax.referer = Ajax.getAnchor();
window.location.hash = '#'+ anchor;
},
+8
View File
@@ -27,11 +27,19 @@ var beathaven = {
},
checkRedrawScrollbar: function() {
var focused_id = false;
if (typeof document.activeElement.id !== 'undefined') {
focused_id = document.activeElement.id;
}
var outer_height = $('#data-container > div').outerHeight();
if (outer_height > 300 && outer_height != beathaven.last_height) {
beathaven.last_height = outer_height;
beathaven.redrawScrollbar();
}
if (focused_id) {
document.getElementById(focused_id).focus();
focused_id = false;
}
window.setTimeout(beathaven.checkRedrawScrollbar, 500);
},
+31
View File
@@ -52,6 +52,37 @@ var Pages = {
}
})
$('#data-container').css('backgroundImage', 'none');
$('#data-container .inner').html('').append(artist_info).append(albums_info);
yaCounter7596904.hit(Ajax.getAnchor(), data.artist.name, Ajax.referer);
Ajax.setTitle(data.artist.name);
},
renderSearch: function(data) {
$('#data-container').css('background', 'url(/images/concrete_wall_2.png) 0 -30px repeat');
$('#data-container .inner').html(data);
$('#search-container')
.css('marginLeft', ($('#data-container').width() - 425) / 2 + 'px')
.css('marginTop', ($('#data-container').height() / 2 - 230) +'px')
.height(($('#data-container').height() - $('#search_form').height()) / 2);
setTimeout(function(){
$('#search_field').autocomplete({
serviceUrl: '/artist/autocomplete', // Страница для обработки запросов автозаполнения
minChars: 2, // Минимальная длина запроса для срабатывания автозаполнения
delimiter: /(,|;)\s*/, // Разделитель для нескольких запросов, символ или регулярное выражение
maxHeight: 400, // Максимальная высота списка подсказок, в пикселях
width: 415, // Ширина списка
zIndex: 9999, // z-index списка
deferRequestBy: 500, // Задержка запроса (мсек)
onSelect: Ajax.loadArtistData
});
$('#search_field').focus();
}, 501)
yaCounter7596904.hit(Ajax.getAnchor(), 'Artist Search', Ajax.referer);
Ajax.setTitle('Artist Search');
}
}
+12
View File
@@ -27,6 +27,18 @@ var Search = {
hideSuggestions: function() {
$('.suggestions ul li').remove();
$('.suggestions').hide();
},
showArtistPics: function(pics) {
$('.artist_loading, .artist_pics').show();
$('.artist_pics').html('');
for (var i = 0; i < pics.length; i++) {
$('.artist_pics').append('\
<div class="pic">\
<img src="'+ pics[i] +'" alt=""/>\
</div>\
');
}
}
}