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: