Guest User

Untitled

a guest
Mar 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. const reducer = (state = initialState, action) => {
  2.  
  3. switch(action.type) {
  4.  
  5. // REST
  6. case 'RECEIVED_PRODUCTS':
  7. return Object.assign({}, ...state, {products: action.products});
  8.  
  9.  
  10. // KEYBOARD
  11.  
  12. // SEARCHBAR
  13. case 'SEARCH_CHANGE':
  14. return Object.assign({}, state, { searchWord: [...state.searchWord, action.text] });
  15. case 'SEARCH_CHANGE_CORRECT':
  16. return Object.assign({}, state, { searchWord: state.searchWord.slice(0, state.searchWord.length-1)});
  17. case 'SEARCH_CHANGE_SPACE':
  18. return Object.assign({}, state, { searchWord: [...state.searchWord, ' ']});
  19. case 'SEARCH_CHANGE_DELETE':
  20. return Object.assign({}, state, { searchWord: ''});
  21.  
  22. // VIRTUAL KEYBOARD
  23. case 'TOGGLE_KEYBOARD':
  24. return Object.assign({}, state, { toggleKeyboard: !state.toggleKeyboard});
  25.  
  26.  
  27. // BUTTONSGRID
  28. case 'PRODUCT_ADD':
  29. return Object.assign( {}, state, {basket: [...state.basket, action.product]});
  30.  
  31.  
  32. // BASKET
  33. case 'PRODUCT_REMOVE':
  34. var removedFromBasket = state.basket.filter(function(product) {return product !== action.product});
  35. return Object.assign( {}, state, {basket : removedFromBasket});
  36. case 'PRODUCT_SET_COUNT':
  37. break;
  38.  
  39. default:
  40. return state;
  41. }
  42. }
  43.  
  44. class Basket extends React.Component {
  45.  
  46.  
  47. productClicked = (row) => {
  48. console.log(row.description);
  49. }
  50.  
  51. removeProductFromBasket = (product) => {
  52. console.log("Removing product")
  53. }
  54. render() {
  55. return (
  56. <div>
  57. <ReactTable
  58. data = {this.props.basket}
  59. columns= {[
  60. {
  61. Header: "Name",
  62. accessor: "description"
  63. },
  64. {
  65. Header: "Preis",
  66. id: "salesPrice",
  67. width: 50,
  68. accessor: p => p.salesPrice,
  69. },
  70. {
  71. Header: "Anzahl",
  72. id: 'purchasePrice',
  73. accessor: "purchasePrice",
  74. Cell:({row}) => (<Button onClick={() => this.productClicked(row)}>{row.purchasePrice} Stk.</Button>)
  75. },
  76. ]}
  77. />
  78. </div>
  79. );
  80. }
  81. }
  82.  
  83. const mapStateToProps = (state) => {
  84. return {
  85. basket: state.basket
  86. }
  87. }
  88.  
  89. const mapDispatchToProps = (dispatch) => {
  90. return {
  91. searchChanged: (data) => {
  92. let action = undefined;
  93. dispatch(action);
  94. }
  95. }
  96. }
  97.  
  98. export default connect(mapStateToProps, mapDispatchToProps)(Basket);
  99.  
  100. const mapStateToProps = (state) => {
  101. return {
  102. basket: state.basket,
  103. products: state.products
  104. }
  105. }
  106.  
  107. const mapDispatchToProps = (dispatch) => {
  108. return {
  109. onButtonPress: (data) => {
  110. let action = { type: 'PRODUCT_ADD', product: data };
  111. dispatch(action);
  112. },
  113. getProducts : function() {
  114. dispatch(getProducts());
  115. }
  116. };
  117. }
  118.  
  119. export default connect(mapStateToProps, mapDispatchToProps)(ButtonsGrid);
  120.  
  121. const initialState = {
  122.  
  123. // KEYBOARD
  124. searchWord: '',
  125. toggleKeyboard: false,
  126.  
  127. // BASKET
  128. basket: [],
  129.  
  130. // PRODUCTS
  131. products: []
  132. };
Add Comment
Please, Sign In to add comment