JavaScript
// define app, include Wijmo 5 directives
var app = angular.module('app', ['wj']);
// controller
app.controller('appCtrl', function($scope) {
var ascending = true;
var data = [],
countries = 'Spain,Russia'.split(','),
colors = 'Red,Green,Blue'.split(','),
products = 'Banana,Apple,Melon'.split(','),
item = 'item1,item2,item3,item4'.split(','),
months='Jan,Feb,Mar,April,May'.split(',');
for (var i = 0; i <= 25; i++) {
data.push({
id: i,
country: countries[i % countries.length],
color: colors[i % colors.length],
product: products[i % products.length],
sales: 10 * i*i + 100,
expenses: 5 * i + 30,
expenditure : 3 * i + 30,
months:months[i % months.length]
});
}
//$scope.cv = new wijmo.collections.CollectionView(data);
var ng = new wijmo.olap.PivotEngine({
autoGenerateFields: false,
itemsSource: data,
showColumnTotals: wijmo.olap.ShowTotals.GrandTotals,
showRowTotals: wijmo.olap.ShowTotals.Subtotals,
fields: 'country,product,color,sales,expenses,expenditure,months,item'.split(','),
// rowFields: 'Months,Country,Color'.split(','),
rowFields: 'Months,Country'.split(','),
columnFields: 'Product,Expenditure'.split(','),
valueFields: 'Sales,Expenses'.split(','),
});
ng.fields.getField('Sales').aggregate = 'Sum';
ng.fields.getField('Expenses').aggregate = 'Sum';
ng.fields.getField('Expenditure').aggregate = 'Sum';
ng.fields.forEach(function (field) {
field.sortComparer = function (val1, val2) {
var index1 = findIndex(data, field.binding, val1),
index2 = findIndex(data, field.binding, val2);
return index1 - index2;
};
});
function findIndex(arr, fld, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i][fld] == val) return i;
}
return -1;
}
$scope.ngFmt = ng;
$scope.export =...