表格面板类id.Panel
Ext.QuickTips.init(); //初始化提示创建表格面板
var grid = ate(id.Panel",{title : 'Grid Demo',frame : true, //面板渲染//forceFit : true, //自动填充列空白处(4.0的选择框有空隙问题时指定宽度)width : 600,height: 280,columns : [ //列模式{text:"Name",dataIndex:'name',width:100},{text:"age",dataIndex:'age',width:100},{text:"email",dataIndex:'email',width:350,field:{ //指定可编辑字段xtype:'textfield', //指定可编辑类型allowBlank:false}}],tbar :[{xtype:'button',text:'添加',iconCls:'table_add'},{xtype:'button',text:'删除',iconCls:'table_remove',handler:function(o){ //var gird = o.findParentByType("gridpanel"); //获取父级var gird = o.ownerCt.ownerCt; //获取删除按钮的父级的父级// 获取选中数据集var data = SelectionModel().getSelection();if(data.length == 0){Ext.Msg.alert("提示","请选择数据");}else{根据name得到数据var st = Store(); //获取数据集var ids = []; //存储被选中数据的name集合Ext.Array.each(data,function(record){ids.('name'));})后台操作(delete)、前端操作DOM进行删除(ExtJs)quest({url:'/extjs/extjs!deleteData.action',params:{ids:ids.join(",")}, //指定要删除数据的name集合method:'POST',timeout:2000, //设定响应等待时间success:function(response,opts){Ext.Array.each(data,function(record){st.remove(record); //从store中删除该条记录})}})}}},{xtype:'button',text:'修改',iconCls:'table_edit'},{xtype:'button',text:'查看',iconCls:'table_comm'}],dockedItems :[{ //可定位的停靠工具条xtype:'pagingtoolbar', //分页工具条store:Ext.data.StoreManager.lookup('s_user'), //指定storedock:'bottom',displayInfo:true //是否展示信息(eg:条数)}],plugins:[ //配置可编辑单元格插件实现grid的编辑ate(id.plugin.CellEditing",{clicksToEdit : 1 //点击N次进入编辑})],selType:'checkboxmodel', //设定选择模式multiSelect:true, //允许多选renderTo :Body(),// 通过指定store的id在StoreManager获取storestore : Ext.data.StoreManager.lookup('s_user')
});
Model类
Ext.define("user",{extend:"Ext.data.Model",fields:[{name:'name',type:'string',sortable:true},{name:'age',type:'int',sortable:true},{name:'email',type:'string',sortable:true}]
});store类
ate("Ext.data.Store",{model:'user',storeId:'s_user', //指定了storeId后store由StoreManager自动管理proxy:{type:'ajax',url:'/extjs/extjs!getUserList.action',reader:{type:'json',root:'root'},writer:{type:'json'}},autoLoad:true //自动加载数据
});
Ext.application({name: 'MyApp',launch: function() {ate(ainer.Viewport', {items: { html: 'My App'}});}
});
<link rel="stylesheet"type="text/css" href="extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="extjs/bootstrap.js"></script>
<script type="text/javascript" src="app.js"></script>
Ext.define(ller.Users', {extend: 'Ext.app.Controller',init:function(){l({ //控制事件等'userlist button[id=delete]':{click:function(o){var gird = o.ownerCt.ownerCt;var data = SelectionModel().getSelection();if(data.length == 0){Ext.Msg.alert("提示","请选择数据");}else{根据name得到数据var st = Store(); //获取数据集var ids = []; //存储被选中数据的name集合Ext.Array.each(data,function(record){ids.('name'));})后台操作(delete)、前端操作DOM进行删除(ExtJs)quest({url:'/extjs/extjs!deleteData.action',params:{ids:ids.join(",")}, //指定要删除数据的name集合method:'POST',timeout:2000, //设定响应等待时间success:function(response,opts){Ext.Array.each(data,function(record){st.remove(record); //从store中删除该条记录})}})}}}});},views:['List'],stores :["Users"],models :["User"]
});
Ext.define("AM.view.List",{extend:id.Panel',title : 'Grid Demo',alias: 'widget.userlist',frame : true, //面板渲染width : 600,height: 280,columns : [ //列模式{text:"Name",dataIndex:'name',width:100},{text:"age",dataIndex:'age',width:100},{text:"email",dataIndex:'email',width:350,field:{xtype:'textfield',allowBlank:false}}],tbar :[{xtype:'button',text:'添加',iconCls:'table_add'},{xtype:'button',id:'delete',text:'删除',iconCls:'table_remove'},{xtype:'button',text:'修改',iconCls:'table_edit'},{xtype:'button',text:'查看',iconCls:'table_comm'}], dockedItems :[{xtype:'pagingtoolbar',store:'Users',dock:'bottom',displayInfo:true}],plugins:[ate(id.plugin.CellEditing",{clicksToEdit : 2 //单击时会报错(ext.js的bug)})],selType:'checkboxmodel', //设定选择模式multiSelect:true, store : 'Users',initComponent:function(){ //初始化组件,进行渲染this.callParent(arguments);}
});
Ext.define('AM.store.Users', {extend: 'Ext.data.Store',model: del.User', //define时的名storeId: 's_user',proxy:{type:'ajax',url:'/extjs/extjs!getUserList.action',reader: {type: 'json',root: 'root'},writer:{type:'json'}},autoLoad: true //自动加载数据(很关键)
});
Ext.define(del.User', {extend: 'Ext.data.Model',fields: [{name: 'name', type: 'string',sortable : true},{name: 'age', type: 'int',sortable : true},{name: 'email', type: 'string',sortable : true}]
});
Ext.define(ller.Users', {extend: 'Ext.app.Controller',init:function(){l({ //控制事件等'userlist button[id=delete]':{click:function(o){var gird = o.ownerCt.ownerCt;var data = SelectionModel().getSelection();if(data.length == 0){Ext.Msg.alert("提示","请选择数据");}else{根据name得到数据var st = Store(); //获取数据集var ids = []; //存储被选中数据的name集合Ext.Array.each(data,function(record){ids.('name'));})后台操作(delete)、前端操作DOM进行删除(ExtJs)quest({url:'/extjs/extjs!deleteData.action',params:{ids:ids.join(",")}, //指定要删除数据的name集合method:'POST',timeout:2000, //设定响应等待时间success:function(response,opts){Ext.Array.each(data,function(record){st.remove(record); //从store中删除该条记录})}})}}},"userlist actioncolumn[id=delete]":{click : function(o,item,rowIndex,colIndex ,e){alert(rowIndex+" "+colIndex);}}});},views:['List'],stores :["Users"],models :["User"]
});
Ext.define("AM.view.List",{extend:id.Panel',title : 'Grid Demo',alias: 'widget.userlist',frame : true, //面板渲染width : 600,height: 280,columns : [ //列模式ate(id.RowNumberer",{}),{text:"Name",dataIndex:'name',width:100},{text:"age",dataIndex:'age',width:100},{text:"email",dataIndex:'email',width:200,field:{xtype:'textfield',allowBlank:false}},{text:'sex',dataIndex:'sex',width:50,DDName:'sy_sex',renderer:function(value){if(value){if(value == "女"){return "<font color='green'>"+value+"</font>"}else if(value == "男"){return "<font color='red'>"+value+"</font>"}}}},{text:'isIt',dataIndex:'isIt',xtype : "booleancolumn",width:50,trueText:'是',falseText:'不是'},{text:'birthday',dataIndex:'birthday',xtype : "datecolumn",width:150,format:'Y年m月d日'},{text:'deposit',dataIndex:'deposit',xtype:'numbercolumn',width:150,format:'0,000'},{text:'描述',xtype:'templatecolumn',tpl:'姓名是{name} 年龄是{age}',width:150},{text:'Action',xtype:'actioncolumn',id:'delete',icon:'app/view/image/table_delete.png',width:50}],tbar :[{xtype:'button',text:'添加',iconCls:'table_add'},{xtype:'button',id:'delete',text:'删除',iconCls:'table_remove'},{xtype:'button',text:'修改',iconCls:'table_edit'},{xtype:'button',text:'查看',iconCls:'table_comm'}], dockedItems :[{xtype:'pagingtoolbar',store:'Users',dock:'bottom',displayInfo:true}],plugins:[ate(id.plugin.CellEditing",{clicksToEdit : 2 //单击时会报错(ext.js的bug)})],selType:'checkboxmodel', //设定选择模式multiSelect:true, store : 'Users',initComponent:function(){ //初始化组件,进行渲染this.callParent(arguments);}
});
Ext.define(del.User', {extend: 'Ext.data.Model',fields: [{name: 'name', type: 'string',sortable : true},{name: 'age', type: 'int',sortable : true},{name: 'email', type: 'string',sortable : true},{name: 'birthday', type: 'string',sortable : true},{name: 'deposit', type: 'int',sortable : true},{name: 'isIt', type: 'string',sortable : true},{name: 'sex', type: 'string',sortable : true}]
});
表格的行体id.feature.RowBody
features: [ate(id.feature.RowBody",{getAdditionalData:function(data,idx,record,orig){ ...... }})
],
var headerCt = this.view.headerCt,colspan = ColumnCount();
return {rowBody: "",rowBodyCls: wBodyCls,rowBodyColspan: colspan
};
features: [{ftype: 'summary'
}],
summaryRenderer: function(value, summaryData, dataIndex) {return Ext.String.format(' : '+value);
}
扩展
代码
Ext.define(ller.Users', {extend: 'Ext.app.Controller',init:function(){l({'userlist':{itemclick:function(View, record, item, index, e, options ){var sm = SelectionModel();//.getSelection(); //alert(CurrentPosition()));sm.selectByPosition({"row":1,"column":2});}},'userlist button[id=selection]':{click:function(o){var gird = o.ownerCt.ownerCt;var sm = SelectionModel();//sm.deselect(0);//LastSelected().get('name'))//alert(sm.isSelected(0));//sm.selectRange(1,2,true);sm.selectByPosition({"row":2,"column":3});}},'userlist button[id=del]':{click:function(o){var gird = o.ownerCt.ownerCt;var data = SelectionModel().getSelection();if(data.length == 0){Ext.Msg.alert("提示","您最少要选择一条数据");}else{//1.先得到ID的数据(name)var st = Store();var ids = [];Ext.Array.each(data,function(record){ids.('name'));})//2.后台操作(delet)quest({url:'/extjs/extjs!deleteData.action',params:{ids:ids.join(",")},method:'POST',timeout:2000,success:function(response,opts){Ext.Array.each(data,function(record){st.remove(record);})}})//3.前端操作DOM进行删除(ExtJs)}}},"userlist actioncolumn[id=delete]":{click : function(o,item,rowIndex,colIndex ,e){alert(rowIndex+" "+colIndex);}}});},views:['List'],stores :["Users"],models :["User"]
});
Ext.define(del.User', {extend: 'Ext.data.Model',fields: [{name: 'name', type: 'string',sortable : true},{name: 'age', type: 'int',sortable : true},{name: 'email', type: 'string',sortable : true},{name: 'birthday', type: 'string',sortable : true},{name: 'deposit', type: 'int',sortable : true},{name: 'isIt', type: 'string',sortable : true},{name: 'sex', type: 'string',sortable : true}]
});
Ext.define('AM.store.Users', {extend: 'Ext.data.Store',model: del.User',storeId: 's_user',groupField : 'sex',proxy:{type:'ajax',url:'/extjs/extjs!getUserList.action',reader: {type: 'json',root: 'topics'},writer:{type:'json'}},autoLoad: true //
});
Ext.define("AM.view.List",{extend:id.Panel',title : 'Grid Demo',//标题alias: 'widget.userlist',frame : true,//面板渲染width : 1100,height: 450,features: [ate(id.feature.RowBody",{getAdditionalData: function(data, idx, record, orig) {var headerCt = this.view.headerCt,colspan = ColumnCount();return {rowBody: ('email'),rowBodyCls: wBodyCls,rowBodyColspan: colspan};}}),{ftype: 'summary'},ate(id.feature.Grouping",{groupByText : "性别分组",groupHeaderTpl : "性别{name} 一共{rows.length}人",showGroupsText : "展示分组"})], columns : [ //列模式ate(id.RowNumberer",{}),{text:"Name",dataIndex:'name',width:100},{text:"age",dataIndex:'age',width:100,summaryType:'average',summaryRenderer: function(value, summaryData, dataIndex) {return Ext.util.Format.number(value,"00.0")} },{text:"email",dataIndex:'email',width:200,field:{xtype:'textfield',allowBlank:false}},{text:'sex',dataIndex:'sex',width:50,DDName:'sy_sex',renderer:function(value){if(value){if(value == "女"){return "<font color='green'>"+value+"</font>"}else if(value == "男"){return "<font color='red'>"+value+"</font>"}}}},{text:'isIt',dataIndex:'isIt',xtype : "booleancolumn",width:50,trueText:'是',falseText:'不是'},{text:'birthday',dataIndex:'birthday',xtype : "datecolumn",width:150,format:'Y年m月d日'},{text:'deposit',dataIndex:'deposit',xtype:'numbercolumn',width:150,format:'0,000'},{text:'描述',xtype:'templatecolumn',tpl:'姓名是{name} 年龄是{age}',width:150},{text:'Action',xtype:'actioncolumn',id:'delete',icon:'app/view/image/table_delete.png',width:50//,
// items :[
// {},{}
// ]
// handler:function(grid,row,col){
// alert(row+" "+col);
// }}],tbar :[{xtype:'button',text:'添加',iconCls:'table_add'},{xtype:'button',id:'del',text:'删除',iconCls:'table_remove'},{xtype:'button',text:'修改',iconCls:'table_edit'},{xtype:'button',text:'查看',iconCls:'table_comm'},{xtype:'button',id:'selection',text:'selection',iconCls:'table_comm'}], dockedItems :[{xtype:'pagingtoolbar',store:'Users',dock:'bottom',displayInfo:true}],plugins:[ate(id.plugin.CellEditing",{clicksToEdit : 2})],//selType:'rowmodel',//设定选择模式selType:'cellmodel',//multiSelect:true,//运行多选//enableKeyNav :true,store : 'Users',initComponent:function(){this.callParent(arguments);}
});
st.sync();
var records = st.getUpdatedRecords();
Ext.Array.each(records,function(model){modelmit();
});
viewConfig:{plugins:[ate(id.plugin.DragDrop', {ddGroup:'ddTree', //拖放组的名称dragGroup :'userlist', //拖拽组名称dropGroup :'userlist' //释放租名称enableDrag:true, //是否启用enableDrop:true})]
}
listeners: {drop: function(node, data, dropRec, dropPosition) {var st = Store();for(i=0;i&Count();i++){st.getAt(i).set('index',i+1);}}
}
dockedItems: [{xtype: 'pagingtoolbar',store: store,dock: 'bottom',displayInfo: true
}],
Ext.Loader.setPath('Ext.ux', '../../../extjs4/examples/ux');
quire(['Ext.ux.data.PagingMemoryProxy','Ext.ux.SlidingPager'
]);
bbar: ate('Ext.PagingToolbar', {pageSize: 10,store: store,displayInfo: true,plugins: ate('Ext.ux.SlidingPager', {}) ---- 重点
})
{text:'other',columns:[{text:"age",dataIndex:'age',width:100,locked : true},{text:"int",dataIndex:'index',width:100}]
}
Ext.define(ller.Users', {extend: 'Ext.app.Controller',init:function(){l({'userlist':{edit:function(editor,e,options){//Model//e.recordmit(); }},'userlist button[id=save]':{click:function(o){var gird = o.ownerCt.ownerCt;var st = Store();st.sync();//数据与后台同步var records = st.getUpdatedRecords();Ext.Array.each(records,function(model){modelmit();}); }},'userlist button[id=delete]':{click:function(o){var gird = o.ownerCt.ownerCt;var data = SelectionModel().getSelection();if(data.length == 0){Ext.Msg.alert("提示","您最少要选择一条数据");}else{//1.先得到ID的数据(name)var st = Store();var ids = [];Ext.Array.each(data,function(record){ids.('name'));})//2.后台操作(delet)quest({url:'/extjs/extjs!deleteData.action',params:{ids:ids.join(",")},method:'POST',timeout:2000,success:function(response,opts){Ext.Array.each(data,function(record){st.remove(record);})}})//3.前端操作DOM进行删除(ExtJs)}}}});},views:['proerty','List'],stores :["Users"],models :["User"]
});
Ext.define(del.User', {extend: 'Ext.data.Model',fields: [{name: 'name', type: 'string',sortable : true},{name: 'age', type: 'int',sortable : true},{name: 'email', type: 'string',sortable : true},{name: 'index', type: 'int',sortable : true}]
});
Ext.define('AM.store.Users', {extend: 'Ext.data.Store',model: del.User',storeId: 's_user',proxy:{type:'ajax',url:'/extjs/extjs!getUserList.action',reader: {type: 'json',root: 'topics'},writer:{type:'json'}},autoLoad: true
});
Ext.define("AM.view.List",{extend:id.Panel',title : 'Grid Demo',//标题alias: 'widget.userlist',frame : true,//面板渲染width : 500,height: 380,columns : [ //列模式//{text:"Name",dataIndex:'name',width:100,locked:true},{text:"Name",dataIndex:'name',width:100},//{text:'others',columns:[{text:"age",dataIndex:'age',width:100,filterable: true,filter: {type: 'numeric'}},{text:"email",dataIndex:'email',width:250,field:{xtype:'textfield',allowBlank:false}},{text:'index',dataIndex:'index',width:100} //]}],features: [ate("AM.util.filters")],tbar :[{xtype:'button',text:'添加',iconCls:'table_add'},{xtype:'button',id:'delete',text:'删除',iconCls:'table_remove'},{xtype:'button',text:'修改',iconCls:'table_edit'},{xtype:'button',text:'查看',iconCls:'table_comm'},{xtype:'button',text:'save',id:'save',iconCls:'table_comm'}], dockedItems :[{xtype:'pagingtoolbar',store:'Users',dock:'bottom',displayInfo:true,plugins: ate('Ext.ux.SlidingPager', {}) }],//plugins:[
// ate(id.plugin.CellEditing",{
// clicksToEdit : 2
// })
// ate(id.plugin.RowEditing', {
// clicksToEdit: 1
// })//],viewConfig:{plugins:[ate(id.plugin.DragDrop', {ddGroup:'ddTree', //拖放组的名称dragGroup :'userlist', //拖拽组名称dropGroup :'userlist', //释放租名称enableDrag:true, //是否启用enableDrop:true})],listeners: {drop: function(node, data, dropRec, dropPosition) {var st = Store();for(i=0;i&Count();i++){st.getAt(i).set('index',i+1);}}} }, //selType:'checkboxmodel',//设定选择模式//multiSelect:true,//运行多选store : 'Users',initComponent:function(){this.callParent(arguments);}
});
Ext.define("AM.view.dd",{extend:id.plugin.DragDrop',alias: 'widget.dd',ddGroup:'ddTree',dragGroup :'userlist',dropGroup :'userlist',initComponent:function(){this.callParent(arguments);}
})
Ext.define("AM.view.proerty",{extend:id.property.Grid',title: 'Properties Grid',alias: 'widget.proList',width: 300,//自定义渲染的函数customRenderers :{'boy':function(value){return value?'是':'否'},'emial-width':function(value){return value;}},source: {'boy':false,'emial-width':'100'}
})
Ext.define("AM.util.filters",{alias: 'widget.filters',ftype: 'filters',encode: false, local: true, filters: [{type: 'boolean',dataIndex: 'visible'}]
})
Ext.define(ller.deptController', {extend: 'Ext.app.Controller',init:function(){l({"deptTree button[id=allopen]":{click:function(b,e){var tree = b.ownerCt.pandAll();} }, "deptTree button[id=allclose]":{click:function(b,e){var tree = b.ownerCt.llapseAll();} },"deptTree button[id=add]":{click:function(b,e){var tree = b.ownerCt.ownerCt;var nodes = Checked();if(nodes.length == 1){var node = nodes[0];node.appendChild({checked:true,text:'技术架构组',id : '0103',leaf:true });}else{alert("请您选择一个节点");}}},"deptTree":{itemclick:function(tree,record,item,index,e,options){('id'));}}});},views:['deptView'],stores :['deptStore'],models :[]
});
Ext.define("AM.store.deptStore",{extend:'Ext.data.TreeStore',defaultRoodId:'root',proxy:{type:'ajax',url:'/extjs/extjs!getDept.action',reader:'json',autoLoad:true}
});
Ext.define("AM.view.deptView",{extend:Panel',alias: 'widget.deptTree',title : '部门树形',width : 250,height: 300,padding : '5 3 3 10',rootVisible : false,//控制显隐的属性dockedItems:[{xtype:'toolbar',dock:'left',//ui:'footer',items:[{xtype:'button',text:'add',id:'add'},{xtype:'button',text:'copy',id:'copy'},{xtype:'button',text:'delete',id:'delete'}]},{xtype:'toolbar',items:[{xtype:'button',id:'allopen',text:'展开全部'},{xtype:'button',id:'allclose',text:'收起全部'}]}],store:'deptStore'
// root:{
// text:'root',
// id : '0',
// leaf:false,
// children:[{
// text:'技术部门',
// checked:false,
// id : '01',
// leaf:false,
// children:[{
// checked:false,
// text:'研发部',
// id : '0101',
// leaf:true
// },{
// checked:false,
// text:'实施部',
// id : '0102',
// leaf:true
// }]
// },{
// text:'后勤部门',
// id : '02',
// checked:false,
// leaf:false,
// children:[{
// text:'人事部',
// id : '0201',
// checked:false,
// leaf:true
// },{
// text:'行政部',
// id : '0202',
// checked:false,
// leaf:true
// }]
// }]
// }
});
viewConfig:{plugins :{ptype:'treeviewdragdrop'}
},
listeners: {drop: function(node, data, dropRec, dropPosition) {},beforedrop:function(node,data,overModel,dropPosition,dropFunction,options ){ }
}
Ext.define(ller.deptController', {extend: 'Ext.app.Controller',init:function(){l({'deptTree':{checkchange : function(node,checked,options){if(node.data.leaf == false){//不是叶子if(checked){//打开节点pand();//遍历孩子node.eachChild(function(n){n.data.checked = true;n.updateInfo({checked:true});})}pand();node.eachChild(function(n){n.data.checked = false;n.updateInfo({checked:false});}) }}else{//单击叶子if(!checked){node.parentNode.data.checked = false;node.parentNode.updateInfo({checked:false});}}}},'deptTree button[id=delete]':{click:function(b,e){var tree = b.ownerCt.ownerCt;var nodes = Checked();for(i=0;i<nodes.length;i++){nodes[i].remove(true);}}},'deptTree button[id=copy]':{click:function(b,e){var tree = b.ownerCt.ownerCt;//得到数据集合var nodes = Checked();if(nodes.length>0){//把数据放到剪切板中tree.setCopyNodes(Ext.clone(nodes));alert("拷贝"+nodes.length+"个节点");for(i=0;i<nodes.length;i++){nodes[i].data.checked = false;nodes[i].updateInfo();}}} },"deptTree button[id=paste]":{click:function(b,e){var tree = b.ownerCt.ownerCt;//被追加孩子的节点集合var checkednodes = Checked();if(checkednodes.length == 1){//被追加孩子的节点var node = checkednodes[0];//去剪切板中区数据var nodes = CopyNodes();if(nodes.length>0){for(i=0;i<nodes.length;i++){var n = nodes[i].data;n['id'] = n['id']+'1';node.appendChild(n);}}}else{alert("剪切板中无数据或者你没有选择要追加孩子的节点");}} },"deptTree button[id=allopen]":{click:function(b,e){var tree = b.ownerCt.pandAll();} }, "deptTree button[id=allclose]":{click:function(b,e){var tree = b.ownerCt.llapseAll();} },"deptTree button[id=add]":{click:function(b,e){var tree = b.ownerCt.ownerCt;var nodes = Checked();if(nodes.length == 1){var node = nodes[0];node.appendChild({checked:true,text:'技术架构组',id : '0103',leaf:true });}else{alert("请您选择一个节点");}}}//,
// "deptTree":{
// itemclick:function(tree,record,item,index,e,options){
// ('id'));
// }
// }});},views:['deptView'],stores :['deptStore'],models :['deptModel']
});
Ext.define(del.deptModel', {extend: 'Ext.data.Model',fields: [{name: 'text', type: 'string',sortable : true},{name: 'id', type: 'string',sortable : true}]
});
Ext.define("AM.store.deptStore",{extend:'Ext.data.TreeStore',defaultRoodId:'root',model:del.deptModel',proxy:{type:'ajax',url:'/extjs/extjs!getDept.action',reader:'json',autoLoad:true}
});
Ext.define("AM.view.deptView",{extend:Panel',alias: 'widget.deptTree',title : '部门树形',width : 350,height: 300,padding : '5 3 3 10',rootVisible : false,//控制显隐的属性config:{copyNodes:''//他充当剪切板的作用},columns:[{xtype:'treecolumn',text:'text',writh:150,dataIndex:'text'},{text:'info',dataIndex:'id'}],viewConfig:{plugins :{ptype:'treeviewdragdrop',appendOnly : true},listeners:{drop:function( node, data, overModel, dropPosition, options){//ajax的操作把数据同步到后台数据库alert("把: "ds[0].get('text')+" 移动到: "('text')); },beforedrop:function( node, data, overModel, dropPosition, dropFunction, options){
// ("leaf")){
// overModel.set('leaf',false)
// }}}}, dockedItems:[{xtype:'toolbar',dock:'left',items:[{xtype:'button',text:'add',id:'add'},{xtype:'button',text:'copy',id:'copy'},{xtype:'button',text:'delete',id:'delete'},{xtype:'button',text:'paste',id:'paste'}]},{xtype:'toolbar',items:[{xtype:'button',id:'allopen',text:'展开全部'},{xtype:'button',id:'allclose',text:'收起全部'}]}],store:'deptStore'
});
/*** ClassName 部门管理控制器*/
Ext.define(ller.DeptController",{extend:'Ext.app.Controller',ate("AM.util.GridDoActionUtil"),init: function(){GridObj = function(buttion){return buttion.ownerCt.ownerCt;};TreeObj = function(buttion){return buttion.ownerCt.ownerCt.ownerCt.ownerCt.child('#west-tree').child("#dept-tree");};l({'depTree':{itemclick:function(tree,record,item,e,opti){/*** 1.得到单击节点的ID* 2.发到后台重新查询数据load表盒 where id="A0"* 3.oracle 那就用递归查询* .htm*///("id"))/*** 1.得到节点ID和子节点的ID* 2.发到后台重新查询数据load表盒 where id in ("A0","A01010");*/llapse(function(){return true;},function(node){console.log(node);})//grid.load({whereSql:'in ('A0')'})}},'deptlist button[id=delete]':{click:function(deleteButton){var grid = GridObj(deleteButton);var tree = TreeObj(deleteButton);this.GridDoActionUtil.doDelete(grid,tree);}},//第二讲中修改'deptlist button[id=save]':{click:function(saveButton){var grid = GridObj(saveButton);var tree = TreeObj(saveButton);this.GridDoActionUtil.doSave(grid,tree);}},//设定列表添加按钮的事件'deptlist button[id=add]':{click:function(addButton){//得到数据表格的对象var grid = GridObj(addButton);var modelObj = {text: '',id: 'A01',info :'',orderIndex:0,manager:'',nodeType:'ROOT',leaf : true};//得到treevar tree = TreeObj(addButton);this.GridDoActionUtil.doInsert(grid,modelObj,tree);}}})},views:['DeptTree','DeptList','MainLayout'],stores:['DeptStore4Tree','DeptStore'],models:[//'DeptModel']
});
/*** ClassName 部门的实体* text : 部门的名称* id : id主键* info : 信息* orderIndex : 排序字段* manager : 部门的经理* nodeType : 节点类型* leaf : 是否叶子*/
Ext.define(del.DeptModel",{extend:'Ext.data.Model',fields:[{name:'text',type:'string'},{name:'id',type:'string'},{name:'info',type:'string'},{name:'orderIndex',type:'int'},{name:'manager',type:'string'},{name:'nodeType',type:'string'},{name:'leaf',type:'string'}]
});
/*** ClassName 部门实体数据集*/
Ext.define("AM.store.DeptStore",{extend:'Ext.data.Store',//model:del.DeptModel',model : ModelByName(del.DeptModel"),proxy:{api:{update:'/extjs/extjs!updateDeptList.action',remove:'/extjs/extjs!updateDeptList.action'},type:'ajax',url:'/extjs/extjs!readDeptForGrid.action',reader:{type:'json',root:'topics'},writer:{type:'json'}},autoLoad:true
});
Ext.define("AM.store.DeptStore4Tree",{extend:'Ext.data.TreeStore',defaultRootId : 'root',proxy:{type:'ajax',url:'/extjs/extjs!readDeptTree.action',reader:'json'}
});
/*** ClassName 部门管理数据列表视图*/
Ext.define("AM.view.DeptList",{extend:id.Panel',alias:'widget.deptlist',store:'DeptStore',width:540,height:400,selModel:{selType:'checkboxmodel'},border:0,multiSelect: true,frame:true,tbar:[{xtype:'button',text:'添加',id:'add',iconCls:'table_add'},{xtype:'button',text:'删除',id:'delete',iconCls:'table_remove'},{xtype:'button',text:'保存',id:'save',iconCls:'table_save'}],dockedItems:[{xtype:'pagingtoolbar',store:'DeptStore',dock:'bottom',displayInfo:true}],enableKeyNav:true,columnLines: true,columns:[{text:'部门名称',dataIndex:'text',width:100,field:{xtype:'textfield',allowBlank:false}},{text:'部门经理',dataIndex:'manager',width:100,field:{xtype:'textfield',allowBlank:false} },{text:'顺序排序',dataIndex:'orderIndex',width:100},{text:'只能简介',dataIndex:'info',width:100}],initComponent:function(){this.editing = ate(id.plugin.CellEditing");this.plugins = [this.editing];this.callParent(arguments)}
});
Ext.define("AM.view.DeptTree",{extend:Panel',alias:'widget.depTree',rootVisible:false,//不展示ROOTdisplayField:'text',animate:false,store:'DeptStore4Tree'
})
Ext.define("AM.view.MainLayout",{extend:'Ext.panel.Panel',alias:'widget.mainlayout',defaults:{split:true,bodyStyle:'padding:1px'},layout:'border',items:[{title:'部门树形',region:'west',iconCls:'dept_tree',xtype:'panel',margins:'5 2 5 5',width: 200,collapsible:true,//可以被折叠id:'west-tree',layout:'fit',items:[{xtype:'depTree',id:'dept-tree'}]},{title:'部门数据表格',iconCls:'dept_table',region:'center',xtype:'panel',id:'center-grid',margins:'5 5 5 0',layout:'fit',items:[{id:'dept-grid',xtype:'deptlist'}]}]
});
/*** 工厂类*/
Ext.define(delFactory",{//数据类模型的集合models:new Ext.util.MixedCollection(),//字段集合fields:new Ext.util.MixedCollection(),getModelByName:function(modelName){//1.声明类,返回类的ainsKey(modelName)){return modelName;}else{//ajax拿到我们的字段集合var fields = [];if(ainsKey(modelName)){fields = ainsKey(modelName)}else{quest({url:'/extjs/extjs!getModelFields.action?modelName='+modelName,method:'POST',timeout:4000,async:false,//跟关键 我不需要异步操作success:function(response,opts){fields = sponseText);}});}this.fields.add(modelName,fields);var newModel = Ext.define(modelName,{extend:'Ext.data.Model',fields:fields});dels.add(modelName,newModel);return modelName;}}
});
var modelFactory = ate(delFactory',{});
Ext.define("AM.util.GridDoActionUtil",{doDelete:function(grid,treeObj){if(!grid){alert("参数传递不正确");return;}//得到数据集合var store = Store(); var records = SelectionModel().getSelection();var data = [];Ext.Array.each(records,function(model){data.push(('id')));}); if(data.length > 0){quest({Proxy().api['remove'],params:{data:"["+data.join(",")+"]"},method:'POST',timeout:4000,success:function(response,opts){Ext.Array.each(records,function(model){//tree删除节点var node = Store().('id'));var parentNode = node.parentNode;ve(true);if(parentNode){if(!ChildAt(0)){parentNode.data['leaf'] = true;parentNode.updateInfo();}}}catch(e){console.log(e);}//表格删除数据ve(model); })}})}},/*** 列表的批量修改* @param {} grid* @param {} treeObj*/doSave:function(grid,treeObj){if(!grid){alert("参数传递不正确");return;} //得到数据集合var store = Store();//records 被你修改过的数据var records = UpdatedRecords();var data = [];Ext.Array.each(records,function(model){data.push(de(model.data));});//异步的操作数据
// Proxy().update(new Ext.data.Operation({
// action:'update'
// }));if(data.length > 0){quest({Proxy().api['update'],params:{data:"["+data.join(",")+"]"},method:'POST',timeout:4000,success:function(response,opts){console.sponseText);Ext.Array.each(records,function(model){var node = Store().('id'));node.data['text'] = ('text');node.updateInfo();//取消小箭头modelmit();});}});}},/*** 树形维护表格的插入操作* @param {} grid* @param {} modelObj* @param {} treeObj*/doInsert:function(grid,modelObj,treeObj){if(!(grid && modelObj)){alert("参数传递不正确");return;}//得到表格数据集合var store = Store();//得到目前表格的数据集合长度var storeCount = Count();//得到编辑插件var edit = grid.editing;//得到数据模型var model = del;if(storeCount == 0){//证明添加的节点是ROOT//初始化一个模型的类var deptObj = new model(modelObj);edit.cancelEdit();//取消其他插件的编辑活动store.insert(0,deptObj);edit.startEditByPosition({row:0,column:1});if(treeObj){//我们需要树形操作var rootNode = Store().getRootNode();rootNode.appendChild({id:modelObj["id"],text:modelObj["text"],leaf:modelObj["leaf"]});}}else{//得到被选择的数据集合var checkedRecords = SelectionModel().getSelection();if(checkedRecords.length == 1){var parentRecord = checkedRecords[0];modelObj['nodeType'] = 'GENERAL';//第二讲中改********************************modelObj['id'] = 'A010101';//得到父节点var parentNode = Store().('id'));try{parentNode.data['leaf'] = false;parentNode.updateInfo();//给它加一个孩子节点parentNode.appendChild({id:"A010101",text:'',leaf:true}); pand();}catch(e){}edit.cancelEdit();//取消其他插件的编辑活动var deptObj = new model(modelObj);store.insert(0,deptObj);edit.startEditByPosition({row:0,column:1});}else{alert("请选择1个父级部门,您现在选择的是["+checkedRecords.length+"]个");}}}
});
.dept_table{background-image: url(/Learning-extjs4.0/lesson/18/resources/img/dept_table.png) !important;
}
.dept_tree{background-image: url(/Learning-extjs4.0/lesson/18/resources/img/dept_tree.png) !important;
}
.table_remove{background-image: url(/Learning-extjs4.0/lesson/18/resources/img/table_remove.gif) !important;
}
.table_add{background-image: url(/Learning-extjs4.0/lesson/18/resources/img/table_add.png) !important;
}
.table_save{background-image: url(/Learning-extjs4.0/lesson/18/resources/img/tabel_save.png) !important;
}
<%@ page language="java" contentType="text/html; charset=GBk"pageEncoding="GBK"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.hd.util.RandomFileRenamePolicy" %>
<%@page import=illy.servlet.*"%>
<%//----------------------------------------//----------------------------------------String root = Session().getServletContext().getRealPath("/");String savePath = root + "file-library\";int maxPostSize = 3 * 5 * 1024 * 1024;RandomFileRenamePolicy frp = new RandomFileRenamePolicy();MultipartRequest multi = new MultipartRequest(request, savePath, maxPostSize, "utf-8",frp);String fieldIds = "";//取得所有已上传文件的名字,返回枚举类型。Enumeration filesName = FileNames();//遍历返回的枚举类型,COS可以上传多个文件,当表单中有多个文本域标签时,使用while关键字遍历.long l = 0L;String fileType = null;String fileName = null;while(filesName.hasMoreElements()){//当发现枚举类型中包含文件对象,获取文件对象在枚举中的名字String fname = (Element();//通过名字获取文件,返回java文件对象File file = File(fname);//判断是否获得到文件if(file != null){//获取文件的真实名字(以便能存储到数据库中)fileName = FilesystemName(fname);fileType = fileName.substring(fileName.lastIndexOf(".")+1);RandomAccessFile raFile = new RandomAccessFile(new File(savePath+fileType+"\"+fileName),"r"); l = raFile.length(); fieldIds = fieldIds + fileName+",";}}fieldIds = fieldIds.substring(0,fieldIds.length()-1);response.setContentType("text/html;charset=GBK");Writer().print("{'address':'"+RandomFileRenamePolicy.fp+"','docName':'"+RandomFileRenamePolicy.fn+"','fileType':'"+fileType+"','docCode':'"+fileName+"','size':'"+l+"','success':true,'message':'上传成功','ids':'"+fieldIds+"'}");
%>
var dataStore = ate("Ext.data.Store",{fields:['name','data'],data:[{name:'0~10岁',data:120},{name:'11~18岁',data:170},{name:'19~24岁',data:175}]
});
var b1 = ate("Ext.Window",{width:600,height:500,title:'年龄身高分布图',shadow:false,maximizable:true,layout:'fit',items:[{xtype:'chart',style:'background:#fff',//控制背景颜色animate :true,//运行动画shadow : true,theme:"Category1",//皮肤store:dataStore,axes:[{type:'Numeric',position:'left',//放置到左边dashSize:5,//引导线的宽度设置title:'身高分布(CM)',fields:['data'],//显示的数据索引majorTickSteps:5,minorTickSteps:6,grid:{odd:{//奇数行opacity:1,//不透明'stroke-width':0.5//表格线宽},even:{//偶数行opacity:1,//不透明stroke:'#DDD','stroke-width':0.5//表格线宽}}},{type:'Category',position:'bottom',fields:['name'],title:'年龄段',grid:true}],//轴series:[{type:'line',axis:'left',xField: 'name',yField: 'data',highlight:true,tips:{trackMouse: true,width: 140,height: 28,renderer: function(storeItem, item) {this.('name') + ': ' ('data') + 'CM');}}}]//序列}]
});
//定义数据集合var columnStore1 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:20},{name:"11~18岁",data:60},{name:"19~24岁",data:30}]});var b2 = ate('Ext.Window', {width: 800,height: 600,hidden: false,closeAction:'hide',maximizable: true,title: '柱形图展示图表',layout: 'fit',tbar: [{text: '改变数据',handler: function() {columnStore1.loadData([{name:"0~10岁",data:50},{name:"11~18岁",data:30},{name:"19~24岁",data:20}]);}}],items: {id: 'chartCmp',xtype: 'chart',style: 'background:#fff',animate: true,shadow: true,store: columnStore1,axes: [{//轴type: 'Numeric',position: 'left',fields: ['data'],title: '人数',grid: true,minimum: 0}, {type: 'Category',position: 'bottom',fields: ['name'],title: '年龄段'}],//序列series: [{type: 'column',axis: 'left',highlight: true,tips: {//提示trackMouse: true,width: 140,height: 28,renderer: function(storeItem,item) {this.('name') + ': ' + ('data') + ' 名'); }},//格式化renderer: function(sprite, record, attr, index, store){var fieldValue = Math.random() * 20 + 10;var value = (('data') >> 0) % 3;var color = ['rgb(213, 70, 121)', 'rgb(44, 153, 201)', 'rgb(146, 6, 157)', 'rgb(49, 149, 0)', 'rgb(249, 153, 0)'][value];return Ext.apply(attr, {fill: color});} , label: { //控制柱形图labeldisplay: 'insideEnd','text-anchor': 'middle',field: 'data',renderer: Ext.util.Format.numberRenderer('0'),orientation: 'vertical',color: '#333'},xField: 'name',yField: 'data'}]}});
//定义数据集合var columnStore2 = ate('Ext.data.JsonStore', {fields: ['name', 'data1','data2','data3','data4'],data: [{name:"一月月考",data1:85,data2:76,data3:94,data4:80},{name:"二月月考",data1:96,data2:72,data3:87,data4:63},{name:"三月月考",data1:70,data2:66,data3:68,data4:78},{name:"四月月考",data1:90,data2:78,data3:76,data4:90}]});
var b3 = ate('Ext.Window', {width: 800,height: 600,hidden: false,maximizable: true,closeAction:'hide',title: 'Line Chart',renderTo: Body(),layout: 'fit',tbar: [{text: '产看另外一个人的成绩',handler: function() {columnStore2.loadData([{name:"一月月考",data1:75,data2:86,data3:84,data4:90},{name:"二月月考",data1:86,data2:62,data3:87,data4:93},{name:"三月月考",data1:80,data2:96,data3:68,data4:98},{name:"四月月考",data1:60,data2:98,data3:76,data4:60}]);}}],items: {xtype: 'chart',style: 'background:#fff',animate: true,store: columnStore2,shadow: true,//阴影
// mask: 'horizontal',//创建遮罩
// listeners: {//配合遮罩用的隐藏
// select: {
// fn: function(me, selection) {
// //me.setZoom(selection);
// me.mask.hide();
// }
// }
// }, theme: 'Category1',legend: {position: 'right'},axes: [{//轴type: 'Numeric',minimum: 0,position: 'left',fields: ['data1', 'data2', 'data3', 'data4'],title: '分数',minorTickSteps: 1,//内部去也的跨度grid: {odd: {opacity: 1,fill: '#ddd',stroke: '#bbb','stroke-width': 0.5}}}, {type: 'Category',position: 'bottom',fields: ['name'],title: '历次考试'}],series: [{//序列1type: 'line',highlight: {size: 7,radius: 7},axis: 'left',xField: 'name',yField: 'data1',//展示在图例上的title :'语文',markerConfig: {//标记配置type: 'cross',//交叉size: 4,radius: 4,'stroke-width': 0}},{//序列2type: 'line',highlight: {size: 7,radius: 7},axis: 'left',xField: 'name',yField: 'data2',title :'数学',markerConfig: {type: 'cross',size: 4,radius: 4,'stroke-width': 0}}, {type: 'line',highlight: {size: 7,radius: 7},axis: 'left',//位置smooth: true,xField: 'name',yField: 'data3',title :'英语',markerConfig: {type: 'cross',size: 4,radius: 4,'stroke-width': 0}}, {type: 'line',highlight: {size: 7,radius: 7},axis: 'left',smooth: true,fill: true,//填充颜色xField: 'name',yField: 'data4',title :'计算机',markerConfig: {type: 'circle',//圈size: 4,radius: 4,'stroke-width': 0}}]}});
var columnStore5 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:20},{name:"11~18岁",data:60},{name:"19~24岁",data:30}]});
var b4 = ate('Ext.Window', {width: 800,height: 600,title: '饼图示例',layout: 'fit',closeAction:'hide',tbar: [{text: '数据变换',handler: function() {columnStore5.loadData([{name:"0~10岁",data:40},{name:"11~18岁",data:20},{name:"19~24岁",data:40}]);}}, {enableToggle: true,pressed: false,text: 'Donut(设置内圆)',toggleHandler: function(btn, pressed) {var chart = Cmp('chartCmp');//设置图标序列的模式chart.series.first().donut = pressed ? 35 : false;//内弧度fresh();}}],items: {xtype: 'chart',id: 'chartCmp',animate: true,store: columnStore5,shadow: true,legend: {position: 'right'},insetPadding: 60,theme: 'Base:gradients',series: [{type: 'pie',field: 'data',showInLegend: true,donut: false,//内环状线圈tips: {//提示trackMouse: true,width: 140,height: 28,renderer: function(storeItem, item) {var total = 0;columnStore5.each(function(rec) {total += ('data');});this.('name') + ': ' + ('data')/total*100)+ '%');}},highlight: {//高亮segment: {margin: 20}},label: {field: 'name',display: 'rotate',contrast: true,font: '18px Arial'}}]}});
var columnStore6 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:122},{name:"11~18岁",data:163},{name:"19~24岁",data:234},{name:"15~35岁",data:737},{name:"36~42岁",data:453},{name:"43~60岁",data:540}]});
var b5 = ate('Ext.Window', {width: 800,height: 600,hidden: false,maximizable: true,title: 'Bar Renderer',renderTo: Body(),layout: 'fit',tbar: [{text: '重新装载数据',handler: function() {columnStore6.loadData( [{name:"0~10岁",data:221},{name:"11~18岁",data:363},{name:"19~24岁",data:135},{name:"15~35岁",data:432},{name:"36~42岁",data:756},{name:"43~60岁",data:649}]);}}],items: {xtype: 'chart',animate: true,style: 'background:#fff',shadow: false,//阴影store: columnStore6,axes: [{type: 'Numeric',position: 'bottom',fields: ['data'],label: {renderer: Ext.util.Format.numberRenderer('0,0')},title: '人数',minimum: 0}, {type: 'Category',position: 'left',fields: ['name'],title: '年龄分布'}],series: [{type: 'bar',axis: 'bottom',label: {display: 'insideEnd',field: 'data1',renderer: Ext.util.Format.numberRenderer('0'),orientation: 'horizontal',color: '#333','text-anchor': 'middle',contrast: true},xField: 'name',yField: ['data'],renderer: function(sprite, record, attr, index, store) {var fieldValue = Math.random() * 20 + 10;var value = (('data') >> 0) % 5;var color = ['rgb(213, 70, 121)', 'rgb(44, 153, 201)', 'rgb(146, 6, 157)', 'rgb(49, 149, 0)', 'rgb(249, 153, 0)'][value];return Ext.apply(attr, {fill: color});}}]}});
//Ready(function () {var columnStore7 = ate('Ext.data.JsonStore', {fields: ['name', 'data1','data2','data3','data4'],data: [{name:"一月月考",data1:85,data2:76,data3:94,data4:80},{name:"二月月考",data1:96,data2:72,data3:87,data4:63},{name:"三月月考",data1:70,data2:66,data3:68,data4:78},{name:"四月月考",data1:90,data2:78,data3:76,data4:90}]});var b6 = ate('Ext.Window', {width: 800,height: 600,hidden: false,shadow: false,maximizable: true,title: 'Area Chart',renderTo: Body(),layout: 'fit',tbar: [{text: '切换数据',handler: function() {columnStore7.loadData([{name:"一月月考",data1:75,data2:86,data3:84,data4:90},{name:"二月月考",data1:86,data2:62,data3:87,data4:93},{name:"三月月考",data1:80,data2:96,data3:68,data4:98},{name:"四月月考",data1:60,data2:98,data3:76,data4:60}]);}}, {enableToggle: true,pressed: true,text: '动画开启|关闭',toggleHandler: function(btn, pressed) {var chart = Cmp('chartCmp');chart.animate = pressed?{easing: 'ease', duration: 500 }:false;}}],items: {id: 'chartCmp',xtype: 'chart',style: 'background:#fff',animate: true,store: columnStore7,legend: {position: 'bottom'},axes: [{type: 'Numeric',grid: true,position: 'left',//位置fields: ['data1', 'data2', 'data3', 'data4'],title: '分数分布',grid: {odd: {opacity: 1,fill: '#ddd',stroke: '#bbb','stroke-width': 1}},minimum: 0,adjustMinimumByMajorUnit: 0}, {type: 'Category',position: 'bottom',fields: ['name'],title: '每月考试',grid: true,label: {rotate: {degrees: 315}}}],series: [{type: 'area',highlight: false,axis: 'left',xField: 'name',yField: ['data1', 'data2', 'data3', 'data4'],style: {opacity: 0.93}}]}}); //})
var s1 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:20}]});var s2 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:50}]});var s3 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:30}]});var b8 = ate('Ext.Window', {width: 800,height: 250,minWidth: 650,minHeight: 225,title: 'Gauge Charts',tbar: [{text: '装载新的数据',handler: function() {s1.loadData([{name:"0~10岁",data:50}]);s2.loadData([{name:"0~10岁",data:20}]);s3.loadData([{name:"0~10岁",data:70}]);}}],layout: {type: 'hbox',align: 'stretch'},items: [{//第一个仪表图xtype: 'chart',style: 'background:#fff',animate: {easing: 'elasticIn',duration: 1000},store: s1,insetPadding: 25,flex: 1,axes: [{type: 'gauge',position: 'gauge',minimum: 0,maximum: 100,steps: 10,margin: -10}],series: [{type: 'gauge',field: 'data',donut: false,colorSet: ['#F49D10', '#ddd']}]}, {//第二个仪表图xtype: 'chart',style: 'background:#fff',animate: true,store: s2,insetPadding: 25,flex: 1,axes: [{type: 'gauge',position: 'gauge',minimum: 0,maximum: 100,steps: 10,margin: 7}],series: [{type: 'gauge',field: 'data',donut: 30,colorSet: ['#82B525', '#ddd']}]}, {//第三个仪表图xtype: 'chart',style: 'background:#fff',animate: {easing: 'bounceOut',duration: 500},store: s3,insetPadding: 25,flex: 1,axes: [{type: 'gauge',position: 'gauge',minimum: 0,maximum: 100,steps: 10,margin: 7}],series: [{type: 'gauge',field: 'data',donut: 80,colorSet: ['#3AA8CB', '#ddd']}]}]})
var columnStore9 = ate('Ext.data.JsonStore', {fields: ['name', 'data1','data2','data3','data4'],data: [{name:"一月月考",data1:85,data2:76,data3:94},{name:"二月月考",data1:96,data2:72,data3:87},{name:"三月月考",data1:70,data2:66,data3:68},{name:"四月月考",data1:50,data2:88,data3:56},{name:"五月月考",data1:80,data2:88,data3:36},{name:"六月月考",data1:40,data2:68,data3:96},{name:"七月月考",data1:60,data2:88,data3:86},{name:"八月月考",data1:70,data2:88,data3:96},{name:"九月月考",data1:80,data2:98,data3:66},{name:"十月月考",data1:90,data2:78,data3:76},{name:"十一月月考",data1:90,data2:78,data3:76},{name:"十二月月考",data1:90,data2:78,data3:76}]});var b9 = ate('Ext.Window', {width: 800,height: 600,hidden: false,shadow: false,maximizable: true,style: 'overflow: hidden;',title: 'Radar Chart',renderTo: Body(),layout: 'fit',tbar: [{text: '装载数据',handler: function() {columnStore9.loadData( [{name:"一月月考",data1:75,data2:86,data3:74},{name:"二月月考",data1:96,data2:82,data3:87},{name:"三月月考",data1:70,data2:96,data3:68},{name:"四月月考",data1:50,data2:78,data3:56},{name:"五月月考",data1:90,data2:88,data3:36},{name:"六月月考",data1:80,data2:68,data3:96},{name:"七月月考",data1:60,data2:88,data3:86},{name:"八月月考",data1:70,data2:98,data3:86},{name:"九月月考",data1:88,data2:98,data3:66},{name:"十月月考",data1:70,data2:88,data3:96},{name:"十一月月考",data1:90,data2:78,data3:76},{name:"十二月月考",data1:90,data2:98,data3:76}]);}}, {enableToggle: true,pressed: true,text: 'Animate',toggleHandler: function(btn, pressed) {var chart = Cmp('chartCmp');chart.animate = pressed ? { easing: 'ease', duration: 500 } : false;}}],items: {id: 'chartCmp',xtype: 'chart',style: 'background:#fff',theme: 'Category2',animate: true,store: columnStore9,insetPadding: 20,legend: {position: 'right'//图例},axes: [{//轴type: 'Radial',position: 'radial',label: {display: true}}],series: [{type: 'radar',xField: 'name',yField: 'data1',showInLegend: true,//展示在图例showMarkers: true,markerConfig: {radius: 5,size: 5},style: {'stroke-width': 2,//fill: 'yellow'//没有填充fill:'none'}},{type: 'radar',xField: 'name',yField: 'data2',showInLegend: true,showMarkers: true,markerConfig: {radius: 5,size: 5},style: {'stroke-width': 2,fill: 'none'}},{type: 'radar',xField: 'name',yField: 'data3',showMarkers: true,showInLegend: true,markerConfig: {radius: 5,size: 5},style: {'stroke-width': 2,fill: 'none'}}]}});
var chart;var generateData = (function() {var data = [], i = 0,last = false,date = new Date(2011, 1, 1),seconds = +date,min = Math.min,max = Math.max,random = Math.random;return function() {data = data.slice();data.push({date: Ext.Date.add(date, Ext.Date.DAY, i++),visits: min(100, max(last? last.visits + (random() - 0.5) * 20 : random() * 100, 0)),views: min(100, max(last? last.views + (random() - 0.5) * 10 : random() * 100, 0)),users: min(100, max(last? last.users + (random() - 0.5) * 20 : random() * 100, 0))});last = data[data.length -1];return data;};})();var group = false,groupOp = [{dateFormat: 'M d',groupBy: 'year,month,day'}, {dateFormat: 'M',groupBy: 'year,month'}];function regroup() {group = !group;var axis = (1),selectedGroup = groupOp[+group];axis.dateFormat = selectedGroup.upBy = draw();}var store = ate('Ext.data.JsonStore', {fields: ['date', 'visits', 'views', 'users'],data: generateData()});
//关键函数var intr = setInterval(function() {var gs = generateData();var toDate = Date,lastDate = gs[gs.length - 1].date,markerIndex = chart.markerIndex || 0;if (+toDate < +lastDate) {markerIndex = Date = lastDate;timeAxis.fromDate = Ext.Date.add(Ext.Date.clone(timeAxis.fromDate), Ext.Date.DAY, 1);chart.markerIndex = markerIndex;}store.loadData(gs);}, 1000);var b10 = ate('Ext.Window', {width: 800,height: 600,hidden: false,maximizable: true,title: 'Live Animated Chart',renderTo: Body(),layout: 'fit',items: [{xtype: 'chart',style: 'background:#fff',id: 'chartCmp',store: store,shadow: false,animate: true,axes: [{type: 'Numeric',grid: true,minimum: 0,maximum: 100,position: 'left',fields: ['views', 'visits', 'users'],title: 'Number of Hits',grid: {odd: {fill: '#dedede',stroke: '#ddd','stroke-width': 0.5}}}, {type: 'Time',position: 'bottom',fields: 'date',title: 'Day',dateFormat: 'M d',groupBy: 'year,month,day',aggregateOp: 'sum',constrain: true,fromDate: new Date(2011, 1, 1),toDate: new Date(2011, 1, 7),grid: true}],series: [{type: 'line',smooth: false,axis: 'left',xField: 'date',yField: 'visits',label: {display: 'none',field: 'visits',renderer: function(v) { return v >> 0; },'text-anchor': 'middle'},markerConfig: {radius: 5,size: 5}},{type: 'line',axis: 'left',smooth: false,xField: 'date',yField: 'views',label: {display: 'none',field: 'visits',renderer: function(v) { return v >> 0; },'text-anchor': 'middle'},markerConfig: {radius: 5,size: 5}},{type: 'line',axis: 'left',smooth: false,xField: 'date',yField: 'users',label: {display: 'none',field: 'visits',renderer: function(v) { return v >> 0; },'text-anchor': 'middle'},markerConfig: {radius: 5,size: 5}}]}]});chart = Cmp('chartCmp');var timeAxis = (1);
var columnStore11 = ate('Ext.data.JsonStore', {fields: ['name', 'data'],data: [{name:"0~10岁",data:20},{name:"11~18岁",data:60},{name:"19~24岁",data:30}]});var b11 = ate('Ext.Window', {width: 800,height: 600,hidden: false,maximizable: true,title: 'Pie Renderer Chart',renderTo: Body(),layout: 'fit',tbar: [{text: 'Reload Data',handler: function() {columnStore11.loadData([{name:"0~10岁",data:40},{name:"11~18岁",data:20},{name:"19~24岁",data:40}]);}}],items: {id: 'chartCmp',xtype: 'chart',style: 'background:#fff',animate: true,shadow: true,store: columnStore11,series: [{type: 'pie',animate: true,angleField: 'data', //角度lengthField: 'data', //字段切点长度highlight: {segment: {margin: 20}},label: {field: 'name', //文本标注display: 'rotate', //旋转标签 (also middle, out).font: '14px Arial',contrast: true}, style: {'stroke-width': 1,'stroke': '#fff'},//add rendererrenderer: function(sprite, record, attr, index, store) {//格式化重要函数var value = (('data') >> 0) % 9;var color = [ "#94ae0a", "#115fa6","#a61120", "#ff8809", "#ffd13e", "#a61187", "#24ad9a", "#7c7474", "#a66111"][value];return Ext.apply(attr, {fill: color});}}]}});
转载于:.html
本文发布于:2024-01-29 11:55:05,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170650050815096.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |