Improved design, delayed blowjobs, error handling, nice artist loading.
This commit is contained in:
@@ -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;
|
||||
},
|
||||
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
@@ -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>\
|
||||
');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user