Took 5 hours 14 minutes
This commit is contained in:
2022-11-21 12:13:30 +01:00
parent a4ac8d083b
commit a722caf2d4
17 changed files with 421 additions and 106 deletions

View File

@ -7,6 +7,8 @@ import {WebSocketEvent} from "../../WebSocketEvent";
import Container from "../../database/Container";
import {SensorType} from "../../SensorType";
import {Settings} from "../../Settings";
import Ingredient from "../../database/Ingredient";
import {RequestType} from "../../RequestType";
const express = require('express');
const router = express.Router();
@ -26,6 +28,8 @@ router.ws('/', async (ws, req, next) => {
await WebSocketHandler.sendRunningConfig();
await WebSocketHandler.sendContainers();
await WebSocketHandler.sendStatus();
await WebSocketHandler.sendDrinks();
ws.on('message', async (raw, bool) => {
@ -36,6 +40,8 @@ router.ws('/', async (ws, req, next) => {
return;
}
log(msg);
switch (msg.event) {
case WebSocketEvent.TARE: {
if (msg.data["state"] == true) {
@ -66,6 +72,26 @@ router.ws('/', async (ws, req, next) => {
break;
}
case WebSocketEvent.CONTAINER_UPDATE: {
let container = await Container.findById(msg.data["container"]);
if (!container) break;
let ingredient;
if (msg.data["ingredient"] != null) {
ingredient = await Ingredient.findById(msg.data["ingredient"]);
if (!ingredient)
ingredient = undefined;
}
container.volume = parseInt(msg.data["volume"]);
container.content = ingredient;
await container.save();
await iTender.refreshDrinks();
break;
}
case WebSocketEvent.CONFIG: {
// ToDo
console.log("New Settings:", msg.data);
@ -85,10 +111,34 @@ router.ws('/', async (ws, req, next) => {
if (Settings.setupDone) {
iTender.setStatus(iTenderStatus.READY);
await WebSocketHandler.sendRunningConfig();
}
}
await WebSocketHandler.sendContainers();
break;
}
case WebSocketEvent.REQUEST: {
switch (msg.data["type"] as RequestType) {
case RequestType.STATS: {
await WebSocketHandler.sendStats();
break;
}
case RequestType.CONTAINERS: {
WebSocketHandler.answerRequest(msg.data["type"] as RequestType, (await Container.find().sort({"slot": 1})));
break;
}
case RequestType.INGREDIENTS: {
WebSocketHandler.answerRequest(msg.data["type"] as RequestType, (await Ingredient.find().sort({"name": 1})));
break;
}
}
break;
}
default: {
log("WebSocketHandler does not know how to handle " + msg.event + " Event");
}
}
});