From 530dac5c771b7dd6110c64965f3cc96cf52cd1aa Mon Sep 17 00:00:00 2001
From: "p.vanderwilt"
Date: Fri, 4 Jul 2025 12:51:37 +0200
Subject: [PATCH] Refactor nodeClass to streamline configuration loading and
reactor setup
---
src/nodeClass.js | 94 ++++++++++++++++++++++++------------------------
1 file changed, 47 insertions(+), 47 deletions(-)
diff --git a/src/nodeClass.js b/src/nodeClass.js
index 4cbb4bf..917f1c0 100644
--- a/src/nodeClass.js
+++ b/src/nodeClass.js
@@ -3,11 +3,11 @@ const { Reactor_CSTR, Reactor_PFR } = require('./reactor_class.js');
class nodeClass {
/**
- * Create a ReactorNode.
- * @param {object} uiConfig - Node-RED node configuration.
- * @param {object} RED - Node-RED runtime API.
- * @param {object} nodeInstance - The Node-RED node instance.
- * @param {string} nameOfNode - The name of the node, used for
+ * Create ReactorNode.
+ * @param {object} uiConfig - Node-RED node configuration
+ * @param {object} RED - Node-RED runtime API
+ * @param {object} nodeInstance - Node-RED node instance
+ * @param {string} nameOfNode - Name of the node
*/
constructor(uiConfig, RED, nodeInstance, nameOfNode) {
// Preserve RED reference for HTTP endpoints if needed
@@ -15,14 +15,16 @@ class nodeClass {
this.RED = RED;
this.name = nameOfNode;
- this._setupClass(uiConfig);
+ this._loadConfig(uiConfig)
+
+ this._setupClass();
this._attachInputHandler();
}
_attachInputHandler() { // Handle input messages
- this.node.on('input', function(msg, send, done) {
+ this.node.on('input', (msg, send, done) => {
let toggleUpdate = false;
switch (msg.topic) {
@@ -56,54 +58,52 @@ class nodeClass {
});
}
- _setupClass(uiConfig) {
+ _loadConfig(uiConfig) {
+ this.config = {
+ reactor_type: uiConfig.reactor_type,
+ volume: parseFloat(uiConfig.volume),
+ length: parseFloat(uiConfig.length),
+ resolution_L: parseInt(uiConfig.resolution_L),
+ n_inlets: parseInt(uiConfig.n_inlets),
+ kla: parseFloat(uiConfig.kla),
+ initialState: [
+ parseFloat(uiConfig.S_O_init),
+ parseFloat(uiConfig.S_I_init),
+ parseFloat(uiConfig.S_S_init),
+ parseFloat(uiConfig.S_NH_init),
+ parseFloat(uiConfig.S_N2_init),
+ parseFloat(uiConfig.S_NO_init),
+ parseFloat(uiConfig.S_HCO_init),
+ parseFloat(uiConfig.X_I_init),
+ parseFloat(uiConfig.X_S_init),
+ parseFloat(uiConfig.X_H_init),
+ parseFloat(uiConfig.X_STO_init),
+ parseFloat(uiConfig.X_A_init),
+ parseFloat(uiConfig.X_TS_init)
+ ]
+ }
+ }
+
+ _setupClass() {
let new_reactor;
- switch (uiConfig.reactor_type) {
+ switch (this.config.reactor_type) {
case "CSTR":
new_reactor = new Reactor_CSTR(
- parseFloat(uiConfig.volume),
- parseInt(uiConfig.n_inlets),
- parseFloat(uiConfig.kla),
- [
- parseFloat(uiConfig.S_O_init),
- parseFloat(uiConfig.S_I_init),
- parseFloat(uiConfig.S_S_init),
- parseFloat(uiConfig.S_NH_init),
- parseFloat(uiConfig.S_N2_init),
- parseFloat(uiConfig.S_NO_init),
- parseFloat(uiConfig.S_HCO_init),
- parseFloat(uiConfig.X_I_init),
- parseFloat(uiConfig.X_S_init),
- parseFloat(uiConfig.X_H_init),
- parseFloat(uiConfig.X_STO_init),
- parseFloat(uiConfig.X_A_init),
- parseFloat(uiConfig.X_TS_init)
- ]
+ this.config.volume,
+ this.config.n_inlets,
+ this.config.kla,
+ this.config.initialState
);
break;
case "PFR":
new_reactor = new Reactor_PFR(
- parseFloat(uiConfig.volume),
- parseFloat(uiConfig.length),
- parseInt(uiConfig.resolution_L),
- parseInt(uiConfig.n_inlets),
- parseFloat(uiConfig.kla),
- [
- parseFloat(uiConfig.S_O_init),
- parseFloat(uiConfig.S_I_init),
- parseFloat(uiConfig.S_S_init),
- parseFloat(uiConfig.S_NH_init),
- parseFloat(uiConfig.S_N2_init),
- parseFloat(uiConfig.S_NO_init),
- parseFloat(uiConfig.S_HCO_init),
- parseFloat(uiConfig.X_I_init),
- parseFloat(uiConfig.X_S_init),
- parseFloat(uiConfig.X_H_init),
- parseFloat(uiConfig.X_STO_init),
- parseFloat(uiConfig.X_A_init),
- parseFloat(uiConfig.X_TS_init)
- ]
+ this.config.volume,
+ this.config.length,
+ this.config.resolution_L,
+ this.config.n_inlets,
+ this.config.kla,
+ this.config.initialState
);
break;
default: