Ext.BLANK_IMAGE_URL = '/kelinci/css/extjs/images/default/s.gif';
var UGrid = function () {
var userDS;
var userCM;
var userGrid;
function setDS() {
userDS = new Ext.data.JsonStore({
url: '/kelinci/users/getUserList',
root: 'users',
id: 'id',
totalProperty: 'total',
fields: ['id','username','password','firstname','lastname','email','gender']
})
userDS.load();
}
function getColModel() {
userCM = new Ext.grid.ColumnModel(
[
new Ext.grid.RowNumberer(),
{
header: 'id',
hidden: true,
width: 30,
sortable: true,
dataIndex: 'id'
},
{
header: 'Username',
hidden: false,
width: 120,
sortable: true,
dataIndex: 'username',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField(
{
allowBlank: false
}
)
)
},
{
header: 'Password',
hidden: false,
width: 120,
sortable: true,
dataIndex: 'password',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField(
{
allowBlank: false
}
)
)
},
{
header: 'First Name',
hidden: false,
width: 120,
sortable: true,
dataIndex: 'firstname',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField(
{
allowBlank: false
}
)
)
},
{
header: 'Last Name',
hidden: false,
width: 120,
sortable: true,
dataIndex: 'lastname',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField(
{
allowBlank: false
}
)
)
},
{
header: 'Email',
hidden: false,
width: 100,
sortable: true,
dataIndex: 'email',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField(
{
allowBlank: false
}
)
)
},
{
header: 'Gender',
hidden: false,
width: 50,
sortable: true,
dataIndex: 'gender',
editor: new Ext.grid.GridEditor(
new Ext.form.ComboBox(
{
typeAhead:true,
triggerAction:'all',
lazyRender:true,
transform:'gender'
}
)
)
}
]
);
return userCM;
}
function createGrid() {
userCM = getColModel();
userGrid = new Ext.grid.EditorGridPanel(
{
renderTo: 'usergrid',
title: 'Grid Editor with CakePHP',
ds: userDS,
cm: userCM,
autoSizeColumns: true,
stripeRows: true,
loadMask: true,
width: 700,
height: 300,
selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
viewConfig: {
forceFit:true
},
tbar:
[
{
text:'Add',
tooltip:'Add new user',
iconCls:'add',
handler: function() {
var gridForm = new Ext.BasicForm(
Ext.get("submitgrid"),
{
baseParams: {
'data[User][username]': 'username',
'data[User][password]':'password',
'data[User][firstname]': 'firstname',
'data[User][lastname]': 'lastname',
'data[User][email]':'user@email.com',
'data[User][gender]':'Male'
},
url:'/kelinci/users/add'
}
);
gridForm.submit(
{
waitMsg: 'Saving, please wait...',
success:function(form, action) {
Ext.Msg.alert('Status', 'Add new record saved successfully.');
userDS.load();
},
failure: function(form, action) {
Ext.Msg.alert('Status', 'Add new record failed.');
}
}
);
}
},
{
text:'Remove',
tooltip:'Delete user',
iconCls:'remove',
handler: function() {
var hd = userGrid.getSelectionModel().getSelected().data;
if (hd) {
Ext.MessageBox.confirm('Confirm', 'Are you sure you want to do that?',
function(btn) {
if(btn == 'yes') {
Ext.MessageBox.show({
title: 'Please wait',
msg: 'Deleting...',
progressText: 'Deleting User ...',
width:300,
progress:true,
closable:false
});
Ext.Ajax.request({
url: '/kelinci/users/delete/'+hd.id,
success:function() {
Ext.MessageBox.hide();
Ext.Msg.alert('Status','Config deleted succesfuly ');
userDS.load();
},
failure: function() {
Ext.MessageBox.hide();
Ext.Msg.alert('Status','Oops something wrong with server ??');
}
});
//Ext.Ajax.on('beforerequest', this.showSpinner, this);
}
}
);
}
}
}
]
}
);
userGrid.on({
afteredit: function(e) {
Ext.Ajax.request({
url: '/kelinci/users/edit/'+e.record.data['id'],
method: 'POST',
params: {
'data[User][id]': e.record.data['id'],
'data[User][username]': e.record.data['username'],
'data[User][password]': e.record.data['password'],
'data[User][firstname]': e.record.data['firstname'],
'data[User][lastname]': e.record.data['lastname'],
'data[User][email]': e.record.data['email'],
'data[User][gender]':e.record.data['gender']
},
success:function() {
//userDS.load();
},
failure: function() {
//
}
});
//console.log('e.record.data[\'id\'] = ' + e.record.data['id']);
}
});
}
return {
init : function () {
setDS();
createGrid();
},
getDS : function () {
return userDS;
}
}
}();
Ext.onReady(UGrid.init, UGrid, true);