UNPKG

@adaptabletools/adaptable

Version:

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

105 lines (104 loc) 4.77 kB
import * as FreeTextColumnRedux from '../../Redux/ActionsReducers/FreeTextColumnRedux'; import { ApiBase } from './ApiBase'; import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants'; import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions'; import { FreeTextColumnInternalApi } from '../Internal/FreeTextColumnInternalApi'; export class FreeTextColumnApiImpl extends ApiBase { constructor(_adaptable) { super(_adaptable); this.internalApi = new FreeTextColumnInternalApi(_adaptable); } getFreeTextColumnState() { return this.getAdaptableState().FreeTextColumn; } getFreeTextColumns() { return this.getFreeTextColumnState().FreeTextColumns ?? []; } getFreeTextColumnById(technicalId) { return this.getFreeTextColumns().find((ftc) => ftc.Uuid === technicalId); } getFreeTextColumnForColumnId(columnId) { return this.getFreeTextColumns().find((ftc) => ftc.ColumnId === columnId); } addFreeTextColumn(freeTextColumn) { this.addUidToAdaptableObject(freeTextColumn); this.dispatchAction(FreeTextColumnRedux.FreeTextColumnAdd(freeTextColumn)); return this.getFreeTextColumnById(freeTextColumn?.Uuid); } editFreeTextColumn(freeTextColumn) { this.dispatchAction(FreeTextColumnRedux.FreeTextColumnEdit(freeTextColumn)); return this.getFreeTextColumnById(freeTextColumn?.Uuid); } setStoredValue(columnId, storedValue) { const freeTextColumn = this.getFreeTextColumnForColumnId(columnId); if (!freeTextColumn) { this.logWarn(`No FreeTextColumn with columnId=${columnId} was found!`); return; } this.dispatchAction(FreeTextColumnRedux.FreeTextColumnAddEditStoredValue(freeTextColumn, storedValue)); return this.getFreeTextColumnById(freeTextColumn?.Uuid); } setStoredValues(columnId, storedValues, replaceAction) { const freeTextColumn = this.getFreeTextColumnForColumnId(columnId); if (freeTextColumn) { if (replaceAction == 'All') { freeTextColumn.FreeTextStoredValues = storedValues; } else { const existingPKValues = ArrayExtensions.IsNotNullOrEmpty(freeTextColumn.FreeTextStoredValues) ? freeTextColumn.FreeTextStoredValues.map((fts) => { return fts.PrimaryKey; }) : []; storedValues.forEach((sv) => { // do summat const isExistingPKValue = existingPKValues.find((epk) => epk == sv.PrimaryKey); if (isExistingPKValue) { if (replaceAction == 'Conflicting') { let existingItem = freeTextColumn.FreeTextStoredValues.find((fsv) => fsv.PrimaryKey == sv.PrimaryKey); if (existingItem) { existingItem.FreeText = sv.FreeText; } } else { freeTextColumn.FreeTextStoredValues.push(sv); } } else { // no existing value so just add it freeTextColumn.FreeTextStoredValues.push(sv); } }); } this.dispatchAction(FreeTextColumnRedux.FreeTextColumnEdit(freeTextColumn)); } } deleteFreeTextColumn(columnId) { let freeTextColumn = this.getFreeTextColumns().find((ftc) => ftc.ColumnId == columnId); if (this.checkItemExists(freeTextColumn, columnId, ModuleConstants.FreeTextColumnModuleId)) { this.dispatchAction(FreeTextColumnRedux.FreeTextColumnDelete(freeTextColumn)); } } openFreeTextColumnSettingsPanel() { this.showModulePopup(ModuleConstants.FreeTextColumnModuleId); } getFreeTextColumnValueForRowNode(freeTextColumn, rowNode) { try { if (this.getGridApi().isGroupRowNode(rowNode)) { return null; } if (ArrayExtensions.IsNotNullOrEmpty(freeTextColumn.FreeTextStoredValues)) { let pkValue = this.getGridApi().getPrimaryKeyValueForRowNode(rowNode); let freeTextStoredValue = freeTextColumn.FreeTextStoredValues.find((fdx) => fdx.PrimaryKey == pkValue); if (freeTextStoredValue) { return freeTextStoredValue.FreeText; } } return freeTextColumn.DefaultValue; } catch (e) { this.logError(e); return null; } } }