From 10b7976b1237fe9e3f1f795fe923daab9a25dbd5 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 1 Jul 2020 20:25:13 +0200 Subject: [PATCH] Use dropdown-widget in discourse-poll-grouped-pies --- .../javascripts/widgets/discourse-poll.js.es6 | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index 96f6f32003..dddf8b59c9 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -463,6 +463,7 @@ function transformUserFieldToLabel(fieldName) { createWidget("discourse-poll-grouped-pies", { tagName: "div.poll-grouped-pies", + buildAttributes(attrs) { return { id: `poll-results-grouped-pie-charts-${attrs.id}` @@ -483,14 +484,27 @@ createWidget("discourse-poll-grouped-pies", { icon: "far-eye-slash", action: "toggleGroupedPieCharts" }); - const select = h( - `select#${fieldSelectId}.poll-group-by-selector`, - { value: attrs.groupBy }, - attrs.groupableUserFields.map(field => { - return h("option", { value: field }, transformUserFieldToLabel(field)); - }) + + const select = this.attach("widget-dropdown", { + id: fieldSelectId, + class: "poll-group-by-selector", + translatedLabel: transformUserFieldToLabel(attrs.groupedBy), + content: attrs.groupableUserFields.map(field => ({ + id: field, + translatedLabel: transformUserFieldToLabel(field) + })), + onChange: option => { + this.sendWidgetAction("refreshCharts", option.id); + }, + options: { + caret: true + } + }); + + // TODO: label + contents.push( + h("div.poll-grouped-pies-controls", [btn, "Breakdown", select]) ); - contents.push(h("div.poll-grouped-pies-controls", [btn, select])); ajax("/polls/grouped_poll_results.json", { data: { @@ -557,13 +571,6 @@ createWidget("discourse-poll-grouped-pies", { } }); return contents; - }, - - click(e) { - let select = $(e.target).closest("select"); - if (select.length) { - this.sendWidgetAction("refreshCharts", select[0].value); - } } });