UNPKG

node-red-contrib-freya-nodes

Version:

Custom nodes for Freya Vivarium Control System

104 lines (98 loc) 4.39 kB
<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>