mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05: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
3 changed files with 56 additions and 6 deletions
|
@ -7,7 +7,9 @@ export default Em.Component.extend({
|
||||||
|
|
||||||
@computed("poll.voters", "poll.type", "poll.options.[]")
|
@computed("poll.voters", "poll.type", "poll.options.[]")
|
||||||
options(voters, type) {
|
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 ?
|
let percentages = voters === 0 ?
|
||||||
Array(options.length).fill(0) :
|
Array(options.length).fill(0) :
|
||||||
|
@ -35,5 +37,4 @@ export default Em.Component.extend({
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -40,10 +40,8 @@ export default Ember.Component.extend({
|
||||||
didInsertElement() {
|
didInsertElement() {
|
||||||
this._super();
|
this._super();
|
||||||
|
|
||||||
Ember.run.schedule("afterRender", () => {
|
this.set("numOfVotersToShow", Math.round(this.$().width() / 25) * 2);
|
||||||
this.set("numOfVotersToShow", Math.round(this.$().width() / 25) * 2);
|
if (this.get("voterIds").length > 0) this._fetchUsers();
|
||||||
if (this.get("voterIds").length > 0) this._fetchUsers();
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
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 a new issue