ag-grid-enterprise
Version:
ag-Grid Enterprise Features
93 lines (77 loc) • 3.2 kB
text/typescript
import {
Utils,
Autowired,
ColumnController,
EventService,
Context,
LoggerFactory,
DragAndDropService,
GridOptionsWrapper,
PostConstruct,
Events,
Column,
ColumnValueChangeRequestEvent,
ColumnApi,
GridApi
} from "ag-grid-community/main";
import {BaseDropZonePanel} from "../dropZone/baseDropZonePanel";
export class ValuesDropZonePanel extends BaseDropZonePanel {
private columnController: ColumnController;
private eventService: EventService;
private gridOptionsWrapper: GridOptionsWrapper;
private context: Context;
private loggerFactory: LoggerFactory;
private dragAndDropService: DragAndDropService;
private columnApi: ColumnApi;
private gridApi: GridApi;
constructor(horizontal: boolean) {
super(horizontal, true, 'values');
}
private passBeansUp(): void {
super.setBeans({
gridOptionsWrapper: this.gridOptionsWrapper,
eventService: this.eventService,
context: this.context,
loggerFactory: this.loggerFactory,
dragAndDropService: this.dragAndDropService
});
let localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
let emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');
let title = localeTextFunc('values', 'Values');
super.init({
dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,
icon: Utils.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),
emptyMessage: emptyMessage,
title: title
});
this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));
}
protected getIconName(): string {
return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;
}
protected isColumnDroppable(column: Column): boolean {
if (this.gridOptionsWrapper.isFunctionsReadOnly()) { return false; }
// we never allow grouping of secondary columns
if (!column.isPrimary()) { return false; }
let columnValue = column.isAllowValue();
let columnNotValue= !column.isValueActive();
return columnValue && columnNotValue;
}
protected updateColumns(columns: Column[]): void {
if (this.gridOptionsWrapper.isFunctionsPassive()) {
let event: ColumnValueChangeRequestEvent = {
type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,
columns: columns,
api: this.gridApi,
columnApi: this.columnApi
};
this.eventService.dispatchEvent(event);
} else {
this.columnController.setValueColumns(columns, "toolPanelUi");
}
}
protected getExistingColumns(): Column[] {
return this.columnController.getValueColumns();
}
}