44 Zeilen
1,3 KiB
JavaScript
44 Zeilen
1,3 KiB
JavaScript
import { computed, set } from "@ember/object";
|
|
import { alias, equal } from "@ember/object/computed";
|
|
import { newPair, connectorContent, inputTypesContent } from '../lib/mapper';
|
|
|
|
export default Ember.Component.extend({
|
|
classNameBindings: [':mapper-input', 'type'],
|
|
inputType: alias('input.type'),
|
|
isConditional: equal('inputType', 'conditional'),
|
|
hasOutput: alias('options.hasOutput'),
|
|
hasPairs: computed('hasOutput', 'isConditional', function() { return !this.hasOutput || this.isConditional; }),
|
|
connectors: computed(function() { return connectorContent('output', this.input.type, this.options) }),
|
|
inputTypes: computed(function() { return inputTypesContent(this.options) }),
|
|
|
|
actions: {
|
|
addPair() {
|
|
const pairs = this.input.pairs;
|
|
const pairCount = pairs.length + 1;
|
|
|
|
pairs.forEach(p => (set(p, 'pairCount', pairCount)));
|
|
|
|
pairs.pushObject(
|
|
newPair(
|
|
this.input.type,
|
|
Object.assign(
|
|
{},
|
|
this.options,
|
|
{
|
|
index: pairs.length,
|
|
pairCount,
|
|
}
|
|
)
|
|
)
|
|
);
|
|
},
|
|
|
|
removePair(pair) {
|
|
const pairs = this.input.pairs;
|
|
const pairCount = pairs.length - 1;
|
|
|
|
pairs.forEach(p => (set(p, 'pairCount', pairCount)));
|
|
pairs.removeObject(pair);
|
|
}
|
|
}
|
|
});
|