|
@@ -34,7 +34,7 @@ function reducer(state, {type, ШО, СКОКА, БАБОС}){
|
|
|
}
|
|
|
if (type === 'КУПИТЬ' &&
|
|
|
state[ШО] && СКОКА > 0 &&
|
|
|
- СКОКА <= state[ШО].count && БАБОС >= state[ШО].price){
|
|
|
+ СКОКА <= state[ШО].count && БАБОС >= state[ШО].price * СКОКА){
|
|
|
|
|
|
|
|
|
|
|
@@ -42,13 +42,14 @@ function reducer(state, {type, ШО, СКОКА, БАБОС}){
|
|
|
|
|
|
console.log('bang')
|
|
|
console.log(store.getState())
|
|
|
- state.касса += +БАБОС
|
|
|
+ state.касса += truncateFraction(+БАБОС)
|
|
|
+ display_hide_error(arguments[1])
|
|
|
return {
|
|
|
...state,
|
|
|
[ШО]: {count: state[ШО].count - Math.floor(СКОКА), price: state[ШО].price },
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
+ display_hide_error(arguments[1])
|
|
|
return state
|
|
|
}
|
|
|
|
|
@@ -75,7 +76,6 @@ buy.onclick = () => {
|
|
|
|
|
|
|
|
|
store.dispatch(купи(select.value, quantity.value, cash.value))
|
|
|
- console.log('steit', store.getState())
|
|
|
}
|
|
|
|
|
|
|
|
@@ -86,6 +86,43 @@ const unsubscribe = store.subscribe(() => console.log(store.getState()))
|
|
|
|
|
|
|
|
|
|
|
|
+let errorP = document.createElement('p')
|
|
|
+errorP.style.color = 'red'
|
|
|
+errorP.style.textAlign = 'center'
|
|
|
+shop.append(errorP)
|
|
|
+
|
|
|
+function truncateFraction (number) {
|
|
|
+ try {
|
|
|
+ let strNum = String(number).split('.')
|
|
|
+ if(strNum[1].length > 2) {
|
|
|
+ strNum[1] = strNum[1].slice(0, 2)
|
|
|
+ }
|
|
|
+ return Number(strNum.join('.'))
|
|
|
+ } catch (e) {
|
|
|
+ return number
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function display_hide_error(obj) {
|
|
|
+ errorP.innerText = ''
|
|
|
+ if (obj.СКОКА === '' && obj.БАБОС === '') {
|
|
|
+ errorP.innerText = 'Мысли я читать не умeю >:^['
|
|
|
+ return;
|
|
|
+ } else if(obj.СКОКА === '' || obj.СКОКА < 0) {
|
|
|
+ errorP.innerText = 'А единиц товара сколько брать будете?'
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (obj.СКОКА > store.getState()[obj.ШО].count) {
|
|
|
+ errorP.innerText = `У нас нет столько ${obj.ШО}. ${obj.ШО} осталось ${store.getState()[obj.ШО].count}`
|
|
|
+ return;
|
|
|
+ } else if (obj.БАБОС < store.getState()[obj.ШО].price * obj.СКОКА) {
|
|
|
+ errorP.innerText = `Недостаточно денег для покупки ${obj.СКОКА} ед. ${obj.ШО}.
|
|
|
+ ${obj.ШО} стоит ${store.getState()[obj.ШО].price} денег за 1 ед. товара
|
|
|
+ Стоимость вашего заказа ${store.getState()[obj.ШО].price * obj.СКОКА}`
|
|
|
+ return;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
let table = document.createElement('table')
|
|
|
function drawTable(){
|
|
@@ -113,12 +150,11 @@ function drawTable(){
|
|
|
table.insertAdjacentHTML('beforeend', `
|
|
|
<tr>
|
|
|
<th>Касса</th>
|
|
|
- <td>${store.getState().касса}</td>
|
|
|
+ <td>${store.getState().касса} денег</td>
|
|
|
</tr>
|
|
|
`)
|
|
|
shop.append(table)
|
|
|
}
|
|
|
drawTable()
|
|
|
store.subscribe(drawTable)
|
|
|
-
|
|
|
console.log(store.getState())
|