import Ember from 'ember'; import BaseComponent from './base-component'; export default BaseComponent.extend({ 'allow-blank': true, allowBlank: Ember.computed.alias('allow-blank'), type: 'text', step: 1, // for number 'confirm-update': true, 'on-updated': false, actions: { doEdit() { var me = this; me.set('oldValue', me.getFieldValue()); me.set('isEditing', true) Ember.run.later(() => { Ember.$('input[type="text"][name="' + me.get('model.id') + '"]').focus(); }, 320); }, doUpdate() { let me = this; if (me.get('isUpdating')) { Ember.Logger.info('Cell Is Updating, Ignore.'); return; } me.set('isUpdating', true); let newValue = me.getFieldValue(); if (me.get('oldValue') != newValue) { if (!me.get('allow-blank') && !newValue) { me.get('message').warn('Property could not be blank'); // reset field value me.resetValue(); me.set('isUpdating', false); } else { let service = me.get('service'); let model = me.get('model'); let vr = service.updateValidate(model); if (vr) { Ember.Logger.info('Validate Result: ', vr); me.get('message').warn(Object.keys(vr).map((e)=> { return vr[e]; }).reduce((msg, e)=> { return (msg ? msg + '
' : '') + e.join('
'); }, '')); // reset field value me.resetValue(); me.set('isUpdating', false); } else if (me.get('confirm-update')) { me.get('dialog').confirm('Are you sure to update?', () => { let onUpdated = me.get('on-updated'); onUpdated ? service.update(model).then(r => onUpdated(r)) : service.update(model, true); me.set('isUpdating', false); }, () => { // reset field value me.resetValue(); me.set('isUpdating', false); }); } else { let onUpdated = me.get('on-updated'); onUpdated ? service.update(model).then(r => onUpdated(r)) : service.update(model, true); me.set('isUpdating', false); } } } else { Ember.Logger.info('Field Value Not Changed.') me.set('isUpdating', false); } me.set('isEditing', false); } }, getFieldValue() { return this.get('model.' + this.get('field')); }, resetValue() { let me = this; me.set('model.' + me.get('field'), me.get('oldValue')); } });