Skip to content

Commit c659921

Browse files
author
Mahidhar Chaluvadi
committed
Used Array filter, sort functions to be able to manipulate a copy of redux store state and render them in console
1 parent 37339a3 commit c659921

3 files changed

Lines changed: 31 additions & 16 deletions

File tree

src/actions/Expensify/Expenses.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import uuid from "uuid";
22
import actions from "./";
33

4-
export const addExpense = (description ="Default Desc", amt = 10) =>
4+
export const addExpense = (description ="Default Desc", amt = 10, createdAt = 0) =>
55
({type:actions.ADD_EXPENSE,
66
payload: {
77
id:uuid(),
88
description,
9-
amt
9+
amt,
10+
createdAt
1011
}});
1112

1213
export const removeExpense = ({id = 0} = {}) =>
@@ -15,10 +16,11 @@ export const removeExpense = ({id = 0} = {}) =>
1516
id
1617
}});
1718

18-
export const editExpense = (id = 0, description="Unknown",amt = 0) =>
19+
export const editExpense = (id = 0, description="Unknown",amt = 0, createdAt = 0) =>
1920
({type:actions.EDIT_EXPENSE,
2021
payload: {
2122
id,
2223
description,
23-
amt
24+
amt,
25+
createdAt
2426
}});

src/reducers/Expensify/Expenses.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import actions from "./../../actions/Expensify";
22

3-
const defaultExpenseList = [];
3+
const defaultExpenseList = [
4+
/*{
5+
id:12345,
6+
description:"RoomRent",
7+
amt:21,
8+
createdAt:120
9+
},*/
10+
];
411

512
export default (state = defaultExpenseList,action) =>
613
{
@@ -13,7 +20,7 @@ export default (state = defaultExpenseList,action) =>
1320
// return state.concat([{id:uuid()}]);
1421
return state.filter((expense)=>action.payload.id!==expense.id);
1522
case actions.EDIT_EXPENSE:
16-
return state.map((expense)=>action.payload.id!==expense.id?({...expense}):({...expense,description:action.payload.description,amt:action.payload.amt}));
23+
return state.map((expense)=>action.payload.id!==expense.id?({...expense}):({...expense,description:action.payload.description,amt:action.payload.amt,createdAt:action.payload.createdAt}));
1724
default:
1825
return state;
1926
}

src/routers/ExpensifyRouter.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@ const store = createStore(expensifyReducer);
2020

2121
console.log(store.getState());
2222

23-
const getExpensesForDisplay = (expenses, {filterText = "", sortBy ="date", startDate, endDate} = {}) => {
23+
const getExpensesForDisplay = (expenses, {filterText = "", sortBy ="date", startDate = undefined, endDate = undefined} = {}) => {
2424
console.log(sortBy);
25-
const newExpenses = filterText?expenses.filter((expense) => expense.description.includes(filterText)):[...expenses];
25+
let newExpenses = filterText?expenses.filter((expense) => expense.description.toLowerCase().includes(filterText.toLowerCase())):[...expenses];
26+
27+
newExpenses = newExpenses.filter((expense) => (typeof startDate === "number"?expense.createdAt >= startDate:true) && (typeof endDate === "number"? expense.createdAt<=endDate:true));
2628

2729
switch(sortBy)
2830
{
2931
case "amt": return newExpenses.sort((a,b)=>a.amt-b.amt);
3032
case "desc": return newExpenses.sort((a,b)=>(a.description.toLowerCase()<b.description.toLowerCase())?-1:1);
31-
case "date": return newExpenses;
33+
case "date": return newExpenses.sort((a,b)=>a.createdAt-b.createdAt);
3234
default: return newExpenses;
3335
}
3436
};
@@ -37,14 +39,18 @@ const unsubscribe = store.subscribe((state = store.getState())=>{
3739
console.log(getExpensesForDisplay(state.expenses,state.filters));
3840
});
3941

40-
const actionForExpense1 = store.dispatch(addExpense());
41-
const actionForExpense2 = store.dispatch(addExpense());
42-
//store.dispatch(removeExpense(actionForExpense1.payload));
43-
store.dispatch(editExpense(actionForExpense2.payload.id, "CatelynMoney", 15));
44-
// store.dispatch(setTextFilter("Reno"));
45-
store.dispatch(setStartDate(1));
46-
store.dispatch(setEndDate(12));
42+
const actionForExpense1 = store.dispatch(addExpense('Expense 1',200,120));
43+
const actionForExpense2 = store.dispatch(addExpense('Expense 2',300,120));
44+
store.dispatch(removeExpense(actionForExpense1.payload));
45+
store.dispatch(editExpense(actionForExpense2.payload.id, "CatelynExpenses", 300, 120));
46+
store.dispatch(addExpense('OtherExpense',300,200));
47+
store.dispatch(addExpense('Expense 3',350,150));
48+
store.dispatch(addExpense("EveExpenses",500,175));
49+
store.dispatch(setTextFilter("expense"));
4750
store.dispatch(sortByDesc());
51+
store.dispatch(setStartDate(150));
52+
store.dispatch(setEndDate(200));
53+
store.dispatch(sortByDate());
4854

4955
export default
5056
<div>

0 commit comments

Comments
 (0)