mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Compare commits
4 Commits
v3.x
...
group-cont
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c71dfab7e3 | ||
|
|
42d0aa5d73 | ||
|
|
5b0be986c6 | ||
|
|
8af81280d9 |
@@ -690,7 +690,8 @@
|
|||||||
"globalConfig": "Global Configuration Nodes",
|
"globalConfig": "Global Configuration Nodes",
|
||||||
"triggerAction": "Trigger action",
|
"triggerAction": "Trigger action",
|
||||||
"find": "Find in workspace",
|
"find": "Find in workspace",
|
||||||
"copyItemUrl": "Copy item url"
|
"copyItemUrl": "Copy item url",
|
||||||
|
"copyURL2Clipboard": "Copied url to clipboard"
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"name": "Help",
|
"name": "Help",
|
||||||
|
|||||||
@@ -683,7 +683,8 @@
|
|||||||
"empty": "空",
|
"empty": "空",
|
||||||
"globalConfig": "グローバル設定ノード",
|
"globalConfig": "グローバル設定ノード",
|
||||||
"triggerAction": "アクションを実行",
|
"triggerAction": "アクションを実行",
|
||||||
"find": "ワークスペース内を検索"
|
"find": "ワークスペース内を検索",
|
||||||
|
"copyURL2Clipboard": "URLをクリップボードにコピーしました"
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"name": "ヘルプ",
|
"name": "ヘルプ",
|
||||||
@@ -1348,6 +1349,8 @@
|
|||||||
"show-project-settings": "プロジェクト設定を表示",
|
"show-project-settings": "プロジェクト設定を表示",
|
||||||
"show-version-control-tab": "バージョンコントロールタブを表示",
|
"show-version-control-tab": "バージョンコントロールタブを表示",
|
||||||
"start-flows": "フローを開始",
|
"start-flows": "フローを開始",
|
||||||
"stop-flows": "フローを停止"
|
"stop-flows": "フローを停止",
|
||||||
|
"copy-item-url": "要素のURLをコピー",
|
||||||
|
"copy-item-edit-url": "要素の編集URLをコピー"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -668,11 +668,6 @@ var RED = (function() {
|
|||||||
]});
|
]});
|
||||||
|
|
||||||
menuOptions.push({id:"menu-item-arrange-menu", label:RED._("menu.label.arrange"), options: [
|
menuOptions.push({id:"menu-item-arrange-menu", label:RED._("menu.label.arrange"), options: [
|
||||||
{id: "menu-item-view-tools-move-to-back", label:RED._("menu.label.moveToBack"), disabled: true, onselect: "core:move-selection-to-back"},
|
|
||||||
{id: "menu-item-view-tools-move-to-front", label:RED._("menu.label.moveToFront"), disabled: true, onselect: "core:move-selection-to-front"},
|
|
||||||
{id: "menu-item-view-tools-move-backwards", label:RED._("menu.label.moveBackwards"), disabled: true, onselect: "core:move-selection-backwards"},
|
|
||||||
{id: "menu-item-view-tools-move-forwards", label:RED._("menu.label.moveForwards"), disabled: true, onselect: "core:move-selection-forwards"},
|
|
||||||
null,
|
|
||||||
{id: "menu-item-view-tools-align-left", label:RED._("menu.label.alignLeft"), disabled: true, onselect: "core:align-selection-to-left"},
|
{id: "menu-item-view-tools-align-left", label:RED._("menu.label.alignLeft"), disabled: true, onselect: "core:align-selection-to-left"},
|
||||||
{id: "menu-item-view-tools-align-center", label:RED._("menu.label.alignCenter"), disabled: true, onselect: "core:align-selection-to-center"},
|
{id: "menu-item-view-tools-align-center", label:RED._("menu.label.alignCenter"), disabled: true, onselect: "core:align-selection-to-center"},
|
||||||
{id: "menu-item-view-tools-align-right", label:RED._("menu.label.alignRight"), disabled: true, onselect: "core:align-selection-to-right"},
|
{id: "menu-item-view-tools-align-right", label:RED._("menu.label.alignRight"), disabled: true, onselect: "core:align-selection-to-right"},
|
||||||
@@ -682,7 +677,12 @@ var RED = (function() {
|
|||||||
{id: "menu-item-view-tools-align-bottom", label:RED._("menu.label.alignBottom"), disabled: true, onselect: "core:align-selection-to-bottom"},
|
{id: "menu-item-view-tools-align-bottom", label:RED._("menu.label.alignBottom"), disabled: true, onselect: "core:align-selection-to-bottom"},
|
||||||
null,
|
null,
|
||||||
{id: "menu-item-view-tools-distribute-horizontally", label:RED._("menu.label.distributeHorizontally"), disabled: true, onselect: "core:distribute-selection-horizontally"},
|
{id: "menu-item-view-tools-distribute-horizontally", label:RED._("menu.label.distributeHorizontally"), disabled: true, onselect: "core:distribute-selection-horizontally"},
|
||||||
{id: "menu-item-view-tools-distribute-veritcally", label:RED._("menu.label.distributeVertically"), disabled: true, onselect: "core:distribute-selection-vertically"}
|
{id: "menu-item-view-tools-distribute-veritcally", label:RED._("menu.label.distributeVertically"), disabled: true, onselect: "core:distribute-selection-vertically"},
|
||||||
|
null,
|
||||||
|
{id: "menu-item-view-tools-move-to-back", label:RED._("menu.label.moveToBack"), disabled: true, onselect: "core:move-selection-to-back"},
|
||||||
|
{id: "menu-item-view-tools-move-to-front", label:RED._("menu.label.moveToFront"), disabled: true, onselect: "core:move-selection-to-front"},
|
||||||
|
{id: "menu-item-view-tools-move-backwards", label:RED._("menu.label.moveBackwards"), disabled: true, onselect: "core:move-selection-backwards"},
|
||||||
|
{id: "menu-item-view-tools-move-forwards", label:RED._("menu.label.moveForwards"), disabled: true, onselect: "core:move-selection-forwards"}
|
||||||
]});
|
]});
|
||||||
|
|
||||||
menuOptions.push(null);
|
menuOptions.push(null);
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ RED.contextMenu = (function () {
|
|||||||
const isGroup = hasSelection && selection.nodes.length === 1 && selection.nodes[0].type === 'group'
|
const isGroup = hasSelection && selection.nodes.length === 1 && selection.nodes[0].type === 'group'
|
||||||
const canEdit = !RED.workspaces.isActiveLocked()
|
const canEdit = !RED.workspaces.isActiveLocked()
|
||||||
const canRemoveFromGroup = hasSelection && !!selection.nodes[0].g
|
const canRemoveFromGroup = hasSelection && !!selection.nodes[0].g
|
||||||
|
const isAllGroups = hasSelection && selection.nodes.filter(n => n.type !== 'group').length === 0
|
||||||
|
const hasGroup = hasSelection && selection.nodes.filter(n => n.type === 'group' ).length > 0
|
||||||
const offset = $("#red-ui-workspace-chart").offset()
|
const offset = $("#red-ui-workspace-chart").offset()
|
||||||
|
|
||||||
let addX = options.x - offset.left + $("#red-ui-workspace-chart").scrollLeft()
|
let addX = options.x - offset.left + $("#red-ui-workspace-chart").scrollLeft()
|
||||||
@@ -43,64 +44,121 @@ RED.contextMenu = (function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menuItems.push(
|
menuItems.push(
|
||||||
{ onselect: 'core:show-action-list', onpostselect: function () { } },
|
{ onselect: 'core:show-action-list', onpostselect: function () { } }
|
||||||
|
)
|
||||||
|
|
||||||
|
const insertOptions = []
|
||||||
|
menuItems.push({ label: RED._("contextMenu.insert"), options: insertOptions })
|
||||||
|
insertOptions.push(
|
||||||
{
|
{
|
||||||
label: RED._("contextMenu.insert"),
|
label: RED._("contextMenu.node"),
|
||||||
options: [
|
onselect: function () {
|
||||||
{
|
RED.view.showQuickAddDialog({
|
||||||
label: RED._("contextMenu.node"),
|
position: [addX, addY],
|
||||||
onselect: function () {
|
touchTrigger: true,
|
||||||
RED.view.showQuickAddDialog({
|
splice: isSingleLink ? selection.links[0] : undefined,
|
||||||
position: [addX, addY],
|
// spliceMultiple: isMultipleLinks
|
||||||
touchTrigger: true,
|
})
|
||||||
splice: isSingleLink ? selection.links[0] : undefined,
|
},
|
||||||
// spliceMultiple: isMultipleLinks
|
disabled: !canEdit
|
||||||
})
|
|
||||||
},
|
|
||||||
disabled: !canEdit
|
|
||||||
},
|
|
||||||
(hasLinks) ? { // has least 1 wire selected
|
|
||||||
label: RED._("contextMenu.junction"),
|
|
||||||
onselect: 'core:split-wires-with-junctions',
|
|
||||||
disabled: !canEdit || !hasLinks
|
|
||||||
} : {
|
|
||||||
label: RED._("contextMenu.junction"),
|
|
||||||
onselect: function () {
|
|
||||||
const nn = {
|
|
||||||
_def: { defaults: {} },
|
|
||||||
type: 'junction',
|
|
||||||
z: RED.workspaces.active(),
|
|
||||||
id: RED.nodes.id(),
|
|
||||||
x: addX,
|
|
||||||
y: addY,
|
|
||||||
w: 0, h: 0,
|
|
||||||
outputs: 1,
|
|
||||||
inputs: 1,
|
|
||||||
dirty: true
|
|
||||||
}
|
|
||||||
const historyEvent = {
|
|
||||||
dirty: RED.nodes.dirty(),
|
|
||||||
t: 'add',
|
|
||||||
junctions: [nn]
|
|
||||||
}
|
|
||||||
RED.nodes.addJunction(nn);
|
|
||||||
RED.history.push(historyEvent);
|
|
||||||
RED.nodes.dirty(true);
|
|
||||||
RED.view.select({nodes: [nn] });
|
|
||||||
RED.view.redraw(true)
|
|
||||||
},
|
|
||||||
disabled: !canEdit
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: RED._("contextMenu.linkNodes"),
|
|
||||||
onselect: 'core:split-wire-with-link-nodes',
|
|
||||||
disabled: !canEdit || !hasLinks
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
(hasLinks) ? { // has least 1 wire selected
|
||||||
|
label: RED._("contextMenu.junction"),
|
||||||
|
onselect: 'core:split-wires-with-junctions',
|
||||||
|
disabled: !canEdit || !hasLinks
|
||||||
|
} : {
|
||||||
|
label: RED._("contextMenu.junction"),
|
||||||
|
onselect: function () {
|
||||||
|
const nn = {
|
||||||
|
_def: { defaults: {} },
|
||||||
|
type: 'junction',
|
||||||
|
z: RED.workspaces.active(),
|
||||||
|
id: RED.nodes.id(),
|
||||||
|
x: addX,
|
||||||
|
y: addY,
|
||||||
|
w: 0, h: 0,
|
||||||
|
outputs: 1,
|
||||||
|
inputs: 1,
|
||||||
|
dirty: true
|
||||||
|
}
|
||||||
|
const historyEvent = {
|
||||||
|
dirty: RED.nodes.dirty(),
|
||||||
|
t: 'add',
|
||||||
|
junctions: [nn]
|
||||||
|
}
|
||||||
|
RED.nodes.addJunction(nn);
|
||||||
|
RED.history.push(historyEvent);
|
||||||
|
RED.nodes.dirty(true);
|
||||||
|
RED.view.select({nodes: [nn] });
|
||||||
|
RED.view.redraw(true)
|
||||||
|
},
|
||||||
|
disabled: !canEdit
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: RED._("contextMenu.linkNodes"),
|
||||||
|
onselect: 'core:split-wire-with-link-nodes',
|
||||||
|
disabled: !canEdit || !hasLinks
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
{ onselect: 'core:show-import-dialog', label: RED._('common.label.import')},
|
||||||
|
{ onselect: 'core:show-examples-import-dialog', label: 'Import Example Flow' }
|
||||||
|
)
|
||||||
|
if (hasSelection && canEdit) {
|
||||||
|
const nodeOptions = []
|
||||||
|
if (!hasMultipleSelection && !isGroup) {
|
||||||
|
nodeOptions.push(
|
||||||
|
{ onselect: 'core:show-node-help' },
|
||||||
|
null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
nodeOptions.push(
|
||||||
|
{ onselect: 'core:enable-selected-nodes' },
|
||||||
|
{ onselect: 'core:disable-selected-nodes' },
|
||||||
|
null,
|
||||||
|
{ onselect: 'core:show-selected-node-labels' },
|
||||||
|
{ onselect: 'core:hide-selected-node-labels' }
|
||||||
|
)
|
||||||
|
menuItems.push({
|
||||||
|
label: 'Node',
|
||||||
|
options: nodeOptions
|
||||||
|
})
|
||||||
|
menuItems.push({
|
||||||
|
label: 'Group',
|
||||||
|
options: [
|
||||||
|
{ onselect: 'core:group-selection' },
|
||||||
|
{ onselect: 'core:ungroup-selection', disabled: !hasGroup },
|
||||||
|
null,
|
||||||
|
{ onselect: 'core:copy-group-style', disabled: !hasGroup },
|
||||||
|
{ onselect: 'core:paste-group-style', disabled: !hasGroup}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
if (canRemoveFromGroup) {
|
||||||
|
menuItems[menuItems.length - 1].options.push(
|
||||||
|
null,
|
||||||
|
{ onselect: 'core:remove-selection-from-group', label: RED._("menu.label.groupRemoveSelection") }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (canEdit && hasMultipleSelection) {
|
||||||
|
menuItems.push({
|
||||||
|
label: 'Arrange',
|
||||||
|
options: [
|
||||||
|
{ label:RED._("menu.label.alignLeft"), onselect: "core:align-selection-to-left"},
|
||||||
|
{ label:RED._("menu.label.alignCenter"), onselect: "core:align-selection-to-center"},
|
||||||
|
{ label:RED._("menu.label.alignRight"), onselect: "core:align-selection-to-right"},
|
||||||
|
null,
|
||||||
|
{ label:RED._("menu.label.alignTop"), onselect: "core:align-selection-to-top"},
|
||||||
|
{ label:RED._("menu.label.alignMiddle"), onselect: "core:align-selection-to-middle"},
|
||||||
|
{ label:RED._("menu.label.alignBottom"), onselect: "core:align-selection-to-bottom"},
|
||||||
|
null,
|
||||||
|
{ label:RED._("menu.label.distributeHorizontally"), onselect: "core:distribute-selection-horizontally"},
|
||||||
|
{ label:RED._("menu.label.distributeVertically"), onselect: "core:distribute-selection-vertically"}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
menuItems.push(
|
||||||
null,
|
null,
|
||||||
{ onselect: 'core:undo', disabled: RED.history.list().length === 0 },
|
{ onselect: 'core:undo', disabled: RED.history.list().length === 0 },
|
||||||
{ onselect: 'core:redo', disabled: RED.history.listRedo().length === 0 },
|
{ onselect: 'core:redo', disabled: RED.history.listRedo().length === 0 },
|
||||||
@@ -109,22 +167,10 @@ RED.contextMenu = (function () {
|
|||||||
{ onselect: 'core:copy-selection-to-internal-clipboard', label: RED._("keyboard.copyNode"), disabled: !hasSelection },
|
{ onselect: 'core:copy-selection-to-internal-clipboard', label: RED._("keyboard.copyNode"), disabled: !hasSelection },
|
||||||
{ onselect: 'core:paste-from-internal-clipboard', label: RED._("keyboard.pasteNode"), disabled: !canEdit || !RED.view.clipboard() },
|
{ onselect: 'core:paste-from-internal-clipboard', label: RED._("keyboard.pasteNode"), disabled: !canEdit || !RED.view.clipboard() },
|
||||||
{ onselect: 'core:delete-selection', disabled: !canEdit || !canDelete },
|
{ onselect: 'core:delete-selection', disabled: !canEdit || !canDelete },
|
||||||
|
{ onselect: 'core:delete-selection-and-reconnect', label: 'Delete and Reconnect', disabled: !canEdit || !canDelete },
|
||||||
{ onselect: 'core:show-export-dialog', label: RED._("menu.label.export") },
|
{ onselect: 'core:show-export-dialog', label: RED._("menu.label.export") },
|
||||||
{ onselect: 'core:select-all-nodes' },
|
{ onselect: 'core:select-all-nodes' },
|
||||||
)
|
)
|
||||||
|
|
||||||
if (hasSelection && canEdit) {
|
|
||||||
menuItems.push(
|
|
||||||
null,
|
|
||||||
isGroup ?
|
|
||||||
{ onselect: 'core:ungroup-selection', disabled: !canEdit || !isGroup }
|
|
||||||
: { onselect: 'core:group-selection', disabled: !canEdit || !hasSelection }
|
|
||||||
)
|
|
||||||
if (canRemoveFromGroup && canEdit) {
|
|
||||||
menuItems.push({ onselect: 'core:remove-selection-from-group', label: RED._("menu.label.groupRemoveSelection") })
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var direction = "right";
|
var direction = "right";
|
||||||
|
|||||||
@@ -141,7 +141,8 @@ RED.sidebar.help = (function() {
|
|||||||
RED.events.on('registry:node-type-removed', queueRefresh);
|
RED.events.on('registry:node-type-removed', queueRefresh);
|
||||||
RED.events.on('subflows:change', refreshSubflow);
|
RED.events.on('subflows:change', refreshSubflow);
|
||||||
|
|
||||||
RED.actions.add("core:show-help-tab",show);
|
RED.actions.add("core:show-help-tab", show);
|
||||||
|
RED.actions.add("core:show-node-help", showNodeHelp)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,6 +339,19 @@ RED.sidebar.help = (function() {
|
|||||||
resizeStack();
|
resizeStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showNodeHelp(node) {
|
||||||
|
if (!node) {
|
||||||
|
const selection = RED.view.selection()
|
||||||
|
if (selection.nodes && selection.nodes.length > 0) {
|
||||||
|
node = selection.nodes.find(n => n.type !== 'group' && n.type !== 'junction')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node) {
|
||||||
|
show(node.type, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: DRY - projects.js
|
// TODO: DRY - projects.js
|
||||||
function addTargetToExternalLinks(el) {
|
function addTargetToExternalLinks(el) {
|
||||||
$(el).find("a").each(function(el) {
|
$(el).find("a").each(function(el) {
|
||||||
|
|||||||
@@ -1242,7 +1242,7 @@ RED.view.tools = (function() {
|
|||||||
url += '/edit'
|
url += '/edit'
|
||||||
}
|
}
|
||||||
if (RED.clipboard.copyText(url)) {
|
if (RED.clipboard.copyText(url)) {
|
||||||
RED.notify('Copied url to clipboard', { timeout: 2000 })
|
RED.notify(RED._("sidebar.info.copyURL2Clipboard"), { timeout: 2000 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
<option value="scale" data-i18n="range.scale.payload"></option>
|
<option value="scale" data-i18n="range.scale.payload"></option>
|
||||||
<option value="clamp" data-i18n="range.scale.limit"></option>
|
<option value="clamp" data-i18n="range.scale.limit"></option>
|
||||||
<option value="roll" data-i18n="range.scale.wrap"></option>
|
<option value="roll" data-i18n="range.scale.wrap"></option>
|
||||||
|
<option value="drop" data-i18n="range.scale.drop"></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
|
|||||||
@@ -32,11 +32,15 @@ module.exports = function(RED) {
|
|||||||
if (value !== undefined) {
|
if (value !== undefined) {
|
||||||
var n = Number(value);
|
var n = Number(value);
|
||||||
if (!isNaN(n)) {
|
if (!isNaN(n)) {
|
||||||
if (node.action == "clamp") {
|
if (node.action === "drop") {
|
||||||
|
if (n < node.minin) { done(); return; }
|
||||||
|
if (n > node.maxin) { done(); return; }
|
||||||
|
}
|
||||||
|
if (node.action === "clamp") {
|
||||||
if (n < node.minin) { n = node.minin; }
|
if (n < node.minin) { n = node.minin; }
|
||||||
if (n > node.maxin) { n = node.maxin; }
|
if (n > node.maxin) { n = node.maxin; }
|
||||||
}
|
}
|
||||||
if (node.action == "roll") {
|
if (node.action === "roll") {
|
||||||
var divisor = node.maxin - node.minin;
|
var divisor = node.maxin - node.minin;
|
||||||
n = ((n - node.minin) % divisor + divisor) % divisor + node.minin;
|
n = ((n - node.minin) % divisor + divisor) % divisor + node.minin;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,11 +34,14 @@
|
|||||||
the range specified within the target range.</p>
|
the range specified within the target range.</p>
|
||||||
<p><i>Scale and wrap within the target range</i> means that the result will
|
<p><i>Scale and wrap within the target range</i> means that the result will
|
||||||
be wrapped within the target range.</p>
|
be wrapped within the target range.</p>
|
||||||
|
<p><i>Scale, but drop if outside input range</i> means that the result will
|
||||||
|
be scaled, but any inputs outside of the inout range will be dropped.</p>
|
||||||
<p>For example an input 0 - 10 mapped to 0 - 100.</p>
|
<p>For example an input 0 - 10 mapped to 0 - 100.</p>
|
||||||
<table style="outline-width:#888 solid thin">
|
<table style="outline-width:#888 solid thin">
|
||||||
<tr><th width="80px">mode</th><th width="80px">input</th><th width="80px">output</th></tr>
|
<tr><th width="80px">mode</th><th width="80px">input</th><th width="80px">output</th></tr>
|
||||||
<tr><td><center>scale</center></td><td><center>12</center></td><td><center>120</center></td></tr>
|
<tr><td><center>scale</center></td><td><center>12</center></td><td><center>120</center></td></tr>
|
||||||
<tr><td><center>limit</center></td><td><center>12</center></td><td><center>100</center></td></tr>
|
<tr><td><center>limit</center></td><td><center>12</center></td><td><center>100</center></td></tr>
|
||||||
<tr><td><center>wrap</center></td><td><center>12</center></td><td><center>20</center></td></tr>
|
<tr><td><center>wrap</center></td><td><center>12</center></td><td><center>20</center></td></tr>
|
||||||
|
<tr><td><center>drop</center></td><td><center>12</center></td><td><center><i>(no output)</i></center></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -813,7 +813,8 @@
|
|||||||
"scale": {
|
"scale": {
|
||||||
"payload": "Scale the message property",
|
"payload": "Scale the message property",
|
||||||
"limit": "Scale and limit to the target range",
|
"limit": "Scale and limit to the target range",
|
||||||
"wrap": "Scale and wrap within the target range"
|
"wrap": "Scale and wrap within the target range",
|
||||||
|
"drop": "Scale, but drop msg if outside input range"
|
||||||
},
|
},
|
||||||
"tip": "Tip: This node ONLY works with numbers.",
|
"tip": "Tip: This node ONLY works with numbers.",
|
||||||
"errors": {
|
"errors": {
|
||||||
|
|||||||
@@ -106,6 +106,27 @@ describe('range Node', function() {
|
|||||||
genericRangeTest("clamp", 0, 10, 0, 1000, false, -1, 0, done);
|
genericRangeTest("clamp", 0, 10, 0, 1000, false, -1, 0, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('drops msg if in drop mode and input outside range', function(done) {
|
||||||
|
var flow = [{"id":"rangeNode1","type":"range","minin":2,"maxin":8,"minout":20,"maxout":80,"action":"drop","round":true,"name":"rangeNode","wires":[["helperNode1"]]},
|
||||||
|
{id:"helperNode1", type:"helper", wires:[]}];
|
||||||
|
helper.load(rangeNode, flow, function() {
|
||||||
|
var rangeNode1 = helper.getNode("rangeNode1");
|
||||||
|
var helperNode1 = helper.getNode("helperNode1");
|
||||||
|
helperNode1.on("input", function(msg) {
|
||||||
|
try {
|
||||||
|
msg.should.have.property('payload');
|
||||||
|
msg.payload.should.equal(50);
|
||||||
|
done();
|
||||||
|
} catch(err) {
|
||||||
|
done(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
rangeNode1.receive({payload:1});
|
||||||
|
rangeNode1.receive({payload:9});
|
||||||
|
rangeNode1.receive({payload:5});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('just passes on msg if payload not present', function(done) {
|
it('just passes on msg if payload not present', function(done) {
|
||||||
var flow = [{"id":"rangeNode1","type":"range","minin":0,"maxin":100,"minout":0,"maxout":100,"action":"scale","round":true,"name":"rangeNode","wires":[["helperNode1"]]},
|
var flow = [{"id":"rangeNode1","type":"range","minin":0,"maxin":100,"minout":0,"maxout":100,"action":"scale","round":true,"name":"rangeNode","wires":[["helperNode1"]]},
|
||||||
{id:"helperNode1", type:"helper", wires:[]}];
|
{id:"helperNode1", type:"helper", wires:[]}];
|
||||||
|
|||||||
Reference in New Issue
Block a user