@droneblocks/node-red-dexi
Version:
You want to make sure you don't lose any of your flow development. Make sure to map the host "flows" directory to the container directory as shown below. This will store the flow on your host machine if/when the container is destroyed.
100 lines (88 loc) • 3.3 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('write-gpio', {
category: 'DEXI',
color: '#fef5ff',
defaults: {
name: {value: ""},
boardtype: {value: 'dexi5', required: true},
pinnumber: {value: 21, required: true},
pinstate: {value: 'true', required: true},
stampheader: {
value: false
}
},
inputs:1,
outputs:1,
align: 'right',
paletteLabel: 'write gpio',
icon: "icon.png",
label: function() {
return this.name || "write gpio";
},
oneditprepare: function() {
var node = this;
// Pin configurations for different boards
var pinConfigs = {
dexi5: [16, 17, 20, 21, 22, 23, 24],
computekit: [0, 1, 2, 14, 15]
};
// Function to update pin dropdown based on board type
function updatePinOptions(boardType) {
var pinSelect = $('#node-input-pinnumber');
var currentPin = node.pinnumber;
var pins = pinConfigs[boardType] || pinConfigs.dexi5;
// Clear existing options
pinSelect.empty();
// Add new options
pins.forEach(function(pin) {
pinSelect.append($('<option>', {
value: pin,
text: pin
}));
});
// Try to restore previous selection if valid for this board
if (pins.indexOf(parseInt(currentPin)) !== -1) {
pinSelect.val(currentPin);
} else {
// Otherwise select the first pin
pinSelect.val(pins[0]);
}
}
// Initialize pin options based on current board type
updatePinOptions(node.boardtype || 'dexi5');
// Update pins when board type changes
$('#node-input-boardtype').on('change', function() {
updatePinOptions($(this).val());
});
}
})
</script>
<script type="text/html" data-template-name="write-gpio">
<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="Name">
</div>
<div class="form-row">
<label for="node-input-boardtype">Board Type</label>
<select id="node-input-boardtype">
<option value="dexi5">DEXI 5</option>
<option value="computekit">DEXI Compute Kit</option>
</select>
</div>
<div class="form-row">
<label for="node-input-pinnumber">Pin Number</label>
<select id="node-input-pinnumber">
<!-- Options populated dynamically based on board type -->
</select>
</div>
<div class="form-row">
<label for="node-input-pinstate">Pin State</label>
<select id="node-input-pinstate">
<option value="true">High</option>
<option value="false">Low</option>
</select>
</div>
</script>
<script type="text/html" data-help-name="write-gpio">
<p>Write gpio data</p>
</script>