ratiw / vuetable-2

data table simplify! -- datatable component for Vue 2.x. See documentation at
https://vuetable.com
MIT License
2.16k stars 399 forks source link

GroupBy a column (enchantment) #2

Closed LimitTech closed 8 years ago

LimitTech commented 8 years ago

How could would be if we had a group by column?

Something like this: https://codepen.io/andrewcourtice/pen/VabXQV/

Thank you for your excellent package.

LimitTech commented 8 years ago

I don't know how to do a pull request but there are the changes I've done in your package in order to add groupBy feature (Excuse me because I'm not a vue expert and used something from https://codepen.io/andrewcourtice/pen/VabXQV/):

Note that I need the group by feature, so I haven't added conditionals.

  1. Make a computed variable

    filteredTableData: function () {
       var key = 'KEY'; // it could be a prop but I put here to show
    
       var groups = {
           data: this.tableData
       };
    
       if (this.tableData) {
           groups = {};
           for (var i = 0; i < this.tableData.length; i++) {
               var row = this.tableData[i];
               var cell = this.getObjectValue(row, key);
               if (!groups.hasOwnProperty(cell)) {
                   groups[cell] = [];
               }
               groups[cell].push(row);
           }
       }
    
       return groups;
    }
  2. Change template

    ....
    <tbody v-cloak>
    <template v-for="(groupitem, groupindex) in filteredTableData">
       <tr class='...'>
           <td :colspan="fields.length">{{ groupindex }}</td>
       </tr>
       <tr v-for="(item, index) in groupitem" @click="onRowClicked(item, $event)" :render="onRowChanged(item)"
ratiw commented 8 years ago

@LimitTech You should first fork vuetable-2 into your own repo first. Then, use your forked repo in your code and make any change as you see fit. Make it work in your use case, then from your repo will see "New pull request" button showing up. From there, you can send the pull request to me.

LimitTech commented 8 years ago

Ok, sorry for changing spaces. I think it was done by PHPStorm automatically.

tksumanth1994 commented 7 years ago

@LimitTech did you happen to find any workaround for this? I'm stuck at the same place. Need group by feature in vuetable-2.

Hintzmann commented 7 years ago

@LimitTech I am also interested in a "group by" feature in vuetable-2.

ratiw commented 7 years ago

You can find the link to the code @LimitTech has implemented in the above Add groupBy feature. However, please read through the comment to see its limitation as well.