node-red-contrib-netvar-utils
Version:
Network Variable List utility nodes for node-red
189 lines (184 loc) • 6.29 kB
HTML
<script type="text/javascript">
(function () {
'use strict';
RED.nodes.registerType('nvl-reader', {
category: 'codesys',
color: '#a6bbcf',
defaults: {
name: { value: '' },
nvl: {
value: '',
type: 'nvl-config',
required: true,
},
emitOn: {
value: 'last-packet',
required: true,
},
initial: { value: 'topic' },
initialType: { value: 'msg' },
timeout: {
value: 100,
validate: RED.validators.number(true),
},
timeoutBehaviour: {
value: 'send',
required: true,
},
sendStats: {
value: false,
},
},
inputs: 1,
outputs: 1,
icon: 'codesys.svg',
paletteLabel: 'nvl reader',
label: function () {
return this.name || 'nvl reader';
},
oneditprepare: function () {
$('#node-input-emitOn').on('change', function () {
var value = $(this).val();
$('.node-row-timeout').toggle(value === 'last-packet');
$('.node-row-initial').toggle(value === 'every-packet');
});
$('#node-input-initial').typedInput({
types: ['msg', 'flow', 'global'],
typeField: '#node-input-initial-type',
default: this.initialType || 'msg',
});
},
oneditsave: function () {
this.initialType = $('#node-input-initial').typedInput('type');
},
});
})();
</script>
<script type="text/html" data-template-name="nvl-reader">
<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-nvl"><i class="fa fa-th-list"></i> NVL </label>
<input type="text" id="node-input-nvl" />
</div>
<div class="form-row">
<label for="node-input-emitOn"><i class="fa fa-archive"></i> Send msg</label>
<select type="text" id="node-input-emitOn" style="width: 300px;">
<option value="last-packet">When all expected packets are received</option>
<option value="every-packet">On Every Packet</option>
</select>
</div>
<div class="node-row-timeout">
<div class="form-row">
<label for="node-input-timeout"><i class="fa fa-clock-o"></i> Timeout </label>
<input type="text" id="node-input-timeout" placeholder="Milliseconds (Default: 100ms)" />
</div>
<div class="form-row">
<label for="node-input-timeoutBehaviour"> On Timeout </label>
<select type="text" id="node-input-timeoutBehaviour" style="width: 300px;">
<option value="send">Send message</option>
<option value="discard">Discard payload</option>
</select>
</div>
<div class="form-row">
<label></label>
<input
style="width: 20px; vertical-align: baseline;"
type="checkbox"
id="node-input-sendStats"
/>
<label style="margin: 0; width: auto;" for="node-input-sendStats"> Send reader stats</label>
</div>
<div class="form-tips">
Timeout counter will start on first received packet. Timeout counter will be reset on each
subsequent packet.
</div>
</div>
<div class="form-row node-row-initial">
<label for="node-input-initial"> Initial JSON </label>
<input type="text" id="node-input-initial" />
<input type="hidden" id="node-input-initial-type" />
</div>
</script>
<script type="text/html" data-help-name="nvl-reader">
<p>
Reads buffers sent by a network variable list sender (or emitted by <code>nvl-emitter</code>).
</p>
<h3>Input</h3>
<dl class="message-properties">
<dt>
payload
<span class="property-type">buffer</span>
</dt>
<dd>Netvar packet sent by a sender</dd>
</dl>
<h3>Output</h3>
<dl class="message-properties">
<dt>
payload
<span class="property-type">object | null</span>
</dt>
<dd>
Network variable list as JSON object filled with values acquired from the buffer. Can be
<code>null</code> if stats are enabled and payload is discarded on timeout.
</dd>
<dt>
stats
<span class="property-type">object</span>
</dt>
<dd>
Contains statistics about the read process that produced
<code>payload</code>. Must be enabled. Stats object contains following properties:
</dd>
<dl class="message-properties" style="margin: 6px">
<dt>
start
<span class="property-type">number</span>
</dt>
<dd>
Start timestamp of read process. Read process starts when a valid packet is received after
last read process.
</dd>
<dt>
end
<span class="property-type">number</span>
</dt>
<dd>
End timestamp of read process. Read process ends when all expected packets are received or
when it times out while waiting for expected packets.
</dd>
<dt>
duration
<span class="property-type">number</span>
</dt>
<dd>Duration of read process.</dd>
<dt>
timeout
<span class="property-type">boolean</span>
</dt>
<dd>true will read process timed-out.</dd>
<dt>
validPacketsReceived
<span class="property-type">number</span>
</dt>
<dd>Number of valid and uniquely indexed packets received.</dd>
<dt>
invalidPacketsReceived
<span class="property-type">number</span>
</dt>
<dd>Number of invalid packets received.</dd>
<dt>
missingPackets
<span class="property-type">number[]</span>
</dt>
<dd>Packet indexes that were expected but not received.</dd>
</dl>
</dl>
<h3>Details</h3>
<p>Output is sent when the all the expected packets are received.</p>
<p>Node ignores buffers that doesnt comply to its standard.</p>
<p>Node throws <code>Error</code> if it receieves anything other than <code>Buffer</code></p>
</script>
//# sourceMappingURL=nvl-reader.html.map