Browse Source

Загрузить файлы 'JS 5 Online Homework/Homework #13: redux'

stas.vladlenko 1 year ago
parent
commit
575bd87f26
1 changed files with 109 additions and 1 deletions
  1. 109 1
      JS 5 Online Homework/Homework #13: redux/hw13.js

+ 109 - 1
JS 5 Online Homework/Homework #13: redux/hw13.js

@@ -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())
+// }