NLS enable the Inject node

This commit is contained in:
Nick O'Leary 2015-05-07 14:06:55 +01:00
parent a7900940da
commit aa18c65fa8
3 changed files with 110 additions and 48 deletions

View File

@ -583,7 +583,14 @@ RED.editor = (function() {
$("#dialog-form").find('[data-i18n]').each(function() { $("#dialog-form").find('[data-i18n]').each(function() {
var current = $(this).attr("data-i18n"); var current = $(this).attr("data-i18n");
if (current.indexOf(":") === -1) { if (current.indexOf(":") === -1) {
$(this).attr("data-i18n",ns+":"+current); var prefix = "";
if (current.indexOf("[")===0) {
var parts = current.split("]");
prefix = parts[0]+"]";
current = parts[1];
}
$(this).attr("data-i18n",prefix+ns+":"+current);
} }
}); });
$('<input type="text" style="display: none;" />').appendTo("#dialog-form"); $('<input type="text" style="display: none;" />').appendTo("#dialog-form");

View File

@ -16,38 +16,47 @@
<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="fa fa-envelope"></i> <span data-i18n="inject.payload"></span></label> <label for="node-input-payloadType"><i class="fa fa-envelope"></i> <span data-i18n="common.label.payload"></span></label>
<select id="node-input-payloadType" style="width:73%"> <select id="node-input-payloadType" style="width:73%">
<option value="date">timestamp</option> <option value="date" data-i18n="inject.timestamp"></option>
<option value="string">string</option> <option value="string" data-i18n="inject.string">string</option>
<option value="none">blank</option> <option value="none" data-i18n="inject.blank">blank</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" style="width:70%"> <input type="text" id="node-input-payload" style="width:70%">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label> <label for="node-input-topic"><i class="fa fa-tasks"></i> <span data-i18n="common.label.topic"></span></label>
<input type="text" id="node-input-topic" placeholder="topic" style="width: 70%x"> <input type="text" id="node-input-topic" style="width: 70%x">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for=""><i class="fa fa-repeat"></i> Repeat</label> <label for=""><i class="fa fa-repeat"></i> <span data-i18n="inject.label.repeat"></span></label>
<select id="inject-time-type-select" style="width: 73%"><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: 73%">
<input type="hidden" id="node-input-repeat" placeholder="payload"> <option value="none" data-i18n="inject.none"></option>
<input type="hidden" id="node-input-crontab" placeholder="payload"> <option value="interval" data-i18n="inject.interval"></option>
<option value="interval-time" data-i18n="inject.interval-time"></option>
<option value="time" data-i18n="inject.time"></option>
</select>
<input type="hidden" id="node-input-repeat">
<input type="hidden" id="node-input-crontab">
</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> <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/> <span data-i18n="inject.every"></span> <select style="width: 100px" id="inject-time-interval-units">
<option value="s" data-i18n="inject.seconds"></option>
<option value="m" data-i18n="inject.minutes"></option>
<option value="h" data-i18n="inject.hours"></option>
</select><br/>
</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"> <span data-i18n="inject.every"></span> <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>
@ -60,46 +69,46 @@
<option value="20">20</option> <option value="20">20</option>
<option value="30">30</option> <option value="30">30</option>
<option value="0">60</option> <option value="0">60</option>
</select> minutes<br/> </select> <span data-i18n="inject.minutes"></span><br/>
between <select id="inject-time-interval-time-start" class="inject-time-times"></select> <span data-i18n="inject.between"></span> <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/> <span data-i18n="inject.and"></span> <select id="inject-time-interval-time-end" class="inject-time-times"></select><br/>
<div id="inject-time-interval-time-days" class="inject-time-days"> <div id="inject-time-interval-time-days" class="inject-time-days">
<div style="display: inline-block; vertical-align: top;margin-right: 5px;">on </div> <div style="display: inline-block; vertical-align: top;margin-right: 5px;" data-i18n="inject.on">on</div>
<div style="display:inline-block;"> <div style="display:inline-block;">
<div> <div>
<label><input type='checkbox' checked value='1'/> Monday</label> <label><input type='checkbox' checked value='1'/> <span data-i18n="inject.days.0"></span></label>
<label><input type='checkbox' checked value='2'/> Tuesday</label> <label><input type='checkbox' checked value='2'/> <span data-i18n="inject.days.1"></span></label>
<label><input type='checkbox' checked value='3'/> Wednesday</label> <label><input type='checkbox' checked value='3'/> <span data-i18n="inject.days.2"></span></label>
</div> </div>
<div> <div>
<label><input type='checkbox' checked value='4'/> Thursday</label> <label><input type='checkbox' checked value='4'/> <span data-i18n="inject.days.3"></span></label>
<label><input type='checkbox' checked value='5'/> Friday</label> <label><input type='checkbox' checked value='5'/> <span data-i18n="inject.days.4"></span></label>
<label><input type='checkbox' checked value='6'/> Saturday</label> <label><input type='checkbox' checked value='6'/> <span data-i18n="inject.days.5"></span></label>
</div> </div>
<div> <div>
<label><input type='checkbox' checked value='0'/> Sunday</label> <label><input type='checkbox' checked value='0'/> <span data-i18n="inject.days.6"></span></label>
</div> </div>
</div> </div>
</div> </div>
</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/> <span data-i18n="inject.at"></span> <input id="inject-time-time" value="12:00"></input><br/>
<div id="inject-time-time-days" class="inject-time-days"> <div id="inject-time-time-days" class="inject-time-days">
<div style="display: inline-block; vertical-align: top;margin-right: 5px;">on </div> <div style="display: inline-block; vertical-align: top;margin-right: 5px;">on </div>
<div style="display:inline-block;"> <div style="display:inline-block;">
<div> <div>
<label><input type='checkbox' checked value='1'/> Monday</label> <label><input type='checkbox' checked value='1'/> <span data-i18n="inject.days.0"></span></label>
<label><input type='checkbox' checked value='2'/> Tuesday</label> <label><input type='checkbox' checked value='2'/> <span data-i18n="inject.days.1"></span></label>
<label><input type='checkbox' checked value='3'/> Wednesday</label> <label><input type='checkbox' checked value='3'/> <span data-i18n="inject.days.2"></span></label>
</div> </div>
<div> <div>
<label><input type='checkbox' checked value='4'/> Thursday</label> <label><input type='checkbox' checked value='4'/> <span data-i18n="inject.days.3"></span></label>
<label><input type='checkbox' checked value='5'/> Friday</label> <label><input type='checkbox' checked value='5'/> <span data-i18n="inject.days.4"></span></label>
<label><input type='checkbox' checked value='6'/> Saturday</label> <label><input type='checkbox' checked value='6'/> <span data-i18n="inject.days.5"></span></label>
</div> </div>
<div> <div>
<label><input type='checkbox' checked value='0'/> Sunday</label> <label><input type='checkbox' checked value='0'/> <span data-i18n="inject.days.6"></span></label>
</div> </div>
</div> </div>
</div> </div>
@ -108,15 +117,15 @@
<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%;" data-i18n="inject.onstart"></label>
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label> <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" placeholder="name"> <input type="text" id="node-input-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" data-i18n="[html]inject.tip"></div>
</script> </script>
<style> <style>
.inject-time-row { .inject-time-row {
@ -197,7 +206,7 @@
if ((this.topic.length < 24) && (this.topic.length > 0)) { if ((this.topic.length < 24) && (this.topic.length > 0)) {
return this.name||this.topic; return this.name||this.topic;
} }
else { return this.name||(this.payloadType==="date"?"timestamp":null)||"inject"; } else { return this.name||(this.payloadType==="date"?this._("inject.timestamp"):null)||this._("inject.inject"); }
}, },
labelStyle: function() { labelStyle: function() {
return this.name?"node_label_italic":""; return this.name?"node_label_italic":"";
@ -474,24 +483,24 @@
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;");
if (this.payloadType === "date") { label = "timestamp"; } if (this.payloadType === "date") { label = this._("inject.timestamp"); }
if (this.payloadType === "none") { label = "blank"; } if (this.payloadType === "none") { label = this._("inject.blank"); }
var node = this;
$.ajax({ $.ajax({
url: "inject/"+this.id, url: "inject/"+this.id,
type:"POST", type:"POST",
success: function(resp) { success: function(resp) {
RED.notify("Successfully injected: "+label,"success"); RED.notify(node._("inject.success",{label:label}),"success");
}, },
error: function(jqXHR,textStatus,errorThrown) { error: function(jqXHR,textStatus,errorThrown) {
if (jqXHR.status == 404) { if (jqXHR.status == 404) {
RED.notify("<strong>Error</strong>: inject node not deployed","error"); RED.notify(node._("inject.error",{message:node._("inject.errors.not-deployed")}),"error");
} else if (jqXHR.status == 500) { } else if (jqXHR.status == 500) {
RED.notify("<strong>Error</strong>: inject failed, see log for details.","error"); RED.notify(node._("inject.error",{message:node._("inject.errors.failed")}),"error");
} else if (jqXHR.status == 0) { } else if (jqXHR.status == 0) {
RED.notify("<strong>Error</strong>: no response from server","error"); RED.notify(node._("inject.error",{message:node._("inject.errors.no-response")}),"error");
} else { } else {
RED.notify("<strong>Error</strong>: unexpected error: ("+jqXHR.status+") "+textStatus,"error"); RED.notify(node._("inject.error",{message:node._("inject.errors.not-deployed",{status:jqXHR.status,message:textStatus})}),"error");
} }
} }
}); });

View File

@ -1,10 +1,56 @@
{ {
"common": {
"label": {
"payload": "Payload",
"topic": "Topic",
"name":"Name"
}
},
"inject": { "inject": {
"inject":"inject",
"repeat": "repeat = __repeat__", "repeat": "repeat = __repeat__",
"crontab": "crontab = __crontab__", "crontab": "crontab = __crontab__",
"stopped": "stopped", "stopped": "stopped",
"failed": "Inject failed: __error__", "failed": "Inject failed: __error__",
"payload": "Payload" "label": {
"repeat": "Repeat"
},
"timestamp": "timestamp",
"string": "string",
"blank": "blank",
"none":"none",
"interval":"interval",
"interval-time":"interval between times",
"time":"at a specific time",
"seconds":"seconds",
"minutes":"minutes",
"hours":"hours",
"between":"between",
"at":"at",
"and":"and",
"every":"every",
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"on":"on",
"onstart":"Inject once at start?",
"tip": "<b>Note:</b> \"interval between times\" and \"at a specific time\" will use cron.<br/>See info box for details.",
"success": "Successfully injected: __label__",
"error": "<strong>Error</strong>: __message__",
"errors": {
"not-deployed": "inject node not deployed",
"failed": "inject failed, see log for details",
"no-response": "no response from server",
"unexpected": "unexpected error (__status__) __message__"
}
} }
} }