siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
136 lines (105 loc) • 3.21 kB
JavaScript
Ext.define('AddressBook.controller.Application', {
extend: 'Ext.app.Controller',
config: {
refs: {
main: 'mainview',
editButton: '#editButton',
contacts: 'contacts',
showContact: 'contact-show',
editContact: 'contact-edit',
saveButton: '#saveButton'
},
control: {
main: {
push: 'onMainPush',
pop: 'onMainPop'
},
editButton: {
tap: 'onContactEdit'
},
contacts: {
itemtap: 'onContactSelect'
},
saveButton: {
tap: 'onContactSave'
},
editContact: {
change: 'onContactChange'
},
'#logoutButton': {
tap: function() { this.getApplication().fireEvent('logout'); }
}
}
},
onMainPush: function(view, item) {
var editButton = this.getEditButton();
if (item.xtype == "contact-show") {
this.getContacts().deselectAll();
this.showEditButton();
} else {
this.hideEditButton();
}
},
onMainPop: function(view, item) {
if (item.xtype == "contact-edit") {
this.showEditButton();
} else {
this.hideEditButton();
}
},
onContactSelect: function(list, index, node, record) {
var editButton = this.getEditButton();
if (!this.showContact) {
this.showContact = Ext.create('AddressBook.view.contact.Show');
}
// Bind the record onto the show contact view
this.showContact.setRecord(record);
// Push the show contact view into the navigation view
this.getMain().push(this.showContact);
},
onContactEdit: function() {
if (!this.editContact) {
this.editContact = Ext.create('AddressBook.view.contact.Edit');
}
// Bind the record onto the edit contact view
this.editContact.setRecord(this.getShowContact().getRecord());
this.getMain().push(this.editContact);
},
onContactChange: function() {
this.showSaveButton();
},
onContactSave: function() {
var record = this.getEditContact().saveRecord();
this.getShowContact().updateRecord(record);
this.getMain().pop();
},
showEditButton: function() {
var editButton = this.getEditButton();
if (!editButton.isHidden()) {
return;
}
this.hideSaveButton();
editButton.show();
},
hideEditButton: function() {
var editButton = this.getEditButton();
if (editButton.isHidden()) {
return;
}
editButton.hide();
},
showSaveButton: function() {
var saveButton = this.getSaveButton();
if (!saveButton.isHidden()) {
return;
}
saveButton.show();
},
hideSaveButton: function() {
var saveButton = this.getSaveButton();
if (saveButton.isHidden()) {
return;
}
saveButton.hide();
}
});