github.com/DerekStrickland/consul@v1.4.5/ui-v2/app/controllers/dc/acls/policies/edit.js (about) 1 import Controller from '@ember/controller'; 2 import { inject as service } from '@ember/service'; 3 import { get, set } from '@ember/object'; 4 export default Controller.extend({ 5 builder: service('form'), 6 dom: service('dom'), 7 isScoped: false, 8 init: function() { 9 this._super(...arguments); 10 this.form = get(this, 'builder').form('policy'); 11 }, 12 setProperties: function(model) { 13 // essentially this replaces the data with changesets 14 this._super( 15 Object.keys(model).reduce((prev, key, i) => { 16 switch (key) { 17 case 'item': 18 prev[key] = this.form.setData(prev[key]).getData(); 19 break; 20 } 21 return prev; 22 }, model) 23 ); 24 set(this, 'isScoped', get(model.item, 'Datacenters.length') > 0); 25 }, 26 actions: { 27 change: function(e, value, item) { 28 const form = get(this, 'form'); 29 const event = get(this, 'dom').normalizeEvent(e, value); 30 try { 31 form.handleEvent(event); 32 } catch (err) { 33 const target = event.target; 34 switch (target.name) { 35 case 'policy[isScoped]': 36 set(this, 'isScoped', !get(this, 'isScoped')); 37 set(this.item, 'Datacenters', null); 38 break; 39 default: 40 throw err; 41 } 42 } 43 }, 44 }, 45 });