87
loading...
This website collects cookies to deliver better user experience
import { configureStore } from '@reduxjs/toolkit';
import rowReducer from './features/ag-grid/slices/rowSlice';
import columnReducer from './features/ag-grid/slices/columnSlice';
export default configureStore({
reducer: {
rows: rowReducer,
columns: columnReducer
}
});
import React from 'react';
import ReactDOM from 'react-dom';
import App from './app/App';
import store from './app/store';
import { Provider } from 'react-redux';
ReactDOM.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>,
document.getElementById('root')
);
import { createSlice } from '@reduxjs/toolkit';
export const columnSlice = createSlice({
name: 'columns',
initialState: {
columns: []
},
reducers: {
...
}
});
export const { addColumn, removeColumn, updateColumns } = columnSlice.actions;
export const selectColumns = state => state.columns.columns;
export default columnSlice.reducer;
const onGridReady = params => {
dispatch(addColumn(createInitialColumns()));
dispatch(addRows(rowDataJSON));
setGridApi(params.api);
};
reducers: {
...other reducers,
addRows: (state, action) => {
let newRowData = [...state.rowData];
newRowData = action.payload.concat(newRowData);
return {
...state,
rowData: newRowData,
latestId: action.payload.pop().id
};
},
...}
addColumn: (state, action) => {
let newCols = [...state.columns];
newCols = newCols.concat(action.payload);
return {
...state,
columns: newCols
};
},
const saveNewValue = params => {
let field = params.column.colId;
let newRow = { ...params.data };
newRow[field] = params.newValue;
dispatch(updateRow(newRow));
return false;
};
updateColumns: (state, action) => {
let newCols = [...state.columns];
newCols = newCols.map(col => {
if (col.field == action.payload.field) {
return action.payload;
}
return col;
});
return {
...state,
columns: newCols
};
}
import React from "react";
const currencyContext = React.createContext({
currency: '',
setCurrency: () => {}
});
export default currencyContext
import React, { Component, useState, useContext } from 'react';
import currencyContext from './currencyContext.js';
export const DropDown = () => {
const { currency, setCurrency } = useContext(currencyContext);
const myFunc = event => {
setCurrency(event.target.value);
};
return (
<select id="currencyDropdown" name="currency" onChange={myFunc}>
<option value="GBP">GBP</option>
<option value="JPY">JPY</option>
<option value="EUR">EUR</option>
</select>
);
};
useEffect(() => {
if (gridApi) {
updateCurrencyRowData(currency);
updateColumnName();
}
}, [currency]);
const currencyRef = useRef();
useEffect(() => {
currencyRef.current = currency;
});