node-red-contrib-agilite-utils
Version:
A set of Agilit-e Node-RED Nodes to perform various adhoc tasks without calling 3rd party web services
134 lines (125 loc) • 4.96 kB
HTML
<script type='text/javascript'>
var agiliteUtilityUUIDFunctions = {
updateUUIDVersion:function(){
var value = $('#node-input-uuidVersion option:selected').val()
switch(value){
case 'v3':
case 'v5':
document.querySelector('#rowNamespaceType').style.display = 'block'
document.querySelector('#rowNamespace').style.display = 'block'
break
default:
document.querySelector('#rowNamespaceType').style.display = 'none'
document.querySelector('#rowNamespace').style.display = 'none'
document.querySelector('#rowNamespaceCustom').style.display = 'none'
break
}
agiliteUtilityUUIDFunctions.updateNamespaceType()
},
updateNamespaceType:function(){
var uuidVersion = $('#node-input-uuidVersion option:selected').val()
var value = $('#node-input-namespaceType option:selected').val()
if(value !== 'custom' || uuidVersion === 'v1' || uuidVersion === 'v4'){
document.querySelector('#rowNamespaceCustom').style.display = 'none'
}else{
document.querySelector('#rowNamespaceCustom').style.display = 'block'
}
}
}
RED.nodes.registerType('uuid',{
category: 'utilities',
inputs: 1,
outputs:1,
icon: 'uuid.png',
color: '#ffa4a2',
label: function() {
return this.name||'UUID'
},
paletteLabel : 'uuid',
defaults : {
uuidVersion: {
value : '',
required : true
},
namespaceType: {
value : ''
},
namespace: {
value : ''
},
namespaceCustom: {
value : ''
},
name: {
value:''
},
field: {
value: 'payload',
},
fieldType: {
value: 'msg'
}
},
oneditprepare: function(){
$('#node-input-uuidVersion').change(function(){agiliteUtilityUUIDFunctions.updateUUIDVersion()})
$('#node-input-namespaceType').change(function(){agiliteUtilityUUIDFunctions.updateNamespaceType()})
agiliteUtilityUUIDFunctions.updateUUIDVersion()
agiliteUtilityUUIDFunctions.updateNamespaceType()
if(!this.fieldType)
this.fieldType = 'msg'
$('#node-input-field').typedInput({
default: 'msg',
types: ['msg','flow','global'],
typeField: $('#node-input-fieldType')
})
}
})
</script>
<script type='text/x-red' data-template-name='uuid'>
<div class='form-row' id='rowUUIDVersion'>
<label for='node-input-uuidVersion'><i class='fa fa-arrow-circle-right'></i> UUID Version</label>
<select id='node-input-uuidVersion' style='width:auto'>
<option value='v1'>Version 1 (Timestamp)</option>
<option value='v3'>Version 3 (Namespace)</option>
<option value='v4'>Version 4 (Random)</option>
<option value='v5'>Version 5 (Namespace)</option>
</select>
</div>
<div class='form-row' id='rowNamespaceType'>
<label for='node-input-namespaceType'><i class='fa fa-arrow-circle-right'></i> Namespace Type</label>
<select id='node-input-namespaceType' style='width:auto'>
<option value='dns'>DNS</option>
<option value='url'>URL</option>
<option value='custom'>CUSTOM</option>
</select>
</div>
<div class='form-row' id='rowNamespaceCustom'>
<label for='node-input-namespaceCustom'><i class='fa fa-calendar-times-o'></i> Custom Namespace</label>
<input type='text' id='node-input-namespaceCustom' placeholder='A UUID string specific to your app' />
</div>
<div class='form-row' id='rowNamespace'>
<label for='node-input-namespace'><i class='fa fa-key'></i> Namespace</label>
<input type='text' id='node-input-namespace' placeholder='e.g. 'Hello, World!'' />
</div>
<div class='form-row'>
<label for='node-input-field'><i class='fa fa-edit'></i> <span data-i18n='template.label.property'>Output to</span></label>
<input type='text' id='node-input-field' placeholder='payload' style='width:250px'>
<input type='hidden' id='node-input-fieldType'>
</div>
<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='Node Name' />
</div>
</script>
<script type='text/x-red' data-help-name='uuid'>
<p>A Node-RED utility node by Agilit-e based on the 'uuid' Module for NodeJS.</p>
<p>The following properties can either be manually specified in the UI Form of this node, or passed programmatically via <code>msg.agiliteUtils</code>:
<ul>
<li><code>uuidVersion</code>: Enum (v1/v3/v4/v5)</li>
<li><code>namespaceType</code>: Enum (dns/url/custom)</li>
<li><code>namespaceCustom</code>: String</li>
<li><code>namespace</code>: String</li>
</ul>
</p>
<p>The output of this node delivers String value to <code>msg.payload</code>.</p>
</script>