import 'bootstrap.css';
import '@mescius/wijmo.styles/wijmo.css';
import './styles.css';
import { FlexGrid } from '@mescius/wijmo.grid';
import { getData } from './data';
document.readyState === 'complete' ? init() : window.onload = init;
function init() {
let data = getData(50);
let theFirstGrid = new FlexGrid('#theFirstGrid', {
autoClipboard: false,
autoGenerateColumns: false,
columns: [
{ binding: 'start', header: 'Date', width: 80, minWidth: 40, maxWidth: 160 },
{ binding: 'product', header: 'Product', width: '2*', allowResizing: false },
{ binding: 'amount', header: 'Revenue', format: 'n0', width: '*', allowResizing: false },
{ binding: 'amount2', header: 'Expense', format: 'n0', width: '*', allowResizing: false
}
],
itemsSource: data
});
let theSecondGrid = new FlexGrid('#theSecondGrid', {
autoClipboard: false,
autoGenerateColumns: false,
columns: [
{ binding: 'start', header: 'Date', width: 80 },
{ binding: 'product', header: 'Product', width: '*', minWidth: 100, allowResizing: false },
{ binding: 'amount', header: 'Revenue', format: 'n0', width: 120 }
],
itemsSource: data
});
let theThirdGrid = new FlexGrid('#theThirdGrid', {
autoClipboard: false,
autoGenerateColumns: false,
allowResizing: 'None',
columns: [
{ binding: 'start', header: 'Date', width: '*' },
{ binding: 'product', header: 'Product', width: '*', minWidth: 100 },
{ binding: 'amount', header: 'Revenue', format: 'n0', width: '*' },
{ binding: 'amount2', header: 'Expense', format: 'n0', width: '*' }
],
itemsSource: data
});
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>MESCIUS Wijmo FlexGrid Column Width</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- SystemJS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.21.5/system.src.js" integrity="sha512-skZbMyvYdNoZfLmiGn5ii6KmklM82rYX2uWctBhzaXPxJgiv4XBwJnFGr5k8s+6tE1pcR1nuTKghozJHyzMcoA==" crossorigin="anonymous"></script>
<script src="systemjs.config.js"></script>
<script>
System.import('./src/app');
</script>
</head>
<body>
<div class="container-fluid">
<h4>
Example 1:</h4>
<p>
This grid has four columns. The first is 80 pixels wide and can be resized between
40 and 160 pixels. The other three have widths of 2*, *, and *, and cannot be
resized using the mouse. </p>
<p>
Notice that the second column is twice as wide as the third and fourth columns, and that
they keep these proportions even as you resize the first column or the whole grid.</p>
<div id="theFirstGrid"></div>
<br />
<br />
<h4>
Example 2:</h4>
<p>
This grid shows how you can make any column stretch to fill the available space. In this case,
we set the width of the second column to * to achieve that effect.</p>
<p>
We also set the minimum width of the second column to 100 pixels in order to prevent it from
getting too narrow when the other columns in the grid are resized, and we prevent users from
resizing this column with the mouse.</p>
<div id="theSecondGrid"></div>
<br />
<br />
<h4>
Example 3:</h4>
<p>
This example sets all widths to *, which means the space available is divided equally among them.
Resize the browser and notice how the grid resizes and the columns fill it up equally. </p>
<p>
Also, unlike the other examples, this one sets the allowResizing property of the entire grid rather
than an individual column. We set this one to None, but you may also choose Columns, Rows, or Both.</p>
<div id="theThirdGrid"></div>
</div>
</body>
</html>
let countries = ['US', 'Germany', 'UK', 'Japan', 'Italy', 'Greece'];
let products = ['Widget', 'Gadget', 'Doohickey'];
let colors = ['Black', 'White', 'Red', 'Green', 'Blue'];
// generate some random data
export function getData(count) {
let data = [];
let dt = new Date();
// add count items
for (let i = 0; i < count; i++) {
// constants used to create data items
let date = new Date(dt.getFullYear(), i % 12, 25, i % 24, i % 60, i % 60), countryId = Math.floor(Math.random() * countries.length), productId = Math.floor(Math.random() * products.length), colorId = Math.floor(Math.random() * colors.length);
// create the item
let item = {
id: i,
start: date,
end: date,
country: countries[countryId],
product: products[productId],
color: colors[colorId],
countryId: countryId,
productId: productId,
colorId: colorId,
amount: Math.random() * 10000 - 5000,
amount2: Math.random() * 10000 - 5000,
discount: Math.random() / 4,
active: i % 4 == 0,
};
// add an array (should not auto-bind)
item.sales = [];
for (var j = 0; j < 12; j++) {
item.sales.push(50 + 20 * (Math.random() - .5) + j);
}
// add an object (should not auto-bind)
item.someObject = {
name: i,
value: i
};
// add the item to the list
data.push(item);
}
return data;
}
.wj-flexgrid {
height: 400px;
margin: 6px 0;
}
(function (global) {
System.config({
transpiler: 'plugin-babel',
babelOptions: {
es2015: true
},
meta: {
'*.css': { loader: 'css' }
},
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
'jszip': 'npm:jszip/dist/jszip.js',
'@mescius/wijmo': 'npm:@mescius/wijmo/index.js',
'@mescius/wijmo.input': 'npm:@mescius/wijmo.input/index.js',
'@mescius/wijmo.styles': 'npm:@mescius/wijmo.styles',
'@mescius/wijmo.cultures': 'npm:@mescius/wijmo.cultures',
'@mescius/wijmo.chart': 'npm:@mescius/wijmo.chart/index.js',
'@mescius/wijmo.chart.analytics': 'npm:@mescius/wijmo.chart.analytics/index.js',
'@mescius/wijmo.chart.animation': 'npm:@mescius/wijmo.chart.animation/index.js',
'@mescius/wijmo.chart.annotation': 'npm:@mescius/wijmo.chart.annotation/index.js',
'@mescius/wijmo.chart.finance': 'npm:@mescius/wijmo.chart.finance/index.js',
'@mescius/wijmo.chart.finance.analytics': 'npm:@mescius/wijmo.chart.finance.analytics/index.js',
'@mescius/wijmo.chart.hierarchical': 'npm:@mescius/wijmo.chart.hierarchical/index.js',
'@mescius/wijmo.chart.interaction': 'npm:@mescius/wijmo.chart.interaction/index.js',
'@mescius/wijmo.chart.radar': 'npm:@mescius/wijmo.chart.radar/index.js',
'@mescius/wijmo.chart.render': 'npm:@mescius/wijmo.chart.render/index.js',
'@mescius/wijmo.chart.webgl': 'npm:@mescius/wijmo.chart.webgl/index.js',
'@mescius/wijmo.chart.map': 'npm:@mescius/wijmo.chart.map/index.js',
'@mescius/wijmo.gauge': 'npm:@mescius/wijmo.gauge/index.js',
'@mescius/wijmo.grid': 'npm:@mescius/wijmo.grid/index.js',
'@mescius/wijmo.grid.detail': 'npm:@mescius/wijmo.grid.detail/index.js',
'@mescius/wijmo.grid.filter': 'npm:@mescius/wijmo.grid.filter/index.js',
'@mescius/wijmo.grid.search': 'npm:@mescius/wijmo.grid.search/index.js',
'@mescius/wijmo.grid.style': 'npm:@mescius/wijmo.grid.style/index.js',
'@mescius/wijmo.grid.grouppanel': 'npm:@mescius/wijmo.grid.grouppanel/index.js',
'@mescius/wijmo.grid.multirow': 'npm:@mescius/wijmo.grid.multirow/index.js',
'@mescius/wijmo.grid.transposed': 'npm:@mescius/wijmo.grid.transposed/index.js',
'@mescius/wijmo.grid.transposedmultirow': 'npm:@mescius/wijmo.grid.transposedmultirow/index.js',
'@mescius/wijmo.grid.pdf': 'npm:@mescius/wijmo.grid.pdf/index.js',
'@mescius/wijmo.grid.sheet': 'npm:@mescius/wijmo.grid.sheet/index.js',
'@mescius/wijmo.grid.xlsx': 'npm:@mescius/wijmo.grid.xlsx/index.js',
'@mescius/wijmo.grid.selector': 'npm:@mescius/wijmo.grid.selector/index.js',
'@mescius/wijmo.grid.cellmaker': 'npm:@mescius/wijmo.grid.cellmaker/index.js',
'@mescius/wijmo.nav': 'npm:@mescius/wijmo.nav/index.js',
'@mescius/wijmo.odata': 'npm:@mescius/wijmo.odata/index.js',
'@mescius/wijmo.olap': 'npm:@mescius/wijmo.olap/index.js',
'@mescius/wijmo.rest': 'npm:@mescius/wijmo.rest/index.js',
'@mescius/wijmo.pdf': 'npm:@mescius/wijmo.pdf/index.js',
'@mescius/wijmo.pdf.security': 'npm:@mescius/wijmo.pdf.security/index.js',
'@mescius/wijmo.viewer': 'npm:@mescius/wijmo.viewer/index.js',
'@mescius/wijmo.xlsx': 'npm:@mescius/wijmo.xlsx/index.js',
'@mescius/wijmo.undo': 'npm:@mescius/wijmo.undo/index.js',
'@mescius/wijmo.interop.grid': 'npm:@mescius/wijmo.interop.grid/index.js',
'@mescius/wijmo.touch': 'npm:@mescius/wijmo.touch/index.js',
'@mescius/wijmo.cloud': 'npm:@mescius/wijmo.cloud/index.js',
'@mescius/wijmo.barcode': 'npm:@mescius/wijmo.barcode/index.js',
'@mescius/wijmo.barcode.common': 'npm:@mescius/wijmo.barcode.common/index.js',
'@mescius/wijmo.barcode.composite': 'npm:@mescius/wijmo.barcode.composite/index.js',
'@mescius/wijmo.barcode.specialized': 'npm:@mescius/wijmo.barcode.specialized/index.js',
'jszip': 'npm:jszip/dist/jszip.js',
'bootstrap.css': 'npm:bootstrap/dist/css/bootstrap.min.css',
'css': 'npm:systemjs-plugin-css/css.js',
'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js',
'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
src: {
defaultExtension: 'js'
},
"node_modules": {
defaultExtension: 'js'
},
}
});
})(this);