집계

MultiRow 컨트롤은 FlexGrid와 같은 CollectionView 기반 그룹화를 지원합니다.

이 컨트롤은 그룹화된 데이터를 표시할 때 그룹 헤더 행을 추가하는데, 이 행은 그룹을 축소 및 확장할 뿐 아니라 그룹에 대한 집계 통계를 표시하는 데 사용할 수 있습니다.

집계가 그룹 헤더 행에 표시되게 하려면 multiRowGroupHeaders 속성을 true로 설정하십시오.

MultiRow API 참조 To ensure aggregates are visible on the group header rows, set the multiRowGroupHeaders property to true.

import 'bootstrap.css'; import '@grapecity/wijmo.styles/wijmo.css'; import './styles.css'; import { MultiRow } from '@grapecity/wijmo.grid.multirow'; import { getGroupedData, getLayoutDefinition } from './data'; document.readyState === 'complete' ? init() : window.onload = init; function init() { // create the MultiRow let theMultiRow = new MultiRow('#theMultiRow', { itemsSource: getGroupedData(200), layoutDefinition: getLayoutDefinition(), multiRowGroupHeaders: true }); // start collapsed theMultiRow.collapseGroupsToLevel(1); // toggle multiRowGroupHeaders document.getElementById('cbMultiRowGroupHeaders').addEventListener('click', function (e) { theMultiRow.multiRowGroupHeaders = e.target.checked; }); }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>MESCIUS Wijmo MultiRow Aggregates</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app'); </script> </head> <body> <div class="container-fluid"> <label> multiRowGroupHeaders: <input id="cbMultiRowGroupHeaders" type="checkbox" checked/> </label> <div id="theMultiRow"></div> </div> </body> </html>
import { CollectionView, DateTime } from '@grapecity/wijmo'; // raw data export function getData(cnt = 20) { let countries = 'US,Germany,UK,Japan,Italy,Greece,Portugal,Spain'.split(','), names = 'Abe,Bob,Chuck,Dan,Ed,Fred'.split(','), colors = 'Red,Green,Blue,White,Black,Yellow,Orange'.split(','), today = new Date(), data = []; for (let i = 0; i < cnt; i++) { data.push({ id: i, date: DateTime.addDays(today, -i), name: names[i % names.length], country: countries[i % countries.length], color: colors[i % colors.length], active: i % 5 != 0, downloads: Math.round(Math.random() * 200000), sales: Math.round(Math.random() * 20000), expenses: Math.round(Math.random() * 10000) }); } return data; } // grouped data export function getGroupedData(cnt = 20) { return new CollectionView(getData(cnt), { groupDescriptions: ['country', 'color'] }); } // MultiRow layout definition export function getLayoutDefinition() { return [ { cells: [{ binding: 'id', header: 'ID' }] }, { cells: [{ binding: 'country', header: 'Country' }] }, { cells: [{ binding: 'color', header: 'Color' }] }, { cells: [ { binding: 'sales', header: 'Sales', cssClass: 'sales', aggregate: 'Sum' }, { binding: 'expenses', header: 'Expenses', cssClass: 'expenses', aggregate: 'Sum' } ] } ]; }
.wj-multirow { height: 400px; margin: 6px 0; } .wj-cell.sales { color: darkgreen; font-weight: bold; font-style: italic; } .wj-cell.expenses { color: darkred; font-weight: bold; font-style: italic; }
(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', '@grapecity/wijmo': 'npm:@grapecity/wijmo/index.js', '@grapecity/wijmo.input': 'npm:@grapecity/wijmo.input/index.js', '@grapecity/wijmo.styles': 'npm:@grapecity/wijmo.styles', '@grapecity/wijmo.cultures': 'npm:@grapecity/wijmo.cultures', '@grapecity/wijmo.chart': 'npm:@grapecity/wijmo.chart/index.js', '@grapecity/wijmo.chart.analytics': 'npm:@grapecity/wijmo.chart.analytics/index.js', '@grapecity/wijmo.chart.animation': 'npm:@grapecity/wijmo.chart.animation/index.js', '@grapecity/wijmo.chart.annotation': 'npm:@grapecity/wijmo.chart.annotation/index.js', '@grapecity/wijmo.chart.finance': 'npm:@grapecity/wijmo.chart.finance/index.js', '@grapecity/wijmo.chart.finance.analytics': 'npm:@grapecity/wijmo.chart.finance.analytics/index.js', '@grapecity/wijmo.chart.hierarchical': 'npm:@grapecity/wijmo.chart.hierarchical/index.js', '@grapecity/wijmo.chart.interaction': 'npm:@grapecity/wijmo.chart.interaction/index.js', '@grapecity/wijmo.chart.radar': 'npm:@grapecity/wijmo.chart.radar/index.js', '@grapecity/wijmo.chart.render': 'npm:@grapecity/wijmo.chart.render/index.js', '@grapecity/wijmo.chart.webgl': 'npm:@grapecity/wijmo.chart.webgl/index.js', '@grapecity/wijmo.chart.map': 'npm:@grapecity/wijmo.chart.map/index.js', '@grapecity/wijmo.gauge': 'npm:@grapecity/wijmo.gauge/index.js', '@grapecity/wijmo.grid': 'npm:@grapecity/wijmo.grid/index.js', '@grapecity/wijmo.grid.detail': 'npm:@grapecity/wijmo.grid.detail/index.js', '@grapecity/wijmo.grid.filter': 'npm:@grapecity/wijmo.grid.filter/index.js', '@grapecity/wijmo.grid.search': 'npm:@grapecity/wijmo.grid.search/index.js', '@grapecity/wijmo.grid.grouppanel': 'npm:@grapecity/wijmo.grid.grouppanel/index.js', '@grapecity/wijmo.grid.multirow': 'npm:@grapecity/wijmo.grid.multirow/index.js', '@grapecity/wijmo.grid.transposed': 'npm:@grapecity/wijmo.grid.transposed/index.js', '@grapecity/wijmo.grid.transposedmultirow': 'npm:@grapecity/wijmo.grid.transposedmultirow/index.js', '@grapecity/wijmo.grid.pdf': 'npm:@grapecity/wijmo.grid.pdf/index.js', '@grapecity/wijmo.grid.sheet': 'npm:@grapecity/wijmo.grid.sheet/index.js', '@grapecity/wijmo.grid.xlsx': 'npm:@grapecity/wijmo.grid.xlsx/index.js', '@grapecity/wijmo.grid.selector': 'npm:@grapecity/wijmo.grid.selector/index.js', '@grapecity/wijmo.grid.cellmaker': 'npm:@grapecity/wijmo.grid.cellmaker/index.js', '@grapecity/wijmo.nav': 'npm:@grapecity/wijmo.nav/index.js', '@grapecity/wijmo.odata': 'npm:@grapecity/wijmo.odata/index.js', '@grapecity/wijmo.olap': 'npm:@grapecity/wijmo.olap/index.js', '@grapecity/wijmo.rest': 'npm:@grapecity/wijmo.rest/index.js', '@grapecity/wijmo.pdf': 'npm:@grapecity/wijmo.pdf/index.js', '@grapecity/wijmo.pdf.security': 'npm:@grapecity/wijmo.pdf.security/index.js', '@grapecity/wijmo.viewer': 'npm:@grapecity/wijmo.viewer/index.js', '@grapecity/wijmo.xlsx': 'npm:@grapecity/wijmo.xlsx/index.js', '@grapecity/wijmo.undo': 'npm:@grapecity/wijmo.undo/index.js', '@grapecity/wijmo.interop.grid': 'npm:@grapecity/wijmo.interop.grid/index.js', '@grapecity/wijmo.touch': 'npm:@grapecity/wijmo.touch/index.js', '@grapecity/wijmo.cloud': 'npm:@grapecity/wijmo.cloud/index.js', '@grapecity/wijmo.barcode': 'npm:@grapecity/wijmo.barcode/index.js', '@grapecity/wijmo.barcode.common': 'npm:@grapecity/wijmo.barcode.common/index.js', '@grapecity/wijmo.barcode.composite': 'npm:@grapecity/wijmo.barcode.composite/index.js', '@grapecity/wijmo.barcode.specialized': 'npm:@grapecity/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);