Ext.define('ExtMVC.controller.Contacts', { extend : 'Ext.app.Controller', models : [ 'Contact' ], stores : [ 'Contacts' ], views : [ 'contact.Grid', 'contact.Edit', 'contact.Filtro' ], refs : [{ ref : 'contactGrid', selector : 'contactgrid', xtype : 'gridpanel' }, { ref : 'contatoFiltro', xtype : 'contatofiltro', selector : 'contatofiltro' }, { ref : 'contatoFiltrod', xtype : 'contatofiltrod', selector : 'contatofiltrod' } ], dblClickEdit : function (dataview, record, item, index, e, options) { var edit = Ext.create('ExtMVC.view.contact.Edit'); if (record) { edit.down('form').loadRecord(record); } var grid = this.getContactGrid(); var rec = grid.getSelectionModel().getSelection(); }, onButtonClickAdd : function (button, e, options) { this.dblClickEdit(); }, onButtonClickDelete : function (button, e, options) { var grid = this.getContactGrid(), record = grid.getSelectionModel().getSelection(); cont = grid.getSelectionModel().getSelection()[0].data.Name; store = this.getContactsStore(); Ext.MessageBox.show({ title : 'Delete Record', buttons : Ext.MessageBox.YESNO, msg : 'Delete this record ' + cont + '?', icon : Ext.Msg.WARNING, fn : function (btn) { if (btn == 'yes') { store.remove(record); store.sync({ success : function () { store.load(); } }); } } }); }, onButtonClickSave : function (button, e, options) { var win = button.up('window'), form = win.down('form'), record = form.getRecord(); values = form.getValues(); store = this.getContactsStore(); var isNew = false; if (values.ID > 0) { record.set(values); } else { Ext.Ajax.on("beforerequest", function( conn, options, eOpts){ if (options.action=='create') { var newData = values; delete newData.ID; options.jsonData = newData; } }); record = Ext.create('ExtMVC.model.Contact'); record.set(values); store.add(record); isNew = true; } win.close(); Ext.MessageBox.show({ title : 'Save Record', buttons : Ext.MessageBox.YESNO, msg : 'Save this record?', icon : Ext.Msg.WARNING, fn : function (btn) { if (btn == 'yes') { store.sync({ success : function () { if (isNew) { store.load(); } } }); } } }); }, onButtonClickCancel : function (button, e, options) { var win = button.up('window'), form = win.down('form'); form.getForm().reset(); win.close(); }, loadFilter : function (button) { var win = Ext.widget('contatofiltro'); win.show(); }, setFilter : function (btn) { var me = this; var win = btn.up('contatofiltro'); var item = win.down('form').getValues(); var store = me.getContactsStore(); store.remoteFilter = false; store.clearFilter(); store.remoteFilter = true; store.getProxy().extraParams = { where : 'Name LIKE :("' + Ext.getCmp("Fname").value + '%"): AND TimeD=:("' + Ext.Date.format(Ext.getCmp("Ftime").value, "Y-m-d") + '"):' }; var obj = item for (var prop in obj) { var xname = obj.name; var xphone = obj.timed; var xemail = obj.question; } store.filter([ Ext.create('Ext.util.Filter', {property : "Name", value : xname,root : 'values'}), Ext.create('Ext.util.Filter', {property : "TimeD", value : xphone,root : 'values'}), Ext.create('Ext.util.Filter', {property : "Question", value : xemail,root : 'values'}) ]); }, reset : function (btn) { var win = btn.up('contatofiltro'); win.down('form').getForm().reset(); Ext.getCmp('mygrid').getStore().getProxy().extraParams = ''; Ext.getCmp('mygrid').getStore().load(); }, loadFilterData : function (button) { var win = Ext.widget('contatofiltrod'); win.show(); }, setFilterData : function (btn) { var me = this; var win = btn.up('contatofiltrod'); var item = win.down('form').getValues(); var store = me.getContactsStore(); store.remoteFilter = false; store.clearFilter(); store.remoteFilter = true; store.getProxy().extraParams = { where : 'TimeD BETWEEN :("' + Ext.Date.format(Ext.getCmp("startdt").value, "Y-m-d") + '"): AND :("' + Ext.Date.format(Ext.getCmp("enddt").value, "Y-m-d") + '"):' }; var obj = item for (var prop in obj) { var xphone = obj.timed; } store.filter([ Ext.create('Ext.util.Filter', { property : "TimeD", value : xphone, root : 'values' }) ]); }, deleteRange : function (btn) { var me = this; var win = btn.up('contatofiltrod'); var item = win.down('form').getValues(); var store = me.getContactsStore(); store.remoteFilter = false; store.clearFilter(); store.remoteFilter = true; store.getProxy().extraParams = { where : 'TimeD BETWEEN :("' + Ext.Date.format(Ext.getCmp("startdt").value, "Y-m-d") + '"): AND :("' + Ext.Date.format(Ext.getCmp("enddt").value, "Y-m-d") + '"):' }; var obj = item for (var prop in obj) { var xphone = obj.timed; } store.filter([ Ext.create('Ext.util.Filter', { property : "TimeD", value : xphone, root : 'values' }) ]); Ext.MessageBox.show({ title : 'Delete Record', buttons : Ext.MessageBox.YESNO, msg : 'Delete Selection Records', icon : Ext.Msg.WARNING, fn : function (btn) { if (btn == 'yes') { Ext.Ajax.request({ url : ((store.getProxy().api.read + '&where=' + store.getProxy().extraParams.where)), method : 'DELETE', scope : this }); store.sync({ success : function () { store.load(); } }); } } }); }, resetData : function (btn) { var win = btn.up('contatofiltrod'); win.down('form').getForm().reset(); Ext.getCmp('mygrid').getStore().getProxy().extraParams = ''; Ext.getCmp('mygrid').getStore().load(); win.close(); }, init : function (application) { this.control({ "contactgrid dataview" : { itemdblclick : this.dblClickEdit }, "contactgrid button[action=add]": { click: this.onButtonClickAdd }, "contactgrid button[action=delete]" : { click : this.onButtonClickDelete }, "contactform button[action=save]" : { click : this.onButtonClickSave }, "contactform button[action=cancel]" : { click : this.onButtonClickCancel }, "contactgrid button[action=filtrar]" : { click : this.loadFilter }, "contatofiltro button[action=filtrar_busca]" : { click : this.setFilter }, "contatofiltro button[action=reset]" : { click : this.reset }, "contactgrid button[action=filtrar_name]" : { click : this.loadFilterData }, "contatofiltrod button[action=filtrar_buscad]" : { click : this.setFilterData }, "contatofiltrod button[action=deleterange]" : { click : this.deleteRange }, "contatofiltrod button[action=resetd]" : { click : this.resetData } }); } });