UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

119 lines (118 loc) 4.7 kB
import { AdaptableModuleBase } from './AdaptableModuleBase'; import * as ModuleConstants from '../Utilities/Constants/ModuleConstants'; import * as FreeTextColumnRedux from '../Redux/ActionsReducers/FreeTextColumnRedux'; import { FreeTextColumnWizard } from '../View/FreeTextColumn/Wizard/FreeTextColumnWizard'; import { getFreeTextColumnSettingsTags } from '../View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags'; import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems'; import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions'; export class FreeTextColumnModule extends AdaptableModuleBase { isListeningToCellDataChanges; constructor(api) { super(ModuleConstants.FreeTextColumnModuleId, ModuleConstants.FreeTextColumnFriendlyName, 'horizontal-lines', 'FreeTextColumnPopup', 'Dynamic column showing custom content (stored in state and not with grid data)', api); this.isListeningToCellDataChanges = false; } onAdaptableReady() { this.checkListenToCellDataChanged(); } shouldListenToDataChanges() { return ArrayExtensions.IsNotNullOrEmpty(this.api.freeTextColumnApi.getFreeTextColumns()); } checkListenToCellDataChanged() { if (!this.isListeningToCellDataChanges) { if (this.shouldListenToDataChanges()) { this.setupCellDataChangeListener(); this.isListeningToCellDataChanges = true; } } } setupCellDataChangeListener() { this.api.internalApi .getDataService() .on('CellDataChanged', (cellDataChangedInfo) => { if (cellDataChangedInfo.trigger !== 'aggChange' && !cellDataChangedInfo.preventEdit) { this.api.freeTextColumnApi.internalApi.handleFreeTextColumnDataChange(cellDataChangedInfo); } }); } isModuleEnabled() { return !this.api.optionsApi.isAutogeneratePrimaryKey(); } getModuleAdaptableObjects() { return this.api.freeTextColumnApi.getFreeTextColumns(); } hasNamedQueryReferences() { return false; } createColumnMenuItems(column) { if (column && column.isFreeTextColumn && this.isModuleEditable()) { let popupParam = { column: column, action: 'Edit', source: 'ColumnMenu', }; return [ this.createMenuItemShowPopup('free-text-column-edit', 'Edit Free Text Column', this.moduleInfo.Popup, this.moduleInfo.Glyph, popupParam), ]; } } getTeamSharingAction() { return { ModuleEntities: this.api.freeTextColumnApi.getFreeTextColumns(), AddAction: FreeTextColumnRedux.FreeTextColumnAdd, EditAction: FreeTextColumnRedux.FreeTextColumnEdit, }; } toView(freeTextColumn) { const settingsTags = getFreeTextColumnSettingsTags(freeTextColumn.FreeTextColumnSettings); const items = [ { name: 'Settings', label: 'Column Id', values: [freeTextColumn.ColumnId], tagVariant: 'column', }, freeTextColumn.FriendlyName && { name: 'Settings', label: 'Column Name', values: [freeTextColumn.FriendlyName], }, { name: 'Settings', label: 'Data Type', values: [freeTextColumn.FreeTextColumnSettings.DataType ?? 'Not specified'], }, Boolean(freeTextColumn.DefaultValue) && { name: 'Settings', label: 'Default Value', values: [freeTextColumn.DefaultValue], }, freeTextColumn.TextEditor && { name: 'Settings', label: 'Editor Type', values: [freeTextColumn.TextEditor], }, ].filter(Boolean); if (ArrayExtensions.IsNotNullOrEmpty(settingsTags)) { items.push({ name: 'Settings', values: settingsTags, }); } items.push(getObjectTagsViewItems(freeTextColumn, this.api)); return { abObject: freeTextColumn, items: items.filter(Boolean), }; } toViewAll() { return this.getModuleAdaptableObjects().map((freeTextColumn) => this.toView(freeTextColumn)); } getViewProperties() { return { getDeleteAction: FreeTextColumnRedux.FreeTextColumnDelete, getEditWizard() { return FreeTextColumnWizard; }, }; } }