From 3a4d8ce1de75bde43850fe437525e5bc1ba26eeb Mon Sep 17 00:00:00 2001 From: Robin Leber <rleber98@gmail.com> Date: Wed, 12 Jun 2024 17:01:36 +0200 Subject: [PATCH] Scaling anzeige --- src/functions/api.js | 21 +++++++++++++++++++ src/functions/codeEditor.js | 40 +++++++++++++++++-------------------- src/functions/scaling.js | 11 ++++++++++ src/index.html | 25 ++++++++++++++++++----- src/main.js | 2 ++ src/style.css | 15 ++++++++++++++ 6 files changed, 87 insertions(+), 27 deletions(-) create mode 100644 src/functions/scaling.js diff --git a/src/functions/api.js b/src/functions/api.js index 9cb1ecc..7eb8090 100644 --- a/src/functions/api.js +++ b/src/functions/api.js @@ -1,6 +1,7 @@ import axios from "axios"; import { SERVER_URL } from "../config"; import { loader, errorFeedback, successFeedback } from "./feedback"; +import { getScaleValues } from "./scaling"; export const runCustomCode = () => { loader(true); @@ -105,6 +106,7 @@ export const scaleOut = async (id) => { loader(false); if (response.status === 200) { successFeedback(); + getScaleValues(); } else { errorFeedback(response); } @@ -115,3 +117,22 @@ export const scaleOut = async (id) => { console.error(error); }); }; + +export const scaleValues = async () => { + loader(true); + try { + const response = await axios.get(`${SERVER_URL}/deployment/scaleValues`); + loader(false); + + if (response.status === 200) { + successFeedback(); + return response.data.result; + } else { + errorFeedback(response); + } + } catch (error) { + loader(false); + errorFeedback(error); + console.error(error); + } +}; diff --git a/src/functions/codeEditor.js b/src/functions/codeEditor.js index a4fb17c..fff9218 100644 --- a/src/functions/codeEditor.js +++ b/src/functions/codeEditor.js @@ -37,28 +37,24 @@ export const codeEditor = (instance) => { editorContainer.appendChild(closingX); let editorValues; - switch (filterToCode.type) { - case "Sender": - editorValues = { - doc: "// publisher.js\nconst amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n if (error0) {\n throw error0;\n }\n connection.createChannel((error1, channel) => {\n if (error1) {\n throw error1;\n }\n\n const queue = 'hello';\n\n channel.assertQueue(queue, {\n durable: false\n });\n\n const sendMessage = () => {\n const msg = 'Hello World! ' + new Date().toISOString();\n channel.sendToQueue(queue, Buffer.from(msg));\n console.log(\" [x] Sent '%s'\", msg);\n };\n\n setInterval(sendMessage, 1000);\n });\n});\n", - extensions: [basicSetup, javascript()], - parent: editorContainer, - }; - break; - case "Receiver": - editorValues = { - doc: "// consumer.js\nconst amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n\tif (error0) {\n\t\tthrow error0;\n\t}\n\tconnection.createChannel((error1, channel) => {\n\t\tif (error1) {\n\t\t\tthrow error1;\n\t\t}\n\n\t\tconst queue = 'hello';\n\n\t\tchannel.assertQueue(queue, {\n\t\t\tdurable: false\n\t\t});\n\n\t\tconsole.log(\" [*] Waiting for messages in %s. To exit press CTRL+C\", queue);\n\n\t\t// Funktion, um eine Nachricht aus der Queue zu konsumieren\n\t\tconst consumeMessage = () => {\n\t\t\tchannel.get(queue, { noAck: false }, (error, msg) => {\n\t\t\t\tif (error) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tif (msg) {\n\t\t\t\t\tconsole.log(\" [x] Received '%s'\", msg.content.toString());\n\t\t\t\t\t// Nachricht bestätigen (acknowledge)\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\" [x] No message received at this interval.\");\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// Setze ein Intervall von 3 Sekunden\n\t\tsetInterval(consumeMessage, 3000);\n\t});\n});\n", - extensions: [basicSetup, javascript()], - parent: editorContainer, - }; - break; - default: - editorValues = { - doc: "const amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n if (error0) {\n throw error0;\n }\n connection.createChannel((error1, channel) => {\n if (error1) {\n throw error1;\n }\n\n //TODO: Code logic here\n});\n", - extensions: [basicSetup, javascript()], - parent: editorContainer, - }; - break; + if (filterToCode.type.includes("Sender")) + editorValues = { + doc: "// publisher.js\nconst amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n if (error0) {\n throw error0;\n }\n connection.createChannel((error1, channel) => {\n if (error1) {\n throw error1;\n }\n\n const queue = 'hello';\n\n channel.assertQueue(queue, {\n durable: false\n });\n\n const sendMessage = () => {\n const msg = 'Hello World! ' + new Date().toISOString();\n channel.sendToQueue(queue, Buffer.from(msg));\n console.log(\" [x] Sent '%s'\", msg);\n };\n\n setInterval(sendMessage, 1000);\n });\n});\n", + extensions: [basicSetup, javascript()], + parent: editorContainer, + }; + else if (filterToCode.type.includes("Receiver")) { + editorValues = { + doc: "// consumer.js\nconst amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n\tif (error0) {\n\t\tthrow error0;\n\t}\n\tconnection.createChannel((error1, channel) => {\n\t\tif (error1) {\n\t\t\tthrow error1;\n\t\t}\n\n\t\tconst queue = 'hello';\n\n\t\tchannel.assertQueue(queue, {\n\t\t\tdurable: false\n\t\t});\n\n\t\tconsole.log(\" [*] Waiting for messages in %s. To exit press CTRL+C\", queue);\n\n\t\t// Funktion, um eine Nachricht aus der Queue zu konsumieren\n\t\tconst consumeMessage = () => {\n\t\t\tchannel.get(queue, { noAck: false }, (error, msg) => {\n\t\t\t\tif (error) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tif (msg) {\n\t\t\t\t\tconsole.log(\" [x] Received '%s'\", msg.content.toString());\n\t\t\t\t\t// Nachricht bestätigen (acknowledge)\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\" [x] No message received at this interval.\");\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// Setze ein Intervall von 3 Sekunden\n\t\tsetInterval(consumeMessage, 3000);\n\t});\n});\n", + extensions: [basicSetup, javascript()], + parent: editorContainer, + }; + } else { + editorValues = { + doc: "const amqp = require('amqplib/callback_api');\n\nconst rabbitmqUrl = 'amqp://mquser:mqpass@rabbit:5672';\n\namqp.connect(rabbitmqUrl, (error0, connection) => {\n if (error0) {\n throw error0;\n }\n connection.createChannel((error1, channel) => {\n if (error1) {\n throw error1;\n }\n\n //TODO: Code logic here\n});\n", + extensions: [basicSetup, javascript()], + parent: editorContainer, + }; } const editor = new EditorView(editorValues); diff --git a/src/functions/scaling.js b/src/functions/scaling.js new file mode 100644 index 0000000..791af2a --- /dev/null +++ b/src/functions/scaling.js @@ -0,0 +1,11 @@ +import { scaleValues } from "./api"; + +export const getScaleValues = async () => { + const values = await scaleValues(); + console.log("### values: ", values); + values.forEach((value) => { + const filter = document.getElementById(value.id); + const scale = filter.querySelector(".Scale"); + scale.textContent = value.count; + }); +}; diff --git a/src/index.html b/src/index.html index d4572f7..d7c4f48 100644 --- a/src/index.html +++ b/src/index.html @@ -27,11 +27,26 @@ <hr /> <div> <h5>FILTER</h5> - <div class="Filter" data-type="Start">Sender</div> - <div class="Filter" data-type="End">Receiver</div> - <div class="Filter" data-type="Default">BL</div> - <div class="Filter" data-type="Distributor">Router</div> - <div class="Filter" data-type="Collector">Aggregator</div> + <div class="Filter" data-type="Start"> + Sender + <p class="Scale">0</p> + </div> + <div class="Filter" data-type="End"> + Receiver + <p class="Scale">0</p> + </div> + <div class="Filter" data-type="Default"> + BL + <p class="Scale">0</p> + </div> + <div class="Filter" data-type="Distributor"> + Router + <p class="Scale">0</p> + </div> + <div class="Filter" data-type="Collector"> + Aggregator + <p class="Scale">0</p> + </div> </div> </div> <div id="Diagram"> diff --git a/src/main.js b/src/main.js index cc28ea3..9b4774e 100644 --- a/src/main.js +++ b/src/main.js @@ -11,6 +11,7 @@ import { restartCustomCode, clearArchitecture, } from "./functions/api"; +import { getScaleValues } from "./functions/scaling"; function App() { const appState = (() => { @@ -86,6 +87,7 @@ function App() { } else { restartCustomCode(); } + getScaleValues(); document.getElementById("Run").setAttribute("disabled", "disabled"); document.getElementById("Stop").removeAttribute("disabled"); }); diff --git a/src/style.css b/src/style.css index a64016c..02aca29 100644 --- a/src/style.css +++ b/src/style.css @@ -233,3 +233,18 @@ margin: auto; visibility: hidden; } + +#Diagram .Scale { + position: absolute; + right: -6px; + top: -24px; + border: 2px black solid; + border-radius: 24px; + background-color: ghostwhite; + padding: 3px; +} + +#Toolbox .Scale { + position: absolute; + visibility: hidden; +} -- GitLab