1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Merge pull request #230 from TJKoury/master

Fixed spinner issue in inject node
This commit is contained in:
Dave Conway-Jones 2014-05-19 22:06:15 +01:00
commit 69405296ba

View File

@ -1,426 +1,426 @@
<!-- <!--
Copyright 2013 IBM Corp. Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<script type="text/x-red" data-template-name="inject"> <script type="text/x-red" data-template-name="inject">
<div class="form-row node-input-payload"> <div class="form-row node-input-payload">
<label for="node-input-payloadType"><i class="icon-envelope"></i> Payload</label> <label for="node-input-payloadType"><i class="icon-envelope"></i> Payload</label>
<select id="node-input-payloadType" style="width:125px !important"> <select id="node-input-payloadType" style="width:125px !important">
<option value="date">timestamp</option> <option value="date">timestamp</option>
<option value="none">blank</option> <option value="none">blank</option>
<option value="string">string</option> <option value="string">string</option>
</select> </select>
</div> </div>
<div class="form-row" id="node-input-row-payload"> <div class="form-row" id="node-input-row-payload">
<label for="node-input-payload"></label> <label for="node-input-payload"></label>
<input type="text" id="node-input-payload" placeholder="payload"> <input type="text" id="node-input-payload" placeholder="payload">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label> <label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="topic"> <input type="text" id="node-input-topic" placeholder="topic">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for=""><i class="icon-repeat"></i> Repeat</label> <label for=""><i class="icon-repeat"></i> Repeat</label>
<select id="inject-time-type-select" style="width: 288px"><option value="none">none</option><option value="interval">interval</option><option value="interval-time">interval between times</option><option value="time">at a specific time</option></select> <select id="inject-time-type-select" style="width: 288px"><option value="none">none</option><option value="interval">interval</option><option value="interval-time">interval between times</option><option value="time">at a specific time</option></select>
<input type="hidden" id="node-input-repeat" placeholder="payload"> <input type="hidden" id="node-input-repeat" placeholder="payload">
<input type="hidden" id="node-input-crontab" placeholder="payload"> <input type="hidden" id="node-input-crontab" placeholder="payload">
</div> </div>
<div class="form-row inject-time-row hidden" id="inject-time-row-interval"> <div class="form-row inject-time-row hidden" id="inject-time-row-interval">
every <input id="inject-time-interval-count" class="inject-time-count" value="1"></input> every <input id="inject-time-interval-count" class="inject-time-count" value="1"></input>
<select style="width: 100px" id="inject-time-interval-units"><option value="s">seconds</option><option value="m">minutes</option><option value="h">hours</option></select><br/> <select style="width: 100px" id="inject-time-interval-units"><option value="s">seconds</option><option value="m">minutes</option><option value="h">hours</option></select><br/>
<!-- on <select disabled id="inject-time-interval-days" class="inject-time-days"></select> --> <!-- on <select disabled id="inject-time-interval-days" class="inject-time-days"></select> -->
</div> </div>
<div class="form-row inject-time-row hidden" id="inject-time-row-interval-time"> <div class="form-row inject-time-row hidden" id="inject-time-row-interval-time">
at every <select style="width: 90px" id="inject-time-interval-time-units" class="inject-time-int-count" value="1"> at every <select style="width: 90px" id="inject-time-interval-time-units" class="inject-time-int-count" value="1">
<option value="1">1</option> <option value="1">1</option>
<option value="2">2</option> <option value="2">2</option>
<option value="3">3</option> <option value="3">3</option>
<option value="4">4</option> <option value="4">4</option>
<option value="5">5</option> <option value="5">5</option>
<option value="6">6</option> <option value="6">6</option>
<option value="10">10</option> <option value="10">10</option>
<option value="12">12</option> <option value="12">12</option>
<option value="15">15</option> <option value="15">15</option>
<option value="20">20</option> <option value="20">20</option>
<option value="30">30</option> <option value="30">30</option>
</select> minutes<br/> </select> minutes<br/>
between <select id="inject-time-interval-time-start" class="inject-time-times"></select> between <select id="inject-time-interval-time-start" class="inject-time-times"></select>
and <select id="inject-time-interval-time-end" class="inject-time-times"></select><br/> and <select id="inject-time-interval-time-end" class="inject-time-times"></select><br/>
on <select id="inject-time-interval-time-days" class="inject-time-days"></select> on <select id="inject-time-interval-time-days" class="inject-time-days"></select>
</div> </div>
<div class="form-row inject-time-row hidden" id="inject-time-row-time"> <div class="form-row inject-time-row hidden" id="inject-time-row-time">
at <input id="inject-time-time" value="12:00"></input><br/> at <input id="inject-time-time" value="12:00"></input><br/>
on <select id="inject-time-time-days" class="inject-time-days"></select> on <select id="inject-time-time-days" class="inject-time-days"></select>
</div> </div>
<div class="form-row" id="node-once"> <div class="form-row" id="node-once">
<label>&nbsp;</label> <label>&nbsp;</label>
<input type="checkbox" id="node-input-once" style="display: inline-block; width: auto; vertical-align: top;"> <input type="checkbox" id="node-input-once" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-once" style="width: 70%;">Fire once at start ?</label> <label for="node-input-once" style="width: 70%;">Fire once at start ?</label>
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label> <label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="name"> <input type="text" id="node-input-name" placeholder="name">
</div> </div>
<div class="form-tips"><b>Note:</b> "interval between times" and "at a specific time" will use cron.<br/>See info box for details.</div> <div class="form-tips"><b>Note:</b> "interval between times" and "at a specific time" will use cron.<br/>See info box for details.</div>
<script> <script>
{ {
$("#inject-time-type-select").change(function() { $("#inject-time-type-select").change(function() {
$("#node-input-crontab").val(''); $("#node-input-crontab").val('');
var id = $("#inject-time-type-select option:selected").val(); var id = $("#inject-time-type-select option:selected").val();
$(".inject-time-row").hide(); $(".inject-time-row").hide();
$("#inject-time-row-"+id).show(); $("#inject-time-row-"+id).show();
if ((id == "none") || (id == "interval")) { if ((id == "none") || (id == "interval")) {
$("#node-once").show(); $("#node-once").show();
} }
else { else {
$("#node-once").hide(); $("#node-once").hide();
$("#node-input-once").prop('checked', false); $("#node-input-once").prop('checked', false);
} }
}); });
var days = [ var days = [
{v:"*",t:"every day"}, {v:"*",t:"every day"},
{v:"1-5",t:"Mondays to Fridays"}, {v:"1-5",t:"Mondays to Fridays"},
{v:"0,6",t:"Saturdays and Sundays"}, {v:"0,6",t:"Saturdays and Sundays"},
{v:"1",t:"Mondays"}, {v:"1",t:"Mondays"},
{v:"2",t:"Tuesdays"}, {v:"2",t:"Tuesdays"},
{v:"3",t:"Wednesdays"}, {v:"3",t:"Wednesdays"},
{v:"4",t:"Thursdays"}, {v:"4",t:"Thursdays"},
{v:"5",t:"Fridays"}, {v:"5",t:"Fridays"},
{v:"6",t:"Saturdays"}, {v:"6",t:"Saturdays"},
{v:"0",t:"Sundays"} {v:"0",t:"Sundays"}
]; ];
$(".inject-time-days").each(function() { $(".inject-time-days").each(function() {
for (var d in days) { for (var d in days) {
$(this).append($("<option></option>").val(days[d].v).text(days[d].t)); $(this).append($("<option></option>").val(days[d].v).text(days[d].t));
} }
}); });
$(".inject-time-times").each(function() { $(".inject-time-times").each(function() {
for (var i=0;i<24;i++) { for (var i=0;i<24;i++) {
var l = (i<10?"0":"")+i+":00"; var l = (i<10?"0":"")+i+":00";
$(this).append($("<option></option>").val(i).text(l)); $(this).append($("<option></option>").val(i).text(l));
} }
}); });
$(".inject-time-count").spinner({ $(".inject-time-count").spinner({
//max:60, //max:60,
min:1 min:1
}); });
$("#inject-time-interval-units").change(function() { $("#inject-time-interval-units").change(function() {
var units = $("#inject-time-interval-units option:selected").val(); var units = $("#inject-time-interval-units option:selected").val();
//$("#inject-time-interval-days").prop("disabled",(units == "s")?"disabled":false); //$("#inject-time-interval-days").prop("disabled",(units == "s")?"disabled":false);
//$(".inject-time-count").spinner("option","max",(units == "h")?24:60); //$(".inject-time-count").spinner("option","max",(units == "h")?24:60);
}); });
$.widget( "ui.injecttimespinner", $.ui.spinner, { $.widget( "ui.injecttimespinner", $.ui.spinner, {
options: { options: {
// seconds // seconds
step: 60 * 1000, step: 60 * 1000,
// hours // hours
page: 60, page: 60
min:0, },
max:(23*60+59)*60*1000 _parse: function( value ) {
}, if ( typeof value === "string" ) {
_parse: function( value ) { // already a timestamp
if ( typeof value === "string" ) { if ( Number( value ) == value ) {
// already a timestamp return Number( value );
if ( Number( value ) == value ) { }
return Number( value ); var p = value.split(":");
}
var p = value.split(":"); var offset = new Date().getTimezoneOffset();
return ((p[0]*60)+Number(p[1]))*60*1000; return (((Number(p[0])+1)*60)+Number(p[1])+offset)*60*1000;
} }
return value; return value;
}, },
_format: function( value ) { _format: function( value ) {
var d = new Date(value); var d = new Date(value);
var h = d.getHours(); var h = d.getHours();
var m = d.getMinutes(); var m = d.getMinutes();
return ((h<10)?"0":"")+h+":"+((m<10)?"0":"")+m; return ((h<10)?"0":"")+h+":"+((m<10)?"0":"")+m;
} }
}); });
$("#inject-time-time").injecttimespinner(); $("#inject-time-time").injecttimespinner();
}; };
</script> </script>
</script> </script>
<style> <style>
.inject-time-row { .inject-time-row {
padding-left: 110px; padding-left: 110px;
} }
.inject-time-row select { .inject-time-row select {
margin: 3px 0; margin: 3px 0;
} }
.inject-time-days { .inject-time-days {
width: 262px; width: 262px;
} }
.inject-time-times { .inject-time-times {
width: 90px; width: 90px;
} }
.inject-time-row > .ui-spinner { .inject-time-row > .ui-spinner {
height: 28px; height: 28px;
margin: 3px 0; margin: 3px 0;
border-color: rgb(204, 204, 204); border-color: rgb(204, 204, 204);
} }
#inject-time-time { #inject-time-time {
margin-top: 3px; margin-top: 3px;
width: 75px; width: 75px;
} }
.inject-time-count { .inject-time-count {
width: 40px !important; width: 40px !important;
} }
</style> </style>
<script type="text/x-red" data-help-name="inject"> <script type="text/x-red" data-help-name="inject">
<p>Pressing the button on the left side of the node allows a message on a topic to be injected into the flow. This is mainly for test purposes.</p> <p>Pressing the button on the left side of the node allows a message on a topic to be injected into the flow. This is mainly for test purposes.</p>
<p>If no payload is specified the payload is set to the current time in millisecs since 1970. This allows subsequent functions to perform time based actions.</p> <p>If no payload is specified the payload is set to the current time in millisecs since 1970. This allows subsequent functions to perform time based actions.</p>
<p>The repeat function does what it says on the tin and continuously sends the payload every x seconds.</p> <p>The repeat function does what it says on the tin and continuously sends the payload every x seconds.</p>
<p>The Fire once at start option actually waits 50mS before firing to give other nodes a chance to instantiate properly.</p> <p>The Fire once at start option actually waits 50mS before firing to give other nodes a chance to instantiate properly.</p>
<p><b>Note: </b>"Interval between times" and "at a specific time" will use cron. This means that 20 mins will be at the next hour, 20 mins past and 40 mins past - not in 20 minutes time. <p><b>Note: </b>"Interval between times" and "at a specific time" will use cron. This means that 20 mins will be at the next hour, 20 mins past and 40 mins past - not in 20 minutes time.
If you want every 20 mins from now - use the basic "interval" option.</p> If you want every 20 mins from now - use the basic "interval" option.</p>
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
RED.nodes.registerType('inject',{ RED.nodes.registerType('inject',{
category: 'input', category: 'input',
color:"#a6bbcf", color:"#a6bbcf",
defaults: { defaults: {
name: {value:""}, name: {value:""},
topic: {value:""}, topic: {value:""},
payload: {value:""}, payload: {value:""},
payloadType: {value:"date"}, payloadType: {value:"date"},
repeat: {value:""}, repeat: {value:""},
crontab: {value:""}, crontab: {value:""},
once: {value:false} once: {value:false}
}, },
inputs:0, inputs:0,
outputs:1, outputs:1,
icon: "inject.png", icon: "inject.png",
label: function() { label: function() {
if (this.payloadType == "string") { if (this.payloadType == "string") {
return this.name||this.topic||this.payload||"inject"; return this.name||this.topic||this.payload||"inject";
} }
else { return this.name||"inject"; } else { return this.name||"inject"; }
}, },
labelStyle: function() { labelStyle: function() {
return this.name?"node_label_italic":""; return this.name?"node_label_italic":"";
}, },
oneditprepare: function() { oneditprepare: function() {
var repeattype = "none"; var repeattype = "none";
if (this.repeat != "" && this.repeat != 0) { if (this.repeat != "" && this.repeat != 0) {
repeattype = "interval"; repeattype = "interval";
var r = "s"; var r = "s";
var c = this.repeat; var c = this.repeat;
if (this.repeat % 60 === 0) { r = "m"; c = c/60; } if (this.repeat % 60 === 0) { r = "m"; c = c/60; }
if (this.repeat % 1440 === 0) { r = "h"; c = c/24; } if (this.repeat % 1440 === 0) { r = "h"; c = c/24; }
$("#inject-time-interval-count").val(c); $("#inject-time-interval-count").val(c);
$("#inject-time-interval-units").val(r); $("#inject-time-interval-units").val(r);
//$("#inject-time-interval-units option").filter(function() {return $(this).val() == "s";}).attr('selected',true); //$("#inject-time-interval-units option").filter(function() {return $(this).val() == "s";}).attr('selected',true);
$("#inject-time-interval-days").prop("disabled","disabled"); $("#inject-time-interval-days").prop("disabled","disabled");
} else if (this.crontab) { } else if (this.crontab) {
var cronparts = this.crontab.split(" "); var cronparts = this.crontab.split(" ");
var days = cronparts[4]; var days = cronparts[4];
if (!isNaN(cronparts[0]) && !isNaN(cronparts[1])) { if (!isNaN(cronparts[0]) && !isNaN(cronparts[1])) {
repeattype = "time"; repeattype = "time";
// Fixed time // Fixed time
var time = cronparts[1]+":"+cronparts[0]; var time = cronparts[1]+":"+cronparts[0];
$("#inject-time-time").val(time); $("#inject-time-time").val(time);
$("#inject-time-type-select option").filter(function() {return $(this).val() == "s";}).attr('selected',true); $("#inject-time-type-select option").filter(function() {return $(this).val() == "s";}).attr('selected',true);
$("#inject-time-time-days option").filter(function() {return $(this).val() == days;}).attr('selected',true); $("#inject-time-time-days option").filter(function() {return $(this).val() == days;}).attr('selected',true);
} else if (cronparts[0] == "0") { } else if (cronparts[0] == "0") {
// interval - hours // interval - hours
var hours = cronparts[1].slice(2); var hours = cronparts[1].slice(2);
repeattype = "interval"; repeattype = "interval";
$("#inject-time-interval-days").prop("disabled",false); $("#inject-time-interval-days").prop("disabled",false);
$("#inject-time-interval-days option").filter(function() {return $(this).val() == days;}).attr('selected',true); $("#inject-time-interval-days option").filter(function() {return $(this).val() == days;}).attr('selected',true);
$("#inject-time-interval-count").val(hours) $("#inject-time-interval-count").val(hours)
$("#inject-time-interval-units option").filter(function() {return $(this).val() == "h";}).attr('selected',true); $("#inject-time-interval-units option").filter(function() {return $(this).val() == "h";}).attr('selected',true);
} else if (cronparts[1] == "*") { } else if (cronparts[1] == "*") {
// interval - minutes // interval - minutes
var minutes = cronparts[0].slice(2); var minutes = cronparts[0].slice(2);
repeattype = "interval"; repeattype = "interval";
$("#inject-time-interval-days").prop("disabled",false); $("#inject-time-interval-days").prop("disabled",false);
$("#inject-time-interval-days option").filter(function() {return $(this).val() == days;}).attr('selected',true); $("#inject-time-interval-days option").filter(function() {return $(this).val() == days;}).attr('selected',true);
$("#inject-time-interval-count").val(minutes) $("#inject-time-interval-count").val(minutes)
$("#inject-time-interval-units option").filter(function() {return $(this).val() == "m";}).attr('selected',true); $("#inject-time-interval-units option").filter(function() {return $(this).val() == "m";}).attr('selected',true);
} else { } else {
repeattype = "interval-time"; repeattype = "interval-time";
// interval - time period // interval - time period
var minutes = cronparts[0].slice(2); var minutes = cronparts[0].slice(2);
$("#inject-time-interval-time-units").val(minutes); $("#inject-time-interval-time-units").val(minutes);
$("#inject-time-interval-time-days option").filter(function() {return $(this).val() == days;}).attr('selected',true); $("#inject-time-interval-time-days option").filter(function() {return $(this).val() == days;}).attr('selected',true);
var time = cronparts[1]; var time = cronparts[1];
var timeparts = time.split(","); var timeparts = time.split(",");
var start; var start;
var end; var end;
if (timeparts.length == 1) { if (timeparts.length == 1) {
// 0 or 0-10 // 0 or 0-10
var hours = timeparts[0].split("-"); var hours = timeparts[0].split("-");
if (hours.length == 1) { if (hours.length == 1) {
start = hours[0]; start = hours[0];
end = Number(hours[0])+1; end = Number(hours[0])+1;
} else { } else {
start = hours[0]; start = hours[0];
end = (Number(hours[1])+1)%24; end = (Number(hours[1])+1)%24;
} }
} else { } else {
// 23,0 or 17-23,0-10 or 23,0-2 or 17-23,0 // 23,0 or 17-23,0-10 or 23,0-2 or 17-23,0
var startparts = timeparts[0].split("-"); var startparts = timeparts[0].split("-");
start = startparts[0]; start = startparts[0];
var endparts = timeparts[1].split("-"); var endparts = timeparts[1].split("-");
if (endparts.length == 1) { if (endparts.length == 1) {
end = Number(endparts[0])+1; end = Number(endparts[0])+1;
} else { } else {
end = Number(endparts[1])+1; end = Number(endparts[1])+1;
} }
} }
$("#inject-time-interval-time-start option").filter(function() {return $(this).val() == start;}).attr('selected',true); $("#inject-time-interval-time-start option").filter(function() {return $(this).val() == start;}).attr('selected',true);
$("#inject-time-interval-time-end option").filter(function() {return $(this).val() == end;}).attr('selected',true); $("#inject-time-interval-time-end option").filter(function() {return $(this).val() == end;}).attr('selected',true);
} }
} else { } else {
$("#inject-time-type-select option").filter(function() {return $(this).val() == "none";}).attr('selected',true); $("#inject-time-type-select option").filter(function() {return $(this).val() == "none";}).attr('selected',true);
} }
$(".inject-time-row").hide(); $(".inject-time-row").hide();
$("#inject-time-type-select option").filter(function() {return $(this).val() == repeattype;}).attr('selected',true); $("#inject-time-type-select option").filter(function() {return $(this).val() == repeattype;}).attr('selected',true);
$("#inject-time-row-"+repeattype).show(); $("#inject-time-row-"+repeattype).show();
if (this.payloadType == null) { if (this.payloadType == null) {
if (this.payload == "") { if (this.payload == "") {
this.payloadType = "date"; this.payloadType = "date";
} else { } else {
this.payloadType = "string"; this.payloadType = "string";
} }
} }
$("#node-input-payloadType").change(function() { $("#node-input-payloadType").change(function() {
var id = $("#node-input-payloadType option:selected").val(); var id = $("#node-input-payloadType option:selected").val();
if (id == "string") { if (id == "string") {
$("#node-input-row-payload").show(); $("#node-input-row-payload").show();
} else { } else {
$("#node-input-row-payload").hide(); $("#node-input-row-payload").hide();
} }
}); });
$("#node-input-payloadType").val(this.payloadType); $("#node-input-payloadType").val(this.payloadType);
$("#node-input-payloadType").change(); $("#node-input-payloadType").change();
$("#inject-time-type-select").change(); $("#inject-time-type-select").change();
}, },
oneditsave: function() { oneditsave: function() {
var repeat = ""; var repeat = "";
var crontab = ""; var crontab = "";
var type = $("#inject-time-type-select option:selected").val(); var type = $("#inject-time-type-select option:selected").val();
if (type == "none") { if (type == "none") {
// nothing // nothing
} else if (type == "interval") { } else if (type == "interval") {
var count = $("#inject-time-interval-count").val(); var count = $("#inject-time-interval-count").val();
var units = $("#inject-time-interval-units option:selected").val(); var units = $("#inject-time-interval-units option:selected").val();
var days = $("#inject-time-interval-days option:selected").val(); var days = $("#inject-time-interval-days option:selected").val();
if (units == "s") { if (units == "s") {
repeat = count; repeat = count;
} else { } else {
if (units == "m") { if (units == "m") {
//crontab = "*/"+count+" * * * "+days; //crontab = "*/"+count+" * * * "+days;
repeat = count * 60; repeat = count * 60;
} else if (units == "h") { } else if (units == "h") {
//crontab = "0 */"+count+" * * "+days; //crontab = "0 */"+count+" * * "+days;
repeat = count * 60 * 24; repeat = count * 60 * 24;
} }
} }
} else if (type == "interval-time") { } else if (type == "interval-time") {
var count = $("#inject-time-interval-time-units").val(); var count = $("#inject-time-interval-time-units").val();
var startTime = Number($("#inject-time-interval-time-start option:selected").val()); var startTime = Number($("#inject-time-interval-time-start option:selected").val());
var endTime = Number($("#inject-time-interval-time-end option:selected").val()); var endTime = Number($("#inject-time-interval-time-end option:selected").val());
var days = $("#inject-time-interval-time-days option:selected").val(); var days = $("#inject-time-interval-time-days option:selected").val();
var timerange = ""; var timerange = "";
if (startTime == endTime) { if (startTime == endTime) {
//TODO: invalid //TODO: invalid
repeat = ""; repeat = "";
crontab = ""; crontab = "";
} else if (endTime == 0) { } else if (endTime == 0) {
timerange = startTime+"-23"; timerange = startTime+"-23";
} else if (startTime+1 < endTime) { } else if (startTime+1 < endTime) {
timerange = startTime+"-"+(endTime-1); timerange = startTime+"-"+(endTime-1);
} else if (startTime+1 == endTime) { } else if (startTime+1 == endTime) {
timerange = startTime; timerange = startTime;
} else { } else {
var startpart = ""; var startpart = "";
var endpart = ""; var endpart = "";
if (startTime == 23) { if (startTime == 23) {
startpart = "23"; startpart = "23";
} else { } else {
startpart = startTime+"-23"; startpart = startTime+"-23";
} }
if (endTime == 1) { if (endTime == 1) {
endpart = "0"; endpart = "0";
} else { } else {
endpart = "0-"+(endTime-1); endpart = "0-"+(endTime-1);
} }
timerange = startpart+","+endpart; timerange = startpart+","+endpart;
} }
repeat = ""; repeat = "";
crontab = "*/"+count+" "+timerange+" * * "+days; crontab = "*/"+count+" "+timerange+" * * "+days;
} else if (type == "time") { } else if (type == "time") {
var time = $("#inject-time-time").val(); var time = $("#inject-time-time").val();
var days = $("#inject-time-time-days option:selected").val(); var days = $("#inject-time-time-days option:selected").val();
var parts = time.split(":"); var parts = time.split(":");
repeat = ""; repeat = "";
crontab = parts[1]+" "+parts[0]+" * * "+days; crontab = parts[1]+" "+parts[0]+" * * "+days;
} }
$("#node-input-repeat").val(repeat); $("#node-input-repeat").val(repeat);
$("#node-input-crontab").val(crontab); $("#node-input-crontab").val(crontab);
}, },
button: { button: {
onclick: function() { onclick: function() {
var label = (this.name||this.payload).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"); var label = (this.name||this.payload).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
d3.xhr("inject/"+this.id).post(function(err,resp) { d3.xhr("inject/"+this.id).post(function(err,resp) {
if (err) { if (err) {
if (err.status == 404) { if (err.status == 404) {
RED.notify("<strong>Error</strong>: inject node not deployed","error"); RED.notify("<strong>Error</strong>: inject node not deployed","error");
} else if (err.status == 500) { } else if (err.status == 500) {
RED.notify("<strong>Error</strong>: inject failed, see log for details.","error"); RED.notify("<strong>Error</strong>: inject failed, see log for details.","error");
} else if (err.status == 0) { } else if (err.status == 0) {
RED.notify("<strong>Error</strong>: no response from server","error"); RED.notify("<strong>Error</strong>: no response from server","error");
} else { } else {
RED.notify("<strong>Error</strong>: unexpected error: ("+err.status+")"+err.response,"error"); RED.notify("<strong>Error</strong>: unexpected error: ("+err.status+")"+err.response,"error");
} }
} else if (resp.status == 200) { } else if (resp.status == 200) {
RED.notify("Successfully injected: "+label,"success"); RED.notify("Successfully injected: "+label,"success");
} else { } else {
RED.notify("<strong>Error</strong>: unexpected response: ("+resp.status+") "+resp.response,"error"); RED.notify("<strong>Error</strong>: unexpected response: ("+resp.status+") "+resp.response,"error");
} }
}); });
} }
} }
}); });
</script> </script>