UNPKG

node-red-contrib-miio-roborock

Version:
89 lines (78 loc) 3.65 kB
<script type="text/x-red" data-template-name="miio-roborock-server"> <link rel="stylesheet" href="miio-roborock/static/css/multiple-select.css" type="text/css" /> <link rel="stylesheet" href="miio-roborock/static/css/common.css" type="text/css" /> <div class="form-row"> <label for="node-config-input-name" class="l-width"><i class="icon-bookmark"></i> <span data-i18n="label.name"></span></label> <input type="text" id="node-config-input-name"> </div> <div class="form-row"> <label for="node-config-input-ip" class="l-width"><i class="icon-globe"></i> <span data-i18n="label.ip_address"></span></label> <input type="text" id="node-config-input-ip"> </div> <div class="form-row"> <label for="node-config-input-token" class="l-width"><i class="icon-lock"></i> <span data-i18n="label.token"></span></label> <input type="text" id="node-config-input-token"> </div> <div class="form-row"> <label for="node-input-polling" class="l-width"><i class="icon-time"></i> <span data-i18n="label.polling"></span></label> <input type="text" id="node-config-input-polling"> </div> <div class="form-row"> <label for="auto-find" class="l-width"><i class="fa fa-refresh"></i> <span data-i18n="label.get_token"></span></label> <button type="button" style="width: 70%" class="btn btn-light" id="auto-find" name="auto-find"><i class=""></i> <span data-i18n="label.find"></span></button> </div> </script> <script type="text/javascript"> RED.nodes.registerType('miio-roborock-server',{ category: 'config', defaults: { name: {value: "", required: false}, ip: {value: "", required: true}, token: {value: "", required: true}, polling: { value: 10, required: true, validate: function (value) { return value > 4; } }, }, label: function() { return this.name || this.host; }, oneditprepare: function () { var node = this; var $findBtn = $('#auto-find'); $findBtn.on('click', function(){ if (!$('#node-config-input-ip').val().length) { alert('Fill IP address'); return false; } let email = prompt('MiHome: Email address', ''); let pass = prompt('MiHome: Password', ''); if (!email || !pass) { alert('Fill Email/Password'); return false; } $('#auto-find i').addClass('fa fa-spin fa-spinner'); $.getJSON('miio-roborock/find', { controllerID: node.id, ipAddress: $('#node-config-input-ip').val(), email: email, password: pass }).done(function (data, textStatus, jqXHR) { $('#auto-find i').removeClass('fa fa-spin fa-spinner'); if ("token" in data) { $('#node-config-input-token').val(data.token); if (!$('#node-config-input-name').val().length) { $('#node-config-input-name').val(data.name); } } else if ("error_description" in data) { alert(data.error_description); } }).fail(function (jqXHR, textStatus, errorThrown) { }); }); }, }); </script>