Refactor of monster to use the platform infrastructure (BaseDomain, BaseNodeAdapter, ChildRouter, commandRegistry, statusBadge). Extracts concerns into focused modules per .claude/refactor/MODULE_SPLIT.md generic template. Tests stay green; CONTRACT.md generated; legacy aliases preserved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const { BaseNodeAdapter } = require('generalFunctions');
|
|
const Monster = require('./specificClass');
|
|
const commands = require('./commands');
|
|
|
|
class nodeClass extends BaseNodeAdapter {
|
|
static DomainClass = Monster;
|
|
static commands = commands;
|
|
// Tick-driven: sampling integrator (m3PerTick → temp_pulse) needs
|
|
// wall-clock delta-time once per second.
|
|
static tickInterval = 1000;
|
|
static statusInterval = 1000;
|
|
|
|
buildDomainConfig(uiConfig) {
|
|
return {
|
|
constraints: {
|
|
samplingtime: Number(uiConfig.samplingtime) || 0,
|
|
minVolume: Number(uiConfig.minvolume ?? uiConfig.minVolume) || 5,
|
|
maxWeight: Number(uiConfig.maxweight ?? uiConfig.maxWeight) || 23,
|
|
nominalFlowMin: Number(uiConfig.nominalFlowMin) || 0,
|
|
flowMax: Number(uiConfig.flowMax) || 0,
|
|
maxRainRef: Number(uiConfig.maxRainRef) || 10,
|
|
minSampleIntervalSec: Number(uiConfig.minSampleIntervalSec) || 60,
|
|
},
|
|
functionality: { role: 'samplingCabinet', aquonSampleName: uiConfig.aquon_sample_name || undefined },
|
|
asset: { emptyWeightBucket: Number(uiConfig.emptyWeightBucket) || 3 },
|
|
};
|
|
}
|
|
|
|
extraSetup() {
|
|
const uiSampleName = this.config?.functionality?.aquonSampleName;
|
|
if (uiSampleName) this.source.aquonSampleName = uiSampleName;
|
|
}
|
|
}
|
|
|
|
module.exports = nodeClass;
|