node-red-contrib-mobius-flow-base 2.5.86-beta.78 → 2.5.86-beta.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -193,6 +193,42 @@ module.exports = function (RED) {
193
193
  });
194
194
  };
195
195
 
196
+ /**
197
+ * Update a given node's node status based on last active time
198
+ * @param {Object} mobiusNode - The node whos status is to be updated
199
+ */
200
+ node.updateNodeStatus = function (mobiusNode) {
201
+ node.users[mobiusNode.id] = mobiusNode;
202
+ const timeSinceLastActive = Date.now() - node.users[mobiusNode.id].lastActiveTime;
203
+ let statusText = '';
204
+ let statusColour = 'green';
205
+ if (timeSinceLastActive < 15 * 60000) {
206
+ statusText = 'Active less than 15 minutes ago';
207
+ }
208
+ if (timeSinceLastActive >= 15 * 60000 && timeSinceLastActive < 3 * 60 * 60000) {
209
+ statusText = 'Active less than 3 hours ago';
210
+ }
211
+ if (timeSinceLastActive >= 3 * 60 * 60000 && timeSinceLastActive < 12 * 60 * 60000) {
212
+ statusText = 'Active less than 12 hours ago';
213
+ }
214
+ if (timeSinceLastActive >= 12 * 60 * 60000 && timeSinceLastActive < 24 * 60 * 60000) {
215
+ statusText = 'Active less than 24 hours ago';
216
+ }
217
+ if (timeSinceLastActive > 24 * 60 * 60000 && node.users[mobiusNode.id].lastActiveTime > 0) {
218
+ statusColour = 'grey';
219
+ statusText = 'Active more than 24 hours ago';
220
+ }
221
+ if (node.users[mobiusNode.id].lastActiveTime === 0) {
222
+ statusColour = 'grey';
223
+ statusText = 'Never Active';
224
+ }
225
+ node.users[mobiusNode.id].status({
226
+ fill: statusColour,
227
+ shape: 'dot',
228
+ text: statusText,
229
+ });
230
+ };
231
+
196
232
  /**
197
233
  * Register a new Mobius node with this config node
198
234
  * @param {Object} mobiusNode - The new node to register
@@ -206,50 +242,16 @@ module.exports = function (RED) {
206
242
  text: 'Connected',
207
243
  });
208
244
  }
209
- node.users[mobiusNode.id].lastActiveTime = Date.now();
245
+ node.users[mobiusNode.id].lastActiveTime = 0;
210
246
  node.users[mobiusNode.id].on('send', () => {
211
- console.log('Send event');
247
+ console.log(Date.now());
212
248
  node.users[mobiusNode.id].lastActiveTime = Date.now();
249
+ node.updateNodeStatus(mobiusNode);
250
+ console.log(node.users[mobiusNode.id].lastActiveTime);
213
251
  });
214
252
  node.users[mobiusNode.id].statusCheckLoop = setInterval(() => {
215
- const timeSinceLastActive = Date.now() - node.users[mobiusNode.id].lastActiveTime;
216
- console.log(timeSinceLastActive);
217
- if (timeSinceLastActive < 15 * 60000) {
218
- node.users[mobiusNode.id].status({
219
- fill: 'green',
220
- shape: 'dot',
221
- text: 'Active less than 15 minutes ago',
222
- });
223
- }
224
- if (timeSinceLastActive >= 15 * 60000 && timeSinceLastActive < 3 * 60 * 60000) {
225
- node.users[mobiusNode.id].status({
226
- fill: 'green',
227
- shape: 'dot',
228
- text: 'Active less than 3 hours ago',
229
- });
230
- }
231
- if (timeSinceLastActive >= 3 * 60 * 60000 && timeSinceLastActive < 12 * 60 * 60000) {
232
- node.users[mobiusNode.id].status({
233
- fill: 'green',
234
- shape: 'dot',
235
- text: 'Active less than 12 hours ago',
236
- });
237
- }
238
- if (timeSinceLastActive >= 12 * 60 * 60000 && timeSinceLastActive < 24 * 60 * 60000) {
239
- node.users[mobiusNode.id].status({
240
- fill: 'green',
241
- shape: 'dot',
242
- text: 'Active less than 24 hours ago',
243
- });
244
- }
245
- if (timeSinceLastActive > 24 * 60 * 60000) {
246
- node.users[mobiusNode.id].status({
247
- fill: 'grey',
248
- shape: 'dot',
249
- text: 'Active more than 24 hours ago',
250
- });
251
- }
252
- }, 10000);
253
+ node.updateNodeStatus(mobiusNode);
254
+ }, 60000);
253
255
  };
254
256
 
255
257
  /**
@@ -258,6 +260,7 @@ module.exports = function (RED) {
258
260
  * @param {Function} done - A callback to be run by the node after it has been deregistered
259
261
  */
260
262
  node.deregister = function (mobiusNode, done) {
263
+ clearInterval(node.users[mobiusNode.id].statusCheckLoop);
261
264
  delete node.users[mobiusNode.id];
262
265
  if (node.service) {
263
266
  try {
@@ -68,12 +68,10 @@ module.exports = function (RED) {
68
68
  ]);
69
69
  } else {
70
70
  node.send({ topic: response.uri, payload: allResources });
71
- console.log(node.lastActiveTime);
72
71
  }
73
72
  });
74
73
 
75
74
  node.serviceConn.register(node);
76
- console.log(node.statusCheckLoop);
77
75
 
78
76
  node.on('close', function (done) {
79
77
  node.serviceConn.deregister(node, done);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-mobius-flow-base",
3
- "version": "2.5.86-beta.78",
3
+ "version": "2.5.86-beta.81",
4
4
  "description": "Node-RED base nodes for Mobius Flow",
5
5
  "main": "index.js",
6
6
  "types": "dist/index.d.ts",