Warehouse to MiniApp
This commit is contained in:
Degradin 2025-01-18 03:17:26 +03:00
parent 3271d464c6
commit 063ed5fc3a
2 changed files with 33 additions and 1 deletions

View File

@ -88,6 +88,13 @@
</div> </div>
</div> </div>
<div class="section">
<h2>🗄️ Склад</h2>
<div id="enterprises">
<p>Нет доступного склада.</p>
</div>
</div>
<a href="https://t.me/CampFireGameBot" class="button">🏠 Перейти в чат бота</a> <a href="https://t.me/CampFireGameBot" class="button">🏠 Перейти в чат бота</a>
</div> </div>
@ -98,7 +105,7 @@
fetch(`/player/${playerId}`) fetch(`/player/${playerId}`)
.then(response => response.json()) .then(response => response.json())
.then(data => { .then(data => {
const { user, business, enterprises } = data; const { user, business, enterprises, warehouse } = data;
// Личные данные // Личные данные
document.getElementById("name").textContent = user.name || user.username; document.getElementById("name").textContent = user.name || user.username;
@ -168,6 +175,29 @@
enterprisesDiv.appendChild(div); enterprisesDiv.appendChild(div);
}); });
} }
// Склад (имеет следующие переменные playerId: DataTypes.BIGINT,capacity: DataTypes.INTEGER, // Общая ёмкость складаwood: DataTypes.INTEGER,coal: DataTypes.INTEGER,oil: DataTypes.INTEGER,metall: DataTypes.INTEGER,gold: DataTypes.INTEGER,diamond: DataTypes.INTEGER,), красиво выводим весь склад и добавляем прогрессбар заполненности
const warehouseDiv = document.getElementById("warehouse");
if (warehouse) {
warehouseDiv.innerHTML = "";
const resources = Object.keys(warehouse.dataValues).filter(key => key !== 'playerId' && key !== 'capacity');
resources.forEach(resource => {
const div = document.createElement("div");
div.classList.add("resource");
div.innerHTML = `
<strong>${getResourceName(resource)}</strong><br>
Количество: ${warehouse[resource]}<br>
Максимум: ${warehouse.capacity}
`;
// Добавляем прогрессбар заполненности склада
const progress = (warehouse[resource] / warehouse.capacity) * 100;
const progressBar = document.createElement("div");
progressBar.classList.add("progress-bar");
progressBar.innerHTML = `<div class="progress-bar-inner" style="width: ${progress}%"></div>`;
div.appendChild(progressBar);
warehouseDiv.appendChild(div);
});
}
}) })
.catch(err => { .catch(err => {
console.error("Ошибка загрузки данных:", err); console.error("Ошибка загрузки данных:", err);

View File

@ -25,6 +25,7 @@ app.get('/player/:id', async (req, res) => {
business = await BusinessModel.findOne( {where: { owner: user.business.id} } ) business = await BusinessModel.findOne( {where: { owner: user.business.id} } )
} }
const enterprises = await EnterpriseModel.findAll({ where: { playerId } }); const enterprises = await EnterpriseModel.findAll({ where: { playerId } });
const warehouse = await WarehouseModel.findOne({ where: { playerId } });
if (!user || !character) { if (!user || !character) {
return res.status(404).json({ error: "Игрок не найден." }); return res.status(404).json({ error: "Игрок не найден." });
@ -55,6 +56,7 @@ app.get('/player/:id', async (req, res) => {
}, },
business: business || { name: "Отсутствует", balance: 0, materials: 0, users: [] }, business: business || { name: "Отсутствует", balance: 0, materials: 0, users: [] },
enterprises: enterprises || [], enterprises: enterprises || [],
warehouse: warehouse || { materials: 0, maxMaterials: 0 },
}); });
} catch (err) { } catch (err) {
console.error(err); console.error(err);