0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-22 09:20:29 +01:00

Handle incorrect data in mapped inputs

Dieser Commit ist enthalten in:
Angus McLeod 2020-04-15 15:41:27 +10:00
Ursprung e285674c8f
Commit 92bd7953f1
3 geänderte Dateien mit 26 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -1,17 +1,26 @@
import { getOwner } from 'discourse-common/lib/get-owner'; import { getOwner } from 'discourse-common/lib/get-owner';
import { newInput, selectionTypes } from '../lib/wizard-mapper'; import { newInput, selectionTypes } from '../lib/wizard-mapper';
import { default as discourseComputed, observes, on } from 'discourse-common/utils/decorators'; import { default as discourseComputed, observes, on } from 'discourse-common/utils/decorators';
import { later } from "@ember/runloop";
import Component from "@ember/component"; import Component from "@ember/component";
import { A } from "@ember/array"; import { A } from "@ember/array";
export default Component.extend({ export default Component.extend({
classNames: 'wizard-mapper', classNames: 'wizard-mapper',
didReceiveAttrs() {
if (this.inputs && this.inputs.constructor !== Array) {
later(() => this.set('inputs', null));
}
},
@discourseComputed('inputs.@each.type') @discourseComputed('inputs.@each.type')
canAdd(inputs) { canAdd(inputs) {
return !inputs || inputs.every(i => { return !inputs ||
return ['assignment','association'].indexOf(i.type) === -1; inputs.constructor !== Array ||
}); inputs.every(i => {
return ['assignment','association'].indexOf(i.type) === -1;
});
}, },
@discourseComputed('options.@each.inputType') @discourseComputed('options.@each.inputType')

Datei anzeigen

@ -22,11 +22,16 @@ function castCase(property, value) {
return property.indexOf('_type') > -1 ? camelCase(value) : value; return property.indexOf('_type') > -1 ? camelCase(value) : value;
} }
function buildProperty(json, property, type) { function buildProperty(json, property, type) {
if (mapped(property, type) && present(json[property])) { let value = json[property];
let inputs = [];
if (mapped(property, type) &&
present(value) &&
value.constructor === Array) {
json[property].forEach(inputJson => { let inputs = [];
value.forEach(inputJson => {
let input = {} let input = {}
Object.keys(inputJson).forEach(inputKey => { Object.keys(inputJson).forEach(inputKey => {
@ -61,7 +66,7 @@ function buildProperty(json, property, type) {
return A(inputs); return A(inputs);
} else { } else {
return json[property]; return value;
} }
} }

Datei anzeigen

@ -34,6 +34,10 @@
.wizard-submissions { .wizard-submissions {
overflow: scroll; overflow: scroll;
table td {
min-width: 150px;
}
} }
.admin-wizards-logs { .admin-wizards-logs {