github.com/outbrain/consul@v1.4.5/ui-v2/app/controllers/dc/acls/tokens/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 dom: service('dom'), 6 builder: service('form'), 7 isScoped: false, 8 init: function() { 9 this._super(...arguments); 10 this.form = get(this, 'builder').form('token'); 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 case 'policy': 21 prev[key] = this.form 22 .form(key) 23 .setData(prev[key]) 24 .getData(); 25 break; 26 } 27 return prev; 28 }, model) 29 ); 30 }, 31 actions: { 32 sendClearPolicy: function(item) { 33 set(this, 'isScoped', false); 34 this.send('clearPolicy'); 35 }, 36 sendCreatePolicy: function(item, policies, success) { 37 this.send('createPolicy', item, policies, success); 38 }, 39 refreshCodeEditor: function(selector, parent) { 40 if (parent.target) { 41 parent = undefined; 42 } 43 get(this, 'dom') 44 .component(selector, parent) 45 .didAppear(); 46 }, 47 change: function(e, value, item) { 48 const form = get(this, 'form'); 49 const event = get(this, 'dom').normalizeEvent(e, value); 50 try { 51 form.handleEvent(event); 52 } catch (err) { 53 const target = event.target; 54 switch (target.name) { 55 case 'policy[isScoped]': 56 set(this, 'isScoped', !get(this, 'isScoped')); 57 set(this.policy, 'Datacenters', null); 58 break; 59 case 'Policy': 60 set(value, 'CreateTime', new Date().getTime()); 61 get(this, 'item.Policies').pushObject(value); 62 break; 63 case 'Details': 64 // the Details expander toggle 65 // only load on opening 66 if (target.checked) { 67 this.send('refreshCodeEditor', '.code-editor', target.parentNode); 68 if (!get(value, 'Rules')) { 69 this.send('loadPolicy', value, get(this, 'item.Policies')); 70 } 71 } 72 break; 73 default: 74 throw err; 75 } 76 } 77 }, 78 }, 79 });