2014-04-20 14:20:44 +03:00

169 lines
5.9 KiB
HTML

<!--
Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/x-red" data-template-name="pushbullet">
<div class="form-row" id="node-input-credentials-row">
<label for="node-input-creds"><i class="icon-folder-close"></i> Credentials</label>
<select id="node-input-creds">
<option value="global">Use global credentials</option>
<option value="local">Use local credentials</option>
</select>
</div>
<div class="form-row" id="node-input-device-row">
<label for="node-input-device"><i class="icon-tasks"></i> Device</label>
<input type="text" id="node-input-device">
</div>
<div class="form-row">
<label for="node-input-title"><i class="icon-flag"></i> Title</label>
<input type="text" id="node-input-title" placeholder="Node-RED">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/x-red" data-help-name="pushbullet">
<p>Uses PushBullet to push the <b>msg.payload</b> to an Android device that has PushBullet app installed.</p>
<p>Optionally uses <b>msg.topic</b> to set the title, if not already set in the properties.</p>
<p>When creating a node, you'll have to first set a device that contain it's ID and your API key that you can find in the <a href="https://www.pushbullet.com/account">Account Settings</a></p>
<p>The deviceid can be found by hovering over you required device on the <a href="https://www.pushbullet.com/">PushBullet website</a>.</p>
</script>
<script type="text/x-red" data-template-name="bullet-device">
<div class="form-row">
<label for="node-config-input-name"><i class="icon-tasks"></i>Name</label>
<input type="text" id="node-config-input-name" >
</div>
<div class="form-row">
<label for="node-config-input-apikey"><i class="icon-tasks"></i>API-Key</label>
<input type="password" id="node-config-input-apikey" >
</div>
<div class="form-row">
<label for="node-config-input-deviceid"><i class="icon-tasks"></i>Device ID</label>
<input type="text" id="node-config-input-deviceid" >
</div>
<div class="form-tips">The API key can be found on the <a target="_blank" href="https://www.pushbullet.com/account">Account Settings</a></div>
</script>
<script type="text/javascript">
var hasGlobal = false;
$.getJSON('pushbullet-api/global', function (data) {
hasGlobal = data.hasApiKey;
});
RED.nodes.registerType('bullet-device', {
category: 'config',
defaults: {
name: {value: "", required: true},
//apikey: -> credentials
deviceid: {value: "", required: true}
},
label: function () {
return this.name;
},
oneditprepare: function () {
$.getJSON('pushbullet-api/' + this.id, function (data) {
if (data.hasApiKey) {
$('#node-config-input-apikey').val('__PWRD__');
} else {
$('#node-config-input-apikey').val('');
}
});
},
oneditsave: function () {
var newApiKey = $('#node-config-input-apikey').val();
if (newApiKey != '__PWRD__') {
var credentials = {};
credentials.apikey = newApiKey;
$.ajax({
url: 'pushbullet-api/' + this.id,
type: 'POST',
data: credentials,
success: function (result) {
}
});
}
},
ondelete: function () {
$.ajax({
url: 'pushbullet-api/' + this.id,
type: 'DELETE',
success: function (result) {
}
});
}
});
RED.nodes.registerType('pushbullet', {
category: 'output',
defaults: {
device: {type: "bullet-device", validate: function (v) {
return hasGlobal || (v && v != "_ADD_")
}},
title: {value: ""},
name: {value: ""}
},
color: "#a7c9a0",
inputs: 1,
outputs: 0,
icon: "bullet.png",
align: "right",
label: function () {
return this.name || this.title || (this.device) ? RED.nodes.node(this.device).label() : "pushbullet";
},
labelStyle: function () {
return this.name ? "node_label_italic" : "";
},
oneditprepare: function () {
if (hasGlobal) {
$("#node-input-creds").change(function () {
var val = $(this).val();
if (val == "global") {
$("#node-input-device-row").hide();
} else {
$("#node-input-device-row").show();
}
});
$("#node-input-credentials-row").show();
if (!this.device) {
$("#node-input-creds").val("global");
} else {
$("#node-input-creds").val("local");
}
$("#node-input-creds").change();
} else {
$("#node-input-credentials-row").hide();
}
}
});
</script>