form-grid.js

 

/*

This file is part of Ext JS 4

Copyright (c) 2011 Sencha Inc

Contact: http://www.sencha.com/contact

GNU General Public License Usage

This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.

If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact.

*/

Ext.require([

'Ext.form.*',

'Ext.data.*',

'Ext.grid.Panel',

'Ext.layout.container.Column'

]);

 

Ext.onReady(function(){

Ext.QuickTips.init();

var bd = Ext.getBody();

//F.A. == Menu Bar begins

var menu = Ext.create('Ext.menu.Menu', {

id: 'mainMenu',

style: {

overflow: 'visible' // For the Combo popup

},

items: [

{

text: 'Radio Options',

menu: { // <-- submenu by nested config object

items: [

// stick any markup in a menu

//'<b class="menu-title">Choose a Theme</b>',

{

text: 'Aero Glass',

checked: true,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Vista Black',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Gray Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Default Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}

]

}

},{

text: 'Radio Options2',

menu: { // <-- submenu by nested config object

items: [

// stick any markup in a menu

//'<b class="menu-title">Choose a Theme</b>',

{

text: 'Aero Glass',

checked: true,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Vista Black',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Gray Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Default Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}

]

}

}

]

});

var menu2 = Ext.create('Ext.menu.Menu', {

id: 'mainMenu1',

style: {

overflow: 'visible' // For the Combo popup

},

items: [

{

text: 'Radio Options',

menu: { // <-- submenu by nested config object

items: [

// stick any markup in a menu

//'<b class="menu-title">Choose a Theme</b>',

{

text: 'Aero Glass',

checked: true,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Vista Black',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Gray Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Default Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}

]

}

},{

text: 'Radio Options2',

menu: { // <-- submenu by nested config object

items: [

// stick any markup in a menu

//'<b class="menu-title">Choose a Theme</b>',

{

text: 'Aero Glass',

checked: true,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Vista Black',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: 'Gray Theme',

checked: false,

group: 'theme',

checkHandler: onItemCheck

}, {

text: '1111Default Theme',

checked: false,

group: 'theme',

checkHandler: onItemClick

}

]

}

}

]

});

var tb = Ext.create('Ext.toolbar.Toolbar');

tb.suspendLayout = true;

tb.render('toolbar');

tb.add({

text:'Button w/ Menu',

iconCls: 'bmenu', // <-- icon

menu: menu // assign menu by instance

}, {

text:'Button w/ Menu',

iconCls: 'bmenu', // <-- icon

menu: menu2 // assign menu by instance

});

menu.add(' ');

// Menus have a rich api for

// adding and removing elements dynamically

var item = menu.add({

text: 'Dynamically added Item'

});

// items support full Observable API

item.on('click', onItemClick);

// items can easily be looked up

menu.add({

text: 'Disabled Item',

id: 'disableMe' // <-- Items can also have an id for easy lookup

// disabled: true <-- allowed but for sake of example we use long way below

});

// access items by id or index

menu.items.get('disableMe').disable();

// They can also be referenced by id in or components

tb.add('-', {

icon: 'list-items.gif', // icons can also be specified inline

cls: 'x-btn-icon',

tooltip: '<b>Quick Tips</b><br/>Icon only button with tooltip',

handler: function(){

//Ext.example.msg('Button Click','You clicked the "icon only" button.');

}

});

// functions to display feedback

function onButtonClick(btn){

//Ext.example.msg('Button Click','You clicked the "{0}" button.', btn.text);

//Ext.Msg.alert('Status', 'Button Click:');

}

function onItemCheck(item, checked){

//Ext.example.msg('Item Check', 'You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked');

//Ext.Msg.alert('Status', 'Item Check');

}

function onItemToggle(item, pressed){

//Ext.example.msg('Button Toggled', 'Button "{0}" was toggled to {1}.', item.text, pressed);

//Ext.Msg.alert('Status', 'Button Toggled');

}

//F.A. == menu Bar ends

// sample static data for the store

var myData = [

['3m Co', 71.72, 0.02, 0.03, '9/1 12:00am'],

['Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'],

['Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'],

['American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am'],

['American International Group, Inc.', 64.13, 0.31, 0.49, '9/1 12:00am'],

['AT&T Inc.', 31.61, -0.48, -1.54, '9/1 12:00am'],

['Boeing Co.', 75.43, 0.53, 0.71, '9/1 12:00am'],

['Caterpillar Inc.', 67.27, 0.92, 1.39, '9/1 12:00am'],

['Citigroup, Inc.', 49.37, 0.02, 0.04, '9/1 12:00am'],

['E.I. du Pont de Nemours and Company', 40.48, 0.51, 1.28, '9/1 12:00am'],

['Exxon Mobil Corp', 68.1, -0.43, -0.64, '9/1 12:00am'],

['General Electric Company', 34.14, -0.08, -0.23, '9/1 12:00am'],

['General Motors Corporation', 30.27, 1.09, 3.74, '9/1 12:00am'],

['Hewlett-Packard Co.', 36.53, -0.03, -0.08, '9/1 12:00am'],

['Honeywell Intl Inc', 38.77, 0.05, 0.13, '9/1 12:00am'],

['Intel Corporation', 19.88, 0.31, 1.58, '9/1 12:00am'],

['International Business Machines', 81.41, 0.44, 0.54, '9/1 12:00am'],

['Johnson & Johnson', 64.72, 0.06, 0.09, '9/1 12:00am'],

['JP Morgan & Chase & Co', 45.73, 0.07, 0.15, '9/1 12:00am'],

['McDonald\'s Corporation', 36.76, 0.86, 2.40, '9/1 12:00am'],

['Merck & Co., Inc.', 40.96, 0.41, 1.01, '9/1 12:00am'],

['Microsoft Corporation', 25.84, 0.14, 0.54, '9/1 12:00am'],

['Pfizer Inc', 27.96, 0.4, 1.45, '9/1 12:00am'],

['The Coca-Cola Company', 45.07, 0.26, 0.58, '9/1 12:00am'],

['The Home Depot, Inc.', 34.64, 0.35, 1.02, '9/1 12:00am'],

['The Procter & Gamble Company', 61.91, 0.01, 0.02, '9/1 12:00am'],

['United Technologies Corporation', 63.26, 0.55, 0.88, '9/1 12:00am'],

['3m Co', 71.72, 0.02, 0.03, '9/1 12:00am'],

['Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'],

['Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'],

['American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am'],

['American International Group, Inc.', 64.13, 0.31, 0.49, '9/1 12:00am'],

['AT&T Inc.', 31.61, -0.48, -1.54, '9/1 12:00am'],

['Boeing Co.', 75.43, 0.53, 0.71, '9/1 12:00am'],

['Caterpillar Inc.', 67.27, 0.92, 1.39, '9/1 12:00am'],

['Citigroup, Inc.', 49.37, 0.02, 0.04, '9/1 12:00am'],

['E.I. du Pont de Nemours and Company', 40.48, 0.51, 1.28, '9/1 12:00am'],

['Exxon Mobil Corp', 68.1, -0.43, -0.64, '9/1 12:00am'],

['General Electric Company', 34.14, -0.08, -0.23, '9/1 12:00am'],

['General Motors Corporation', 30.27, 1.09, 3.74, '9/1 12:00am'],

['Hewlett-Packard Co.', 36.53, -0.03, -0.08, '9/1 12:00am'],

['Honeywell Intl Inc', 38.77, 0.05, 0.13, '9/1 12:00am'],

['Intel Corporation', 19.88, 0.31, 1.58, '9/1 12:00am'],

['International Business Machines', 81.41, 0.44, 0.54, '9/1 12:00am'],

['Johnson & Johnson', 64.72, 0.06, 0.09, '9/1 12:00am'],

['JP Morgan & Chase & Co', 45.73, 0.07, 0.15, '9/1 12:00am'],

['McDonald\'s Corporation', 36.76, 0.86, 2.40, '9/1 12:00am'],

['Merck & Co., Inc.', 40.96, 0.41, 1.01, '9/1 12:00am'],

['Microsoft Corporation', 25.84, 0.14, 0.54, '9/1 12:00am'],

['Pfizer Inc', 27.96, 0.4, 1.45, '9/1 12:00am'],

['The Coca-Cola Company', 45.07, 0.26, 0.58, '9/1 12:00am'],

['The Home Depot, Inc.', 34.64, 0.35, 1.02, '9/1 12:00am'],

['The Procter & Gamble Company', 61.91, 0.01, 0.02, '9/1 12:00am'],

['United Technologies Corporation', 63.26, 0.55, 0.88, '9/1 12:00am'],

['Verizon Communications', 35.57, 0.39, 1.11, '9/1 12:00am'],

['Wal-Mart Stores, Inc.', 45.45, 0.73, 1.63, '9/1 12:00am']

];

var myData2 = [

['223m Co', 71.72, 0.02, 0.03, '9/1 12:00am'],

['22Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'],

['22Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'],

['22Verizon Communications', 35.57, 0.39, 1.11, '9/1 12:00am'],

['22Wal-Mart Stores, Inc.', 45.45, 0.73, 1.63, '9/1 12:00am']

];

var ds = Ext.create('Ext.data.ArrayStore', {

fields: [

{name: 'company'},

{name: 'price', type: 'float'},

{name: 'change', type: 'float'},

{name: 'pctChange', type: 'float'},

{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'},

// Rating dependent upon performance 0 = best, 2 = worst

{name: 'rating', type: 'int', convert: function(value, record) {

var pct = record.get('pctChange');

if (pct < 0) return 2;

if (pct < 1) return 1;

return 0;

}}

],

data: myData

});

//F.A. define JSON Reader and store begins

Ext.define('Good', {

extend: 'Ext.data.Model',

fields: [

{name: 'company'},

{name: 'price', type: 'float'},

{name: 'change', type: 'float'},

{name: 'pctChange', type: 'float'},

{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'},

// Rating dependent upon performance 0 = best, 2 = worst

{name: 'rating', type: 'int', convert: function(value, record) {

var pct = record.get('pctChange');

if (pct < 0) return 2;

if (pct < 1) return 1;

return 0;

}}

]

});

var mystore = new Ext.data.Store({

model: 'Good',

proxy: {

type: 'ajax',

url : '/servlet/tigerservlet',

reader: {

type: 'json'

}

}

});

//F.A. define JSON Reader and store begins

// example of custom renderer function

function change(val){

if(val > 0){

return '<span style="color:green;">' + val + '</span>';

}else if(val < 0){

return '<span style="color:red;">' + val + '</span>';

}

return val;

}

// example of custom renderer function

function pctChange(val){

if(val > 0){

return '<span style="color:green;">' + val + '%</span>';

}else if(val < 0){

return '<span style="color:red;">' + val + '%</span>';

}

return val;

}

// render rating as "A", "B" or "C" depending upon numeric value.

function rating(v) {

if (v == 0) return "A";

if (v == 1) return "B";

if (v == 2) return "C";

}

 

//bd.createChild({tag: 'h2', html: 'Using a Grid with a Form'});

/*

* Here is where we create the Form

*/

var gridForm = Ext.create('Ext.form.Panel', {

id: 'company-form',

frame: true,

//title: 'Company data',

bodyPadding: 5,

//width: 750,

layout: 'column', // Specifies that the items will now be arranged in columns

dockedItems: [{

//itemId: 'toolbar',

xtype: 'toolbar',

dock: 'top',

//items: [tb]

}],

fieldDefaults: {

labelAlign: 'left',

msgTarget: 'side'

},

items: [{

columnWidth: 0.75,

xtype: 'gridpanel',

store: mystore,

height: 700,

title:'Company Data',

columns: [

{

id :'company',

text : 'Company',

flex: 1,

sortable : true,

dataIndex: 'company'

},

{

text : 'Price',

width : 75,

sortable : true,

dataIndex: 'price'

},

{

text : 'Change',

width : 75,

sortable : true,

renderer : change,

dataIndex: 'change'

},

{

text : '% Change',

width : 75,

sortable : true,

renderer : pctChange,

dataIndex: 'pctChange'

},

{

text : 'Last Updated',

width : 85,

sortable : true,

renderer : Ext.util.Format.dateRenderer('m/d/Y'),

dataIndex: 'lastChange'

},

{

text: 'Rating',

width: 30,

sortable: true,

renderer: rating,

dataIndex: 'rating'

}

],

listeners: {

selectionchange: function(model, records) {

if (records[0]) {

this.up('form').getForm().loadRecord(records[0]);

}

}

}

}, {

columnWidth: 0.25,

margin: '0 0 0 10',

xtype: 'fieldset',

title:'Company details',

defaults: {

width: 240,

labelWidth: 90

},

defaultType: 'textfield',

items: [{

fieldLabel: 'Name',

name: 'company'

},{

fieldLabel: 'Price',

name: 'price'

},{

fieldLabel: '% Change',

name: 'pctChange'

},{

xtype: 'datefield',

fieldLabel: 'Last Updated',

name: 'lastChange'

}, {

xtype: 'radiogroup',

fieldLabel: 'Rating',

columns: 3,

defaults: {

name: 'rating' //Each radio has the same name so the browser will make sure only one is checked at once

},

items: [{

inputValue: '0',

boxLabel: 'A'

}, {

inputValue: '1',

boxLabel: 'B'

}, {

inputValue: '2',

boxLabel: 'C'

}]

}]

}],

renderTo: bd

});

function onItemClick(item){

//Ext.example.msg('Menu Click', 'You clicked the "{0}" menu item.', item.text);

//Ext.Msg.alert('Status', 'Menu Click:'+gridForm.child('gridpanel').id);

ds.loadData(myData2,false);

}

gridForm.child('gridpanel').getSelectionModel().select(0);

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值