@adaptabletools/adaptable
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
46 lines (45 loc) • 1.87 kB
JavaScript
export class RowFormService {
constructor(adaptableApi) {
this.adaptableApi = adaptableApi;
if (adaptableApi.optionsApi.getRowFormOptions().autoHandle) {
adaptableApi.eventApi.on('RowFormSubmitted', (eventInfo) => this.autoHandleRowFormButtons(eventInfo));
}
}
autoHandleRowFormButtons(rowFormSubmittedInfo) {
const { adaptableApi } = rowFormSubmittedInfo;
if (rowFormSubmittedInfo.type === 'rowEdited') {
const { rowNode, formData } = rowFormSubmittedInfo;
const newRowData = {
...rowNode.data,
...formData,
};
adaptableApi.gridApi.updateGridData([newRowData]);
}
if (rowFormSubmittedInfo.type === 'rowDeleted') {
const { rowNode } = rowFormSubmittedInfo;
const deletedRowData = rowNode.data;
adaptableApi.gridApi.deleteGridData([deletedRowData]);
}
if (rowFormSubmittedInfo.type === 'rowCreated') {
const { formData } = rowFormSubmittedInfo;
let newRowData = formData;
const setPrimaryKeyValueFunction = adaptableApi.optionsApi.getRowFormOptions().setPrimaryKeyValue;
if (setPrimaryKeyValueFunction) {
const context = {
rowData: formData,
...adaptableApi.internalApi.buildBaseContext(),
};
const pkValue = setPrimaryKeyValueFunction(context);
const primaryKeyColumn = this.adaptableApi.columnApi.getPrimaryKeyColumn();
newRowData[primaryKeyColumn.columnId] = pkValue;
}
const config = {
addIndex: 0,
};
adaptableApi.gridApi.addGridData([newRowData], config);
}
}
destroy() {
// nothing yet
}
}