node-red-contrib-dulonode
Version:
Alexa integration for Node-RED. Voice-control lights, blinds, locks, thermostats, TVs, and more using Node-RED.
134 lines (121 loc) • 5.67 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('DuloNodeHub', {
category: 'function',
color: '#D3C89E',
defaults: {
name: { value: '' },
installation: { value: 'standalone' }
},
credentials: {
email: { type: 'text' },
password: { type: 'password' }
},
inputs: 1,
outputs: 1,
icon: 'hub.svg',
label: function() {
return this.name || 'DuloNode Hub';
},
oneditprepare: function() {
const node = this;
let endpointPrefix = '';
// Get instalation type
$.getJSON('dulonode/installation')
.done(function (data) {
subscriptionPanel(data.installation);
})
.fail(function () {
// Fallback to second endpoint
$.getJSON('endpoint/dulonode/installation')
.done(function (data) {
subscriptionPanel(data.installation);
})
.fail(function () {
subscriptionPanel('standalone');
});
});
// Load subscription details
function subscriptionPanel(installation) {
console.log("Installation type:", installation);
endpointPrefix = installation == 'homeassistant' ? 'endpoint/' : '';
let plan = 'Unknown'
$.getJSON(`${endpointPrefix}dulonode/subscription/details`)
.done(function(data) {
plan = data.plan?.name || 'Unknown';
$('#subscription-plan').text(plan);
$('#subscription-plan').show();
if (plan == 'Free') {
$('#subscription-upgrade').show();
} else {
$('#subscription-manage').show();
}
})
.fail(function() {
$('#subscription-plan').text('Error loading plan');
})
.always(function() {
if (plan != 'Unknown') {
$('#subscription').show();
$('#subscription-loading').hide();
} else {
$('#subscription').hide();
}
});
// Handle Manage and Upgrade button clicks
$('#subscription-manage').on('click', function() {
window.open(`${endpointPrefix}dulonode/subscription/manage`, '_blank');
$("#node-dialog-cancel").click();
});
$('#subscription-upgrade').on('click', function() {
window.open(`${endpointPrefix}dulonode/subscription/upgrade`, '_blank');
$("#node-dialog-cancel").click();
});
}
}
});
</script>
<script type="text/x-red" data-template-name="DuloNodeHub">
<div class="form-row" style="margin-top: 20px">
<label style="width:100%;"><strong>DuloNode account</strong></label>
<hr align="middle" style="margin: 0 0 20px 0;">
</div>
<div class="form-row">
<label for="node-input-email"><i class="fa fa-envelope"></i> Email</label>
<input type="text" id="node-input-email" placeholder="Enter your email" />
</div>
<div class="form-row">
<label for="node-input-password"><i class="fa fa-key"></i> Password</label>
<input type="password" id="node-input-password" placeholder="Enter your password" />
</div>
<div class="form-row">
<label></label>
<small>Don't have an account? <a href="https://www.dulonode.com/pricing" style="text-decoration: underline" target="_blank">Sign Up</a></small>
</div>
<div id="subscription">
<div class="form-row" style="margin-top: 30px">
<label style="width:100%;"><strong>Subscription</strong></label>
<hr align="middle" style="margin: 0 0 20px 0;">
</div>
<div class="form-row">
<label for="subscription-plan-label"><i class="fa fa-info-circle"></i> Plan</label>
<span id="subscription-loading"><i class="fa fa-spinner fa-spin"></i> Loading...</span>
<b style="margin-right: 15px"><span id="subscription-plan" style="display:none;"></span></b>
<button id="subscription-manage" style="display:none;" class="red-ui-button red-ui-button-small">Manage subscription</button>
<button id="subscription-upgrade" style="display:none;" class="red-ui-button red-ui-button-small primary">Upgrade</button>
</div>
</div>
<div class="form-row">
<label></label>
<small>Need help? <a href="https://www.dulonode.com/contact" style="text-decoration: underline" target="_blank">Contact Us.</a></small>
</div>
</script>
<script type="text/x-red" data-help-name="DuloNodeHub">
<p>
This node is part of the DuloNode system. It integrates devices and provides information about your subscription plan.
Use the "Manage subscription" button to access your subscription settings or the "Upgrade" button to change your plan.
</p>
<p>
For a detailed description of this node and its functionality, visit
<a href="https://www.dulonode.com/docs/hub-node/" target="_blank">DuloNode Hub documentation</a>.
</p>
</script>