node-red-contrib-freya-nodes
Version:
Custom nodes for Freya Vivarium Control System
104 lines (98 loc) • 4.39 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('circadian core',{
category: 'Freya Vivariums',
color: "#A2CA6F",
defaults: {
name: {value:""}
},
inputs:1,
outputs:2,
outputLabels:["control", "status"],
icon: "font-awesome/fa-globe",
label: function() {
return this.name || "Circadian Core";
}
});
</script>
<script type="text/html" data-template-name="circadian core">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Circadian Core">
</div>
<hr/>
<div class="form-row">
<h2><i class="fa fa-map-marker"></i> Location Settings</h2>
</div>
<div class="form-row">
<label for="node-input-latitude">Latitude (°)</label>
<input type="number" id="node-input-latitude" placeholder="50.98">
<i class="fa fa-info-circle" title="The latitude of your simulated environment. Controls day length variation across the year. (e.g. 0° = Equator, 50° = Central Europe)"></i>
</div>
<div class="form-row">
<label for="node-input-timezone">Timezone</label>
<input type="text" id="node-input-timezone" placeholder="UTC+2 Copenhagen, Brussels, Kampenhout">
<i class="fa fa-info-circle" title="Timezone offset in hours. Aligns the simulated solar noon with your local wall clock."></i>
</div>
<hr/>
<div class="form-row">
<a href="#" id="toggle-advanced" style="text-decoration:none; color:#C0504D;">
<i class="fa fa-caret-right"></i> Advanced settings
</a>
</div>
<!-- Advanced settings -->
<div id="advanced-settings" style="display:none;">
<div class="form-row">
<h2><i class="fa fa-globe"></i> Planetary settings</h2>
</div>
<div class="form-row">
<label for="node-input-axialTilt">Axial Tilt (°)</label>
<input type="number" id="node-input-axialTilt" placeholder="23.44">
<i class="fa fa-info-circle" title="Angle between the rotation axis and orbital plane. Controls seasonal variation. Earth = 23.44°"></i>
</div>
<div class="form-row">
<label for="node-input-orbitalPeriod">Orbital Period (days)</label>
<input type="number" id="node-input-orbitalPeriod" placeholder="365.25">
<i class="fa fa-info-circle" title="Length of a full year (orbit around the sun). Earth = 365.25 days."></i>
</div>
<div class="form-row">
<label for="node-input-rotationalPeriod">Rotational Period (hours)</label>
<input type="number" id="node-input-rotationalPeriod" placeholder="24">
<i class="fa fa-info-circle" title="Length of a full day-night cycle. Earth = 24 hours."></i>
</div>
<hr/>
<div class="form-row">
<h2><i class="fa fa-clock-o"></i> Time</h2>
</div>
<div class="form-row">
<label for="node-input-timeScale">Time Scale</label>
<input type="number" id="node-input-timeScale" placeholder="1.0">
<i class="fa fa-info-circle" title="Controls simulation speed. 1.0 = real time, 2.0 = twice as fast, 0.5 = half speed."></i>
</div>
</div>
<!--- END Advanced settings -->
<script>
$(function() {
$('#toggle-advanced').on('click', function(e) {
e.preventDefault();
var adv = $('#advanced-settings');
var icon = $(this).find('i');
if (adv.is(':visible')) {
adv.hide();
icon.removeClass('fa-caret-down').addClass('fa-caret-right');
$(this).contents().last()[0].textContent = ' Advanced settings';
} else {
adv.show();
icon.removeClass('fa-caret-right').addClass('fa-caret-down');
$(this).contents().last()[0].textContent = ' Advanced settings';
}
});
});
</script>
</script>
<script type="text/html" data-help-name="circadian core">
<p>
The <strong>Circadian Core</strong> dynamically computes target values for key vivarium variables
(temperature, humidity, light), creating natural circadian and seasonal rhythms —
while always enforcing explicit absolute safety constraints.
</p>
</script>