diff --git a/plugins/poll/assets/javascripts/components/poll-breakdown-option.js.es6 b/plugins/poll/assets/javascripts/components/poll-breakdown-option.js.es6 new file mode 100644 index 0000000000..5205adf561 --- /dev/null +++ b/plugins/poll/assets/javascripts/components/poll-breakdown-option.js.es6 @@ -0,0 +1,24 @@ +import I18n from "I18n"; +import Component from "@ember/component"; +import { htmlSafe } from "@ember/template"; +import discourseComputed from "discourse-common/utils/decorators"; +import { getColors } from "../lib/chart-colors"; + +export default Component.extend({ + tagName: "", + + @discourseComputed("option.votes", "totalVotes") + percent(votes, total) { + return I18n.toNumber((votes / total) * 100.0, { precision: 1 }); + }, + + @discourseComputed("optionsCount") + optionColors(optionsCount) { + return getColors(optionsCount); + }, + + @discourseComputed("optionColors", "index") + colorStyle(optionColors, index) { + return htmlSafe(`background: ${optionColors[index]};`); + } +}); diff --git a/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 index 6880b5befc..174436b66f 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 @@ -58,9 +58,9 @@ export default Controller.extend(ModalFunctionality, { })); }, - @discourseComputed("model.poll.options.length") - optionColors(optionsCount) { - return getColors(optionsCount); + @discourseComputed("model.poll.options") + totalVotes(options) { + return options.reduce((sum, option) => sum + option.votes, 0); }, onShow() { diff --git a/plugins/poll/assets/javascripts/discourse/templates/components/poll-breakdown-option.hbs b/plugins/poll/assets/javascripts/discourse/templates/components/poll-breakdown-option.hbs new file mode 100644 index 0000000000..b4f02e1fa8 --- /dev/null +++ b/plugins/poll/assets/javascripts/discourse/templates/components/poll-breakdown-option.hbs @@ -0,0 +1,5 @@ +