diff --git a/assets/javascripts/discourse/components/knowledge-explorer-search.js.es6 b/assets/javascripts/discourse/components/knowledge-explorer-search.js.es6 index 9b3bb63..6d46a3c 100644 --- a/assets/javascripts/discourse/components/knowledge-explorer-search.js.es6 +++ b/assets/javascripts/discourse/components/knowledge-explorer-search.js.es6 @@ -1,3 +1,5 @@ +import knowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer"; + export default Ember.Component.extend({ classNames: "knowledge-explorer-search", @@ -7,9 +9,10 @@ export default Ember.Component.extend({ return; } - // set search filters - // query the search api + knowledgeExplorer.search(this.get("filteredTags"), term).then(result => { + this.set("searchResults", result.topics || []); + }); }, actions: { diff --git a/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 b/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 index 01640ed..9caec65 100644 --- a/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 +++ b/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 @@ -1,4 +1,7 @@ -import { observes } from "ember-addons/ember-computed-decorators"; +import { + default as computed, + observes +} from "ember-addons/ember-computed-decorators"; function arrayContainsArray(superset, subset) { if (0 === subset.length) { @@ -20,6 +23,19 @@ export default Ember.Controller.extend({ filteredTags: null, filteredTopics: null, + searchTerm: null, + searchResults: null, + + @computed("searchResults") + hasSearchResults(results) { + return !!results; + }, + + @computed("searchResults") + emptySearchResults(results) { + return results.length === 0; + }, + @observes("filterTags") filterByTags() { const filterTags = this.get("filterTags"); diff --git a/assets/javascripts/discourse/models/knowledge-explorer.js.es6 b/assets/javascripts/discourse/models/knowledge-explorer.js.es6 new file mode 100644 index 0000000..3f722b3 --- /dev/null +++ b/assets/javascripts/discourse/models/knowledge-explorer.js.es6 @@ -0,0 +1,13 @@ +import { ajax } from "discourse/lib/ajax"; + +export default { + search(tags, filter) { + if (tags) { + return ajax( + `/search.json?q=in:kb tags:${tags.replace(/ /g, "+")} ${filter}` + ); + } else { + return ajax(`/search.json?q=in:kb ${filter}`); + } + } +}; diff --git a/assets/javascripts/discourse/templates/knowledge-explorer.hbs b/assets/javascripts/discourse/templates/knowledge-explorer.hbs index 525fb73..a4831c8 100644 --- a/assets/javascripts/discourse/templates/knowledge-explorer.hbs +++ b/assets/javascripts/discourse/templates/knowledge-explorer.hbs @@ -1,6 +1,6 @@
- {{knowledge-explorer-search searchResults=searchResults searchTerm=searchTerm}} + {{knowledge-explorer-search searchResults=searchResults searchTerm=searchTerm filteredTags=filteredTags}}
{{#if filteredTags}} @@ -20,6 +20,13 @@ {{else}}
No results match the current filter
{{/if}} + {{else if hasSearchResults}} + {{#if emptySearchResults}} + {
{i18n 'search.no_results'}}
+ {{else}} +
{{i18n "knowledge_explorer.search.results" count=count}}
+ {{knowledge-explorer-topic-list topics=searchResults}} + {{/if}} {{else}} {{knowledge-explorer-topic-list topics=topics}} {{/if}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml new file mode 100644 index 0000000..32fd3f9 --- /dev/null +++ b/config/locales/client.en.yml @@ -0,0 +1,7 @@ +en: + js: + knowledge_explorer: + search: + results: + one: "%{count} result found" + other: "%{count} results found"