54 lines
1.4 KiB
JavaScript

import debounce from 'discourse/lib/debounce';
import { searchForTerm } from 'discourse/lib/search';
export default Ember.Component.extend({
loading: null,
noResults: null,
topics: null,
topicTitleChanged: function() {
this.setProperties({
loading: true,
noResults: true,
selectedTopicId: null,
});
this.search(this.get('topicTitle'));
}.observes('topicTitle'),
topicsChanged: function() {
const topics = this.get('topics');
if (topics) {
this.set('noResults', topics.length === 0);
}
this.set('loading', false);
}.observes('topics'),
search: debounce(function(title) {
const self = this,
currentTopicId = this.get("currentTopicId");
if (Em.isEmpty(title)) {
self.setProperties({ topics: null, loading: false });
return;
}
searchForTerm(title, { typeFilter: 'topic', searchForId: true }).then(function (results) {
if (results && results.posts && results.posts.length > 0) {
self.set('topics', results.posts.mapBy('topic').filter(t => t.get("id") !== currentTopicId));
} else {
self.setProperties({ topics: null, loading: false });
}
});
}, 300),
actions: {
chooseTopic(topic) {
const topicId = Em.get(topic, 'id');
this.set('selectedTopicId', topicId);
Ember.run.next(() => $('#choose-topic-' + topicId).prop('checked', 'true'));
return false;
}
}
});