123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- Ext.require(['Ext.data.*', 'Ext.grid.*']);
- Ext.define('Person', {
- extend: 'Ext.data.Model',
- fields: [{
- name: 'id',
- type: 'int',
- useNull: true
- }, 'email', 'first', 'last'],
- validations: [{
- type: 'length',
- field: 'email',
- min: 1
- }, {
- type: 'length',
- field: 'first',
- min: 1
- }, {
- type: 'length',
- field: 'last',
- min: 1
- }]
- });
- Ext.onReady(function(){
- var store = Ext.create('Ext.data.Store', {
- autoLoad: true,
- autoSync: true,
- model: 'Person',
- proxy: {
- type: 'rest',
- url: 'app.php/users',
- reader: {
- type: 'json',
- root: 'data'
- },
- writer: {
- type: 'json'
- }
- },
- listeners: {
- write: function(store, operation){
- var record = operation.getRecords()[0],
- name = Ext.String.capitalize(operation.action),
- verb;
-
-
- if (name == 'Destroy') {
- record = operation.records[0];
- verb = 'Destroyed';
- } else {
- verb = name + 'd';
- }
- Ext.example.msg(name, Ext.String.format("{0} user: {1}", verb, record.getId()));
-
- }
- }
- });
-
- var rowEditing = Ext.create('Ext.grid.plugin.RowEditing');
-
- var grid = Ext.create('Ext.grid.Panel', {
- renderTo: document.body,
- plugins: [rowEditing],
- width: 400,
- height: 300,
- frame: true,
- title: 'Users',
- store: store,
- iconCls: 'icon-user',
- columns: [{
- text: 'ID',
- width: 40,
- sortable: true,
- dataIndex: 'id'
- }, {
- text: 'Email',
- flex: 1,
- sortable: true,
- dataIndex: 'email',
- field: {
- xtype: 'textfield'
- }
- }, {
- header: 'First',
- width: 80,
- sortable: true,
- dataIndex: 'first',
- field: {
- xtype: 'textfield'
- }
- }, {
- text: 'Last',
- width: 80,
- sortable: true,
- dataIndex: 'last',
- field: {
- xtype: 'textfield'
- }
- }],
- dockedItems: [{
- xtype: 'toolbar',
- items: [{
- text: 'Add',
- iconCls: 'icon-add',
- handler: function(){
- // empty record
- store.insert(0, new Person());
- rowEditing.startEdit(0, 0);
- }
- }, '-', {
- itemId: 'delete',
- text: 'Delete',
- iconCls: 'icon-delete',
- disabled: true,
- handler: function(){
- var selection = grid.getView().getSelectionModel().getSelection()[0];
- if (selection) {
- store.remove(selection);
- }
- }
- }]
- }]
- });
- grid.getSelectionModel().on('selectionchange', function(selModel, selections){
- grid.down('#delete').setDisabled(selections.length === 0);
- });
- });
|