|
@@ -0,0 +1,81 @@
|
|
|
+function reducer(state, {type, ШО, СКОКА}){
|
|
|
+
|
|
|
+ if (!state){
|
|
|
+ return {
|
|
|
+ пиво: {number : 300, price : 40},
|
|
|
+ чипсы: {number : 50, price : 30},
|
|
|
+ сиги: {number : 100, price : 70},
|
|
|
+ кола: {number: 80, price: 20},
|
|
|
+ шоколад: {number: 30, price: 25},
|
|
|
+ бабло: {cashbox : 0, mycash : 2000}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (type === 'КУПИТЬ' && (state[ШО].number) >= 0 && state.бабло.mycash - state[ШО].price * СКОКА >= 0) {
|
|
|
+ return {
|
|
|
+ ...state,
|
|
|
+ [ШО]: {...state[ШО], number: state[ШО].number - СКОКА},
|
|
|
+ бабло: {
|
|
|
+ mycash: state.бабло.mycash - state[ШО].price * СКОКА,
|
|
|
+ cashbox: state.бабло.cashbox + state[ШО].price * СКОКА
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return state
|
|
|
+}
|
|
|
+
|
|
|
+function createStore(reducer){
|
|
|
+ let state = reducer(undefined, {})
|
|
|
+ let cbs = []
|
|
|
+
|
|
|
+ const getState = () => state
|
|
|
+ const subscribe = cb => (cbs.push(cb),
|
|
|
+ () => cbs = cbs.filter(c => c !== cb))
|
|
|
+
|
|
|
+ const dispatch = action => {
|
|
|
+ const newState = reducer(state, action)
|
|
|
+ if (newState !== state){
|
|
|
+ state = newState
|
|
|
+ for (let cb of cbs) cb()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ getState,
|
|
|
+ dispatch,
|
|
|
+ subscribe
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const store = createStore(reducer)
|
|
|
+console.log(store.getState())
|
|
|
+
|
|
|
+let productN = document.getElementById("product");
|
|
|
+let numberN = document.getElementById("number");
|
|
|
+let buttonN = document.getElementById("button");
|
|
|
+
|
|
|
+let pivoN = document.getElementById("pivo").innerHTML= store.getState().пиво.number + ' шт'
|
|
|
+let chipsN = document.getElementById("chips").innerHTML= store.getState().чипсы.number + ' шт'
|
|
|
+let sigiN = document.getElementById("sigi").innerHTML= store.getState().сиги.number + ' шт'
|
|
|
+let colaN = document.getElementById("cola").innerHTML= store.getState().кола.number + ' шт'
|
|
|
+let chokN = document.getElementById("chok").innerHTML= store.getState().шоколад.number + ' шт'
|
|
|
+
|
|
|
+let pivoM = document.getElementById("pivoK").innerHTML= store.getState().пиво.price + ' грн'
|
|
|
+let chipsM = document.getElementById("chipsK").innerHTML= store.getState().чипсы.price + ' грн'
|
|
|
+let sigiM = document.getElementById("sigiK").innerHTML= store.getState().сиги.price + ' грн'
|
|
|
+let colaM = document.getElementById("colaK").innerHTML= store.getState().кола.price + ' грн'
|
|
|
+let chokM = document.getElementById("chokK").innerHTML= store.getState().шоколад.price + ' грн'
|
|
|
+
|
|
|
+let kassaN = document.getElementById("kassa").innerHTML= store.getState().бабло.cashbox + ' грн'
|
|
|
+let moneyN = document.getElementById("money").innerHTML= store.getState().бабло.mycash + ' грн'
|
|
|
+
|
|
|
+buttonN.onclick = () => {
|
|
|
+ store.dispatch({type: 'КУПИТЬ', ШО: productN.value, СКОКА: numberN.value})
|
|
|
+ let pivoN = document.getElementById("pivo").innerHTML= store.getState().пиво.number + ' шт'
|
|
|
+ let chipsN = document.getElementById("chips").innerHTML= store.getState().чипсы.number + ' шт'
|
|
|
+ let sigiN = document.getElementById("sigi").innerHTML= store.getState().сиги.number + ' шт'
|
|
|
+ let colaN = document.getElementById("cola").innerHTML= store.getState().кола.number + ' шт'
|
|
|
+ let chokN = document.getElementById("chok").innerHTML= store.getState().шоколад.number + ' шт'
|
|
|
+ let kassaN = document.getElementById("kassa").innerHTML= store.getState().бабло.cashbox + ' грн'
|
|
|
+ let moneyN = document.getElementById("money").innerHTML= store.getState().бабло.mycash + ' грн'
|
|
|
+}
|
|
|
+
|