Our blazing fast Grid component built with pure JavaScript


Post by natalija »

Hello,

Is it possible to have a common summary label under the left column instead of having separate labels in each summary cell?
I adjusted the "Group summary demo" for my specific case.

import { Grid, DataGenerator } from '../../build/grid.module.js?468920';
import shared from '../_shared/shared.module.js?468920';

const grid = new Grid({
    appendTo : 'container',

fillLastColumn : true,

features : {
    sort         : 'age',
    group        : 'city',
    groupSummary : {
        collapseToHeader : true
    },
    summary: true,
},

columns : [
    { type : 'rownumber' },
    { text : 'Firstname', field : 'firstName', width : 100 },
    { text : 'Surname', field : 'surName', width : 100 },
    { text : 'City', field : 'city', flex : 1, },
    {   
        text      : 'Age', 
        field     : 'age', 
        width     : 100,
        type      : 'number',
        summaries : [
            { sum : 'min', label : 'Min' },
            { sum : 'max', label : 'Max' }
        ],
    },
    {
        type      : 'number',
        text      : 'Rank',
        field     : 'rank',
        flex      : 1,
        summaries : [
            { sum : 'min', label : 'Min' },
            { sum : 'max', label : 'Max' }
        ]
    },
    {
        type      : 'number',
        text      : 'Score',
        field     : 'score',
        flex      : 1,
        summaries : [
            { sum : 'min', label : 'Min' },
            { sum : 'max', label : 'Max' }
        ]
    }
],

data : DataGenerator.generateData(25),

tbar : {
    items : {
        target : {
            type        : 'buttongroup',
            toggleGroup : true,
            items       : {
                targetHeader : {
                    text : 'Display in header',
                    icon : 'b-fa-table',
                    onToggle({ pressed }) {
                        grid.widgetMap.collapseToHeader.disabled = pressed;
                        grid.features.groupSummary.target = pressed ? 'header' : 'footer';
                    }
                },
                targetFooter : {
                    text    : 'Display in footer',
                    icon    : 'b-fa-table b-fa-rotate-180',
                    pressed : true
                }
            }
        },
        collapseToHeader : {
            text        : 'Collapse to header',
            icon        : 'b-fa-square',
            pressedIcon : 'b-fa-check-square',
            toggleable  : true,
            pressed     : true,
            onToggle({ pressed }) {
                grid.features.groupSummary.collapseToHeader = pressed;
            }
        }
    }
}
});
Attachments
label_current_look.png
label_current_look.png (87 KiB) Viewed 133 times
label_desired_look.png
label_desired_look.png (69.73 KiB) Viewed 133 times

Post by alex.l »

Hi,

Nothing built-in, but you can add "fake" summaries to City column with labels and empty summaries, and remove all labels from other columns. Like this

    columns : [
        { type : 'rownumber' },
        { text : 'Firstname', field : 'firstName', width : 100 },
        { text : 'Surname', field : 'surName', width : 100 },
        { text : 'Age', field : 'age', width : 100, type : 'number' },
        { text : 'City', field : 'city', flex : 1,
        summaries : [
                { sum : ()=>{''}, label : 'Min' },
                { sum : ()=>{''}, label : 'Max' }
            ]
         },
        {
            type      : 'number',
            text      : 'Rank',
            field     : 'rank',
            flex      : 1,
            summaries : [
                { sum : 'min' },
                { sum : 'max' }
            ]
        },
        {
            type      : 'number',
            text      : 'Score',
            field     : 'score',
            flex      : 1
        }
    ],

All the best,
Alex


Post by natalija »

This will work. Thank you!


Post Reply