@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
78 lines (77 loc) • 3.69 kB
JavaScript
import { EMPTY_ARRAY } from '../../Utilities/Constants/GeneralConstants';
import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper';
export const FREE_TEXT_COLUMN_ADD = 'FREE_TEXT_COLUMN_ADD';
export const FREE_TEXT_COLUMN_EDIT = 'FREE_TEXT_COLUMN_EDIT';
export const FREE_TEXT_COLUMN_DELETE = 'FREE_TEXT_COLUMN_DELETE';
export const FREE_TEXT_COLUMN_ADD_EDIT_STORED_VALUE = 'FREE_TEXT_COLUMN_ADD_EDIT_STORED_VALUE';
export const FREE_TEXT_COLUMN_READY = 'FREE_TEXT_COLUMN_READY';
export const FreeTextColumnAdd = (freeTextColumn) => ({
type: FREE_TEXT_COLUMN_ADD,
freeTextColumn,
});
export const FreeTextColumnEdit = (freeTextColumn) => ({
type: FREE_TEXT_COLUMN_EDIT,
freeTextColumn,
});
export const FreeTextColumnDelete = (freeTextColumn) => ({
type: FREE_TEXT_COLUMN_DELETE,
freeTextColumn,
});
export const FreeTextColumnAddEditStoredValue = (FreeTextColumn, FreeTextStoredValue) => ({
type: FREE_TEXT_COLUMN_ADD_EDIT_STORED_VALUE,
FreeTextColumn,
FreeTextStoredValue,
});
export const FreeTextColumnReady = (freeTextColumnState) => ({
type: FREE_TEXT_COLUMN_READY,
freeTextColumnState,
});
const initialState = {
FreeTextColumns: EMPTY_ARRAY,
};
export const FreeTextColumnReducer = (state = initialState, action) => {
switch (action.type) {
case FREE_TEXT_COLUMN_ADD: {
const actionFreeTextColumn = action.freeTextColumn;
AdaptableHelper.addAdaptableObjectPrimitives(actionFreeTextColumn);
const freeTextColumns = [...state.FreeTextColumns];
freeTextColumns.push(actionFreeTextColumn);
return { ...state, FreeTextColumns: freeTextColumns };
}
case FREE_TEXT_COLUMN_EDIT:
const actionFreeTextColumn = action.freeTextColumn;
return {
...state,
FreeTextColumns: state.FreeTextColumns.map((abObject) => abObject.Uuid === actionFreeTextColumn.Uuid
?
Object.assign(abObject, actionFreeTextColumn)
: abObject),
};
case FREE_TEXT_COLUMN_DELETE: {
const actionFreeTextColumn = action.freeTextColumn;
return {
...state,
FreeTextColumns: state.FreeTextColumns.filter((abObject) => abObject.Uuid !== actionFreeTextColumn.Uuid),
};
}
case FREE_TEXT_COLUMN_ADD_EDIT_STORED_VALUE: {
const actionTypedAddEditStoredValue = action;
actionTypedAddEditStoredValue.FreeTextColumn.FreeTextStoredValues =
actionTypedAddEditStoredValue.FreeTextColumn.FreeTextStoredValues ?? [];
let existingIndex = actionTypedAddEditStoredValue.FreeTextColumn.FreeTextStoredValues.findIndex((ftsv) => ftsv.PrimaryKey == actionTypedAddEditStoredValue.FreeTextStoredValue.PrimaryKey);
if (existingIndex != -1) {
actionTypedAddEditStoredValue.FreeTextColumn.FreeTextStoredValues[existingIndex] =
actionTypedAddEditStoredValue.FreeTextStoredValue;
}
else {
actionTypedAddEditStoredValue.FreeTextColumn.FreeTextStoredValues.push(actionTypedAddEditStoredValue.FreeTextStoredValue);
}
const freeTextColumns = [...state.FreeTextColumns];
let index = freeTextColumns.findIndex((x) => x.ColumnId == actionTypedAddEditStoredValue.FreeTextColumn.ColumnId);
freeTextColumns[index] = actionTypedAddEditStoredValue.FreeTextColumn;
return Object.assign({}, state, { FreeTextColumns: freeTextColumns });
}
default:
return state;
}
};