JavaScript DHTML/Ext JS/Portal
Portal window management
<source lang="html4strict">
<html>
<head>
<title>Hello World Window</title>
<link rel="stylesheet" type="text/css" href="ext-3.0.0/resources/css/ext-all.css" />
<script type="text/javascript" src="ext-3.0.0/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext-3.0.0/ext-all.js"></script>
<link rel="stylesheet" type="text/css" href="ext-3.0.0/examples/ux/css/Portal.css" /> <script type="text/javascript" src="ext-3.0.0/examples/ux/Portal.js"></script> <script type="text/javascript" src="ext-3.0.0/examples/ux/PortalColumn.js"></script> <script type="text/javascript" src="ext-3.0.0/examples/ux/Portlet.js"></script>
</head> <script type="text/javascript"> /*!
* Ext JS Library 3.0.0 * Copyright(c) 2006-2009 Ext JS, LLC * licensing@extjs.ru * http://www.extjs.ru/license */
SampleGrid = function(limitColumns){
function italic(value){ return "" + value + ""; } function change(val){ if(val > 0){ return "" + val + ""; }else if(val < 0){ return "" + val + ""; } return val; } function pctChange(val){ if(val > 0){ return "" + val + "%"; }else if(val < 0){ return "" + val + "%"; } return val; }
var columns = [ {id:"company",header: "Company", width: 160, sortable: true, dataIndex: "company"}, {header: "Price", width: 75, sortable: true, renderer: Ext.util.Format.usMoney, dataIndex: "price"}, {header: "Change", width: 75, sortable: true, renderer: change, dataIndex: "change"}, {header: "% Change", width: 75, sortable: true, renderer: pctChange, dataIndex: "pctChange"}, {header: "Last Updated", width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer("m/d/Y"), dataIndex: "lastChange"} ]; // allow samples to limit columns if(limitColumns){ var cs = []; for(var i = 0, len = limitColumns.length; i < len; i++){ cs.push(columns[limitColumns[i]]); } columns = cs; } SampleGrid.superclass.constructor.call(this, { store: new Ext.data.Store({ reader: new Ext.data.ArrayReader({}, [ {name: "company"}, {name: "price", type: "float"}, {name: "change", type: "float"}, {name: "pctChange", type: "float"}, {name: "lastChange", type: "date", dateFormat: "n/j h:ia"} ]), data: [ ["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"] ] }), columns: columns, autoExpandColumn: "company", height:250, width:600 });
} Ext.extend(SampleGrid, Ext.grid.GridPanel); /*!
* Ext JS Library 3.0.0 * Copyright(c) 2006-2009 Ext JS, LLC * licensing@extjs.ru * http://www.extjs.ru/license */
Ext.onReady(function(){
// NOTE: This is an example showing simple state management. During development, // it is generally best to disable state management as dynamically-generated ids // can change across page loads, leading to unpredictable results. The developer // should ensure that stable state ids are set for stateful components in real apps. Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); // create some portlet tools using built in Ext tool ids var tools = [{ id:"gear", handler: function(){ Ext.Msg.alert("Message", "The Settings tool was clicked."); } },{ id:"close", handler: function(e, target, panel){ panel.ownerCt.remove(panel, true); } }]; var viewport = new Ext.Viewport({ layout:"border", items:[{ region:"west", id:"west-panel", title:"West", split:true, width: 200, minSize: 175, maxSize: 400, collapsible: true, margins:"35 0 5 5", cmargins:"35 5 5 5", layout:"accordion", layoutConfig:{ animate:true }, items: [{ html: "adf", title:"Navigation", autoScroll:true, border:false, iconCls:"nav" },{ title:"Settings", html: "adf", border:false, autoScroll:true, iconCls:"settings" }] },{ xtype:"portal", region:"center", margins:"35 5 5 0", items:[{ columnWidth:.33, style:"padding:10px 0 10px 10px", items:[{ title: "Grid in a Portlet", layout:"fit", tools: tools, items: new SampleGrid([0, 2, 3]) },{ title: "Another Panel 1", tools: tools, html: "adf" }] },{ columnWidth:.33, style:"padding:10px 0 10px 10px", items:[{ title: "Panel 2", tools: tools, html: "adf" },{ title: "Another Panel 2", tools: tools, html: "adf" }] },{ columnWidth:.33, style:"padding:10px", items:[{ title: "Panel 3", tools: tools, html: "asdf" },{ title: "Another Panel 3", tools: tools, html: "adsf" }] }] /* * Uncomment this block to test handling of the drop event. You could use this * to save portlet position state for example. The event arg e is the custom * event defined in Ext.ux.Portal.DropZone. */
// ,listeners: {
// "drop": function(e){
// Ext.Msg.alert("Portlet Dropped", e.panel.title + "
Column: " +
// e.columnIndex + "
Position: " + e.position);
// }
// }
}] });
});
</script> <body> </body> </html>
</source>
Table based portal layout
<source lang="html4strict">
<html> <head> <title>Hello World Window</title> <link rel="stylesheet" type="text/css" href="ext-3.0.0/resources/css/ext-all.css" /> <script type="text/javascript" src="ext-3.0.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-3.0.0/ext-all.js"></script> </head>
<body> <script type="text/javascript">
Ext.onReady(function() { var panel = new Ext.Panel({ id:"main-panel", baseCls:"x-plain", renderTo: Ext.getBody(), layout:"table", layoutConfig: {columns:3}, // applied to child components defaults: {frame:true, width:200, height: 200}, items:[{ title:"Item 1" },{ title:"Item 2" },{ title:"Item 3" },{ title:"Item 4", width:410, colspan:2 },{ title:"Item 5" },{ title:"Item 6" },{ title:"Item 7", width:410, colspan:2 },{ title:"Item 8" }] }); });
</script>
</script> </body> </html>
</source>