diff --git a/assets/javascripts/discourse/components/query-row-content.js b/assets/javascripts/discourse/components/query-row-content.js index 2b66c46..0f95bef 100644 --- a/assets/javascripts/discourse/components/query-row-content.js +++ b/assets/javascripts/discourse/components/query-row-content.js @@ -1,31 +1,14 @@ import Component from "@glimmer/component"; -import { categoryLinkHTML } from "discourse/helpers/category-link"; -import { autoUpdatingRelativeAge } from "discourse/lib/formatter"; -import { convertIconClass, iconHTML } from "discourse-common/lib/icon-library"; import getURL from "discourse-common/lib/get-url"; import { capitalize } from "@ember/string"; -import { htmlSafe } from "@ember/template"; -import { get } from "@ember/object"; -import { isEmpty } from "@ember/utils"; import { escapeExpression } from "discourse/lib/utilities"; import { cached } from "@glimmer/tracking"; import TextViewComponent from "./result-types/text"; export default class QueryRowContent extends Component { - constructor() { - super(...arguments); - - this.helpers = { - "icon-or-image": icon_or_image_replacement, - "category-link": category_badge_replacement, - reltime: bound_date_replacement, - }; - } - @cached get results() { return this.args.columnComponents.map((t, idx) => { - const params = {}; const value = this.args.row[idx], id = parseInt(value, 10); @@ -58,16 +41,10 @@ export default class QueryRowContent extends Component { ctx["target"] = name; } - if (t.name === "category" || t.name === "badge" || t.name === "reltime") { - // only replace helpers if needed - params.helpers = this.helpers; - } - try { return { component: t.component || TextViewComponent, ctx, - params, }; } catch (e) { return "error"; @@ -76,32 +53,6 @@ export default class QueryRowContent extends Component { } } -function icon_or_image_replacement(str, ctx) { - str = get(ctx.contexts[0], str); - if (isEmpty(str)) { - return ""; - } - - if (str.indexOf("fa-") > -1) { - const icon = iconHTML(convertIconClass(str)); - return htmlSafe(icon); - } else { - return htmlSafe(""); - } -} - -function category_badge_replacement(str, ctx) { - const category = get(ctx.contexts[0], str); - return categoryLinkHTML(category, { - allowUncategorized: true, - }); -} - -function bound_date_replacement(str, ctx) { - const value = get(ctx.contexts[0], str); - return htmlSafe(autoUpdatingRelativeAge(new Date(value), { title: true })); -} - function guessUrl(t) { let [dest, name] = [t, t]; diff --git a/assets/javascripts/discourse/components/result-types/badge.hbs b/assets/javascripts/discourse/components/result-types/badge.hbs index dbbfdab..0f662f2 100644 --- a/assets/javascripts/discourse/components/result-types/badge.hbs +++ b/assets/javascripts/discourse/components/result-types/badge.hbs @@ -4,6 +4,6 @@ title={{@ctx.badge.display_name}} data-badge-name={{@ctx.badge.name}} > - {{icon-or-image @ctx.badge.icon}} + {{this.iconOrImageReplacement}} {{@ctx.badge.display_name}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/result-types/badge.js b/assets/javascripts/discourse/components/result-types/badge.js new file mode 100644 index 0000000..b910b73 --- /dev/null +++ b/assets/javascripts/discourse/components/result-types/badge.js @@ -0,0 +1,19 @@ +import Component from "@glimmer/component"; +import { isEmpty } from "@ember/utils"; +import { htmlSafe } from "@ember/template"; +import { convertIconClass, iconHTML } from "discourse-common/lib/icon-library"; + +export default class Badge extends Component { + get iconOrImageReplacement() { + if (isEmpty(this.args.ctx.badge.icon)) { + return ""; + } + + if (this.args.ctx.badge.icon.indexOf("fa-") > -1) { + const icon = iconHTML(convertIconClass(this.args.ctx.badge.icon)); + return htmlSafe(icon); + } else { + return htmlSafe(""); + } + } +} diff --git a/assets/javascripts/discourse/components/result-types/category.hbs b/assets/javascripts/discourse/components/result-types/category.hbs index ddbea9d..d8a7cff 100644 --- a/assets/javascripts/discourse/components/result-types/category.hbs +++ b/assets/javascripts/discourse/components/result-types/category.hbs @@ -1,5 +1,5 @@ {{#if @ctx.category}} - {{category-link @ctx.category}} + {{this.categoryBadgeReplacement}} {{else}} {{@ctx.id}} {{/if}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/result-types/category.js b/assets/javascripts/discourse/components/result-types/category.js new file mode 100644 index 0000000..1515f74 --- /dev/null +++ b/assets/javascripts/discourse/components/result-types/category.js @@ -0,0 +1,10 @@ +import Component from "@glimmer/component"; +import { categoryLinkHTML } from "discourse/helpers/category-link"; + +export default class Category extends Component { + get categoryBadgeReplacement() { + return categoryLinkHTML(this.args.ctx.category, { + allowUncategorized: true, + }); + } +} diff --git a/assets/javascripts/discourse/components/result-types/html.hbs b/assets/javascripts/discourse/components/result-types/html.hbs index ceee2a9..11499e5 100644 --- a/assets/javascripts/discourse/components/result-types/html.hbs +++ b/assets/javascripts/discourse/components/result-types/html.hbs @@ -1 +1 @@ -{{html-safe @textValue}} \ No newline at end of file +{{html-safe @ctx.value}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/result-types/reltime.hbs b/assets/javascripts/discourse/components/result-types/reltime.hbs index 5bdc919..00988d9 100644 --- a/assets/javascripts/discourse/components/result-types/reltime.hbs +++ b/assets/javascripts/discourse/components/result-types/reltime.hbs @@ -1 +1 @@ -{{reltime @textValue}} \ No newline at end of file +{{this.boundDateReplacement}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/result-types/reltime.js b/assets/javascripts/discourse/components/result-types/reltime.js new file mode 100644 index 0000000..431e9df --- /dev/null +++ b/assets/javascripts/discourse/components/result-types/reltime.js @@ -0,0 +1,11 @@ +import Component from "@glimmer/component"; +import { autoUpdatingRelativeAge } from "discourse/lib/formatter"; +import { htmlSafe } from "@ember/template"; + +export default class Reltime extends Component { + get boundDateReplacement() { + return htmlSafe( + autoUpdatingRelativeAge(new Date(this.args.ctx.value), { title: true }) + ); + } +} diff --git a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js index e97bff2..e888118 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js +++ b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js @@ -277,11 +277,6 @@ export default class PluginsExplorerController extends Controller { this.selectedItem.resetParams(); } - @action - saveDefaults() { - this.selectedItem.saveDefaults(); - } - @action updateSortProperty(property) { if (this.sortByProperty === property) {