cloud-red
Version:
Harnessing Serverless for your cloud integration needs
110 lines (101 loc) • 4.53 kB
HTML
<script type="text/x-red" data-template-name="s3-event-handler">
<!-- name -->
<div class="form-row">
<label for="node-input-name">
<i class="fa fa-tag"></i>
<span data-i18n="common.label.name"></span>
</label>
<input type="text" id="node-input-name" data-i18n="[placeholder]common.label.name">
</div>
<!-- Trigger Enabled -->
<div class="form-row" style="margin-bottom:0px">
<label> </label>
<input id="node-input-triggerEnabled" type="checkbox" unchecked style="display:inline-block; width:auto; vertical-align:top;"">
<label for="node-input-triggerEnabled" style="width:70%; line-height:0px"> Attach Trigger</label>
</div>
<div id="triggerSection">
<hr>
<!-- BucketName -->
<div class="form-row">
<label for="node-input-bucketName">Bucket</label>
<input id="node-input-bucketName" type="text">
</div>
<!-- Prefix -->
<div class="form-row">
<label for="node-input-prefix">Prefix</label>
<input id="node-input-prefix" type="text" placeholder="(optional) e.g. images/">
</div>
<!-- Suffix -->
<div class="form-row">
<label for="node-input-suffix">Suffix</label>
<input id="node-input-suffix" type="text" placeholder="(optional) e.g. .jpg">
</div>
<!-- Event -->
<div class="form-row">
<label for="node-input-event">Event type</label>
<!-- <input id="node-input-event" type="text" placeholder="default: s3:ObjectCreated:*"> -->
<select type="text" id="node-input-event" style="width:70%">
<option selected value="s3:ObjectCreated:*">s3:ObjectCreated:*</option>
<option value="s3:ObjectCreated:Put">s3:ObjectCreated:Put</option>
<option value="s3:ObjectCreated:Post">s3:ObjectCreated:Post</option>
<option value="s3:ObjectCreated:Copy">s3:ObjectCreated:Copy</option>
<option value="s3:ObjectCreated:CompleteMultipartUpload">s3:ObjectCreated:CompleteMultipartUpload</option>
<option disabled>────────────────────</option>
<option value="s3:ObjectRemoved:*">s3:ObjectRemoved:*</option>
<option value="s3:ObjectRemoved:Delete">s3:ObjectRemoved:Delete</option>
<option value="s3:ObjectRemoved:DeleteMarkerCreated">s3:ObjectRemoved:DeleteMarkerCreated</option>
<option disabled>────────────────────</option>
<option value="s3:ObjectRestore:Post">s3:ObjectRestore:Post</option>
<option value="s3:ObjectRestore:Completed">s3:ObjectRestore:Completed</option>
<option disabled>────────────────────</option>
<option value="s3:ReducedRedundancyLostObject">s3:ReducedRedundancyLostObject</option>
</select>
</div>
<!-- Note -->
<div class="form-tips" style="margin-top:20px"><b>Warning:</b> An S3 Event notification will be attached to this bucket at deployment time</div>
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('s3-event-handler', {
category: 'handlers',
icon: 'aws.png',
color: 'rgb(231, 231, 174)',
defaults: {
name: { value: '', required: true },
triggerEnabled: { value: false, required: true },
bucketName: { value: '', required: false },
prefix: { required: false },
suffix: { required: false },
event: { value: 's3:ObjectCreated:*', required: false }
},
inputs: 0,
outputs: 1,
label: function() {
return this.name || 'S3 EventHandler';
},
labelStyle: function() {
return this.name ? 'node_label_italic' : '';
},
oneditprepare: function() {
var node = this;
// Show or hide the trigger section
if ($('#node-input-triggerEnabled').checked) {
$('#triggerSection').show();
} else {
$('#triggerSection').hide();
}
// Handle changes in the trigger checkbox for trigger section
$('#node-input-triggerEnabled').change(function(data) {
if (this.checked) {
$('#triggerSection').show();
} else {
$('#triggerSection').hide();
$('#node-input-bucketName').val('');
$('#node-input-prefix').val('');
$('#node-input-suffix').val('');
$('#node-input-event').val('s3:ObjectCreated:*');
}
});
}
});
</script>