closes #1996
parent
ba4b98de0e
commit
94c765fa25
@ -1,20 +1,59 @@
|
||||
'use strict';
|
||||
|
||||
/* globals define, app */
|
||||
/* globals define, app, utils, socket */
|
||||
|
||||
define('forum/tags', function() {
|
||||
define('forum/tags', ['forum/infinitescroll'], function(infinitescroll) {
|
||||
var Tags = {};
|
||||
var timeoutId = 0;
|
||||
|
||||
Tags.init = function() {
|
||||
app.enterRoom('tags');
|
||||
|
||||
$('#tag-search').on('input propertychange', function() {
|
||||
$('.tag-list').children().each(function() {
|
||||
var $this = $(this);
|
||||
$this.toggleClass('hide', $this.find('a').attr('data-value').indexOf($('#tag-search').val()) === -1);
|
||||
})
|
||||
if (timeoutId) {
|
||||
clearTimeout(timeoutId);
|
||||
timeoutId = 0;
|
||||
}
|
||||
timeoutId = setTimeout(function() {
|
||||
socket.emit('topics.searchAndLoadTags', {query: $('#tag-search').val()}, function(err, results) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
onTagsLoaded(results, true, function() {
|
||||
timeoutId = 0;
|
||||
});
|
||||
});
|
||||
}, 100);
|
||||
});
|
||||
|
||||
infinitescroll.init(Tags.loadMoreTags);
|
||||
};
|
||||
|
||||
Tags.loadMoreTags = function(direction) {
|
||||
if(direction < 0 || !$('.tag-list').length) {
|
||||
return;
|
||||
}
|
||||
|
||||
infinitescroll.loadMore('topics.loadMoreTags', {
|
||||
after: $('.tag-list').attr('data-nextstart')
|
||||
}, function(data, done) {
|
||||
if (data && data.tags && data.tags.length) {
|
||||
onTagsLoaded(data.tags, false, done);
|
||||
$('.tag-list').attr('data-nextstart', data.nextStart);
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
function onTagsLoaded(tags, replace, callback) {
|
||||
callback = callback || function() {};
|
||||
infinitescroll.parseAndTranslate('tags', 'tags', {tags: tags}, function(html) {
|
||||
$('.tag-list')[replace ? 'html' : 'append'](html);
|
||||
utils.makeNumbersHumanReadable(html.find('.human-readable-number'));
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
return Tags;
|
||||
});
|
||||
|
Loading…
Reference in New Issue