从 angularjs ui-网格菜单中删除聚合菜单项
Remove aggregation menu items from angularjs ui-grid menu
官网(http://ui-grid.info/docs/#/tutorial/209_grouping)中的ui-grid
例子展示了分组功能,如下所示:
我想要 Grouping
菜单项,但在列菜单中没有 Aggregate
项(count、sum、max、min、avg),我找不到一种绕过它们的方法。
我尝试过的解决方案是通过为 groupingColumnBuilder 提供装饰器来覆盖 uiGridGroupingService
,但该服务根本没有解决,我不禁想知道是否有更简单的方法实现这一目标。
有人知道这个问题的解决方案吗?
在这种情况下,装饰器方法可能是最好的方法。没有配置选项可以从列菜单中删除它。
PS: 装饰器仅显示为删除聚合项。
这是一个使用装饰器方法的工作 plnkr。
http://plnkr.co/edit/nzBeqbmEVUwmZF0qgyd6?p=preview
app.config(function($provide){
$provide.decorator('uiGridGroupingService', function ($delegate,i18nService,gridUtil) {
$delegate.groupingColumnBuilder = function (colDef, col, gridOptions) {
if (colDef.enableGrouping === false){
return;
}
if ( typeof(col.grouping) === 'undefined' && typeof(colDef.grouping) !== 'undefined') {
col.grouping = angular.copy(colDef.grouping);
} else if (typeof(col.grouping) === 'undefined'){
col.grouping = {};
}
if (typeof(col.grouping) !== 'undefined' && typeof(col.grouping.groupPriority) !== undefined && col.grouping.groupPriority >= 0){
col.suppressRemoveSort = true;
}
col.groupingSuppressAggregationText = colDef.groupingSuppressAggregationText === true;
var groupColumn = {
name: 'ui.grid.grouping.group',
title: i18nService.get().grouping.group,
icon: 'ui-grid-icon-indent-right',
shown: function () {
return typeof(this.context.col.grouping) === 'undefined' ||
typeof(this.context.col.grouping.groupPriority) === 'undefined' ||
this.context.col.grouping.groupPriority < 0;
},
action: function () {
service.groupColumn( this.context.col.grid, this.context.col );
}
};
var ungroupColumn = {
name: 'ui.grid.grouping.ungroup',
title: i18nService.get().grouping.ungroup,
icon: 'ui-grid-icon-indent-left',
shown: function () {
return typeof(this.context.col.grouping) !== 'undefined' &&
typeof(this.context.col.grouping.groupPriority) !== 'undefined' &&
this.context.col.grouping.groupPriority >= 0;
},
action: function () {
service.ungroupColumn( this.context.col.grid, this.context.col );
}
};
if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems, 'name', 'ui.grid.grouping.group')) {
col.menuItems.push(groupColumn);
}
if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems, 'name', 'ui.grid.grouping.ungroup')) {
col.menuItems.push(ungroupColumn);
}
}
return $delegate;
})
});
有抑制聚合选项! Set groupingShowAggregationMenu
to false.
它默认设置为 true,因此您需要在 columnDefs 中指定它
groupingShowAggregationMenu: false
官网(http://ui-grid.info/docs/#/tutorial/209_grouping)中的ui-grid
例子展示了分组功能,如下所示:
我想要 Grouping
菜单项,但在列菜单中没有 Aggregate
项(count、sum、max、min、avg),我找不到一种绕过它们的方法。
我尝试过的解决方案是通过为 groupingColumnBuilder 提供装饰器来覆盖 uiGridGroupingService
,但该服务根本没有解决,我不禁想知道是否有更简单的方法实现这一目标。
有人知道这个问题的解决方案吗?
在这种情况下,装饰器方法可能是最好的方法。没有配置选项可以从列菜单中删除它。
PS: 装饰器仅显示为删除聚合项。
这是一个使用装饰器方法的工作 plnkr。
http://plnkr.co/edit/nzBeqbmEVUwmZF0qgyd6?p=preview
app.config(function($provide){
$provide.decorator('uiGridGroupingService', function ($delegate,i18nService,gridUtil) {
$delegate.groupingColumnBuilder = function (colDef, col, gridOptions) {
if (colDef.enableGrouping === false){
return;
}
if ( typeof(col.grouping) === 'undefined' && typeof(colDef.grouping) !== 'undefined') {
col.grouping = angular.copy(colDef.grouping);
} else if (typeof(col.grouping) === 'undefined'){
col.grouping = {};
}
if (typeof(col.grouping) !== 'undefined' && typeof(col.grouping.groupPriority) !== undefined && col.grouping.groupPriority >= 0){
col.suppressRemoveSort = true;
}
col.groupingSuppressAggregationText = colDef.groupingSuppressAggregationText === true;
var groupColumn = {
name: 'ui.grid.grouping.group',
title: i18nService.get().grouping.group,
icon: 'ui-grid-icon-indent-right',
shown: function () {
return typeof(this.context.col.grouping) === 'undefined' ||
typeof(this.context.col.grouping.groupPriority) === 'undefined' ||
this.context.col.grouping.groupPriority < 0;
},
action: function () {
service.groupColumn( this.context.col.grid, this.context.col );
}
};
var ungroupColumn = {
name: 'ui.grid.grouping.ungroup',
title: i18nService.get().grouping.ungroup,
icon: 'ui-grid-icon-indent-left',
shown: function () {
return typeof(this.context.col.grouping) !== 'undefined' &&
typeof(this.context.col.grouping.groupPriority) !== 'undefined' &&
this.context.col.grouping.groupPriority >= 0;
},
action: function () {
service.ungroupColumn( this.context.col.grid, this.context.col );
}
};
if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems, 'name', 'ui.grid.grouping.group')) {
col.menuItems.push(groupColumn);
}
if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems, 'name', 'ui.grid.grouping.ungroup')) {
col.menuItems.push(ungroupColumn);
}
}
return $delegate;
})
});
有抑制聚合选项! Set groupingShowAggregationMenu
to false.
它默认设置为 true,因此您需要在 columnDefs 中指定它
groupingShowAggregationMenu: false