node-red-contrib-polymer
Version:
Polymer based dashboard UI for Node-RED
109 lines (100 loc) • 4.21 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('polymer_paper-button', {
category: 'polymer',
color: '#a6bbcf',
defaults: {
element: {value: 'polymer_paper-button', required: true},
name: {value: ''},
label: {value: ''},
attributes: {value: ''},
parent: {value: ''},
repeat: {value: 0},
width: {value: '100%'},
height: {value: ''},
icon: {value: ''},
topic: {value: ''},
payload: {value: '',validate: (RED.validators.hasOwnProperty('typedInput')?RED.validators.typedInput('payloadType'):function(v) { return true})},
payloadType: { value: 'str'},
raised: { value: true}
},
inputs: 1,
outputs: 1,
icon: "ui_button.png",
paletteLabel: 'button',
label: function() { return this.name || 'button'; },
oneditprepare: function () {
var node = this;
var options = {};
RED.nodes.eachNode(function (group) {
if (group.type.indexOf('polymer_nav_group') === 0) {
var optionText = RED.nodes.node(RED.nodes.node(RED.nodes.node(group.id).parent).parent).name + '/' +
RED.nodes.node(RED.nodes.node(group.id).parent).name + '/' +
group.name;
options[optionText] = '<option value="' + group.id + '"' +
(group.id === node.parent ? ' selected' : '') + '>' +
optionText + '</option>';
}
});
Object.keys(options).sort().forEach(function (option) {
jQuery('#node-input-parent').append(options[option]);
});
$('#node-input-payload').typedInput({
default: 'str',
typeField: $("#node-input-payloadType"),
//types:['flow','global','str','num','bool','json','date']
types:['str','num','bool']
});
}
});
</script>
<script type="text/x-red" data-template-name="polymer_paper-button">
<div class="form-row">
<label for="node-input-parent"><i class="fa fa-tag"></i> Parent Group</label>
<select id="node-input-parent">
</select>
</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">
</div>
<div class="form-row">
<label for="node-input-width"><i class="fa fa-tag"></i> Width</label>
<input type="text" id="node-input-width">
</div>
<div class="form-row">
<label for="node-input-height"><i class="fa fa-tag"></i> Height</label>
<input type="text" id="node-input-height">
</div>
<div class="form-row">
<label for="node-input-label"><i class="fa fa-tag"></i> Label</label>
<input type="text" id="node-input-label">
</div>
<!--
<div class="form-row">
<label for="node-input-icon"><i class="fa fa-tag"></i> Icon</label>
<input type="text" id="node-input-icon">
</div>
-->
<div class="form-row">
<label for="node-input-raised"><i class="fa fa-tag"></i> Raised</label>
<input type="checkbox" id="node-input-raised">
</div>
<div class="form-row">
<label for="node-input-repeat"><i class="fa fa-tag"></i> Repeat</label>
<input type="number" id="node-input-repeat">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="fa fa-tag"></i> Topic</label>
<input type="text" id="node-input-topic">
</div>
<div class="form-row">
<label style="width:auto" for="node-input-payload"><i class="fa fa-envelope-o"></i> When clicked, send:</label>
</div>
<div class="form-row">
<label for="node-input-payload" style="padding-left: 25px; margin-right: -25px">Payload</label>
<input type="text" id="node-input-payload" style="width:70%">
<input type="hidden" id="node-input-payloadType">
</div>
</script>
<script type="text/x-red" data-help-name="polymer_paper-button">
</script>