36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
import Component from '@ember/component';
|
|
import { filter } from '@ember/object/computed';
|
|
|
|
const OptionTextComponent = Component.extend({
|
|
tagName: '',
|
|
'value-field': 'value',
|
|
'text-field': 'text',
|
|
didReceiveAttrs() {
|
|
const me = this;
|
|
me._super(...arguments);
|
|
let val = me.get('value');
|
|
if (val) {
|
|
const valueField = me.get('value-field');
|
|
const option = (me.get('options') || []).findBy(valueField, val);
|
|
if (option) {
|
|
let text = option[me.get('text-field')];
|
|
let textExp = me.get('text-exp');
|
|
me.set('text', textExp ?
|
|
textExp.replace('$value', option[valueField])
|
|
.replace('$text', text)
|
|
.replace(/\$\.\w+/g, field => option[field.replace('$.', '')] || '') :
|
|
text);
|
|
}
|
|
else {
|
|
me.set('text', 'N/A');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
OptionTextComponent.reopenClass({
|
|
positionalParams: ['options', 'value', 'value-field', 'text-field', 'text-exp'],
|
|
});
|
|
|
|
export default OptionTextComponent;
|