Всем доброго времени суток, есть код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var zero_status = false, // статус, если какие то компоненты = 0
incomplite_status = false, // статус, если можно приготовить не все рецепты
ready_status = false; // статус, если все ок
function Machine(water, tea, mlik, sugar, caps) {
var empty_conponents = [],
components = {
water: {
value: 0
},
tea: {
value: 0
},
milk: {
value: 0
},
sugar: {
value: 0
},
caps: {
value: 0
}
},
recipes = {
green: {
water: 150,
tea: 16,
milk: 30,
},
black: {
water: 150,
tea: 15,
milk: 30,
},
gray: {
water: 150,
tea: 15,
milk: 30,
},
orange: {
water: 150,
tea: 15,
milk: 31,
}
}
function ready() {
check(); // проверка компонентов
console.log(zero_status);
console.log(incomplite_status);
if (!zero_status) {
if (incomplite_status && ready_status) {
console.log('Можно готовить. Но не все. Нужно добавить: ' + empty_conponents);
for (var key in components) {
console.log(components[key].value);
}
setTimeout(function() {
addComponents(empty_conponents);
}, 2000);
} else if (!incomplite_status && ready_status) {
console.log('Все компоненты в норме. Можно готовить.');
for (var key in components) {
console.log(components[key].value);
}
}
} else if (zero_status) {
console.log('Готовить нельзя. Нужно добавить некоторые компоненты.');
for (var key in components) {
console.log(components[key].value);
}
setTimeout(function() {
addComponents(empty_conponents);
}, 2000);
}
}
this.ready = function() {ready();}
function addComponents(arr) {
var some = {},
parts = [],
x = 0;
empty_conponents.forEach(function(item,i, arr) {
switch (item) {
case 'water':
other = {
title: 'воды',
parent: water
}
break;
case 'tea':
other = {
title: 'чая',
parent: tea
}
break;
case 'sugar':
other = {
title: 'сахара',
parent: sugar
}
break;
case 'milk':
other = {
title: 'молока',
parent: milk
}
break;
case 'caps':
other = {
title: 'чашек',
parent: caps
}
break;
default: return;
}
var items = +prompt('Сколько добавить ' + other.title, 'Не более ' + other.parent + '');
if (items <= 0 || isNaN(items) || items > other.parent) {
return;
} else parts.push(items);
});
for (var key in components) {
if (zero_status && !incomplite_status) {
if (components[key].value === 0) {
components[key].value += parts[x++];
}
} else if (!zero_status && incomplite_status) {
if (components[key].value < parts[x]) {
components[key].value += parts[x++];
}
}
}
if (zero_status) zero_status = false;
if (incomplite_status) incomplite_status = false;
empty_conponents.splice(0, empty_conponents.length);
ready();
}
this.setComponents = function(water, tea, mlik, sugar, caps) {
components.water.value += water;
components.tea.value += tea;
components.milk.value += mlik;
components.sugar.value += sugar;
components.caps.value += caps;
}
function check() {
// проверяем компоненты машины, которые = 0
for (var key in components) {
if (components[key].value <= 0) {
components[key].value = 0;
zero_status = true;
empty_conponents.push(key);
}
}
// если все компоненты > 0 проверяем рецепты, нет zero_status
if (!zero_status) {
// проверяем возможность приготовления рецептов
for (var key in recipes) {
for (var i in recipes[key]) {
if (recipes[key][i] > components[i].value) {
incomplite_status = true;
empty_conponents.push(i);
}
}
}
}
if (empty_conponents.length != 0 && !zero_status) {
empty_conponents = unique(empty_conponents);
ready_status = true;
} else if (empty_conponents.length == 0 && !zero_status && !incomplite_status) {
ready_status = true;
}
}
function unique(arr) {
var obj = {};
for (var i = 0; i < arr.length; i++) {
var str = arr[i];
obj[str] = true;
}
return Object.keys(obj);
}
}
var mach = new Machine(1800,250,400,100,20);
mach.setComponents(0,15,400,1,20);
mach.ready();
</script>
</body>
</html>
Суть я думаю понятна. Вопрос в том, как сделать что бы с prompt введенные данные прибавлялись куда нужно.