diff --git a/assets/javascripts/discourse/components/knowledge-explorer-category.js.es6 b/assets/javascripts/discourse/components/knowledge-explorer-category.js.es6 new file mode 100644 index 0000000..3267555 --- /dev/null +++ b/assets/javascripts/discourse/components/knowledge-explorer-category.js.es6 @@ -0,0 +1,12 @@ +import { default as computed } from "ember-addons/ember-computed-decorators"; + +export default Ember.Component.extend({ + @computed("category") + categoryName(category) { + return this.site.categories.findBy("id", category.id).name; + }, + click() { + this.selectCategory(this.category); + return false; + } +}); diff --git a/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 b/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 index df20433..9a09e29 100644 --- a/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 +++ b/assets/javascripts/discourse/controllers/knowledge-explorer.js.es6 @@ -16,7 +16,7 @@ function mergeCategories(results) { export default Ember.Controller.extend({ application: Ember.inject.controller(), queryParams: { - filterCategory: "category", + filterCategories: "category", filterTags: "tags", searchTerm: "search", selectedTopic: "topic" @@ -25,10 +25,11 @@ export default Ember.Controller.extend({ isLoadingMore: false, loadMoreUrl: Ember.computed.alias("model.topics.load_more_url"), isTopicLoading: false, + categories: Ember.computed.readOnly("model.categories"), topics: Ember.computed.alias("model.topics.topic_list.topics"), tags: Ember.computed.readOnly("model.tags"), filterTags: null, - filterCategory: null, + filterCategories: null, searchTerm: null, selectedTopic: null, topic: null, @@ -93,6 +94,26 @@ export default Ember.Controller.extend({ this.send("refreshModel"); }, + updateSelectedCategories(category) { + let filter = this.filterCategories; + if (filter && filter.includes(category.id)) { + filter = filter + .replace(category.id, "") + .replace("|", "|") + .replace(/^\|+|\|+$/g, ""); + } else if (filter) { + filter = `${filter}|${category.id}`; + } else { + filter = category.id; + } + + this.setProperties({ + filterCategories: filter, + selectedTopic: null + }); + + this.send("refreshModel"); + }, performSearch(term) { if (term === "") { @@ -134,7 +155,7 @@ export default Ember.Controller.extend({ this.set("isLoading", true); const params = this.getProperties( - "filterCategory", + "filterCategories", "filterTags", "searchTerm" ); diff --git a/assets/javascripts/discourse/models/knowledge-explorer.js.es6 b/assets/javascripts/discourse/models/knowledge-explorer.js.es6 index c7b7712..7383f3b 100644 --- a/assets/javascripts/discourse/models/knowledge-explorer.js.es6 +++ b/assets/javascripts/discourse/models/knowledge-explorer.js.es6 @@ -3,6 +3,8 @@ import { ajax } from "discourse/lib/ajax"; export default { list(params) { let filters = []; + if (params.filterCategories) + filters.push(`category=${params.filterCategories}`); if (params.filterTags) filters.push(`tags=${params.filterTags}`); if (params.searchTerm) filters.push(`search=${params.searchTerm}`); if (params.page) filters.push(`page=${params.page}`); diff --git a/assets/javascripts/discourse/templates/components/knowledge-explorer-category.hbs b/assets/javascripts/discourse/templates/components/knowledge-explorer-category.hbs new file mode 100644 index 0000000..1f3185f --- /dev/null +++ b/assets/javascripts/discourse/templates/components/knowledge-explorer-category.hbs @@ -0,0 +1,10 @@ +