ag-grid V19 hidden / closed tool panel by default - ag-grid

I am using the follwoing dependencies:
"dependencies": {
"ag-grid-community": "19.0.0",
"ag-grid-angular": "19.0.0",
"ag-grid-enterprise": "19.0.0",
}
After migrating to version 19 the new sidebar was hidden. This could be fixed by setting [sideBar]="'columns'".
But the tool panel section is always open. I could close it by calling gridApi.closeToolPanel(), but in this case you see the open toolPanel for a short moment if you load the page. Is there an option to show only the side bar buttons and hide the toolPanel by default (as it was in version 18)?

var gridOptions = {
sideBar: {
toolPanels: [
{
id: 'columns',
labelDefault: 'Columns',
labelKey: 'columns',
iconKey: 'columns',
toolPanel: 'agColumnsToolPanel',
toolPanelParams: {
suppressValues: true,
suppressPivots: true,
suppressPivotMode: true,
suppressRowGroups: false
}
},
{
id: 'filters',
labelDefault: 'Filters',
labelKey: 'filters',
iconKey: 'filter',
toolPanel: 'agFiltersToolPanel',
}
],
defaultToolPanel: ''
}
};
The defaultTooPanel: '' is what tells ag-grid what should be opened by default. You can set it to blank or null and that will it cause it to not open any toolPanel by default.
Note: in version 19.0.0, you will get a console.log warning about this.
In 19.1.1, you will not get the warning.

To keep the ToolPanel closed by default, you need to set the defaultToolPanel to an empty string value.
sideBar: {
toolPanels: [
{
id: "columns",
labelDefault: "Columns",
labelKey: "columns",
iconKey: "columns",
toolPanel: "agColumnsToolPanel",
},
{
id: "filters",
labelDefault: "Filters",
labelKey: "filters",
iconKey: "filter",
toolPanel: "agFiltersToolPanel",
},
],
defaultToolPanel: "",
}
This is as the default value for defaultToolPanel is columns.

It depends on exactly where you are calling gridApi.closeToolPanel().
Check this plunk I've created. It's for angular, but I hope you will be able understand.
Call the funciton inside onGridReady.
onGridReady(params) {
this.gridApi = params.api;
this.gridApi.closeToolPanel();
}
Another similar kind of question: On upgrade ag-grid version 19 from version 9, on right click tool panel option is not coming.

For some reasons this.gridApi.closeToolPanel() doesn't work at all time but I tried hacking it using:
onGridReady(params) {
this.gridApi = params.api;
settimeout(() => { this.gridApi.closeToolPanel()},100)
}

Related

ExtJS 7.2 - Loading record into a form with chained comboboxes and forceSelection:true does not load all values

I have a form with two chained comboboxes. The first chained combobox dictates the values that appear in the second. I have forceSelection:true on the second combobox so that when a user changes the first combo, the second will be set blank because it no longer will be a valid option. The chained combos function as expected but when I load a record into this form using getForm().loadRecord(record) the value for the first combo is set properly but the second is not unless I set forceSelection:false.
The following fiddle should make things pretty clear: sencha fiddle
Clicking "Load Record" should load in Fruits/Apple, but only Fruits is shown. Clicking "Load Record" a second time achieves the desired result. If you comment out forceSelection: true it works as expected but then the chained combos don't function as desired. Is there anything I'm doing wrong here?
It is not so easy. What is happening when you are running form.loadRecord(rec).
you set the FoodGroup combobox
you set the FoodName combobox. BUT the value is not there, because your filter did not switch to appropriate food groups. That is why commenting force selection helps. (That is why commenting filter also help).
turned on the filter of food names. Store now have new values.
You are clicking the button second time. The first combobox value is the same, filters are not trigged (triggered?), you already have appropriate values in the second store and the value is selected.
How to fix:
The fix is ugly. You can listen on store 'refresh' (it means the filters are triggered) and then set the second value (or set the values again).
Ext.define('Fiddle.view.FormModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.fiddle-form-model',
stores: {
foodgroups: {
fields: ['name'],
data: [{
foodgroupname: 'Fruits'
}, {
foodgroupname: 'Vegetables'
}]
},
foods: {
fields: ['foodgroupname', 'foodname'],
filters: {
property: 'foodgroupname',
value: '{selectedFoodgroup.foodgroupname}'
},
data: [{
foodname: 'Apple',
foodgroupname: 'Fruits'
}, {
foodname: 'Banana',
foodgroupname: 'Fruits'
}, {
foodname: 'Lettuce',
foodgroupname: 'Vegetables'
}, {
foodname: 'Carrot',
foodgroupname: 'Vegetables'
}]
}
}
});
Ext.define('Fiddle.view.Form', {
extend: 'Ext.form.Panel',
xtype: 'fiddle-form',
viewModel: {
type: 'fiddle-form-model'
},
title: 'Combos',
items: [{
xtype: 'combo',
itemId: 'FoodGroup', // To access FoodGroup
displayField: 'foodgroupname',
bind: {
store: '{foodgroups}',
selection: '{selectedFoodgroup}'
},
valueField: 'foodgroupname',
forceSelection: true,
name: 'foodgroup',
fieldLabel: 'Food Group',
value: 'Vegetables'
}, {
xtype: 'combo',
itemId: 'FoodName', // To access FoodName
bind: {
store: '{foods}'
},
queryMode: 'local',
forceSelection: true, //COMMENTING THIS OUT ACHIEVES DESIRED LOAD RECORD BEHAVIOR
displayField: 'foodname',
valueField: 'foodname',
name: 'food',
fieldLabel: 'Food',
value: 'Carrot'
}],
buttons: [{
text: 'Load Record',
handler: function (btn) {
// OUR UGLY FIX
var form = btn.up('form'),
foodGroupComboBox = form.down('combobox#FoodGroup'),
foodNameComboBox = form.down('combobox#FoodName'),
record = Ext.create('Ext.data.Model', {
foodgroup: 'Fruits',
food: 'Apple'
});
foodNameComboBox.getStore().on('refresh', function (store) {
form.loadRecord(record);
}, this, {
single: true
})
form.loadRecord(record);
}
}]
});
Ext.application({
name: 'Fiddle',
launch: function () {
var form = new Fiddle.view.Form({
renderTo: document.body,
width: 600,
height: 400
});
}
});

ag-grid is not allowing for me to drag columns into the row group within the control panel

I am having an issue with dragging columns within my control panel, into the row groups pannel also in the control panel. Below are my gird options and default column behavior.
gridOptions={
floatingFilter: false,
animateRows:true,
columnDefs:this.columnDefs,
groupMultiAutoColumn:true,
groupHideOpenParents:true,
suppressMakeColumnVisibleAfterUnGroup:true,
suppressAggFuncInHeader:true,
suppressMenuHide:true,
suppressColumnVirtualisation:true,
autoGroupColumnDef:{
resizable: true,
filterValueGetter: function(params) {
var colGettingGrouped = params.colDef.showRowGroup;
var valueForOtherCol = params.api.getValue(
colGettingGrouped,
params.node
);
return valueForOtherCol;
},
}
};
this.defaultColDef = {flex: 1,
minWidth: 125,
maxWidth:500,
sortable: true,
filter: true,
enableRowGroup: true,
enablePivot: true,
enableValue:true,
cellFilter: 'number: 2',
resizable:true,
menuTabs: ['filterMenuTab', 'generalMenuTab', 'columnsMenuTab'],
sortingOrder: ['asc','desc', 'null'] ,
allowedAggFuncs: ['sum', 'avg', 'count'],
}; this.aggFuncs = {
sum: this.sumFunction,
avg: this.avgAggFunction,
}; this.sideBar = {
toolPanels: [
{
id: 'columns',
labelDefault: 'Columns',
labelKey: 'columns',
iconKey: 'columns',
toolPanel: 'agColumnsToolPanel',
toolPanelParams: { suppressSyncLayoutWithGrid: true },
},
],
defaultToolPanel: 'columns',
};
Currently, when I grab a column I get waring stopping Icon. Any help is appreciated!
Due to me setting the ZOOM property in css to 90%, the grid did not orientate properly and the columns I would drag in would not trigger the row grouping.

Ag-grid hide tool panel

I would like start grid with collapsed panel. Equal image in attachment
Provide the configuration in aggrid.
***sideBar = false***
To use the default sidebar, set the grid property sideBar=true. The Columns panel will be open by default
<AgGridReact
defaultColDef={this.state.defaultColDef}
animateRows={true}
sideBar={false}
/>
You hide it by setting defaultToolPanel to null or empty string
public sideBar = {
toolPanels: [
{
id: 'columns',
labelDefault: 'Columns',
labelKey: 'columns',
iconKey: 'columns',
toolPanel: 'agColumnsToolPanel',
toolPanelParams: {
suppressRowGroups: true,
suppressValues: true,
suppressPivots: true,
suppressPivotMode: true,
suppressSideButtons: true,
suppressColumnFilter: true,
suppressColumnSelectAll: true,
suppressColumnExpandAll: true
}
}
],
defaultToolPanel: ''
};

How can I control the sidepanel for ag-grid so I only enable grouping

I have the following plunkr: https://plnkr.co/edit/xtPbAztpG14bleAF9bgy?p=preview
var gridOptions = {
defaultColDef: {
// allow every column to be aggregated
enableValue: false,
// allow every column to be grouped
enableRowGroup: true,
// allow every column to be pivoted
enablePivot: false
},
sideBar: 'columns',
which let's me have a columns sidebar with options to edit pivot, grouping and values. However I'd like to only allow grouping for now and ideally show it above the table and not on the side. How would I go about doing that with the new Toolbar in AG grid?
Docs here: https://www.ag-grid.com/javascript-grid-tool-panel/
Ideally it should be like the Drag here to set row groups drop zone in this example: https://www.ag-grid.com/example.php#/
Found it well "hidden away" in the docs
var gridOptions = {
columnDefs: columnDefs,
rowData: null,
pivotMode: true,
enableSorting: true,
sideBar: 'columns',
// THIS IS THE ONE!!!
rowGroupPanelShow: 'always',
pivotPanelShow: 'always',
functionsReadOnly: true
};
Use the suppress options to fine-tune and control the display of the columns sidepanel
Example of custom sidepanel: https://www.ag-grid.com/javascript-grid-tool-panel-columns/#suppress-sections
To customise further, see https://www.ag-grid.com/javascript-grid-tool-panel-columns/#column-tool-panel-example
Example with code and plunkr: https://plnkr.co/edit/TaX0CWTKX4WKPHEijzLS?p=preview
We have customize these options using toolPanelParams Object properties in the following way
var gridOptions = {
sideBar: {
toolPanels: [
{
id: 'columns',
labelDefault: 'Columns',
labelKey: 'columns',
iconKey: 'columns',
toolPanel: 'agColumnsToolPanel',
toolPanelParams: {
suppressValues: true, // disable Value
suppressPivots: true, // disable Pivots
suppressPivotMode: true, // disable PivotMode
suppressRowGroups: false // enable RowGroups
}
},
],
defaultToolPanel: ''
}
};

How can i disable aggregation in ag-grid pivot mode?

These are the options given by grid, I want to hide the aggregation part as I don't have any columns to be aggregated.
set gridOptions.toolPanelSuppressValues: true
You can read more about suppressing other portions of the toolpanel here (look for Suppress Example)
In ag grid 23 you have to do it inside sideBar options of GridOptions property.
toolPanels: [
{
id: 'id',
labelDefault: 'labelDefault',
labelKey: 'labelKey',
iconKey: 'iconKey',
toolPanel: 'agColumnsToolPanel',
toolPanelParams: {
suppressPivotMode: true, - here
suppressValues: true,
},
},
],