Beginnings of working search
This commit is contained in:
parent
7b8d3a84bd
commit
adc07ae8ad
|
@ -1,3 +1,5 @@
|
||||||
|
import knowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
classNames: "knowledge-explorer-search",
|
classNames: "knowledge-explorer-search",
|
||||||
|
|
||||||
|
@ -7,9 +9,10 @@ export default Ember.Component.extend({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set search filters
|
|
||||||
|
|
||||||
// query the search api
|
// query the search api
|
||||||
|
knowledgeExplorer.search(this.get("filteredTags"), term).then(result => {
|
||||||
|
this.set("searchResults", result.topics || []);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -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) {
|
function arrayContainsArray(superset, subset) {
|
||||||
if (0 === subset.length) {
|
if (0 === subset.length) {
|
||||||
|
@ -20,6 +23,19 @@ export default Ember.Controller.extend({
|
||||||
filteredTags: null,
|
filteredTags: null,
|
||||||
filteredTopics: null,
|
filteredTopics: null,
|
||||||
|
|
||||||
|
searchTerm: null,
|
||||||
|
searchResults: null,
|
||||||
|
|
||||||
|
@computed("searchResults")
|
||||||
|
hasSearchResults(results) {
|
||||||
|
return !!results;
|
||||||
|
},
|
||||||
|
|
||||||
|
@computed("searchResults")
|
||||||
|
emptySearchResults(results) {
|
||||||
|
return results.length === 0;
|
||||||
|
},
|
||||||
|
|
||||||
@observes("filterTags")
|
@observes("filterTags")
|
||||||
filterByTags() {
|
filterByTags() {
|
||||||
const filterTags = this.get("filterTags");
|
const filterTags = this.get("filterTags");
|
||||||
|
|
|
@ -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}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="knowledge-explorer">
|
<div class="knowledge-explorer">
|
||||||
<div class="knowledge-explorer-filter">
|
<div class="knowledge-explorer-filter">
|
||||||
{{knowledge-explorer-search searchResults=searchResults searchTerm=searchTerm}}
|
{{knowledge-explorer-search searchResults=searchResults searchTerm=searchTerm filteredTags=filteredTags}}
|
||||||
</div>
|
</div>
|
||||||
<div class="knowledge-explorer-browse">
|
<div class="knowledge-explorer-browse">
|
||||||
{{#if filteredTags}}
|
{{#if filteredTags}}
|
||||||
|
@ -20,6 +20,13 @@
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="no-result">No results match the current filter</div>
|
<div class="no-result">No results match the current filter</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{else if hasSearchResults}}
|
||||||
|
{{#if emptySearchResults}}
|
||||||
|
{<div class="no-result">{i18n 'search.no_results'}}</div>
|
||||||
|
{{else}}
|
||||||
|
<div>{{i18n "knowledge_explorer.search.results" count=count}}</div>
|
||||||
|
{{knowledge-explorer-topic-list topics=searchResults}}
|
||||||
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{knowledge-explorer-topic-list topics=topics}}
|
{{knowledge-explorer-topic-list topics=topics}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
en:
|
||||||
|
js:
|
||||||
|
knowledge_explorer:
|
||||||
|
search:
|
||||||
|
results:
|
||||||
|
one: "%{count} result found"
|
||||||
|
other: "%{count} results found"
|
Loading…
Reference in New Issue