closes #1996
parent
ba4b98de0e
commit
94c765fa25
@ -1,20 +1,59 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/* globals define, app */
|
/* globals define, app, utils, socket */
|
||||||
|
|
||||||
define('forum/tags', function() {
|
define('forum/tags', ['forum/infinitescroll'], function(infinitescroll) {
|
||||||
var Tags = {};
|
var Tags = {};
|
||||||
|
var timeoutId = 0;
|
||||||
|
|
||||||
Tags.init = function() {
|
Tags.init = function() {
|
||||||
app.enterRoom('tags');
|
app.enterRoom('tags');
|
||||||
|
|
||||||
$('#tag-search').on('input propertychange', function() {
|
$('#tag-search').on('input propertychange', function() {
|
||||||
$('.tag-list').children().each(function() {
|
if (timeoutId) {
|
||||||
var $this = $(this);
|
clearTimeout(timeoutId);
|
||||||
$this.toggleClass('hide', $this.find('a').attr('data-value').indexOf($('#tag-search').val()) === -1);
|
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;
|
return Tags;
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue