UNPKG

@adaptabletools/adaptable

Version:

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

123 lines (122 loc) 5.46 kB
import * as FormatColumnRedux from '../../Redux/ActionsReducers/FormatColumnRedux'; import { ApiBase } from './ApiBase'; import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants'; import { FormatColumnInternalApi } from '../Internal/FormatColumnInternalApi'; import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions'; export class FormatColumnApiImpl extends ApiBase { constructor(_adaptable) { super(_adaptable); this.internalApi = new FormatColumnInternalApi(_adaptable); } getFormatColumnState() { return this.getAdaptableState().FormatColumn; } getFormatColumns(config) { return (this.handleLayoutAssociatedObjects(this.getFormatColumnState().FormatColumns, 'FormatColumn', config) ?? []); } getFormatColumnByUuId(id) { return this.getFormatColumns({ includeLayoutNotAssociatedObjects: true }).find((formatColumn) => formatColumn.Uuid === id); } getActiveFormatColumns(config) { return this.getFormatColumns(config).filter((formatColumn) => !formatColumn.IsSuspended); } getDisplayFormatForColumn(column) { const formatColumns = this.getFormatColumnsForColumn(column); if (ArrayExtensions.IsNullOrEmpty(formatColumns)) { return undefined; } const formatColumn = formatColumns.find((fc) => fc.DisplayFormat != undefined); return formatColumn ? formatColumn.DisplayFormat : undefined; } getSuspendedFormatColumns(config) { return this.getFormatColumns(config).filter((formatColumn) => formatColumn.IsSuspended); } addFormatColumn(formatColumn) { this.addUidToAdaptableObject(formatColumn); this.dispatchAction(FormatColumnRedux.FormatColumnAdd(formatColumn)); return this.getFormatColumnByUuId(formatColumn.Uuid); } addFormatColumns(formatColumns) { formatColumns.forEach((fc) => { this.addFormatColumn(fc); }); return formatColumns?.map((formatColumn) => this.getFormatColumnByUuId(formatColumn.Uuid)); } editFormatColumn(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnEdit(formatColumn)); return this.getFormatColumnByUuId(formatColumn.Uuid); } addFormatColumnStyle(formatColumn, style) { formatColumn.Style = style; this.addFormatColumn(formatColumn); } updateFormatColumnStyle(formatColumn, style) { formatColumn.Style = style; this.dispatchAction(FormatColumnRedux.FormatColumnEdit(formatColumn)); } deleteFormatColumn(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnDelete(formatColumn)); } deleteAllFormatColumns() { this.dispatchAction(FormatColumnRedux.FormatColumnDeleteAll()); } suspendFormatColumn(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnSuspend(formatColumn)); return this.getFormatColumnByUuId(formatColumn.Uuid); } unSuspendFormatColumn(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnUnSuspend(formatColumn)); return this.getFormatColumnByUuId(formatColumn.Uuid); } suspendAllFormatColumn() { this.dispatchAction(FormatColumnRedux.FormatColumnSuspendAll()); } unSuspendAllFormatColumn() { this.dispatchAction(FormatColumnRedux.FormatColumnUnSuspendAll()); } getFormatColumnsForColumn(column, config) { const formatColumns = this.getFormatColumns().filter((formatColumn) => config?.includeSuspended || !formatColumn.IsSuspended); return this.internalApi.getFormatColumnWithColumnInScope(formatColumns, column); } getFormatColumnsForColumnId(columnId, config) { const abColumn = this.getColumnApi().getColumnWithColumnId(columnId); if (!abColumn) { return []; } return this.getFormatColumnsForColumn(abColumn, config); } openFormatColumnSettingsPanel() { this.showModulePopup(ModuleConstants.FormatColumnModuleId); } getFormatColumnsWithAllScope(formatColumns) { return formatColumns.filter((fc) => this.getColumnScopeApi().scopeIsAll(fc.Scope)); } getFormatColumnsWithDataTypeScope(formatColumns) { return formatColumns.filter((fc) => this.getColumnScopeApi().scopeHasDataType(fc.Scope)); } getFormatColumnsWithColumnScope(formatColumns) { return formatColumns.filter((fc) => this.getColumnScopeApi().scopeHasColumns(fc.Scope)); } hasCustomDisplayFormatter(formatColumn) { if (!formatColumn || !formatColumn.DisplayFormat || !formatColumn.DisplayFormat.Options) { return false; } const options = formatColumn.DisplayFormat.Options; const columnCustomFormatters = options?.CustomDisplayFormats ?? []; if (!columnCustomFormatters?.length) { return false; } return true; } incrementFormatColumnPrecedence(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnMoveUp(formatColumn)); } decrementFormatColumnPrecedence(formatColumn) { this.dispatchAction(FormatColumnRedux.FormatColumnMoveDown(formatColumn)); } findFormatColumns(criteria) { return this.getAdaptableInternalApi().findAdaptableObjectsByLookupCriteria(criteria, this.getFormatColumns({ includeLayoutNotAssociatedObjects: true, })); } }