mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 11:13:22 +08:00
Merge pull request #4351 from tgxworld/allow_non_number_poll_results_to_be_sorted
FEATURE: Allow poll results to be sorted.
This commit is contained in:
commit
8e30ab31c2
|
@ -7,7 +7,9 @@ export default Em.Component.extend({
|
|||
|
||||
@computed("poll.voters", "poll.type", "poll.options.[]")
|
||||
options(voters, type) {
|
||||
const options = this.get("poll.options");
|
||||
const options = this.get("poll.options").slice(0).sort((a, b) => {
|
||||
return a.get("votes") < b.get("votes") ? 1 : 0;
|
||||
});
|
||||
|
||||
let percentages = voters === 0 ?
|
||||
Array(options.length).fill(0) :
|
||||
|
@ -35,5 +37,4 @@ export default Em.Component.extend({
|
|||
|
||||
return options;
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -40,10 +40,8 @@ export default Ember.Component.extend({
|
|||
didInsertElement() {
|
||||
this._super();
|
||||
|
||||
Ember.run.schedule("afterRender", () => {
|
||||
this.set("numOfVotersToShow", Math.round(this.$().width() / 25) * 2);
|
||||
if (this.get("voterIds").length > 0) this._fetchUsers();
|
||||
});
|
||||
this.set("numOfVotersToShow", Math.round(this.$().width() / 25) * 2);
|
||||
if (this.get("voterIds").length > 0) this._fetchUsers();
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
import componentTest from 'helpers/component-test';
|
||||
moduleForComponent('poll-results-standard', { integration: true });
|
||||
|
||||
componentTest('options in descending order', {
|
||||
template: '{{poll-results-standard poll=poll}}',
|
||||
|
||||
setup(store) {
|
||||
this.set('poll', {
|
||||
options: [Em.Object.create({ votes: 5 }), Em.Object.create({ votes: 4 })],
|
||||
voters: 9
|
||||
});
|
||||
},
|
||||
|
||||
test(assert) {
|
||||
assert.equal(this.$('.option .percentage:eq(0)').text(), '56%');
|
||||
assert.equal(this.$('.option .percentage:eq(1)').text(), '44%');
|
||||
}
|
||||
});
|
||||
|
||||
componentTest('options in ascending order', {
|
||||
template: '{{poll-results-standard poll=poll sortResults=sortResults}}',
|
||||
|
||||
setup() {
|
||||
this.set('poll', {
|
||||
options: [Em.Object.create({ votes: 4 }), Em.Object.create({ votes: 5 })],
|
||||
voters: 9
|
||||
});
|
||||
},
|
||||
|
||||
test(assert) {
|
||||
assert.equal(this.$('.option .percentage:eq(0)').text(), '56%');
|
||||
assert.equal(this.$('.option .percentage:eq(1)').text(), '44%');
|
||||
}
|
||||
});
|
||||
|
||||
componentTest('multiple options in descending order', {
|
||||
template: '{{poll-results-standard poll=poll}}',
|
||||
|
||||
setup(store) {
|
||||
this.set('poll', {
|
||||
type: 'multiple',
|
||||
options: [Em.Object.create({ votes: 5 }), Em.Object.create({ votes: 4 })],
|
||||
voters: 9
|
||||
});
|
||||
},
|
||||
|
||||
test(assert) {
|
||||
assert.equal(this.$('.option .percentage:eq(0)').text(), '55%');
|
||||
assert.equal(this.$('.option .percentage:eq(1)').text(), '44%');
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user