|
@@ -104,4 +104,112 @@ countGoods.oninput = () => {
|
|
|
buy.onclick = () => {
|
|
|
store.dispatch(createAction())
|
|
|
console.log(store.getState())
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// Store FOOP ===========================================================================================================================================
|
|
|
+
|
|
|
+
|
|
|
+// function reducer(state, {type, ШО, СКОКА, БАБЛО}){
|
|
|
+// if (!state){
|
|
|
+// return {
|
|
|
+// пиво: {
|
|
|
+// колличество: 100,
|
|
|
+// цена: 52
|
|
|
+// },
|
|
|
+// сиги: {
|
|
|
+// колличество: 200,
|
|
|
+// цена: 86
|
|
|
+// },
|
|
|
+// чипсы: {
|
|
|
+// колличество: 50,
|
|
|
+// цена: 43
|
|
|
+// },
|
|
|
+// ЧЕК: 0,
|
|
|
+// СДАЧА: 0,
|
|
|
+// КАССА: 0,
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// switch({type, ШО, СКОКА, БАБЛО}.type) {
|
|
|
+// case 'КУПИТЬ':
|
|
|
+// if (state[ШО].колличество <= СКОКА){
|
|
|
+// alert(`Товара ${[ШО]} нет в таком колличестве, есть только ${state[ШО].колличество}`)
|
|
|
+// }
|
|
|
+
|
|
|
+// if (БАБЛО < state.ЧЕК ) {
|
|
|
+// alert(`Не хватает ${state.ЧЕК - БАБЛО}. Приходи, когда будет БАБЛО!`)
|
|
|
+// }
|
|
|
+
|
|
|
+// else {
|
|
|
+// return {
|
|
|
+// ...state,
|
|
|
+// [ШО]: {...state[ШО], колличество: state[ШО].колличество >= СКОКА ? state[ШО].колличество - СКОКА : state[ШО].колличество},
|
|
|
+// КАССА: БАБЛО >= state.ЧЕК && state[ШО].колличество >= СКОКА ? state.ЧЕК : 0,
|
|
|
+// СДАЧА: БАБЛО >= state.ЧЕК && state[ШО].колличество >= СКОКА ? БАБЛО - state.ЧЕК : 0
|
|
|
+// }
|
|
|
+// }
|
|
|
+// case 'СУММА ПОКУПКИ':
|
|
|
+// return {
|
|
|
+// ...state,
|
|
|
+// ЧЕК: state[ШО].цена * СКОКА,
|
|
|
+// }
|
|
|
+// default:
|
|
|
+// return state
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// function CreateStore(reducer){
|
|
|
+
|
|
|
+// let state = reducer(undefined, {})
|
|
|
+// let cbs = []
|
|
|
+
|
|
|
+// this.getState = () => state
|
|
|
+// this.subscribe = cb => (cbs.push(cb), () => cbs = cbs.filter(c => c !== cb))
|
|
|
+// this.dispatch = action => {
|
|
|
+// const newState = reducer(state, action)
|
|
|
+// if (newState !== state){
|
|
|
+// state = newState
|
|
|
+// for (let cb of cbs) cb()
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+// function createAction (){
|
|
|
+// return {
|
|
|
+// type: 'КУПИТЬ',
|
|
|
+// ШО: selectProduct.value,
|
|
|
+// СКОКА: +countGoods.value,
|
|
|
+// БАБЛО: +moneys.value,
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// const kiosk = reducer(undefined, {})
|
|
|
+
|
|
|
+// for (let i = 0; i < Object.keys(kiosk).length; i ++) {
|
|
|
+// if (typeof Object.values(kiosk)[i] === 'object') {
|
|
|
+// selectProduct.appendChild(document.createElement('option')).innerHTML = Object.keys(kiosk)[i]
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// beerCount.value = kiosk.пиво.колличество
|
|
|
+// sigiCount.value = kiosk.сиги.колличество
|
|
|
+// chipsCount.value = kiosk.чипсы.колличество
|
|
|
+
|
|
|
+
|
|
|
+// const stores = new CreateStore(reducer)
|
|
|
+// stores.subscribe( () => beerCount.value = stores.getState().пиво.колличество, beer.innerHTML += ` ${stores.getState().пиво.цена} UAH/бут.` )
|
|
|
+// stores.subscribe( () => sigiCount.value = stores.getState().сиги.колличество, sigi.innerHTML += ` ${stores.getState().сиги.цена} UAH/пачку`)
|
|
|
+// stores.subscribe( () => chipsCount.value = stores.getState().чипсы.колличество, chips.innerHTML += ` ${stores.getState().чипсы.цена} UAH/пачку`)
|
|
|
+// stores.subscribe( () => giveMoney.value = stores.getState().ЧЕК)
|
|
|
+// stores.subscribe( () => turningIn.value = stores.getState().СДАЧА)
|
|
|
+
|
|
|
+// countGoods.oninput = () => {
|
|
|
+// stores.dispatch({...createAction(), type: 'СУММА ПОКУПКИ'})
|
|
|
+// }
|
|
|
+
|
|
|
+// buy.onclick = () => {
|
|
|
+// stores.dispatch(createAction())
|
|
|
+// console.log(stores.getState())
|
|
|
+// }
|