lemo-crm/web/app/components/option-text.js
2018-03-18 22:15:30 +08:00

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;