mirror of
https://github.com/discourse/discourse.git
synced 2025-06-13 18:04:35 +08:00
Merge pull request #4792 from discourse/poll-fixes
FIX: Poll builder validation was incorrect
This commit is contained in:
@ -2,6 +2,7 @@ import { default as computed, observes } from 'ember-addons/ember-computed-decor
|
|||||||
import InputValidation from 'discourse/models/input-validation';
|
import InputValidation from 'discourse/models/input-validation';
|
||||||
|
|
||||||
export default Ember.Controller.extend({
|
export default Ember.Controller.extend({
|
||||||
|
regularPollType: 'regular',
|
||||||
numberPollType: 'number',
|
numberPollType: 'number',
|
||||||
multiplePollType: 'multiple',
|
multiplePollType: 'multiple',
|
||||||
|
|
||||||
@ -10,16 +11,22 @@ export default Ember.Controller.extend({
|
|||||||
this._setupPoll();
|
this._setupPoll();
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("numberPollType", "multiplePollType")
|
@computed("regularPollType", "numberPollType", "multiplePollType")
|
||||||
pollTypes(numberPollType, multiplePollType) {
|
pollTypes(regularPollType, numberPollType, multiplePollType) {
|
||||||
let types = [];
|
let types = [];
|
||||||
|
|
||||||
|
types.push({ name: I18n.t("poll.ui_builder.poll_type.regular"), value: regularPollType });
|
||||||
types.push({ name: I18n.t("poll.ui_builder.poll_type.number"), value: numberPollType });
|
types.push({ name: I18n.t("poll.ui_builder.poll_type.number"), value: numberPollType });
|
||||||
types.push({ name: I18n.t("poll.ui_builder.poll_type.multiple"), value: multiplePollType });
|
types.push({ name: I18n.t("poll.ui_builder.poll_type.multiple"), value: multiplePollType });
|
||||||
|
|
||||||
return types;
|
return types;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@computed("pollType", "regularPollType")
|
||||||
|
isRegular(pollType, regularPollType) {
|
||||||
|
return pollType === regularPollType;
|
||||||
|
},
|
||||||
|
|
||||||
@computed("pollType", "pollOptionsCount", "multiplePollType")
|
@computed("pollType", "pollOptionsCount", "multiplePollType")
|
||||||
isMultiple(pollType, count, multiplePollType) {
|
isMultiple(pollType, count, multiplePollType) {
|
||||||
return (pollType === multiplePollType) && count > 0;
|
return (pollType === multiplePollType) && count > 0;
|
||||||
@ -30,9 +37,9 @@ export default Ember.Controller.extend({
|
|||||||
return pollType === numberPollType;
|
return pollType === numberPollType;
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("isNumber", "isMultiple")
|
@computed("isRegular")
|
||||||
showMinMax(isNumber, isMultiple) {
|
showMinMax(isRegular) {
|
||||||
return isNumber || isMultiple;
|
return !isRegular;
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("pollOptions")
|
@computed("pollOptions")
|
||||||
@ -61,9 +68,9 @@ export default Ember.Controller.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("isMultiple", "isNumber", "pollOptionsCount")
|
@computed("isRegular", "isMultiple", "isNumber", "pollOptionsCount")
|
||||||
pollMinOptions(isMultiple, isNumber, count) {
|
pollMinOptions(isRegular, isMultiple, isNumber, count) {
|
||||||
if (!isMultiple && !isNumber) return;
|
if (isRegular) return;
|
||||||
|
|
||||||
if (isMultiple) {
|
if (isMultiple) {
|
||||||
return this._comboboxOptions(1, count + 1);
|
return this._comboboxOptions(1, count + 1);
|
||||||
@ -72,9 +79,9 @@ export default Ember.Controller.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("isMultiple", "isNumber", "pollOptionsCount", "pollMin", "pollStep")
|
@computed("isRegular", "isMultiple", "isNumber", "pollOptionsCount", "pollMin", "pollStep")
|
||||||
pollMaxOptions(isMultiple, isNumber, count, pollMin, pollStep) {
|
pollMaxOptions(isRegular, isMultiple, isNumber, count, pollMin, pollStep) {
|
||||||
if (!isMultiple && !isNumber) return;
|
if (isRegular) return;
|
||||||
const pollMinInt = parseInt(pollMin) || 1;
|
const pollMinInt = parseInt(pollMin) || 1;
|
||||||
|
|
||||||
if (isMultiple) {
|
if (isMultiple) {
|
||||||
@ -120,9 +127,9 @@ export default Ember.Controller.extend({
|
|||||||
return output;
|
return output;
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("pollOptionsCount", "isNumber", "pollMin", "pollMax")
|
@computed("pollOptionsCount", "isRegular", "isMultiple", "isNumber", "pollMin", "pollMax")
|
||||||
disableInsert(count, isNumber, pollMin, pollMax) {
|
disableInsert(count, isRegular, isMultiple, isNumber, pollMin, pollMax) {
|
||||||
return (pollMin >= pollMax) || (isNumber ? false : (count < 2));
|
return (isRegular && count < 2) || (isMultiple && count < pollMin && pollMin >= pollMax) || (isNumber ? false : (count < 2));
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed("pollMin", "pollMax")
|
@computed("pollMin", "pollMax")
|
||||||
|
@ -4,8 +4,7 @@
|
|||||||
<label class="input-group-label">{{i18n 'poll.ui_builder.poll_type.label'}}</label>
|
<label class="input-group-label">{{i18n 'poll.ui_builder.poll_type.label'}}</label>
|
||||||
{{combo-box content=pollTypes
|
{{combo-box content=pollTypes
|
||||||
value=pollType
|
value=pollType
|
||||||
valueAttribute="value"
|
valueAttribute="value"}}
|
||||||
none="poll.ui_builder.poll_type.regular"}}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if showMinMax}}
|
{{#if showMinMax}}
|
||||||
|
Reference in New Issue
Block a user