Files
monster/src/nodeClass.js
znetsixe 2a6a0bc34b P6: convert monster to BaseDomain + BaseNodeAdapter + concern split
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>
2026-05-10 22:09:25 +02:00

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;